use ifc_model::{Entity, EntityId, Model};
use crate::nesting::Nesting;
use crate::quantity::set::{read_quantity, Quantity};
const HAS_QUANTITIES: usize = 2;
pub(super) fn complex_quantities(
model: &Model,
id: EntityId,
entity: &Entity,
nesting: &mut Nesting<'_>,
) -> Vec<Quantity> {
if !nesting.enter(id) {
return Vec::new();
}
let mut quantities = Vec::new();
for member in nesting.members(id, "HasQuantities", entity.attributes.get(HAS_QUANTITIES)) {
if !nesting.admit(model, id, member) {
continue;
}
if let Some(quantity) = read_quantity(model, member, nesting) {
quantities.push(quantity);
}
}
nesting.leave();
quantities
}