summaryrefslogtreecommitdiff
path: root/python/binaryview.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/binaryview.py')
-rw-r--r--python/binaryview.py4
1 files changed, 3 insertions, 1 deletions
diff --git a/python/binaryview.py b/python/binaryview.py
index 6adb8b1e..60cc4f28 100644
--- a/python/binaryview.py
+++ b/python/binaryview.py
@@ -10425,7 +10425,7 @@ class TypedDataAccessor:
for i in range(_type.count):
yield self[i]
- def __getitem__(self, key: Union[str, int]) -> 'TypedDataAccessor':
+ def __getitem__(self, key: Union[str, int, slice]) -> Union['TypedDataAccessor', List['TypedDataAccessor']]:
_type = self.type
if isinstance(_type, _types.NamedTypeReferenceType):
_type = _type.target(self.view)
@@ -10433,6 +10433,8 @@ class TypedDataAccessor:
if key >= _type.count:
raise ValueError(f"Index {key} out of bounds array has {_type.count} elements")
return TypedDataAccessor(_type.element_type, self.address + key * len(_type.element_type), self.view, self.endian)
+ if isinstance(_type, _types.ArrayType) and isinstance(key, slice):
+ return [self[i] for i in range(*key.indices(len(self.value)))]
if not isinstance(_type, _types.StructureType):
raise ValueError("Can't get member of non-structure")
if not isinstance(key, str):