-
I'm implementing the requirements of IFC 4.1.4.1.1 "Every IfcAlignment must be related to IfcProject using the IfcRelAggregates relationship" and IFC 4.1.5.1 CT where IfcAlignment is referenced into the spatial structure of IfcSite with IfcRelReferencedInSpatialStructure. Both relationships relate something (Project or Site) with a list of alignments. IfcRelAggregates uses aggregate_of and IfcRelReferencedInSpatialStructure uses aggregate_of_instance. Reviewing the aggregate_of_instance.h header, both classes are basically adaptors for std::vector. What is the difference between these two classes? And more importantly, why is there a difference? |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 2 replies
-
I think you haven't pulled changes since Jun 21, because I think as of c72f960 #2805 they both use
For history on why this difference existed, maybe see #1714 Proper select implementation
Yes, the plan originally was to embed more of the semantics of express in these aggregates, enabling them to behave as when needed sets/bags. But this was never prioritized because honestly in IFC the distinction between these types is often rather arbitrary. Exemplified by the fact for example that a IfcPropertySet is a list of properties. Also to add more convenience methods for dealing with aggregates of selects for example to apply visitors to them. But frankly the C++ API is lagging behind in terms of ergonomics. But we have good plans for v0.8 :)
|
Beta Was this translation helpful? Give feedback.
I think you haven't pulled changes since Jun 21, because I think as of c72f960 #2805 they both use
aggregate_of
For history on why this difference existed, maybe see #1714 Proper select implementation
Yes, the plan originally was to embed more of the semantics of express in these aggregates, enabling them to behave as when needed sets/bags. But this was never prioritized because honestly in IFC the distinction between these types is often rather arbitrary. Exemplified by the fact for e…