From d8e3001e535fad178c621ff07418f81f25123dc4 Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Thu, 22 Aug 2024 12:55:49 -0600 Subject: Allow multiple high level representations for display, add Pseudo Rust and a Pseudo Python example plugin --- python/variable.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'python/variable.py') diff --git a/python/variable.py b/python/variable.py index 8ed3f545..7b4121bf 100644 --- a/python/variable.py +++ b/python/variable.py @@ -20,14 +20,14 @@ # IN THE SOFTWARE. import ctypes -from typing import List, Generator, Optional, Union, Set, Dict +from typing import List, Generator, Optional, Union, Set, Dict, Tuple from dataclasses import dataclass import binaryninja from . import _binaryninjacore as core from . import databuffer from . import decorators -from .enums import RegisterValueType, VariableSourceType, DeadStoreElimination, FunctionGraphType +from .enums import RegisterValueType, VariableSourceType, DeadStoreElimination, FunctionGraphType, BuiltinType FunctionOrILFunction = Union["binaryninja.function.Function", "binaryninja.lowlevelil.LowLevelILFunction", "binaryninja.mediumlevelil.MediumLevelILFunction", @@ -223,6 +223,12 @@ class ConstantData(RegisterValue): raise ValueError(f"ConstantData requires a Function instance: {self.size}") return self.function.get_constant_data(self.type, self.value, self.size) + @property + def data_and_builtin(self) -> Tuple[databuffer.DataBuffer, BuiltinType]: + if self.function is None: + raise ValueError(f"ConstantData requires a Function instance: {self.size}") + return self.function.get_constant_data_and_builtin(self.type, self.value, self.size) + @dataclass(frozen=True) class ValueRange: -- cgit v1.3.1