From 4425004475844466f2faa28bc1b136bf6da74977 Mon Sep 17 00:00:00 2001 From: Peter LaFosse Date: Mon, 11 Apr 2022 11:53:01 -0400 Subject: Add some python api side caching to improve performance for some frequently accessed fields --- python/types.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'python/types.py') 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: -- cgit v1.3.1