summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorGalen Williamson <galen@vector35.com>2021-07-07 17:11:22 -0400
committerGalen Williamson <galen@vector35.com>2021-07-07 17:11:22 -0400
commit468d9184a343beeac9cac2e492a1f842a6a3234e (patch)
tree9e47d73248577c504bb52904af39273070287c51 /python
parentbe766bb6b82e5600ef56e8a3610229298669e8cb (diff)
Added slicing support to __getitem__ in all basic block classes
Diffstat (limited to 'python')
-rw-r--r--python/basicblock.py2
-rw-r--r--python/highlevelil.py2
-rw-r--r--python/lowlevelil.py2
-rw-r--r--python/mediumlevelil.py2
4 files changed, 8 insertions, 0 deletions
diff --git a/python/basicblock.py b/python/basicblock.py
index ad4eef43..4b1633a1 100644
--- a/python/basicblock.py
+++ b/python/basicblock.py
@@ -168,6 +168,8 @@ class BasicBlock(object):
def __getitem__(self, i):
self._buildStartCache()
+ if isinstance(i, slice):
+ return [self[index] for index in range(*i.indices(len(self._instStarts)))]
start = self._instStarts[i]
length = self._instLengths[i]
data = self._view.read(start, length)
diff --git a/python/highlevelil.py b/python/highlevelil.py
index 046d73a6..d3312474 100644
--- a/python/highlevelil.py
+++ b/python/highlevelil.py
@@ -976,6 +976,8 @@ class HighLevelILBasicBlock(basicblock.BasicBlock):
def __getitem__(self, idx):
size = self.end - self.start
+ if isinstance(idx, slice):
+ return [self[index] for index in range(*idx.incides(size))]
if idx > size or idx < -size:
raise IndexError("list index is out of range")
if idx >= 0:
diff --git a/python/lowlevelil.py b/python/lowlevelil.py
index 310d9d79..6b9d09b4 100644
--- a/python/lowlevelil.py
+++ b/python/lowlevelil.py
@@ -3089,6 +3089,8 @@ class LowLevelILBasicBlock(basicblock.BasicBlock):
def __getitem__(self, idx):
size = self.end - self.start
+ if isinstance(idx, slice):
+ return [self[index] for index in range(*idx.incides(size))]
if idx > size or idx < -size:
raise IndexError("list index is out of range")
if idx >= 0:
diff --git a/python/mediumlevelil.py b/python/mediumlevelil.py
index 8d552b64..d0190f95 100644
--- a/python/mediumlevelil.py
+++ b/python/mediumlevelil.py
@@ -1258,6 +1258,8 @@ class MediumLevelILBasicBlock(basicblock.BasicBlock):
def __getitem__(self, idx):
size = self.end - self.start
+ if isinstance(idx, slice):
+ return [self[index] for index in range(*idx.incides(size))]
if idx > size or idx < -size:
raise IndexError("list index is out of range")
if idx >= 0: