use ifc_model::{EntityId, Model, Value};
use crate::nesting::Nesting;
use crate::pset::scalar::{read_property, Property};
pub(super) fn complex_members(
model: &Model,
id: EntityId,
has_properties: Option<&Value>,
nesting: &mut Nesting<'_>,
) -> Vec<Property> {
if !nesting.enter(id) {
return Vec::new();
}
let mut properties = Vec::new();
for member in nesting.members(id, "HasProperties", has_properties) {
if !nesting.admit(model, id, member) {
continue;
}
if let Some(property) = read_property(model, member, nesting) {
properties.push(property);
}
}
nesting.leave();
properties
}