summaryrefslogtreecommitdiff
path: root/python/function.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/function.py')
-rw-r--r--python/function.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/python/function.py b/python/function.py
index 0c411764..d065f454 100644
--- a/python/function.py
+++ b/python/function.py
@@ -960,6 +960,9 @@ class Function:
return None
return highlevelil.HighLevelILFunction(self.arch, result, self)
+ #@deprecation.deprecated(details="Use .type instead.")
+ # Uncomment, move below the property decorator,
+ # and mark deprecated after the next stable
@property
def function_type(self) -> 'types.FunctionType':
"""
@@ -978,6 +981,23 @@ class Function:
self.set_user_type(value)
@property
+ def type(self) -> 'types.FunctionType':
+ """
+ Function type object, can be set with either a string representing the function prototype
+ (`str(function)` shows examples) or a :py:class:`Type` object
+ """
+ return types.FunctionType(core.BNGetFunctionType(self.handle), platform=self.platform)
+
+ @type.setter
+ def type(self, value: Union['types.FunctionType', str]) -> None: # type: ignore
+ if isinstance(value, str):
+ (parsed_value, new_name) = self.view.parse_type_string(value)
+ self.name = str(new_name)
+ self.set_user_type(parsed_value)
+ else:
+ self.set_user_type(value)
+
+ @property
def stack_layout(self) -> List['variable.Variable']:
"""List of function stack variables (read-only)"""
count = ctypes.c_ulonglong()