Add identity int to taxonomy item

This commit is contained in:
Thomas Krijnen
2023-04-03 13:31:22 +02:00
parent 2ac66571b0
commit cc223dd5b4
2 changed files with 11 additions and 2 deletions
+3 -1
View File
@@ -407,4 +407,6 @@ const std::string& ifcopenshell::geometry::taxonomy::kind_to_string(kinds k) {
};
return values[k];
}
}
std::atomic_uint32_t item::counter_(0);
+8 -1
View File
@@ -31,6 +31,11 @@ enum kinds { MATRIX4, POINT3, DIRECTION3, LINE, CIRCLE, ELLIPSE, BSPLINE_CURVE,
const std::string& kind_to_string(kinds k);
struct item {
private:
uint32_t identity_;
static std::atomic_uint32_t counter_;
public:
const IfcUtil::IfcBaseInterface* instance;
boost::optional<bool> orientation;
@@ -40,9 +45,11 @@ struct item {
virtual void print(std::ostream&, int indent=0) const = 0;
virtual void reverse() { throw taxonomy::topology_error(); }
item(const IfcUtil::IfcBaseInterface* instance = nullptr) : instance(instance) {}
item(const IfcUtil::IfcBaseInterface* instance = nullptr) : identity_(counter_++), instance(instance) {}
virtual ~item() {}
uint32_t identity() const { return identity_; }
};
bool less(const item*, const item*);