Thomas Krijnen
7fc2d9a998
Merge remote-tracking branch 'origin/v0.8.0' into ifcviewer-wgpu
2026-07-09 13:21:39 +02:00
Petru Conduraru
4776bd7639
Atomic IFC file writes to prevent corruption on interrupted save ( #4797 )
...
file.write() streamed directly onto the target path, so a crash mid-write
left a truncated file with dangling STEP references. Serialize to a temp
file in the same directory, then atomically rename it onto the target.
- New IfcUtil::path::atomic_rename_file: std::rename on POSIX, MoveFileExW
with MOVEFILE_REPLACE_EXISTING on Windows. Unlike rename_file it never
unlinks the destination first, so there is no window where it goes missing.
- Fully in C++/swig (per aothms), so the FILE_NAME header is untouched: it
comes from the model header, not the output path (verified empirically).
- Temp lives next to the target so the rename stays on one filesystem.
- Stream is closed before the rename (Windows cannot move an open file).
- On any write error the temp is removed and the original target is intact.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-07-07 14:22:44 +02:00
Thomas Krijnen
ca99ef3af7
More changes to pass around logger to parse-related calls
2026-06-14 14:49:14 +02:00
Thomas Krijnen
a7738eeb64
Pass around non-static logger instances and programmatic access to messages in-memory
2026-06-10 18:40:17 +02:00
Thomas Krijnen
98ff457fd6
Continue work on plug-in and tests
2026-05-06 21:17:57 +02:00
Thomas Krijnen
4670715ef3
Work a bit on failing tests
2026-05-06 11:41:43 +02:00
Thomas Krijnen
6ee05b646b
swig ignore Base::Base(std::nullopt_t);
2026-04-19 12:24:36 +02:00
Thomas Krijnen
6c47123781
Remove C++ references to ifcxml
2026-04-19 10:35:04 +02:00
Thomas Krijnen
a07f56db6f
Restructure and rename
2026-03-31 15:32:36 +02:00
Thomas Krijnen
603cedc487
Try some things: (a) fewer allocations - parse context pool; lexer string pool (b) SWAR process multiple chars at once in keywords/enums/strs/stc.
2026-03-27 20:45:13 +01:00
Thomas Krijnen
8c2e1226c9
declaration property
2026-01-15 15:38:32 +01:00
Thomas Krijnen
ed8821486d
Broaden __eq__ for type decl instances
2026-01-15 14:23:49 +01:00
Thomas Krijnen
742bfac144
_remove, schema_identifier and test_file
2026-01-15 14:13:29 +01:00
Thomas Krijnen
1f4c4204d0
Re-enable setting logical with UNKNOWN in python
2026-01-15 13:13:51 +01:00
Thomas Krijnen
bee61cba11
Accept exact schema_identifier in file()
2026-01-15 12:38:36 +01:00
Thomas Krijnen
490fa92dc0
Rework equality and get_info_2
2026-01-15 12:37:12 +01:00
Thomas Krijnen
fbbc92c5d7
Hashing solely based on identity
2026-01-14 14:03:55 +01:00
Thomas Krijnen
9e165319e6
Fix schema passing to file creation
2026-01-14 14:02:48 +01:00
Thomas Krijnen
64bf807baa
Fix add entity with id
2026-01-14 14:02:10 +01:00
Thomas Krijnen
136befde86
Fix write() call
2026-01-14 14:01:39 +01:00
Thomas Krijnen
1a4d750ecd
Consistency of get_inverse calls
2026-01-14 14:00:50 +01:00
Thomas Krijnen
b66b04b001
Remove usage of .wrapped_item and some other fixes
2026-01-10 11:01:18 +01:00
Thomas Krijnen
5c9213426f
Hacks and fixes to get python code back in reasonable state
2026-01-10 10:21:09 +01:00
Thomas Krijnen
ae79996eb6
Fix running of test/tests.py
2026-01-08 11:49:29 +01:00
Thomas Krijnen
7098beb819
Work towards v1.0 data model with encapsulated weak_ptr as basis for instances
2026-01-05 21:42:01 +01:00
Thomas Krijnen
69863ce4a9
Try and fix stub test
2025-10-26 10:03:43 +01:00
Thomas Krijnen
80066ba9e7
Different hack for allowing f.header.file_description.file.header.file_description.file
2025-10-25 21:54:42 +02:00
Thomas Krijnen
ea9e0c9ab4
readInstancePy() option to obtain type decls instead of strings
2025-10-25 13:55:55 +02:00
Thomas Krijnen
a6d20c0cc4
Follow up after 4d688170e0
2025-10-22 21:42:37 +02:00
Thomas Krijnen
e4877e8246
Ignore steal_instances() in python
2025-10-08 14:55:28 +02:00
Thomas Krijnen
ab59173135
Add a stream2_from_string() (mostly for wasm)
2025-09-23 11:32:52 +02:00
Thomas Krijnen
b1b95ec2db
Conditional compilation in wrapper
2025-09-14 19:15:31 +02:00
Thomas Krijnen
5f50e6fcf1
Conditional compilation in wrapper
2025-09-14 19:15:25 +02:00
Thomas Krijnen
49bbf0cb9e
Free memory
2025-09-09 13:26:37 +02:00
Thomas Krijnen
6ac95e1ed3
Access to underlying storage model in python
2025-09-04 16:47:56 +02:00
Thomas Krijnen
59a5bf2344
RocksDB zstd encryption; cache tuning; readonly open mode
2025-09-03 11:11:55 +02:00
Thomas Krijnen
453949ee01
Correctly wire up get_info2
2025-08-31 15:53:01 +02:00
Thomas Krijnen
dfaa8d510c
authorisation -> authorization in header schema for compatibility
2025-08-29 16:08:42 +02:00
Thomas Krijnen
a219d335ea
to_string() default to True
2025-08-28 11:15:53 +02:00
Thomas Krijnen
47f7afb33b
Help SWIG understand header entities
2025-08-28 11:15:36 +02:00
Thomas Krijnen
ea53c96134
Allow inspection of rocskdb keys in python
2025-08-26 12:53:35 +02:00
Thomas Krijnen
722e819e11
Support propsetdefset in python streaming mode
2025-08-26 10:20:36 +02:00
Thomas Krijnen
862aa71a77
Left-overs after merge
2025-08-26 10:20:08 +02:00
Thomas Krijnen
9d9e9ed4cb
Merge remote-tracking branch 'origin/v0.8.0' into tfk-rocksdb-storage
2025-08-26 10:17:57 +02:00
Thomas Krijnen
d2c7c1532c
Implement streaming scan through file and use in rocksdb serializer and python
2025-08-25 12:45:10 +02:00
Andrej730
0132edd774
Sync stub with the wrapper #6976
2025-08-07 21:02:34 +05:00
Andrej730
2e3c733c0d
IfcParseWrapper - exclude instances_by_reference
...
As it does exactly the same as get_inverse()
2025-06-17 18:41:19 +05:00
Andrej730
ff09cd0a56
IfcParseWrapper - instance_by_guid -> by_guid
...
It seems they have exactly the same signatures and it makes sense to just rename instance_by_guid to by_guid, instead of implementing it separately.
2025-06-17 18:41:19 +05:00
Andrej
d0f4dd00c7
getInverse -> get_inverses_by_declaration
...
Similar to getTotalInverses rename, to prevent confusing with get_inverse.
2025-06-11 19:39:46 +05:00
Andrej
eee94f53a4
get_inverse, get_inverse_indices, get_total_inverses - prevent possible crashes
...
When passing entity without an id (e.g. IfcBaseType)
2025-06-11 19:39:46 +05:00