Class FunctionDB

java.lang.Object
ghidra.program.database.DatabaseObject
ghidra.program.database.function.FunctionDB
All Implemented Interfaces:
Function, Namespace

public class FunctionDB extends DatabaseObject implements Function
Database implementation of a Function.
  • Method Details

    • isDeleted

      public boolean isDeleted()
      Description copied from interface: Function
      Determine if this function object has been deleted. NOTE: the function could be deleted at anytime due to asynchronous activity.
      Specified by:
      isDeleted in interface Function
      Returns:
      true if function has been deleted, false if not.
    • setValidationEnabled

      public void setValidationEnabled(boolean state)
    • checkDeleted

      protected void checkDeleted()
      Description copied from class: DatabaseObject
      Checks if this object has been deleted, in which case any use of the object is not allowed. This method should be invoked before any modifications to the object are performed to ensure it still exists and is in a valid state.
      Overrides:
      checkDeleted in class DatabaseObject
    • isThunk

      public boolean isThunk()
      Specified by:
      isThunk in interface Function
      Returns:
      true if this function is a Thunk and has a referenced Thunked Function.
      See Also:
    • getThunkedFunction

      public Function getThunkedFunction(boolean recursive)
      Description copied from interface: Function
      If this function is a Thunk, this method returns the referenced function.
      Specified by:
      getThunkedFunction in interface Function
      Parameters:
      recursive - if true and the thunked-function is a thunk itself, the returned thunked-function will be the final thunked-function which will never be a thunk.
      Returns:
      function referenced by this Thunk Function or null if this is not a Thunk function
    • setThunkedFunction

      public void setThunkedFunction(Function referencedFunction)
      Description copied from interface: Function
      Set the currently Thunked Function or null to convert to a normal function
      Specified by:
      setThunkedFunction in interface Function
      Parameters:
      referencedFunction - the thunked function or null to convert this thunked function to a normal function.
    • getFunctionThunkAddresses

      public Address[] getFunctionThunkAddresses(boolean recursive)
      Description copied from interface: Function
      If this function is "Thunked", an array of Thunk Function entry points is returned.
      Specified by:
      getFunctionThunkAddresses in interface Function
      Parameters:
      recursive - if true a recursive search is performed returning all effective thunks of this function, else if false only the first-hop (i.e., direct thunks) are returned.
      Returns:
      associated thunk function entry points or null if this is not a "Thunked" function.
    • isExternal

      public boolean isExternal()
      Description copied from interface: Namespace
      Returns true if this namespace is external (i.e., associated with a Library)
      Specified by:
      isExternal in interface Function
      Specified by:
      isExternal in interface Namespace
      Returns:
      true if this function is external (i.e., entry point is in EXTERNAL address space)
    • getExternalLocation

      public ExternalLocation getExternalLocation()
      Specified by:
      getExternalLocation in interface Function
      Returns:
      if this is an external function return the associated external location object.
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getName

      public String getName()
      Description copied from interface: Function
      Get the name of this function.
      Specified by:
      getName in interface Function
      Specified by:
      getName in interface Namespace
      Returns:
      the functions name
    • setName

      public void setName(String name, SourceType source) throws DuplicateNameException, InvalidInputException
      Description copied from interface: Function
      Set the name of this function.
      Specified by:
      setName in interface Function
      Parameters:
      name - the new name of the function
      source - the source of this function name
      Throws:
      DuplicateNameException - if the name is used by some other symbol
      InvalidInputException - if the name is not a valid function name.
    • getProgram

      public Program getProgram()
      Description copied from interface: Function
      Get the program containing this function.
      Specified by:
      getProgram in interface Function
      Returns:
      the program
    • getComment

      public String getComment()
      Description copied from interface: Function
      Get the comment for this function.
      Specified by:
      getComment in interface Function
      Returns:
      the comment for this function
    • getCommentAsArray

      public String[] getCommentAsArray()
      Description copied from interface: Function
      Returns the function (same as plate) comment as an array of strings where each item in the array is a line of text in the comment.
      Specified by:
      getCommentAsArray in interface Function
      Returns:
      the comments
    • setComment

      public void setComment(String comment)
      Description copied from interface: Function
      Set the comment for this function.
      Specified by:
      setComment in interface Function
      Parameters:
      comment - the string to set as the comment.
    • getRepeatableComment

      public String getRepeatableComment()
      Description copied from interface: Function
      Returns the repeatable comment for this function. A repeatable comment is a comment that will appear at locations that 'call' this function.
      Specified by:
      getRepeatableComment in interface Function
      Returns:
      the repeatable comment for this function
    • getRepeatableCommentAsArray

      public String[] getRepeatableCommentAsArray()
      Description copied from interface: Function
      Returns the repeatable comment as an array of strings.
      Specified by:
      getRepeatableCommentAsArray in interface Function
      Returns:
      the repeatable comment as an array of strings
    • setRepeatableComment

      public void setRepeatableComment(String comment)
      Description copied from interface: Function
      Set the repeatable comment for this function.
      Specified by:
      setRepeatableComment in interface Function
      Parameters:
      comment - the string to set as the repeatable comment.
    • getEntryPoint

      public Address getEntryPoint()
      Description copied from interface: Function
      Get the entry point for this function. Functions may only have ONE entry point.
      Specified by:
      getEntryPoint in interface Function
      Returns:
      the entry point
    • getBody

      public AddressSetView getBody()
      Description copied from interface: Namespace
      Get the address set for this namespace. Note: The body of a namespace (currently only used by the function namespace) is restricted it Integer.MAX_VALUE.
      Specified by:
      getBody in interface Namespace
      Returns:
      the address set for this namespace
    • setBody

      public void setBody(AddressSetView set) throws OverlappingFunctionException
      Description copied from interface: Function
      Set the new body for this function. The entry point must be contained in the new body.
      Specified by:
      setBody in interface Function
      Parameters:
      set - address set to use as the body of this function
      Throws:
      OverlappingFunctionException - if the address set overlaps that of another function
    • getReturnType

      public DataType getReturnType()
      Description copied from interface: Function
      Get the Function's return type. A null return value indicates the functions return type has never been set.
      Specified by:
      getReturnType in interface Function
      Returns:
      the DataType that this function returns.
    • getReturn

      public ReturnParameterDB getReturn()
      Description copied from interface: Function
      Get the Function's return type/storage represented by a Parameter object. The parameter's ordinal value will be equal to Parameter.RETURN_ORIDINAL.
      Specified by:
      getReturn in interface Function
      Returns:
      return data-type/storage
    • setReturn

      public void setReturn(DataType type, VariableStorage storage, SourceType source) throws InvalidInputException
      Description copied from interface: Function
      Set the return data-type and storage.

      NOTE: The storage and source are ignored if the function does not have custom storage enabled.

      Specified by:
      setReturn in interface Function
      Parameters:
      type - the data type
      storage - the storage
      source - source to be combined with the overall signature source.
      Throws:
      InvalidInputException - if data type is not a fixed length or storage is improperly sized
    • setReturnType

      public void setReturnType(DataType type, SourceType source) throws InvalidInputException
      Description copied from interface: Function
      Set the function's return type.
      Specified by:
      setReturnType in interface Function
      Parameters:
      type - the dataType that will define this functions return type.
      source - signature source
      Throws:
      InvalidInputException - if data type is not a fixed length.
    • getSignature

      public FunctionSignature getSignature(boolean formalSignature)
      Description copied from interface: Function
      Get the function's signature.

      WARNING! It is important to note that the calling convention may not be properly retained by the returned signature object if a non-generic calling convention is used by this function as defined by the program's compiler specification.
      Specified by:
      getSignature in interface Function
      Parameters:
      formalSignature - if true only original raw types will be retained and auto-params discarded (e.g., this, __return_storage_ptr__, etc.) within the returned signature. If false, the effective signature will be returned where forced indirect and auto-params are reflected in the signature. This option has no affect if the specified function has custom storage enabled.
      Returns:
      the function's signature
    • getSignature

      public FunctionSignature getSignature()
      Description copied from interface: Function
      Get the function's effective signature. This is equivalent to invoking getSignature(false) where auto-params and forced-indirect types will be reflected in the signature if present.

      WARNING! It is important to note that the calling convention may not be properly retained by the returned signature object if a non-generic calling convention is used by this function as defined by the program's compiler specification.
      Specified by:
      getSignature in interface Function
      Returns:
      the function's signature
    • getPrototypeString

      public String getPrototypeString(boolean formalSignature, boolean includeCallingConvention)
      Description copied from interface: Function
      Return a string representation of the function signature
      Specified by:
      getPrototypeString in interface Function
      Parameters:
      formalSignature - if true only original raw return/parameter types will be retained and auto-params discarded (e.g., this, __return_storage_ptr__, etc.) within the returned signature. If false, the effective signature will be returned where forced indirect and auto-params are reflected in the signature. This option has no affect if the specified function has custom storage enabled.
      includeCallingConvention - if true prototype will include call convention declaration if known.
      Returns:
      the prototype
    • getStackFrame

      public StackFrame getStackFrame()
      Description copied from interface: Function
      Get the stack frame for this function. NOTE: Use of the stack frame must be avoided during upgrade activity since the compiler spec may not be known (i.e., due to language upgrade process).
      Specified by:
      getStackFrame in interface Function
      Returns:
      this functions stack frame
      See Also:
    • getStackPurgeSize

      public int getStackPurgeSize()
      Description copied from interface: Function
      Get the change in the stack pointer resulting from calling this function.
      Specified by:
      getStackPurgeSize in interface Function
      Returns:
      int the change in bytes to the stack pointer
    • setStackPurgeSize

      public void setStackPurgeSize(int change)
      Description copied from interface: Function
      Set the change in the stack pointer resulting from calling this function.
      Specified by:
      setStackPurgeSize in interface Function
      Parameters:
      change - the change in bytes to the stack pointer
    • isStackPurgeSizeValid

      public boolean isStackPurgeSizeValid()
      Description copied from interface: Function
      check if stack purge size is valid.
      Specified by:
      isStackPurgeSizeValid in interface Function
      Returns:
      true if the stack depth is valid
    • getID

      public long getID()
      Description copied from interface: Namespace
      Return the namespace id
      Specified by:
      getID in interface Namespace
      Returns:
      the namespace id
    • addLocalVariable

      public VariableDB addLocalVariable(Variable var, SourceType source) throws DuplicateNameException, InvalidInputException
      Description copied from interface: Function
      Adds a local variable to the function. The VariableUtilities.checkVariableConflict(Function, Variable, VariableStorage, boolean) method may be used to check and remove conflicting variables which already exist in the function.
      Specified by:
      addLocalVariable in interface Function
      Parameters:
      var - the variable to add.
      source - the source of this local variable
      Returns:
      the Variable added to the program.
      Throws:
      DuplicateNameException - if another local variable or parameter already has that name.
      InvalidInputException - if there is an error or conflict when resolving the variable
      See Also:
    • getVariables

      public Variable[] getVariables(VariableFilter filter)
      Description copied from interface: Function
      Get all function variables which satisfy the specified filter
      Specified by:
      getVariables in interface Function
      Parameters:
      filter - variable filter or null for all variables to be returned
      Returns:
      all function variables which satisfy the specified filter
    • getAllVariables

      public Variable[] getAllVariables()
      Description copied from interface: Function
      Returns an array of all local and parameter variables
      Specified by:
      getAllVariables in interface Function
      Returns:
      the variables
    • getParameters

      public Parameter[] getParameters(VariableFilter filter)
      Description copied from interface: Function
      Get all function parameters which satisfy the specified filter
      Specified by:
      getParameters in interface Function
      Parameters:
      filter - variable filter or null for all parameters to be returned
      Returns:
      all function parameters which satisfy the specified filter
    • getParameters

      public Parameter[] getParameters()
      Description copied from interface: Function
      Get all function parameters
      Specified by:
      getParameters in interface Function
      Returns:
      all function parameters
    • getLocalVariables

      public Variable[] getLocalVariables(VariableFilter filter)
      Description copied from interface: Function
      Get all local function variables which satisfy the specified filter
      Specified by:
      getLocalVariables in interface Function
      Parameters:
      filter - variable filter or null for all local variables to be returned
      Returns:
      all function variables which satisfy the specified filter
    • getLocalVariables

      public Variable[] getLocalVariables()
      Description copied from interface: Function
      Get all local function variables
      Specified by:
      getLocalVariables in interface Function
      Returns:
      all local function variables
    • getParameterCount

      public int getParameterCount()
      Description copied from interface: Function
      Gets the total number of parameters for this function. This number also includes any auto-parameters which may have been injected when dynamic parameter storage is used.
      Specified by:
      getParameterCount in interface Function
      Returns:
      the total number of parameters
    • getAutoParameterCount

      public int getAutoParameterCount()
      Description copied from interface: Function
      Gets the number of auto-parameters for this function also included in the total count provided by Function.getParameterCount(). This number will always be 0 when custom parameter storage is used.
      Specified by:
      getAutoParameterCount in interface Function
      Returns:
      the number of auto-parameters
    • replaceParameters

      public void replaceParameters(Function.FunctionUpdateType updateType, boolean force, SourceType source, Variable... newParams) throws DuplicateNameException, InvalidInputException
      Description copied from interface: Function
      Replace all current parameters with the given list of parameters. The VariableUtilities.checkVariableConflict(Function, Variable, VariableStorage, boolean) method may be used to check and remove conflicting variables which already exist in the function.
      Specified by:
      replaceParameters in interface Function
      Parameters:
      updateType - function update type
      force - if true any conflicting local parameters will be removed
      source - the source of these parameters which will be applied to the parameter symbols and overall function signature source. If parameter names are null or a default name a SourceType of DEFAULT will be applied to the corresponding parameter symbol.
      newParams - the new parameters for the function.
      Throws:
      DuplicateNameException - if another variable(parameter or local) already exists in the function with that name.
      InvalidInputException - if a parameter data type is not a fixed length or variable name is invalid.
    • replaceParameters

      public void replaceParameters(List<? extends Variable> newParams, Function.FunctionUpdateType updateType, boolean force, SourceType source) throws DuplicateNameException, InvalidInputException
      Description copied from interface: Function
      Replace all current parameters with the given list of parameters. The VariableUtilities.checkVariableConflict(Function, Variable, VariableStorage, boolean) method may be used to check and remove conflicting variables which already exist in the function.
      Specified by:
      replaceParameters in interface Function
      Parameters:
      newParams - the new set of parameters for the function.
      updateType - function update type
      force - if true any conflicting local parameters will be removed
      source - the source of these parameters which will be applied to the parameter symbols and overall function signature source. If parameter names are null or a default name a SourceType of DEFAULT will be applied to the corresponding parameter symbol.
      Throws:
      DuplicateNameException - if another variable(parameter or local) already exists in the function with that name.
      InvalidInputException - if a parameter data type is not a fixed length or variable name is invalid.
    • updateFunction

      public void updateFunction(String callingConvention, Variable returnValue, Function.FunctionUpdateType updateType, boolean force, SourceType source, Variable... newParams) throws DuplicateNameException, InvalidInputException
      Description copied from interface: Function
      Replace all current parameters with the given list of parameters and optionally change the calling convention and function return. The VariableUtilities.checkVariableConflict(Function, Variable, VariableStorage, boolean) method may be used to check and remove conflicting variables which already exist in the function.
      Specified by:
      updateFunction in interface Function
      Parameters:
      callingConvention - updated calling convention name or null if no change is required. Only known calling convention names may be specified which will always include those defined by the associated CompilerSpec.
      returnValue - return variable or null if no change required
      updateType - function update type
      force - if true any conflicting local parameters will be removed
      source - the source of these parameters which will be applied to the parameter symbols and overall function signature source. If parameter names are null or a default name a SourceType of DEFAULT will be applied to the corresponding parameter symbol.
      newParams - a variable number of parameters for the function.
      Throws:
      DuplicateNameException - if another variable(parameter or local) already exists in the function with that name.
      InvalidInputException - if a parameter data type is not a fixed length or variable name is invalid.
    • updateFunction

      public void updateFunction(String callingConvention, Variable returnVar, List<? extends Variable> newParams, Function.FunctionUpdateType updateType, boolean force, SourceType source) throws DuplicateNameException, InvalidInputException
      Description copied from interface: Function
      Replace all current parameters with the given list of parameters and optionally change the calling convention and function return. The VariableUtilities.checkVariableConflict(Function, Variable, VariableStorage, boolean) method may be used to check and remove conflicting variables which already exist in the function.
      Specified by:
      updateFunction in interface Function
      Parameters:
      callingConvention - updated calling convention name or null if no change is required. Only known calling convention names may be specified which will always include those defined by the associated CompilerSpec.
      returnVar - return variable or null if no change required
      newParams - the list of new parameters for the function (required).
      updateType - function update type
      force - if true any conflicting local parameters will be removed
      source - the source of these parameters which will be applied to the parameter symbols and overall function signature source. If parameter names are null or a default name a SourceType of DEFAULT will be applied to the corresponding parameter symbol.
      Throws:
      DuplicateNameException - if another variable(parameter or local) already exists in the function with that name.
      InvalidInputException - if a parameter data type is not a fixed length or variable name is invalid.
    • addParameter

      public Parameter addParameter(Variable var, SourceType source) throws DuplicateNameException, InvalidInputException
      Description copied from interface: Function
      Adds the given variable to the end of the parameters list. The variable storage specified for the new parameter will be ignored if custom storage mode is not enabled. The VariableUtilities.checkVariableConflict(Function, Variable, VariableStorage, boolean) method may be used to check and remove conflicting variables which already exist in the function.
      Specified by:
      addParameter in interface Function
      Parameters:
      var - the variable to add as a new parameter.
      source - the source of this parameter which will be applied to the parameter symbol and overall function signature source. If parameter has a null or default name a SourceType of DEFAULT will be applied to the parameter symbol.
      Returns:
      the Parameter object created.
      Throws:
      DuplicateNameException - if another variable(parameter or local) already exists in the function with that name.
      InvalidInputException - if data type is not a fixed length or variable name is invalid.
    • insertParameter

      public ghidra.program.database.function.ParameterDB insertParameter(int ordinal, Variable var, SourceType source) throws DuplicateNameException, InvalidInputException
      Description copied from interface: Function
      Inserts the given variable into the parameters list. The variable storage specified for the new parameter will be ignored if custom storage mode is not enabled. The VariableUtilities.checkVariableConflict(Function, Variable, VariableStorage, boolean) method may be used to check and remove conflicting variables which already exist in the function.
      Specified by:
      insertParameter in interface Function
      Parameters:
      ordinal - the position with the parameters to insert to. This ordinal must factor in the presence of auto-parameters which may be injected dynamically based upon calling convention and return data type. Parameters may not be inserted befor an auto-parameter.
      var - the variable to add as a new parameter.
      source - the source of this parameter which will be applied to the parameter symbol and overall function signature source. If parameter has a null or default name a SourceType of DEFAULT will be applied to the parameter symbol.
      Returns:
      the Parameter object created.
      Throws:
      DuplicateNameException - if another variable(parameter or local) already exists in the function with that name.
      InvalidInputException - if data type is not a fixed length or variable name is invalid.
      See Also:
    • removeVariable

      public void removeVariable(Variable variable)
      Description copied from interface: Function
      Removes the given variable from the function.
      Specified by:
      removeVariable in interface Function
      Parameters:
      variable - the variable to remove.
    • removeParameter

      public void removeParameter(int ordinal)
      Description copied from interface: Function
      Remove the specified parameter. Auto-parameters may not be removed but must be accounted for in the specified ordinal.
      Specified by:
      removeParameter in interface Function
      Parameters:
      ordinal - the index of the parameter to be removed.
    • refresh

      protected boolean refresh()
      Description copied from class: DatabaseObject
      Tells the object to refresh its state from the database.
      Specified by:
      refresh in class DatabaseObject
      Returns:
      true if the object was able to refresh itself. Return false if the object was deleted. Objects that extend this class must implement a refresh method. If an object can never refresh itself, then it should always return false.
    • refresh

      protected boolean refresh(DBRecord refreshRec)
      Description copied from class: DatabaseObject
      Tells the object to refresh its state from the database using the specified record if not null. NOTE: The default implementation ignores the record and invokes refresh(). Implementations of this method must take care if multiple database tables are used since the record supplied could correspond to another object. In some cases it may be best not to override this method or ignore the record provided.
      Overrides:
      refresh in class DatabaseObject
      Parameters:
      refreshRec - valid record associated with object's key (optional, may be null to force record lookup or other refresh technique)
      Returns:
      true if the object was able to refresh itself. Return false if record is null and object was deleted. Objects that extend this class must implement a refresh method. If an object can never refresh itself, then it should always return false.
    • doDeleteVariable

      public void doDeleteVariable(VariableSymbolDB symbol)
      Callback to remove variable just prior to removal of the underlying symbol.
      Parameters:
      symbol - variable symbol which is about to be deleted.
    • getVariable

      public Variable getVariable(VariableSymbolDB symbol)
      Return the Variable for the given symbol.
      Parameters:
      symbol - variable symbol
      Returns:
      Variable which corresponds to specified symbol
    • getParameter

      public Parameter getParameter(int ordinal)
      Description copied from interface: Function
      Returns the specified parameter including an auto-param at the specified ordinal.
      Specified by:
      getParameter in interface Function
      Parameters:
      ordinal - the index of the parameter to return.
      Returns:
      parameter or null if ordinal is out of range
    • moveParameter

      public Parameter moveParameter(int fromOrdinal, int toOrdinal) throws InvalidInputException
      Description copied from interface: Function
      Move the parameter which occupies the fromOrdinal position to the toOrdinal position. Parameters will be renumbered to reflect the new ordering. Auto-parameters may not be moved but must be accounted for in the specified ordinals.
      Specified by:
      moveParameter in interface Function
      Parameters:
      fromOrdinal - from ordinal position using the current numbering
      toOrdinal - the final position of the specified parameter
      Returns:
      parameter which was moved
      Throws:
      InvalidInputException - if either ordinal is invalid
    • getSymbol

      public Symbol getSymbol()
      Description copied from interface: Namespace
      Get the symbol for this namespace.
      Specified by:
      getSymbol in interface Namespace
      Returns:
      the symbol for this namespace.
    • setParentNamespace

      public void setParentNamespace(Namespace newParentScope) throws DuplicateNameException, InvalidInputException, CircularDependencyException
      Description copied from interface: Namespace
      Set the parent namespace for this namespace. Restrictions may apply.
      Specified by:
      setParentNamespace in interface Namespace
      Parameters:
      newParentScope - the namespace to use as this namespace's parent.
      Throws:
      DuplicateNameException - if another symbol exists in the parent namespace with the same name as this namespace
      InvalidInputException - if the parent namespace is not applicable for this namespace.
      CircularDependencyException - if the parent namespace is a descendent of this namespace.
    • getParentNamespace

      public Namespace getParentNamespace()
      Description copied from interface: Namespace
      Get the parent scope.
      Specified by:
      getParentNamespace in interface Namespace
      Returns:
      null if this scope is the global scope.
      See Also:
    • getName

      public String getName(boolean includeNamespacePath)
      Description copied from interface: Namespace
      Returns the fully qualified name
      Specified by:
      getName in interface Namespace
      Parameters:
      includeNamespacePath - true to include the namespace in the returned name
      Returns:
      the fully qualified name
    • hasVarArgs

      public boolean hasVarArgs()
      Description copied from interface: Function
      Returns true if this function has a variable argument list (VarArgs)
      Specified by:
      hasVarArgs in interface Function
      Returns:
      true if this function has a variable argument list (VarArgs)
    • setVarArgs

      public void setVarArgs(boolean hasVarArgs)
      Description copied from interface: Function
      Set whether parameters can be passed as a VarArg (variable argument list)
      Specified by:
      setVarArgs in interface Function
      Parameters:
      hasVarArgs - true if this function has a variable argument list (e.g., printf(fmt, ...)).
    • isInline

      public boolean isInline()
      Specified by:
      isInline in interface Function
      Returns:
      true if this is an inline function.
    • setInline

      public void setInline(boolean isInline)
      Description copied from interface: Function
      Sets whether or not this function is inline.
      Specified by:
      setInline in interface Function
      Parameters:
      isInline - true if this is an inline function.
    • hasNoReturn

      public boolean hasNoReturn()
      Specified by:
      hasNoReturn in interface Function
      Returns:
      true if this function does not return.
    • setNoReturn

      public void setNoReturn(boolean hasNoReturn)
      Description copied from interface: Function
      Set whether or not this function has a return.
      Specified by:
      setNoReturn in interface Function
      Parameters:
      hasNoReturn - true if this function does not return.
    • hasCustomVariableStorage

      public boolean hasCustomVariableStorage()
      Specified by:
      hasCustomVariableStorage in interface Function
      Returns:
      true if function parameters utilize custom variable storage.
    • setCustomVariableStorage

      public void setCustomVariableStorage(boolean hasCustomVariableStorage)
      Description copied from interface: Function
      Set whether or not this function uses custom variable storage
      Specified by:
      setCustomVariableStorage in interface Function
      Parameters:
      hasCustomVariableStorage - true if this function uses custom storage
    • getSignatureSource

      public SourceType getSignatureSource()
      Description copied from interface: Function
      Returns the source type for the overall signature excluding function name and parameter names whose source is carried by the corresponding symbol.
      Specified by:
      getSignatureSource in interface Function
      Returns:
      the overall SourceType of the function signature;
    • setSignatureSource

      public void setSignatureSource(SourceType signatureSource)
      Description copied from interface: Function
      Set the source type for the overall signature excluding function name and parameter names whose source is carried by the corresponding symbol.
      Specified by:
      setSignatureSource in interface Function
      Parameters:
      signatureSource - function signature source type
    • getCallingConvention

      public PrototypeModel getCallingConvention()
      Description copied from interface: Function
      Gets the calling convention prototype model for this function.
      Specified by:
      getCallingConvention in interface Function
      Returns:
      the prototype model of the function's current calling convention or null.
    • getCallingConventionName

      public String getCallingConventionName()
      Description copied from interface: Function
      Gets the calling convention's name for this function.
      Specified by:
      getCallingConventionName in interface Function
      Returns:
      the name of the calling convention or Function.DEFAULT_CALLING_CONVENTION_STRING (i.e. "default", if the calling convention has been set to the default for this function) or Function.UNKNOWN_CALLING_CONVENTION_STRING (i.e. "unknown", if no calling convention is specified for this function).
    • setCallingConvention

      public void setCallingConvention(String name) throws InvalidInputException
      Description copied from interface: Function
      Sets the calling convention for this function to the named calling convention. Only known calling convention names may be specified which will always include those defined by the associated CompilerSpec.
      Specified by:
      setCallingConvention in interface Function
      Parameters:
      name - the name of the calling convention. Only known calling convention names may be specified which will always include those defined by the associated CompilerSpec. In addition the reserved names "unknown" and "default" may also be used here.
      Throws:
      InvalidInputException - if the specified name is not a recognized calling convention name.
    • getCallFixup

      public String getCallFixup()
      Description copied from interface: Function
      Returns the current call-fixup name set on this instruction or null if one has not been set
      Specified by:
      getCallFixup in interface Function
      Returns:
      the call fixup name or null
    • setCallFixup

      public void setCallFixup(String name)
      Description copied from interface: Function
      Set the named call-fixup for this function.
      Specified by:
      setCallFixup in interface Function
      Parameters:
      name - name of call-fixup specified by compiler spec. A null value will clear the current setting.
    • getCallingFunctions

      public Set<Function> getCallingFunctions(TaskMonitor monitor)
      Description copied from interface: Function
      Returns a set of functions that call this function.
      Specified by:
      getCallingFunctions in interface Function
      Parameters:
      monitor - The monitor that is used to report progress and allow for canceling of the search. May be null.
      Returns:
      a set of functions that call this function.
    • getCalledFunctions

      public Set<Function> getCalledFunctions(TaskMonitor monitor)
      Description copied from interface: Function
      Returns a set of functions that this function calls.
      Specified by:
      getCalledFunctions in interface Function
      Parameters:
      monitor - The monitor that is used to report progress and allow for canceling of the search. May be null.
      Returns:
      a set of functions that this function calls.
    • getTags

      public Set<FunctionTag> getTags()
      Description copied from interface: Function
      Return all FunctionTag objects associated with this function.
      Specified by:
      getTags in interface Function
      Returns:
      set of tag names
    • addTag

      public boolean addTag(String name)
      Description copied from interface: Function
      Adds the tag with the given name to this function; if one does not exist, one is created.
      Specified by:
      addTag in interface Function
      Parameters:
      name - the tag name to add
      Returns:
      true if the tag was successfully added
    • removeTag

      public void removeTag(String name)
      Description copied from interface: Function
      Removes the given tag from this function.
      Specified by:
      removeTag in interface Function
      Parameters:
      name - the tag name to be removed.
    • promoteLocalUserLabelsToGlobal

      public void promoteLocalUserLabelsToGlobal()
      Description copied from interface: Function
      Changes all local user-defined labels for this function to global symbols. If a global code symbol already exists with the same name at the symbols address the symbol will be removed.
      Specified by:
      promoteLocalUserLabelsToGlobal in interface Function