pub enum SchemaVersion {
Ifc2x3,
Ifc4,
Ifc4x3,
}Expand description
Which IFC schema version a table describes.
Variants§
Ifc2x3
IFC2x3 TC1 — 653 entities. Still the most common in the wild.
Ifc4
IFC4 ADD2 TC1 — 776 entities. The ISO-standard release.
Ifc4x3
IFC4x3 ADD2 — 876 entities. Adds alignment and civil infrastructure.
Implementations§
Source§impl SchemaVersion
impl SchemaVersion
Sourcepub const fn release_id(self) -> &'static str
pub const fn release_id(self) -> &'static str
Exact published release identifier for the bundled structural table.
Examples found in repository?
examples/export_structural_catalog.rs (line 57)
10fn main() -> Result<(), Box<dyn std::error::Error>> {
11 let requested = env::args().nth(1).ok_or_else(|| {
12 io::Error::new(
13 io::ErrorKind::InvalidInput,
14 "usage: cargo run -p ifc-schema --example export_structural_catalog -- <ifc2x3|ifc4|ifc4x3> [--direct]",
15 )
16 })?;
17 let version = match requested.to_ascii_lowercase().as_str() {
18 "ifc2x3" | "ifc2x3_tc1" => SchemaVersion::Ifc2x3,
19 "ifc4" | "ifc4_add2_tc1" => SchemaVersion::Ifc4,
20 "ifc4x3" | "ifc4x3_add2" => SchemaVersion::Ifc4x3,
21 _ => {
22 return Err(io::Error::new(
23 io::ErrorKind::InvalidInput,
24 format!("unsupported bundled IFC release: {requested}"),
25 )
26 .into());
27 }
28 };
29
30 let direct = match env::args().nth(2).as_deref() {
31 None => false,
32 Some("--direct") => true,
33 Some(value) => {
34 return Err(io::Error::new(
35 io::ErrorKind::InvalidInput,
36 format!("unsupported export option: {value}"),
37 )
38 .into());
39 }
40 };
41 if env::args().nth(3).is_some() {
42 return Err(io::Error::new(io::ErrorKind::InvalidInput, "too many arguments").into());
43 }
44
45 let stdout = io::stdout();
46 let mut output = BufWriter::new(stdout.lock());
47 let summary = if direct {
48 write_direct_structural_catalog(version, &mut output)?
49 } else {
50 write_structural_catalog(version, &mut output)?
51 };
52 output.flush()?;
53 eprintln!(
54 "exported {} entities and {} types for {}",
55 summary.entity_rows,
56 summary.type_count,
57 version.release_id()
58 );
59 Ok(())
60}Sourcepub const fn expected_entity_count(self) -> usize
pub const fn expected_entity_count(self) -> usize
Entity count asserted when the bundled artifact is generated.
Sourcepub const fn expected_type_count(self) -> usize
pub const fn expected_type_count(self) -> usize
Defined-type count asserted when the bundled artifact is generated.
Sourcepub const fn header_tokens(self) -> &'static [&'static str]
pub const fn header_tokens(self) -> &'static [&'static str]
Header tokens accepted for this release, excluding case-only variants.
Sourcepub fn from_header_token(token: &str) -> Option<Self>
pub fn from_header_token(token: &str) -> Option<Self>
Parse the token found in a STEP file’s FILE_SCHEMA header entry.
Trait Implementations§
Source§impl Clone for SchemaVersion
impl Clone for SchemaVersion
impl Copy for SchemaVersion
Source§impl Debug for SchemaVersion
impl Debug for SchemaVersion
impl Eq for SchemaVersion
Source§impl PartialEq for SchemaVersion
impl PartialEq for SchemaVersion
impl StructuralPartialEq for SchemaVersion
Auto Trait Implementations§
impl Freeze for SchemaVersion
impl RefUnwindSafe for SchemaVersion
impl Send for SchemaVersion
impl Sync for SchemaVersion
impl Unpin for SchemaVersion
impl UnsafeUnpin for SchemaVersion
impl UnwindSafe for SchemaVersion
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more