Skip to main content

SchemaVersion

Enum SchemaVersion 

Source
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

Source

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}
Source

pub const fn expected_entity_count(self) -> usize

Entity count asserted when the bundled artifact is generated.

Source

pub const fn expected_type_count(self) -> usize

Defined-type count asserted when the bundled artifact is generated.

Source

pub const fn header_tokens(self) -> &'static [&'static str]

Header tokens accepted for this release, excluding case-only variants.

Source

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

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for SchemaVersion

Source§

impl Debug for SchemaVersion

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for SchemaVersion

Source§

impl PartialEq for SchemaVersion

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for SchemaVersion

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.