Skip to main content

ifc_material/material/
definition.rs

1//! Borrowed `IfcMaterial` identity.
2
3use crate::view::{borrowed_entity, optional_text, required_text, MaterialView};
4use crate::MaterialResult;
5
6borrowed_entity!(Material, "IFCMATERIAL");
7
8impl<'m> Material<'m> {
9    /// `IfcMaterial.Name`. Required; a malformed record is an error, not
10    /// an absent value.
11    pub fn name(self) -> MaterialResult<&'m str> {
12        required_text("IFCMATERIAL", self.id(), self.entity(), 0, "Name")
13    }
14
15    /// `IfcMaterial.Description`, if given.
16    pub fn description(self) -> MaterialResult<Option<&'m str>> {
17        optional_text("IFCMATERIAL", self.id(), self.entity(), 1, "Description")
18    }
19
20    /// `IfcMaterial.Category`, if given.
21    pub fn category(self) -> MaterialResult<Option<&'m str>> {
22        optional_text("IFCMATERIAL", self.id(), self.entity(), 2, "Category")
23    }
24}
25
26impl<'m> MaterialView<'m> {
27    /// Iterates every `IfcMaterial` instance in the model.
28    pub fn materials(self) -> impl Iterator<Item = Material<'m>> + 'm {
29        self.model()
30            .of_type("IFCMATERIAL")
31            .map(|(id, entity)| Material::from_known(id, entity))
32    }
33}