ifc_validate/structure/
mod.rs1mod cardinality;
11mod reference;
12mod required;
13mod unique;
14
15pub use cardinality::aggregate_shape;
16pub(crate) use reference::expected_references;
17pub use reference::{dangling_references, wrong_kind_references};
18pub use required::required_attributes;
19pub use unique::duplicate_global_ids;
20
21use ifc_model::Model;
22use ifc_schema::Schema;
23
24use crate::report::Report;
25use crate::where_rule::Budget;
26
27pub fn check(model: &Model, schema: &Schema, budget: Budget, report: &mut Report) {
33 dangling_references(model, report);
34 wrong_kind_references(model, schema, report);
35 required_attributes(model, schema, report);
36 aggregate_shape(model, schema, report);
37 if report.findings().len() >= budget.max_findings {
38 report.mark_truncated();
39 }
40}