1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//! EXPRESS `SELECT` and defined types of the IFC geometry schema.
//!
//! Subtype answers come from tables generated for one schema version, named
//! by [`subtype::TABLE_SCHEMA_VERSION`].
//!
//! # Why selects need real code
//!
//! A STEP attribute declared as `IfcBooleanOperand` is just an entity
//! reference in the file. Nothing in the record says which of the five
//! permitted kinds it is; you must resolve the reference and inspect the
//! target's type. Every consumer that skips this grows an ad-hoc `match` on
//! type-name strings, and those drift from the schema.
//!
//! # The trap: select members are usually abstract
//!
//! `IfcBooleanOperand` permits `IfcSolidModel`, which is ABSTRACT -- no file
//! ever contains one. Files contain `IfcExtrudedAreaSolid`, four levels below.
//! Resolution must be **subtype-aware**, so comparing the target's type name
//! against the member list directly rejects every valid file. [`is_a`] answers
//! that question from a compiled-in table.
//!
//! Each select resolves to the *branch* taken, so callers write an exhaustive
//! `match` the compiler checks instead of string comparisons they must keep in
//! sync with the schema.
pub use ;
pub use ;
pub use ;