summaryrefslogtreecommitdiff
path: root/python/mediumlevelil.py
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2021-06-23 20:20:50 -0400
committerPeter LaFosse <peter@vector35.com>2021-09-05 10:09:09 -0400
commitbc5c0977dc5b4087e8f39cc67089bb5709aac04e (patch)
tree2e955215d9a9000a84412f814d011248f6bdbe5d /python/mediumlevelil.py
parent421b398453d09e06e7b202229e34b66414683a45 (diff)
type hints for highlevelil.py, mediumlevelil.py and lowlevelil.py, workflow.py
Fix linter error in scriptingprovider.py Update workflow.py using updated paradigms and type hints
Diffstat (limited to 'python/mediumlevelil.py')
-rw-r--r--python/mediumlevelil.py309
1 files changed, 155 insertions, 154 deletions
diff --git a/python/mediumlevelil.py b/python/mediumlevelil.py
index 681902b5..27f165d2 100644
--- a/python/mediumlevelil.py
+++ b/python/mediumlevelil.py
@@ -26,7 +26,7 @@ from dataclasses import dataclass
# Binary Ninja components
from . import _binaryninjacore as core
from .enums import MediumLevelILOperation, ILBranchDependence, DataFlowQueryOption
-from . import basicblock #required for MediumLevelILBasicBlock argument
+from . import basicblock
from . import function
from . import types
from . import lowlevelil
@@ -672,7 +672,7 @@ class UnaryOperation(MediumLevelILInstruction):
operand_names = tuple(["src"])
@property
- def src(self):
+ def src(self) -> MediumLevelILInstruction:
return self.get_expr(0)
@@ -681,11 +681,11 @@ class BinaryOperation(MediumLevelILInstruction):
operand_names = tuple(["left", "right"])
@property
- def left(self):
+ def left(self) -> MediumLevelILInstruction:
return self.get_expr(0)
@property
- def right(self):
+ def right(self) -> MediumLevelILInstruction:
return self.get_expr(1)
@@ -694,15 +694,15 @@ class Carry(Arithmetic):
operand_names = tuple(["left", "right", "carry"])
@property
- def left(self):
+ def left(self) -> MediumLevelILInstruction:
return self.get_expr(0)
@property
- def right(self):
+ def right(self) -> MediumLevelILInstruction:
return self.get_expr(1)
@property
- def carry(self):
+ def carry(self) -> MediumLevelILInstruction:
return self.get_expr(2)
@@ -836,7 +836,7 @@ class MediumLevelILLoad(Load):
operand_names = tuple(["src"])
@property
- def src(self):
+ def src(self) -> MediumLevelILInstruction:
return self.get_expr(0)
@@ -845,7 +845,7 @@ class MediumLevelILVar(MediumLevelILInstruction):
operand_names = tuple(["src"])
@property
- def src(self):
+ def src(self) -> variable.Variable:
return self.get_var(0)
@@ -854,7 +854,7 @@ class MediumLevelILAddress_of(MediumLevelILInstruction):
operand_names = tuple(["src"])
@property
- def src(self):
+ def src(self) -> variable.Variable:
return self.get_var(0)
@@ -863,7 +863,7 @@ class MediumLevelILConst(Constant):
operand_names = tuple(["constant"])
@property
- def constant(self):
+ def constant(self) -> int:
return self.get_int(0)
@@ -872,7 +872,7 @@ class MediumLevelILConst_ptr(Constant):
operand_names = tuple(["constant"])
@property
- def constant(self):
+ def constant(self) -> int:
return self.get_int(0)
@@ -881,7 +881,7 @@ class MediumLevelILFloat_const(Constant, FloatingPoint):
operand_names = tuple(["constant"])
@property
- def constant(self):
+ def constant(self) -> float:
return self.get_float(0)
@@ -890,7 +890,7 @@ class MediumLevelILImport(Constant):
operand_names = tuple(["constant"])
@property
- def constant(self):
+ def constant(self) -> int:
return self.get_int(0)
@@ -924,7 +924,7 @@ class MediumLevelILJump(Terminal):
operand_names = tuple(["dest"])
@property
- def dest(self):
+ def dest(self) -> MediumLevelILInstruction:
return self.get_expr(0)
@@ -933,7 +933,7 @@ class MediumLevelILRet_hint(ControlFlow):
operand_names = tuple(["dest"])
@property
- def dest(self):
+ def dest(self) -> MediumLevelILInstruction:
return self.get_expr(0)
@@ -955,7 +955,7 @@ class MediumLevelILCall_param(MediumLevelILInstruction):
operand_names = tuple(["src"])
@property
- def src(self):
+ def src(self) -> List[variable.Variable]:
return self.get_var_list(0, 1)
@@ -964,7 +964,7 @@ class MediumLevelILRet(Return):
operand_names = tuple(["src"])
@property
- def src(self):
+ def src(self) -> List[MediumLevelILInstruction]:
return self.get_expr_list(0, 1)
@@ -973,7 +973,7 @@ class MediumLevelILGoto(Terminal):
operand_names = tuple(["dest"])
@property
- def dest(self):
+ def dest(self) -> int:
return self.get_int(0)
@@ -982,7 +982,7 @@ class MediumLevelILBool_to_int(MediumLevelILInstruction):
operand_names = tuple(["src"])
@property
- def src(self):
+ def src(self) -> MediumLevelILInstruction:
return self.get_expr(0)
@@ -991,7 +991,7 @@ class MediumLevelILFree_var_slot(RegisterStack):
operand_names = tuple(["dest"])
@property
- def dest(self):
+ def dest(self) -> variable.Variable:
return self.get_var(0)
@@ -1000,7 +1000,7 @@ class MediumLevelILTrap(Terminal):
operand_names = tuple(["vector"])
@property
- def vector(self):
+ def vector(self) -> int:
return self.get_int(0)
@@ -1009,11 +1009,11 @@ class MediumLevelILFree_var_slot_ssa(RegisterStack):
operand_names = tuple(["dest", "prev"])
@property
- def dest(self):
+ def dest(self) -> SSAVariable:
return self.get_var_ssa_dest_and_src(0, 1)
@property
- def prev(self):
+ def prev(self) -> SSAVariable:
return self.get_var_ssa_dest_and_src(0, 2)
@@ -1022,7 +1022,7 @@ class MediumLevelILUnimpl_mem(Memory):
operand_names = tuple(["src"])
@property
- def src(self):
+ def src(self) -> MediumLevelILInstruction:
return self.get_expr(0)
@@ -1080,7 +1080,7 @@ class MediumLevelILVar_ssa(SSA):
operand_names = tuple(["src"])
@property
- def src(self):
+ def src(self) -> SSAVariable:
return self.get_var_ssa(0, 1)
@@ -1089,7 +1089,7 @@ class MediumLevelILVar_aliased(SSA):
operand_names = tuple(["src"])
@property
- def src(self):
+ def src(self) -> SSAVariable:
return self.get_var_ssa(0, 1)
@@ -1098,11 +1098,11 @@ class MediumLevelILSet_var(SetVar):
operand_names = tuple(["dest", "src"])
@property
- def dest(self):
+ def dest(self) -> variable.Variable:
return self.get_var(0)
@property
- def src(self):
+ def src(self) -> MediumLevelILInstruction:
return self.get_expr(1)
@@ -1111,11 +1111,11 @@ class MediumLevelILLoad_struct(Load):
operand_names = tuple(["src", "offset"])
@property
- def src(self):
+ def src(self) -> MediumLevelILInstruction:
return self.get_expr(0)
@property
- def offset(self):
+ def offset(self) -> int:
return self.get_int(1)
@@ -1124,11 +1124,11 @@ class MediumLevelILStore(Store):
operand_names = tuple(["dest", "src"])
@property
- def dest(self):
+ def dest(self) -> MediumLevelILInstruction:
return self.get_expr(0)
@property
- def src(self):
+ def src(self) -> MediumLevelILInstruction:
return self.get_expr(1)
@@ -1137,11 +1137,11 @@ class MediumLevelILVar_field(MediumLevelILInstruction):
operand_names = tuple(["src", "offset"])
@property
- def src(self):
+ def src(self) -> variable.Variable:
return self.get_var(0)
@property
- def offset(self):
+ def offset(self) -> int:
return self.get_int(1)
@@ -1150,11 +1150,11 @@ class MediumLevelILVar_split(MediumLevelILInstruction):
operand_names = tuple(["high", "low"])
@property
- def high(self):
+ def high(self) -> variable.Variable:
return self.get_var(0)
@property
- def low(self):
+ def low(self) -> variable.Variable:
return self.get_var(1)
@@ -1163,11 +1163,11 @@ class MediumLevelILAddress_of_field(MediumLevelILInstruction):
operand_names = tuple(["src", "offset"])
@property
- def src(self):
+ def src(self) -> variable.Variable:
return self.get_var(0)
@property
- def offset(self):
+ def offset(self) -> int:
return self.get_int(1)
@@ -1176,11 +1176,11 @@ class MediumLevelILExtern_ptr(Constant):
operand_names = tuple(["constant", "offset"])
@property
- def constant(self):
+ def constant(self) -> int:
return self.get_int(0)
@property
- def offset(self):
+ def offset(self) -> int:
return self.get_int(1)
@@ -1351,11 +1351,11 @@ class MediumLevelILSyscall(Syscall):
operand_names = tuple(["output", "params"])
@property
- def output(self):
+ def output(self) -> List[variable.Variable]:
return self.get_var_list(0, 1)
@property
- def params(self):
+ def params(self) -> List[MediumLevelILInstruction]:
return self.get_expr_list(2, 3)
@@ -1364,11 +1364,11 @@ class MediumLevelILVar_ssa_field(SSA):
operand_names = tuple(["src", "offset"])
@property
- def src(self):
+ def src(self) -> SSAVariable:
return self.get_var_ssa(0, 1)
@property
- def offset(self):
+ def offset(self) -> int:
return self.get_int(2)
@@ -1377,11 +1377,11 @@ class MediumLevelILVar_aliased_field(SSA):
operand_names = tuple(["src", "offset"])
@property
- def src(self):
+ def src(self) -> SSAVariable:
return self.get_var_ssa(0, 1)
@property
- def offset(self):
+ def offset(self) -> int:
return self.get_int(2)
@@ -1390,11 +1390,11 @@ class MediumLevelILVar_split_ssa(SSA):
operand_names = tuple(["high", "low"])
@property
- def high(self):
+ def high(self) -> SSAVariable:
return self.get_var_ssa(0, 1)
@property
- def low(self):
+ def low(self) -> SSAVariable:
return self.get_var_ssa(2, 3)
@@ -1403,7 +1403,7 @@ class MediumLevelILCall_output_ssa(SSA):
operand_names = tuple(["dest_memory", "dest"])
@property
- def dest_memory(self):
+ def dest_memory(self) -> int:
return self.get_int(0)
@property
@@ -1420,11 +1420,11 @@ class MediumLevelILCall_param_ssa(SSA):
operand_names = tuple(["src_memory", "src"])
@property
- def src_memory(self):
+ def src_memory(self) -> int:
return self.get_int(0)
@property
- def src(self):
+ def src(self) -> List[SSAVariable]:
return self.get_var_ssa_list(1, 2)
@@ -1433,11 +1433,11 @@ class MediumLevelILLoad_ssa(Load, SSA):
operand_names = tuple(["src", "src_memory"])
@property
- def src(self):
+ def src(self) -> MediumLevelILInstruction:
return self.get_expr(0)
@property
- def src_memory(self):
+ def src_memory(self) -> int:
return self.get_int(1)
@@ -1446,11 +1446,11 @@ class MediumLevelILVar_phi(Phi, SetVar, SSA):
operand_names = tuple(["dest", "src"])
@property
- def dest(self):
+ def dest(self) -> SSAVariable:
return self.get_var_ssa(0, 1)
@property
- def src(self):
+ def src(self) -> List[SSAVariable]:
return self.get_var_ssa_list(2, 3)
@@ -1459,11 +1459,11 @@ class MediumLevelILMem_phi(Memory, Phi):
operand_names = tuple(["dest_memory", "src_memory"])
@property
- def dest_memory(self):
+ def dest_memory(self) -> int:
return self.get_int(0)
@property
- def src_memory(self):
+ def src_memory(self) -> List[int]:
return self.get_int_list(1)
@@ -1472,11 +1472,11 @@ class MediumLevelILSet_var_ssa(SetVar):
operand_names = tuple(["dest", "src"])
@property
- def dest(self):
+ def dest(self) -> SSAVariable:
return self.get_var_ssa(0, 1)
@property
- def src(self):
+ def src(self) -> MediumLevelILInstruction:
return self.get_expr(2)
@@ -1545,7 +1545,7 @@ class MediumLevelILJump_to(Terminal):
operand_names = tuple(["dest", "targets"])
@property
- def dest(self):
+ def dest(self) -> MediumLevelILInstruction:
return self.get_expr(0)
@property
@@ -1558,15 +1558,15 @@ class MediumLevelILSet_var_aliased(SetVar, SSA):
operand_names = tuple(["dest", "prev", "src"])
@property
- def dest(self):
+ def dest(self) -> SSAVariable:
return self.get_var_ssa_dest_and_src(0, 1)
@property
- def prev(self):
+ def prev(self) -> SSAVariable:
return self.get_var_ssa_dest_and_src(0, 2)
@property
- def src(self):
+ def src(self) -> MediumLevelILInstruction:
return self.get_expr(3)
@@ -1581,7 +1581,7 @@ class MediumLevelILSyscall_untyped(Syscall):
return inst.dest
@property
- def dest(self):
+ def dest(self) -> MediumLevelILInstruction:
return self.get_expr(1)
@property
@@ -1591,7 +1591,7 @@ class MediumLevelILSyscall_untyped(Syscall):
return inst.src
@property
- def stack(self):
+ def stack(self) -> MediumLevelILInstruction:
return self.get_expr(2)
@@ -1600,15 +1600,15 @@ class MediumLevelILIntrinsic(MediumLevelILInstruction):
operand_names = tuple(["output", "intrinsic", "params"])
@property
- def output(self):
+ def output(self) -> List[variable.Variable]:
return self.get_var_list(0, 1)
@property
- def intrinsic(self):
+ def intrinsic(self) -> 'lowlevelil.ILIntrinsic':
return self.get_intrinsic(2)
@property
- def params(self):
+ def params(self) -> List[MediumLevelILInstruction]:
return self.get_expr_list(3, 4)
@property
@@ -1629,15 +1629,15 @@ class MediumLevelILIntrinsic_ssa(SSA):
operand_names = tuple(["output", "intrinsic", "params"])
@property
- def output(self):
+ def output(self) -> List[SSAVariable]:
return self.get_var_ssa_list(0, 1)
@property
- def intrinsic(self):
+ def intrinsic(self) -> 'lowlevelil.ILIntrinsic':
return self.get_intrinsic(2)
@property
- def params(self):
+ def params(self) -> List[MediumLevelILInstruction]:
return self.get_expr_list(3, 4)
@property
@@ -1657,19 +1657,19 @@ class MediumLevelILSet_var_ssa_field(SetVar):
operand_names = tuple(["dest", "prev", "offset", "src"])
@property
- def dest(self):
+ def dest(self) -> SSAVariable:
return self.get_var_ssa_dest_and_src(0, 1)
@property
- def prev(self):
+ def prev(self) -> SSAVariable:
return self.get_var_ssa_dest_and_src(0, 2)
@property
- def offset(self):
+ def offset(self) -> int:
return self.get_int(3)
@property
- def src(self):
+ def src(self) -> MediumLevelILInstruction:
return self.get_expr(4)
@property
@@ -1682,15 +1682,15 @@ class MediumLevelILSet_var_split_ssa(SetVar):
operand_names = tuple(["high", "low", "src"])
@property
- def high(self):
+ def high(self) -> SSAVariable:
return self.get_var_ssa(0, 1)
@property
- def low(self):
+ def low(self) -> SSAVariable:
return self.get_var_ssa(2, 3)
@property
- def src(self):
+ def src(self) -> MediumLevelILInstruction:
return self.get_expr(4)
@property
@@ -1703,19 +1703,19 @@ class MediumLevelILSet_var_aliased_field(SetVar, SSA):
operand_names = tuple(["dest", "prev", "offset", "src"])
@property
- def dest(self):
+ def dest(self) -> SSAVariable:
return self.get_var_ssa_dest_and_src(0, 1)
@property
- def prev(self):
+ def prev(self) -> SSAVariable:
return self.get_var_ssa_dest_and_src(0, 2)
@property
- def offset(self):
+ def offset(self) -> int:
return self.get_int(3)
@property
- def src(self):
+ def src(self) -> MediumLevelILInstruction:
return self.get_expr(4)
@property
@@ -1728,23 +1728,23 @@ class MediumLevelILSyscall_ssa(Syscall, SSA):
operand_names = tuple(["output", "params", "src_memory"])
@property
- def output(self):
+ def output(self) -> List[SSAVariable]:
inst = self.get_expr(0)
assert isinstance(inst, MediumLevelILCall_output_ssa), "MediumLevelILSyscall_ssa return bad type for output"
return inst.dest
@property
- def output_dest_memory(self):
+ def output_dest_memory(self) -> int:
inst = self.get_expr(0)
assert isinstance(inst, MediumLevelILCall_output_ssa), "MediumLevelILSyscall_ssa return bad type for output"
return inst.dest_memory
@property
- def params(self):
+ def params(self) -> List[MediumLevelILInstruction]:
return self.get_expr_list(1, 2)
@property
- def src_memory(self):
+ def src_memory(self) -> int:
return self.get_int(3)
@@ -1753,31 +1753,31 @@ class MediumLevelILSyscall_untyped_ssa(Syscall, SSA):
operand_names = tuple(["output", "params", "stack"])
@property
- def output(self):
+ def output(self) -> List[SSAVariable]:
inst = self.get_expr(0)
assert isinstance(inst, MediumLevelILCall_output_ssa), "MediumLevelILSyscall_untyped_ssa return bad type for 'output'"
return inst.dest
@property
- def output_dest_memory(self):
+ def output_dest_memory(self) -> int:
inst = self.get_expr(0)
assert isinstance(inst, MediumLevelILCall_output_ssa), "MediumLevelILSyscall_untyped_ssa return bad type for 'output_dest_memory'"
return inst.dest_memory
@property
- def params(self):
+ def params(self) -> List[SSAVariable]:
inst = self.get_expr(1)
assert isinstance(inst, MediumLevelILCall_param_ssa), "MediumLevelILSyscall_untyped_ssa return bad type for 'params'"
return inst.src
@property
- def params_src_memory(self):
+ def params_src_memory(self) -> int:
inst = self.get_expr(1)
assert isinstance(inst, MediumLevelILCall_param_ssa), "MediumLevelILSyscall_untyped_ssa return bad type for 'params_src_memory'"
return inst.src_memory
@property
- def stack(self):
+ def stack(self) -> MediumLevelILInstruction:
return self.get_expr(2)
@@ -1786,15 +1786,15 @@ class MediumLevelILLoad_struct_ssa(Load, SSA):
operand_names = tuple(["src", "offset", "src_memory"])
@property
- def src(self):
+ def src(self) -> MediumLevelILInstruction:
return self.get_expr(0)
@property
- def offset(self):
+ def offset(self) -> int:
return self.get_int(1)
@property
- def src_memory(self):
+ def src_memory(self) -> int:
return self.get_int(2)
@@ -1803,15 +1803,15 @@ class MediumLevelILSet_var_field(SetVar):
operand_names = tuple(["dest", "offset", "src"])
@property
- def dest(self):
+ def dest(self) -> variable.Variable:
return self.get_var(0)
@property
- def offset(self):
+ def offset(self) -> int:
return self.get_int(1)
@property
- def src(self):
+ def src(self) -> MediumLevelILInstruction:
return self.get_expr(2)
@@ -1820,15 +1820,15 @@ class MediumLevelILSet_var_split(SetVar):
operand_names = tuple(["high", "low", "src"])
@property
- def high(self):
+ def high(self) -> variable.Variable:
return self.get_var(0)
@property
- def low(self):
+ def low(self) -> variable.Variable:
return self.get_var(1)
@property
- def src(self):
+ def src(self) -> MediumLevelILInstruction:
return self.get_expr(2)
@property
@@ -1841,15 +1841,15 @@ class MediumLevelILStore_struct(Store):
operand_names = tuple(["dest", "offset", "src"])
@property
- def dest(self):
+ def dest(self) -> MediumLevelILInstruction:
return self.get_expr(0)
@property
- def offset(self):
+ def offset(self) -> int:
return self.get_int(1)
@property
- def src(self):
+ def src(self) -> MediumLevelILInstruction:
return self.get_expr(2)
@@ -1878,15 +1878,15 @@ class MediumLevelILCall(Call):
operand_names = tuple(["output", "dest", "params"])
@property
- def output(self):
+ def output(self) -> List[variable.Variable]:
return self.get_var_list(0, 1)
@property
- def dest(self):
+ def dest(self) -> MediumLevelILInstruction:
return self.get_expr(2)
@property
- def params(self):
+ def params(self) -> List[MediumLevelILInstruction]:
return self.get_expr_list(3, 4)
@@ -1895,15 +1895,15 @@ class MediumLevelILIf(Terminal):
operand_names = tuple(["condition", "true", "false"])
@property
- def condition(self):
+ def condition(self) -> MediumLevelILInstruction:
return self.get_expr(0)
@property
- def true(self):
+ def true(self) -> int:
return self.get_int(1)
@property
- def false(self):
+ def false(self) -> int:
return self.get_int(2)
@@ -1912,23 +1912,23 @@ class MediumLevelILTailcall_untyped(Tailcall):
operand_names = tuple(["output", "dest", "params", "stack"])
@property
- def output(self):
+ def output(self) -> List[variable.Variable]:
inst = self.get_expr(0)
assert isinstance(inst, MediumLevelILCall_output), "MediumLevelILTailcall_untyped return bad type for 'output'"
return inst.dest
@property
- def dest(self):
+ def dest(self) -> MediumLevelILInstruction:
return self.get_expr(1)
@property
- def params(self):
+ def params(self) -> List[variable.Variable]:
inst = self.get_expr(2)
assert isinstance(inst, MediumLevelILCall_param), "MediumLevelILTailcall_untyped return bad type for 'params'"
return inst.src
@property
- def stack(self):
+ def stack(self) -> MediumLevelILInstruction:
return self.get_expr(3)
@@ -1937,27 +1937,27 @@ class MediumLevelILCall_ssa(Call, SSA):
operand_names = tuple(["output", "dest", "params", "src_memory"])
@property
- def output(self):
+ def output(self) -> List[SSAVariable]:
inst = self.get_expr(0)
assert isinstance(inst, MediumLevelILCall_output_ssa), "MediumLevelILCall_ssa return bad type for output"
return inst.dest
@property
- def output_dest_memory(self):
+ def output_dest_memory(self) -> int:
inst = self.get_expr(0)
assert isinstance(inst, MediumLevelILCall_output_ssa), "MediumLevelILCall_ssa return bad type for output"
return inst.dest_memory
@property
- def dest(self):
+ def dest(self) -> MediumLevelILInstruction:
return self.get_expr(1)
@property
- def params(self):
+ def params(self) -> List[MediumLevelILInstruction]:
return self.get_expr_list(2, 3)
@property
- def src_memory(self):
+ def src_memory(self) -> int:
return self.get_int(4)
@@ -1966,23 +1966,23 @@ class MediumLevelILCall_untyped_ssa(Call, SSA):
operand_names = tuple(["output", "dest", "params", "stack"])
@property
- def output(self):
+ def output(self) -> List[SSAVariable]:
inst = self.get_expr(0)
assert isinstance(inst, MediumLevelILCall_output_ssa), "MediumLevelILCall_untyped_ssa return bad type for output"
return inst.dest
@property
- def output_dest_memory(self):
+ def output_dest_memory(self) -> int:
inst = self.get_expr(0)
assert isinstance(inst, MediumLevelILCall_output_ssa), "MediumLevelILCall_untyped_ssa return bad type for output"
return inst.dest_memory
@property
- def dest(self):
+ def dest(self) -> MediumLevelILInstruction:
return self.get_expr(1)
@property
- def params(self):
+ def params(self) -> List[SSAVariable]:
inst = self.get_expr(2)
assert isinstance(inst, MediumLevelILCall_param_ssa), "MediumLevelILCall_untyped_ssa return bad type for 'params'"
return inst.src
@@ -1994,7 +1994,7 @@ class MediumLevelILCall_untyped_ssa(Call, SSA):
return inst.src_memory
@property
- def stack(self):
+ def stack(self) -> MediumLevelILInstruction:
return self.get_expr(3)
@@ -2003,15 +2003,15 @@ class MediumLevelILTailcall(Tailcall):
operand_names = tuple(["output", "dest", "params"])
@property
- def output(self):
+ def output(self) -> List[variable.Variable]:
return self.get_var_list(0, 1)
@property
- def dest(self):
+ def dest(self) -> MediumLevelILInstruction:
return self.get_expr(2)
@property
- def params(self):
+ def params(self) -> List[MediumLevelILInstruction]:
return self.get_expr_list(3, 4)
@@ -2020,27 +2020,27 @@ class MediumLevelILTailcall_ssa(Tailcall, SSA):
operand_names = tuple(["output", "dest", "params", "src_memory"])
@property
- def output(self):
+ def output(self) -> List[SSAVariable]:
inst = self.get_expr(0)
assert isinstance(inst, MediumLevelILCall_output_ssa), "MediumLevelILTailcall_ssa return bad type for output"
return inst.dest
@property
- def output_dest_memory(self):
+ def output_dest_memory(self) -> int:
inst = self.get_expr(0)
assert isinstance(inst, MediumLevelILCall_output_ssa), "MediumLevelILTailcall_ssa return bad type for output"
return inst.dest_memory
@property
- def dest(self):
+ def dest(self) -> MediumLevelILInstruction:
return self.get_expr(1)
@property
- def params(self):
+ def params(self) -> List[MediumLevelILInstruction]:
return self.get_expr_list(2, 3)
@property
- def src_memory(self):
+ def src_memory(self) -> int:
return self.get_int(4)
@@ -2049,27 +2049,27 @@ class MediumLevelILTailcall_untyped_ssa(Tailcall, SSA):
operand_names = tuple(["output", "dest", "params", "stack"])
@property
- def output(self):
+ def output(self) -> List[SSAVariable]:
inst = self.get_expr(0)
assert isinstance(inst, MediumLevelILCall_output_ssa), "MediumLevelILTailcall_untyped_ssa return bad type for 'output'"
return inst.dest
@property
- def output_dest_memory(self):
+ def output_dest_memory(self) -> int:
inst = self.get_expr(0)
assert isinstance(inst, MediumLevelILCall_output_ssa), "MediumLevelILTailcall_untyped_ssa return bad type for 'output'"
return inst.dest_memory
@property
- def dest(self):
+ def dest(self) -> MediumLevelILInstruction:
return self.get_expr(1)
@property
- def params(self):
+ def params(self) -> MediumLevelILInstruction:
return self.get_expr(2)
@property
- def stack(self):
+ def stack(self) -> MediumLevelILInstruction:
return self.get_expr(3)
@@ -2078,19 +2078,19 @@ class MediumLevelILStore_ssa(Store, SSA):
operand_names = tuple(["dest", "dest_memory", "src_memory", "src"])
@property
- def dest(self):
+ def dest(self) -> MediumLevelILInstruction:
return self.get_expr(0)
@property
- def dest_memory(self):
+ def dest_memory(self) -> int:
return self.get_int(1)
@property
- def src_memory(self):
+ def src_memory(self) -> int:
return self.get_int(2)
@property
- def src(self):
+ def src(self) -> MediumLevelILInstruction:
return self.get_expr(3)
@@ -2099,23 +2099,23 @@ class MediumLevelILCall_untyped(Call):
operand_names = tuple(["output", "dest", "params", "stack"])
@property
- def output(self):
+ def output(self) -> List[variable.Variable]:
inst = self.get_expr(0)
assert isinstance(inst, MediumLevelILCall_output), "MediumLevelILCall_untyped return bad type for 'output'"
return inst.dest
@property
- def dest(self):
+ def dest(self) -> MediumLevelILInstruction:
return self.get_expr(1)
@property
- def params(self):
+ def params(self) -> List[variable.Variable]:
inst = self.get_expr(2)
assert isinstance(inst, MediumLevelILCall_param), "MediumLevelILCall_untyped return bad type for 'params'"
return inst.src
@property
- def stack(self):
+ def stack(self) -> MediumLevelILInstruction:
return self.get_expr(3)
@@ -2124,23 +2124,23 @@ class MediumLevelILStore_struct_ssa(Store, SSA):
operand_names = tuple(["dest", "offset", "dest_memory", "src_memory", "src"])
@property
- def dest(self):
+ def dest(self) -> MediumLevelILInstruction:
return self.get_expr(0)
@property
- def offset(self):
+ def offset(self) -> int:
return self.get_int(1)
@property
- def dest_memory(self):
+ def dest_memory(self) -> int:
return self.get_int(2)
@property
- def src_memory(self):
+ def src_memory(self) -> int:
return self.get_int(3)
@property
- def src(self):
+ def src(self) -> MediumLevelILInstruction:
return self.get_expr(4)
ILInstruction = {
@@ -2307,7 +2307,8 @@ class MediumLevelILFunction:
_arch = arch
_source_function = source_func
if handle is not None:
- _handle = core.handle_of_type(handle, core.BNMediumLevelILFunction)
+ MLILHandle = ctypes.POINTER(core.BNMediumLevelILFunction)
+ _handle = ctypes.cast(handle, MLILHandle)
if _source_function is None:
_source_function = function.Function(handle = core.BNGetMediumLevelILOwnerFunction(_handle))
if _arch is None:
@@ -2782,7 +2783,7 @@ class MediumLevelILFunction:
class MediumLevelILBasicBlock(basicblock.BasicBlock):
- def __init__(self, handle:core.BNBasicBlock, owner:MediumLevelILFunction, view:Optional['binaryview.BinaryView']=None):
+ def __init__(self, handle:core.BNBasicBlockHandle, owner:MediumLevelILFunction, view:Optional['binaryview.BinaryView']=None):
super(MediumLevelILBasicBlock, self).__init__(handle, view)
self._il_function = owner
@@ -2797,7 +2798,7 @@ class MediumLevelILBasicBlock(basicblock.BasicBlock):
for idx in range(self.start, self.end):
yield self._il_function[idx]
- def __getitem__(self, idx):
+ def __getitem__(self, idx) -> 'MediumLevelILInstruction':
size = self.end - self.start
if isinstance(idx, slice):
return [self[index] for index in range(*idx.indices(size))]
@@ -2819,7 +2820,7 @@ class MediumLevelILBasicBlock(basicblock.BasicBlock):
else:
return False
- def _create_instance(self, handle:core.BNBasicBlock, view:'binaryview.BinaryView') -> 'MediumLevelILBasicBlock':
+ def _create_instance(self, handle:core.BNBasicBlockHandle, view:'binaryview.BinaryView') -> 'MediumLevelILBasicBlock':
"""Internal method by super to instantiate child instances"""
return MediumLevelILBasicBlock(handle, self.il_function, view)