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