ifc-properties 0.5.3

Property sets, quantities, and unit resolution. No geometry.
Documentation
//! `ifc-properties` -- Property sets, quantities and units -- the non-geometric payload most
//!
//! consumers actually want.
//!
//! `references/ifc-spec/` ships the official property set definitions as XML:
//! 317 for IFC2x3 and 420 for IFC4. That is a machine-readable catalogue, so
//! standard Psets are data here rather than hand-written tables.
//!
//! # Module map
//!
//! | Module | Role |
//! |---|---|
//! | `pset` | `IfcPropertySet` and single/enumerated/list/table properties |
//! | `quantity` | `IfcElementQuantity`: length, area, volume, weight, count |
//! | `template` | `IfcPropertySetTemplate`, property templates, and sets checked against them |
//! | `standard` | The official Pset catalogue from the shipped XML definitions |
//! | `unit` | Unit assignment, prefixes and conversion-based units |
//! | `value` | `IfcValue` measure types and their interpretation |
//! | `query` | Lookup helpers: property by name, pset by element |
//! | `nesting` | Bounded, cycle-aware traversal of complex properties and quantities |
//! | `error` | Why a property lookup failed |
//!
//! # Status
//!
//! Implemented: `value`, `pset`, `quantity` (including transactional quantity
//! edits), `unit`, `template`, `query` and the release-bound `exact` lookups.
//! `standard` is a reserved scaffold; the shipped Pset/Qto catalogue is
//! `ifc-template-catalog`. Open work is tracked in GitHub issues.
//!
//! # What this crate will not do
//!
//! It never computes a shape measurement. An `IfcQuantityArea` is what the
//! authoring tool asserted, and it may disagree with the geometry. Callers
//! that want a check compute the value with a geometry service and pass it to
//! [`compare`], which reports agreement rather than inventing it.

mod error;
mod exact;
mod nesting;
mod pset;
mod quantity;
mod query;
mod standard;
mod template;
mod unit;
mod value;

pub use error::{PropertyAnomaly, PropertyError, PropertyResult, TemplateError};
pub use exact::{
    exact_material_properties_where, exact_material_property, exact_material_property_sets_where,
    exact_predefined_sets, exact_properties, exact_properties_where, exact_property,
    exact_property_sets_where, exact_schema, exact_unit, ExactBoundedValue, ExactComplexMember,
    ExactComplexValue, ExactEntityRef, ExactEnumeratedValue, ExactEnumeration, ExactLogical,
    ExactPredefinedSet, ExactProperty, ExactPropertyEntry, ExactPropertyError,
    ExactPropertySetEntry, ExactReferenceValue, ExactResolution, ExactSource, ExactTableRow,
    ExactTableValue, ExactTypedValue, ExactUnit, ExactUnitError, ExactValue,
};
/// The IFC release an exact resolution binds to (re-exported from `ifc-schema`).
pub use ifc_schema::SchemaVersion;
pub use pset::{
    add_complex_property, add_complex_property_template,
    add_complex_property_template_with_owner_history, add_door_lining_properties,
    add_door_lining_properties_with_owner_history, add_door_panel_properties,
    add_door_panel_properties_with_owner_history, add_element_quantity,
    add_element_quantity_with_owner_history, add_permeable_covering_properties,
    add_permeable_covering_properties_with_owner_history, add_physical_complex_quantity,
    add_profile_properties, add_property_bounded_value, add_property_dependency_relationship,
    add_property_enumerated_value, add_property_enumeration, add_property_list_value,
    add_property_reference_value, add_property_set, add_property_set_template,
    add_property_set_template_with_owner_history, add_property_set_with_owner_history,
    add_property_single_value, add_property_table_value, add_reinforcement_bar_properties,
    add_reinforcement_definition_properties,
    add_reinforcement_definition_properties_with_owner_history, add_section_properties,
    add_section_reinforcement_properties, add_window_lining_properties,
    add_window_lining_properties_with_owner_history, add_window_panel_properties,
    add_window_panel_properties_with_owner_history, attach_property_set,
    attach_property_set_with_owner_history, attach_template, attach_template_with_owner_history,
    attach_type, attach_type_with_owner_history, bounded_slot, complex_quantity_slot, complex_slot,
    defines_by_template_slot, defines_by_type_slot, defines_slot, element_quantity_slot,
    enumerated_slot, list_slot, property, property_checked, property_set, property_set_checked,
    property_sets_by_object, pset_slot, pset_template_slot, reference_slot, single_value_slot,
    table_slot, AttachedSets, Attachment, DoorLiningDraft, Property, PropertySet, PropertyValue,
    ReinforcementBarDraft, SectionReinforcementDraft, TableValueDraft, WindowLiningDraft,
};
pub use quantity::{
    add_quantity_to_set, compare, create_quantity, create_quantity_with, set_description, set_name,
    set_quantity_value, Comparison, ComputedQuantity, QuantityExtras, Tolerance,
};
pub use quantity::{
    quantity_set, quantity_sets, stated_unit, Quantity, QuantityKind, QuantitySet, UnresolvedValue,
};
pub use query::{
    properties_of, property_value, resolved_properties, ResolvedProperties, ResolvedSet, Source,
};
pub use template::{
    property_set_template, property_set_template_checked, property_set_templates,
    property_template, property_template_checked, template_deviations, template_of_set,
    MeasureRole, PropertySetTemplate, PropertyTemplate, PropertyTemplateKind, TemplateFinding,
    TemplateReport, UndecidedReason,
};
pub use unit::{
    add_context_dependent_unit, add_conversion_based_unit, add_conversion_based_unit_with_offset,
    add_derived_unit, add_derived_unit_element, add_dimensional_exponents, add_measure_with_unit,
    add_monetary_unit, add_si_unit, assign_units, prefix_exponent, project_unit_for, project_units,
    unit, unit_type, ConversionBasedUnitDraft, MonetaryUnitDraft, SiUnitDraft, UnitKind,
};
pub use value::{MeasureValue, Scalar};