openbim-step 0.6.1
Added
- Opt-in reference-integrity diagnostics (#4):
ParseOptions::check_references(true)reports every data record whose
instance id was already defined (DiagnosticKind::DuplicateId, on the
later record) and each distinct id a record references that no record in
DATAdefines (DiagnosticKind::DanglingReference, on the referencing
record). Forward references are legal (ISO 10303-21:2016 §11.2) and are
resolved atENDSEC. Ids compare numerically, so#07is#7, including
ids beyond 64 bits. Works forparse_withand the streaming
parse_events_withalike. Nothing is dropped, so these diagnostics keep
ParseOutcome::is_losslesstrue. Diagnostic::kindandDiagnostic::instance, and theDiagnosticKind
enum (SkippedRecord,DuplicateId,DanglingReference).
Changed
ParseOutcome::is_losslessis now true unless a record was skipped;
reference diagnostics do not count as loss. Only possible to observe with
the new option enabled.
Measured on 100 MB files (1.0–1.5 M records, median of 5): enabling the
check adds 26–33% to parse_with. Off by default, so existing callers pay
nothing. Across the 757-file on-disk corpus it flags exactly one file:
buildingSMART's IFC4 Add2 annex example wall-elemented-case.ifc, whose
#154 references #161, which the file never defines.