summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorBrandon Miller <brandon@vector35.com>2024-10-02 08:17:25 -0400
committerBrandon Miller <bkmiller89@icloud.com>2024-10-03 08:39:54 -0400
commite8488aaa64fb847ca2e639369176cf88c1bc4f8e (patch)
treed08bade433501d3c76eae26d05245122b8081437 /python
parent1b8b9d4ee4936faa8c9091720a312bb72964d8b1 (diff)
Added IsForceLoadable method to BinaryViewType
Diffstat (limited to 'python')
-rw-r--r--python/binaryview.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/python/binaryview.py b/python/binaryview.py
index 3321a21a..8a38e819 100644
--- a/python/binaryview.py
+++ b/python/binaryview.py
@@ -1271,6 +1271,11 @@ class BinaryViewType(metaclass=_BinaryViewTypeMetaclass):
"""returns if the BinaryViewType is deprecated (read-only)"""
return core.BNIsBinaryViewTypeDeprecated(self.handle)
+ @property
+ def is_force_loadable(self) -> bool:
+ """returns if the BinaryViewType is force loadable (read-only)"""
+ return core.BNIsBinaryViewTypeForceLoadable(self.handle)
+
def create(self, data: 'BinaryView') -> Optional['BinaryView']:
view = core.BNCreateBinaryViewOfType(self.handle, data.handle)
if view is None:
@@ -2511,6 +2516,7 @@ class BinaryView:
cls._registered_cb.parse = cls._registered_cb.parse.__class__(cls._parse)
cls._registered_cb.isValidForData = cls._registered_cb.isValidForData.__class__(cls._is_valid_for_data)
cls._registered_cb.isDeprecated = cls._registered_cb.isDeprecated.__class__(cls._is_deprecated)
+ cls._registered_cb.isForceLoadable = cls._registered_cb.isForceLoadable.__class__(cls._is_force_loadable)
cls._registered_cb.getLoadSettingsForData = cls._registered_cb.getLoadSettingsForData.__class__(
cls._get_load_settings_for_data
)
@@ -2580,6 +2586,17 @@ class BinaryView:
return False
@classmethod
+ def _is_force_loadable(cls, ctxt):
+ if not callable(getattr(cls, 'is_force_loadable', None)):
+ return False
+
+ try:
+ return cls.is_force_loadable() # type: ignore
+ except:
+ log_error(traceback.format_exc())
+ return False
+
+ @classmethod
def _get_load_settings_for_data(cls, ctxt, data):
try:
attr = getattr(cls, "get_load_settings_for_data", None)