Implement __hash__ and __eq__ functions on entity_instance

This commit is contained in:
Thomas Krijnen
2016-04-09 20:20:08 +02:00
parent 191c029546
commit 426b1279e3
2 changed files with 16 additions and 0 deletions
@@ -91,6 +91,10 @@ class entity_instance(object):
def __repr__(self): return repr(self.wrapped_data)
def is_a(self, *args): return self.wrapped_data.is_a(*args)
def id(self): return self.wrapped_data.id()
def __eq__(self, other):
return self.wrapped_data == other.wrapped_data
def __hash__(self):
return hash((self.id(), self.wrapped_data.file_pointer()))
def __dir__(self):
return sorted(set(itertools.chain(
dir(type(self)),
+12
View File
@@ -124,6 +124,18 @@ namespace IfcUtil {
unsigned i = IfcSchema::Type::GetAttributeIndex($self->type(), a);
return std::pair<IfcUtil::ArgumentType,Argument*>($self->getArgumentType(i), $self->getArgument(i));
}
bool __eq__(IfcParse::IfcLateBoundEntity* other) const {
if ($self == other) {
return true;
}
return $self->id() == other->id() && $self->entity->file == other->entity->file;
}
// Just something to have a somewhat sensible value to hash
size_t file_pointer() const {
return reinterpret_cast<size_t>($self->entity->file);
}
}
%extend IfcParse::IfcSpfHeader {