summaryrefslogtreecommitdiff
path: root/python/types.py
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2022-04-11 11:53:01 -0400
committerPeter LaFosse <peter@vector35.com>2022-04-14 09:22:49 -0400
commit4425004475844466f2faa28bc1b136bf6da74977 (patch)
tree0131826d2f1857f2de65b4f47a2486a4c69005d3 /python/types.py
parentdc0626a11c30387993380a31db3b4bce23d81983 (diff)
Add some python api side caching to improve performance for some frequently accessed fields
Diffstat (limited to 'python/types.py')
-rw-r--r--python/types.py20
1 files changed, 16 insertions, 4 deletions
diff --git a/python/types.py b/python/types.py
index f87cc37f..b92cb79d 100644
--- a/python/types.py
+++ b/python/types.py
@@ -1512,6 +1512,10 @@ class Type:
self._handle = handle
self._confidence = confidence
self._platform = platform
+ self._type_class = None
+ self._width = None
+ self._alignment = None
+ self._offset = None
@classmethod
def create(
@@ -1557,22 +1561,30 @@ class Type:
@property
def type_class(self) -> TypeClass:
"""Type class (read-only)"""
- return TypeClass(core.BNGetTypeClass(self._handle))
+ if self._type_class is None:
+ self._type_class = TypeClass(core.BNGetTypeClass(self._handle))
+ return self._type_class
@property
def width(self) -> int:
"""Type width (read-only)"""
- return core.BNGetTypeWidth(self._handle)
+ if self._width is None:
+ self._width = core.BNGetTypeWidth(self._handle)
+ return self._width
@property
def alignment(self) -> int:
"""Type alignment (read-only)"""
- return core.BNGetTypeAlignment(self._handle)
+ if self._alignment is None:
+ self._alignment = core.BNGetTypeAlignment(self._handle)
+ return self._alignment
@property
def offset(self) -> int:
"""Offset into structure (read-only)"""
- return core.BNGetTypeOffset(self._handle)
+ if self._offset is None:
+ self._offset = core.BNGetTypeOffset(self._handle)
+ return self._offset
@property
def altname(self) -> str: