summaryrefslogtreecommitdiff
path: root/python/filemetadata.py
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2020-05-02 11:01:35 -0400
committerPeter LaFosse <peter@vector35.com>2020-05-03 13:20:56 -0400
commit8f1bc5944b849f3ad0cbbd5972d5ab9948ed4d57 (patch)
tree43b48da8a1ec93b148575bc3346059e5316e6bf6 /python/filemetadata.py
parent5b84fdea8abcb4abba61d07e0d12b4115b516c52 (diff)
Fix up equality operators and had hash operators
Diffstat (limited to 'python/filemetadata.py')
-rw-r--r--python/filemetadata.py42
1 files changed, 21 insertions, 21 deletions
diff --git a/python/filemetadata.py b/python/filemetadata.py
index ce88fdce..58afeeec 100644
--- a/python/filemetadata.py
+++ b/python/filemetadata.py
@@ -88,6 +88,27 @@ class FileMetadata(object):
core.BNSetFilename(self.handle, str(filename))
self._nav = None
+ def __repr__(self):
+ return "<FileMetadata: %s>" % self.filename
+
+ def __del__(self):
+ if self.navigation is not None:
+ core.BNSetFileMetadataNavigationHandler(self.handle, None)
+ core.BNFreeFileMetadata(self.handle)
+
+ def __eq__(self, other):
+ if not isinstance(other, self.__class__):
+ return NotImplemented
+ return ctypes.addressof(self.handle.contents) == ctypes.addressof(other.handle.contents)
+
+ def __ne__(self, other):
+ if not isinstance(other, self.__class__):
+ return NotImplemented
+ return not (self == other)
+
+ def __hash__(self):
+ return hash(ctypes.addressof(self.handle.contents))
+
@property
def nav(self):
"""
@@ -98,21 +119,6 @@ class FileMetadata(object):
def nav(self, value):
self._nav = value
- def __del__(self):
- if self.navigation is not None:
- core.BNSetFileMetadataNavigationHandler(self.handle, None)
- core.BNFreeFileMetadata(self.handle)
-
- def __eq__(self, value):
- if not isinstance(value, FileMetadata):
- return False
- return ctypes.addressof(self.handle.contents) == ctypes.addressof(value.handle.contents)
-
- def __ne__(self, value):
- if not isinstance(value, FileMetadata):
- return True
- return ctypes.addressof(self.handle.contents) != ctypes.addressof(value.handle.contents)
-
@classmethod
def _unregister(cls, f):
handle = ctypes.cast(f, ctypes.c_void_p)
@@ -373,9 +379,3 @@ class FileMetadata(object):
if view is None:
return None
return binaryninja.binaryview.BinaryView(file_metadata = self, handle = view)
-
- def __setattr__(self, name, value):
- try:
- object.__setattr__(self, name, value)
- except AttributeError:
- raise AttributeError("attribute '%s' is read only" % name)