Skip to main content

ifc_element_type/table/
mod.rs

1//! The generated element-type catalogue.
2//!
3//! Source: `references/ifc-spec/ifc4x3-add2/IFC4X3_ADD2.exp`, via
4//! `scripts/gen-element-types.py`. Do not edit by hand.
5//!
6//! # Two slot layouts, not one
7//!
8//! Element types put `RepresentationMaps` at 6 and `Tag` at 7.
9//! Resource and process types put `Identification` at 6 and
10//! `LongDescription` at 7. Nine types use the second layout, so
11//! a writer that assumed `Tag` would file a tag as a description
12//! on every resource and process type.
13//!
14//! `PredefinedType` lands at 9 for most types, 10 for
15//! `IfcFurnitureType`, and 11 for the six resource types, whose
16//! supertype interposes `BaseCosts` and `BaseQuantity`.
17
18/// Which supertype layout an element type follows.
19#[derive(Debug, Clone, Copy, PartialEq, Eq)]
20#[non_exhaustive]
21pub enum Family {
22    /// `RepresentationMaps` at 6, `Tag` at 7, `ElementType` at 8.
23    Element,
24    /// `Identification` at 6, `LongDescription` at 7,
25    /// `ResourceType` or `ProcessType` at 8.
26    ResourceOrProcess,
27}
28
29/// One element type: its STEP name, slots, and enum tokens.
30#[derive(Debug, Clone, Copy, PartialEq, Eq)]
31#[non_exhaustive]
32pub struct ElementType {
33    /// STEP type name, upper-case as stored.
34    pub type_name: &'static str,
35    /// Total attribute count, including inherited.
36    pub arity: usize,
37    /// Slot holding `PredefinedType`.
38    pub predefined_slot: usize,
39    /// Whether `PredefinedType` is itself optional.
40    pub predefined_optional: bool,
41    /// Name of the attribute `USERDEFINED` falls back to.
42    pub fallback_attr: &'static str,
43    /// Slot of that fallback attribute. Always 8.
44    pub fallback_slot: usize,
45    /// Which supertype layout slots 6 and 7 follow.
46    pub family: Family,
47    /// Permitted `PredefinedType` tokens.
48    pub members: &'static [&'static str],
49}
50
51mod a_c;
52mod d_f;
53mod g_k;
54mod l_p;
55mod q_s;
56mod t_z;
57
58pub use a_c::*;
59pub use d_f::*;
60pub use g_k::*;
61pub use l_p::*;
62pub use q_s::*;
63pub use t_z::*;
64
65/// Every element type in the catalogue.
66pub const ALL: &[ElementType] = &[
67    IFCACTUATORTYPE,
68    IFCAIRTERMINALBOXTYPE,
69    IFCAIRTERMINALTYPE,
70    IFCAIRTOAIRHEATRECOVERYTYPE,
71    IFCALARMTYPE,
72    IFCAUDIOVISUALAPPLIANCETYPE,
73    IFCBEAMTYPE,
74    IFCBEARINGTYPE,
75    IFCBOILERTYPE,
76    IFCBUILDINGELEMENTPARTTYPE,
77    IFCBUILDINGELEMENTPROXYTYPE,
78    IFCBURNERTYPE,
79    IFCCABLECARRIERFITTINGTYPE,
80    IFCCABLECARRIERSEGMENTTYPE,
81    IFCCABLEFITTINGTYPE,
82    IFCCABLESEGMENTTYPE,
83    IFCCAISSONFOUNDATIONTYPE,
84    IFCCHILLERTYPE,
85    IFCCHIMNEYTYPE,
86    IFCCOILTYPE,
87    IFCCOLUMNTYPE,
88    IFCCOMMUNICATIONSAPPLIANCETYPE,
89    IFCCOMPRESSORTYPE,
90    IFCCONDENSERTYPE,
91    IFCCONSTRUCTIONEQUIPMENTRESOURCETYPE,
92    IFCCONSTRUCTIONMATERIALRESOURCETYPE,
93    IFCCONSTRUCTIONPRODUCTRESOURCETYPE,
94    IFCCONTROLLERTYPE,
95    IFCCONVEYORSEGMENTTYPE,
96    IFCCOOLEDBEAMTYPE,
97    IFCCOOLINGTOWERTYPE,
98    IFCCOURSETYPE,
99    IFCCOVERINGTYPE,
100    IFCCREWRESOURCETYPE,
101    IFCCURTAINWALLTYPE,
102    IFCDAMPERTYPE,
103    IFCDISCRETEACCESSORYTYPE,
104    IFCDISTRIBUTIONBOARDTYPE,
105    IFCDISTRIBUTIONCHAMBERELEMENTTYPE,
106    IFCDOORTYPE,
107    IFCDUCTFITTINGTYPE,
108    IFCDUCTSEGMENTTYPE,
109    IFCDUCTSILENCERTYPE,
110    IFCELECTRICAPPLIANCETYPE,
111    IFCELECTRICDISTRIBUTIONBOARDTYPE,
112    IFCELECTRICFLOWSTORAGEDEVICETYPE,
113    IFCELECTRICFLOWTREATMENTDEVICETYPE,
114    IFCELECTRICGENERATORTYPE,
115    IFCELECTRICMOTORTYPE,
116    IFCELECTRICTIMECONTROLTYPE,
117    IFCELEMENTASSEMBLYTYPE,
118    IFCENGINETYPE,
119    IFCEVAPORATIVECOOLERTYPE,
120    IFCEVAPORATORTYPE,
121    IFCEVENTTYPE,
122    IFCFANTYPE,
123    IFCFASTENERTYPE,
124    IFCFILTERTYPE,
125    IFCFIRESUPPRESSIONTERMINALTYPE,
126    IFCFLOWINSTRUMENTTYPE,
127    IFCFLOWMETERTYPE,
128    IFCFOOTINGTYPE,
129    IFCFURNITURETYPE,
130    IFCGEOGRAPHICELEMENTTYPE,
131    IFCHEATEXCHANGERTYPE,
132    IFCHUMIDIFIERTYPE,
133    IFCIMPACTPROTECTIONDEVICETYPE,
134    IFCINTERCEPTORTYPE,
135    IFCJUNCTIONBOXTYPE,
136    IFCKERBTYPE,
137    IFCLABORRESOURCETYPE,
138    IFCLAMPTYPE,
139    IFCLIGHTFIXTURETYPE,
140    IFCLIQUIDTERMINALTYPE,
141    IFCMECHANICALFASTENERTYPE,
142    IFCMEDICALDEVICETYPE,
143    IFCMEMBERTYPE,
144    IFCMOBILETELECOMMUNICATIONSAPPLIANCETYPE,
145    IFCMOORINGDEVICETYPE,
146    IFCMOTORCONNECTIONTYPE,
147    IFCNAVIGATIONELEMENTTYPE,
148    IFCOUTLETTYPE,
149    IFCPAVEMENTTYPE,
150    IFCPILETYPE,
151    IFCPIPEFITTINGTYPE,
152    IFCPIPESEGMENTTYPE,
153    IFCPLATETYPE,
154    IFCPROCEDURETYPE,
155    IFCPROTECTIVEDEVICETRIPPINGUNITTYPE,
156    IFCPROTECTIVEDEVICETYPE,
157    IFCPUMPTYPE,
158    IFCRAILTYPE,
159    IFCRAILINGTYPE,
160    IFCRAMPFLIGHTTYPE,
161    IFCRAMPTYPE,
162    IFCREINFORCINGBARTYPE,
163    IFCREINFORCINGMESHTYPE,
164    IFCROOFTYPE,
165    IFCSANITARYTERMINALTYPE,
166    IFCSENSORTYPE,
167    IFCSHADINGDEVICETYPE,
168    IFCSIGNTYPE,
169    IFCSIGNALTYPE,
170    IFCSLABTYPE,
171    IFCSOLARDEVICETYPE,
172    IFCSPACEHEATERTYPE,
173    IFCSPACETYPE,
174    IFCSPATIALZONETYPE,
175    IFCSTACKTERMINALTYPE,
176    IFCSTAIRFLIGHTTYPE,
177    IFCSTAIRTYPE,
178    IFCSUBCONTRACTRESOURCETYPE,
179    IFCSWITCHINGDEVICETYPE,
180    IFCSYSTEMFURNITUREELEMENTTYPE,
181    IFCTANKTYPE,
182    IFCTASKTYPE,
183    IFCTENDONANCHORTYPE,
184    IFCTENDONCONDUITTYPE,
185    IFCTENDONTYPE,
186    IFCTRACKELEMENTTYPE,
187    IFCTRANSFORMERTYPE,
188    IFCTRANSPORTELEMENTTYPE,
189    IFCTUBEBUNDLETYPE,
190    IFCUNITARYCONTROLELEMENTTYPE,
191    IFCUNITARYEQUIPMENTTYPE,
192    IFCVALVETYPE,
193    IFCVEHICLETYPE,
194    IFCVIBRATIONDAMPERTYPE,
195    IFCVIBRATIONISOLATORTYPE,
196    IFCWALLTYPE,
197    IFCWASTETERMINALTYPE,
198    IFCWINDOWTYPE,
199];