diff options
| author | Jordan Wiens <jordan@psifertex.com> | 2019-06-12 13:49:37 -0400 |
|---|---|---|
| committer | Jordan Wiens <jordan@psifertex.com> | 2019-06-12 13:49:37 -0400 |
| commit | 1a45cca00e56c88a9606ef1cffdab0d9bb5f5626 (patch) | |
| tree | 939520d351ed39725a219eff20c16a7fc683338f /python/function.py | |
| parent | 12e1c3a00c087395191d108f003d7cbd60a3ea7d (diff) | |
more api refactor cleanup in function.py
Diffstat (limited to 'python/function.py')
| -rw-r--r-- | python/function.py | 324 |
1 files changed, 284 insertions, 40 deletions
diff --git a/python/function.py b/python/function.py index e853670a..26d60b0f 100644 --- a/python/function.py +++ b/python/function.py @@ -694,24 +694,42 @@ class IndirectBranchInfo(object): class ParameterVariables(object): def __init__(self, var_list, confidence = types.max_confidence): - self.vars = var_list - self.confidence = confidence + self._vars = var_list + self._confidence = confidence def __repr__(self): - return repr(self.vars) + return repr(self._vars) def __iter__(self): - for var in self.vars: + for var in self._vars: yield var def __getitem__(self, idx): - return self.vars[idx] + return self._vars[idx] def __len__(self): - return len(self.vars) + return len(self._vars) def with_confidence(self, confidence): - return ParameterVariables(list(self.vars), confidence = confidence) + return ParameterVariables(list(self._vars), confidence = confidence) + + @property + def vars(self): + """ """ + return self._vars + + @vars.setter + def vars(self, value): + self._vars = value + + @property + def confidence(self): + """ """ + return self._confidence + + @confidence.setter + def confidence(self, value): + self._confidence = value class _FunctionAssociatedDataStore(associateddatastore._AssociatedDataStore): @@ -2037,6 +2055,7 @@ class Function(object): functions.append(ref.function) return functions + class AdvancedFunctionAnalysisDataRequestor(object): def __init__(self, func = None): self._function = func @@ -2067,17 +2086,17 @@ class AdvancedFunctionAnalysisDataRequestor(object): class DisassemblyTextLine(object): def __init__(self, tokens, address = None, il_instr = None, color = None): - self.address = address - self.tokens = tokens - self.il_instruction = il_instr + self._address = address + self._tokens = tokens + self._il_instruction = il_instr if color is None: - self.highlight = highlight.HighlightColor() + self._highlight = highlight.HighlightColor() else: if not isinstance(color, HighlightStandardColor) and not isinstance(color, highlight.HighlightColor): raise ValueError("Specified color is not one of HighlightStandardColor, highlight.HighlightColor") if isinstance(color, HighlightStandardColor): color = highlight.HighlightColor(color) - self.highlight = color + self._highlight = color def __str__(self): result = "" @@ -2090,6 +2109,42 @@ class DisassemblyTextLine(object): return str(self) return "<%#x: %s>" % (self.address, str(self)) + @property + def address(self): + """ """ + return self._address + + @address.setter + def address(self, value): + self._address = value + + @property + def tokens(self): + """ """ + return self._tokens + + @tokens.setter + def tokens(self, value): + self._tokens = value + + @property + def il_instruction(self): + """ """ + return self._il_instruction + + @il_instruction.setter + def il_instruction(self, value): + self._il_instruction = value + + @property + def highlight(self): + """ """ + return self._highlight + + @highlight.setter + def highlight(self, value): + self._highlight = value + class DisassemblySettings(object): def __init__(self, handle = None): @@ -2130,65 +2185,218 @@ class DisassemblySettings(object): class RegisterInfo(object): def __init__(self, full_width_reg, size, offset=0, extend=ImplicitRegisterExtend.NoExtend, index=None): - self.full_width_reg = full_width_reg - self.offset = offset - self.size = size - self.extend = extend - self.index = index + self._full_width_reg = full_width_reg + self._offset = offset + self._size = size + self._extend = extend + self._index = index def __repr__(self): - if self.extend == ImplicitRegisterExtend.ZeroExtendToFullWidth: + if self._extend == ImplicitRegisterExtend.ZeroExtendToFullWidth: extend = ", zero extend" - elif self.extend == ImplicitRegisterExtend.SignExtendToFullWidth: + elif self._extend == ImplicitRegisterExtend.SignExtendToFullWidth: extend = ", sign extend" else: extend = "" - return "<reg: size %d, offset %d in %s%s>" % (self.size, self.offset, self.full_width_reg, extend) + return "<reg: size %d, offset %d in %s%s>" % (self._size, self._offset, self._full_width_reg, extend) + + @property + def full_width_reg(self): + """ """ + return self._full_width_reg + + @full_width_reg.setter + def full_width_reg(self, value): + self._full_width_reg = value + + @property + def offset(self): + """ """ + return self._offset + + @offset.setter + def offset(self, value): + self._offset = value + + @property + def size(self): + """ """ + return self._size + + @size.setter + def size(self, value): + self._size = value + + @property + def extend(self): + """ """ + return self._extend + + @extend.setter + def extend(self, value): + self._extend = value + + @property + def index(self): + """ """ + return self._index + + @index.setter + def index(self, value): + self._index = value class RegisterStackInfo(object): def __init__(self, storage_regs, top_relative_regs, stack_top_reg, index=None): - self.storage_regs = storage_regs - self.top_relative_regs = top_relative_regs - self.stack_top_reg = stack_top_reg - self.index = index + self._storage_regs = storage_regs + self._top_relative_regs = top_relative_regs + self._stack_top_reg = stack_top_reg + self._index = index def __repr__(self): - return "<reg stack: %d regs, stack top in %s>" % (len(self.storage_regs), self.stack_top_reg) + return "<reg stack: %d regs, stack top in %s>" % (len(self._jstorage_regs), self._stack_top_reg) + + @property + def storage_regs(self): + """ """ + return self._storage_regs + + @storage_regs.setter + def storage_regs(self, value): + self._storage_regs = value + + @property + def top_relative_regs(self): + """ """ + return self._top_relative_regs + + @top_relative_regs.setter + def top_relative_regs(self, value): + self._top_relative_regs = value + + @property + def stack_top_reg(self): + """ """ + return self._stack_top_reg + + @stack_top_reg.setter + def stack_top_reg(self, value): + self._stack_top_reg = value + + @property + def index(self): + """ """ + return self._index + + @index.setter + def index(self, value): + self._index = value class IntrinsicInput(object): def __init__(self, type_obj, name=""): - self.name = name + self._name = name self._type = type_obj def __repr__(self): - if len(self.name) == 0: + if len(self._name) == 0: return "<input: %s>" % str(self._type) - return "<input: %s %s>" % (str(self._type), self.name) + return "<input: %s %s>" % (str(self._type), self._name) + + @property + def name(self): + """ """ + return self._name + + @name.setter + def name(self, value): + self._name = value + + @property + def type(self): + """ """ + return self._type + + @type.setter + def type(self, value): + self._type = value class IntrinsicInfo(object): def __init__(self, inputs, outputs, index=None): - self.inputs = inputs - self.outputs = outputs - self.index = index + self._inputs = inputs + self._outputs = outputs + self._index = index def __repr__(self): - return "<intrinsic: %s -> %s>" % (repr(self.inputs), repr(self.outputs)) + return "<intrinsic: %s -> %s>" % (repr(self._inputs), repr(self._outputs)) + + @property + def inputs(self): + """ """ + return self._inputs + + @inputs.setter + def inputs(self, value): + self._inputs = value + + @property + def outputs(self): + """ """ + return self._outputs + + @outputs.setter + def outputs(self, value): + self._outputs = value + + @property + def index(self): + """ """ + return self._index + + @index.setter + def index(self, value): + self._index = value class InstructionBranch(object): def __init__(self, branch_type, target = 0, arch = None): self._type = branch_type - self.target = target - self.arch = arch + self._target = target + self._arch = arch def __repr__(self): branch_type = self._type - if self.arch is not None: - return "<%s: %s@%#x>" % (branch_type.name, self.arch.name, self.target) - return "<%s: %#x>" % (branch_type, self.target) + if self._arch is not None: + return "<%s: %s@%#x>" % (branch_type.name, self._arch.name, self._target) + return "<%s: %#x>" % (branch_type, self._target) + + @property + def type(self): + """ """ + return self._type + + @type.setter + def type(self, value): + self._type = value + + @property + def target(self): + """ """ + return self._target + + @target.setter + def target(self, value): + self._target = value + + @property + def arch(self): + """ """ + return self._arch + + @arch.setter + def arch(self, value): + self._arch = value class InstructionInfo(object): @@ -2199,13 +2407,49 @@ class InstructionInfo(object): self.branches = [] def add_branch(self, branch_type, target = 0, arch = None): - self.branches.append(InstructionBranch(branch_type, target, arch)) + self._branches.append(InstructionBranch(branch_type, target, arch)) def __repr__(self): branch_delay = "" - if self.branch_delay: + if self._branch_delay: branch_delay = ", delay slot" - return "<instr: %d bytes%s, %s>" % (self.length, branch_delay, repr(self.branches)) + return "<instr: %d bytes%s, %s>" % (self._length, branch_delay, repr(self._branches)) + + @property + def length(self): + """ """ + return self._length + + @length.setter + def length(self, value): + self._length = value + + @property + def arch_transition_by_target_addr(self): + """ """ + return self._arch_transition_by_target_addr + + @arch_transition_by_target_addr.setter + def arch_transition_by_target_addr(self, value): + self._arch_transition_by_target_addr = value + + @property + def branch_delay(self): + """ """ + return self._branch_delay + + @branch_delay.setter + def branch_delay(self, value): + self._branch_delay = value + + @property + def branches(self): + """ """ + return self._branches + + @branches.setter + def branches(self, value): + self._branches = value class InstructionTextToken(object): |
