Class DemangledFunction

java.lang.Object
ghidra.app.util.demangler.DemangledObject
ghidra.app.util.demangler.DemangledFunction
All Implemented Interfaces:
Demangled
Direct Known Subclasses:
DemangledLambda

public class DemangledFunction extends DemangledObject
A class to represent a demangled function.
  • Field Details

  • Constructor Details

    • DemangledFunction

      public DemangledFunction(String mangled, String originalDemangled, String name)
  • Method Details

    • setReturnType

      public void setReturnType(DemangledDataType returnType)
      Sets the function return type.
      Parameters:
      returnType - the function return type
    • setCallingConvention

      public void setCallingConvention(String callingConvention)
      Sets the function calling convention. For example, "__cdecl".
      Parameters:
      callingConvention - the function calling convention
    • setTemplate

      public void setTemplate(DemangledTemplate template)
    • getTemplate

      public DemangledTemplate getTemplate()
    • setOverloadedOperator

      public void setOverloadedOperator(boolean isOverloadedOperator)
      Sets whether this demangled function represents an overloaded operator. For example, "operator+()".
      Parameters:
      isOverloadedOperator - true if overloaded operator
    • addParameter

      public void addParameter(DemangledDataType parameter)
    • getParameters

      public List<DemangledDataType> getParameters()
    • getReturnType

      public DemangledDataType getReturnType()
      Returns the return type or null, if unspecified.
      Returns:
      the return type or null, if unspecified
    • getCallingConvention

      public String getCallingConvention()
      Returns the calling convention or null, if unspecified.
      Returns:
      the calling convention or null, if unspecified
    • setTemplatedConstructorType

      public void setTemplatedConstructorType(String type)
      Special constructor where it has a templated type before the parameter list
      Parameters:
      type - the type
    • isTrailingConst

      public boolean isTrailingConst()
    • setTrailingConst

      public void setTrailingConst()
    • isTrailingVolatile

      public boolean isTrailingVolatile()
    • setTrailingVolatile

      public void setTrailingVolatile()
    • isTrailingPointer64

      public boolean isTrailingPointer64()
    • setTrailingPointer64

      public void setTrailingPointer64()
    • isTrailingUnaligned

      public boolean isTrailingUnaligned()
    • setTrailingUnaligned

      public void setTrailingUnaligned()
    • isTrailingRestrict

      public boolean isTrailingRestrict()
    • setTrailingRestrict

      public void setTrailingRestrict()
    • isTypeCast

      public boolean isTypeCast()
    • setTypeCast

      public void setTypeCast()
    • setThrowAttribute

      public void setThrowAttribute(String throwAttribute)
    • getSignature

      public String getSignature(boolean format)
      Description copied from class: DemangledObject
      Returns a complete signature for the demangled symbol.
      For example: "unsigned long foo" "unsigned char * ClassA::getFoo(float, short *)" "void * getBar(int **, MyStruct &)"
      Note: based on the underlying mangling scheme, the return type may or may not be specified in the signature.
      Specified by:
      getSignature in class DemangledObject
      Parameters:
      format - true if signature should be pretty printed
      Returns:
      a complete signature for the demangled symbol
    • addParameters

      protected void addParameters(StringBuilder buffer, boolean format)
    • getNamespaceName

      public String getNamespaceName()
      Description copied from interface: Demangled
      Returns this object's namespace name without the fully-qualified parent path. The value returned here may have had some special characters replaced, such as ' ' replaced with '_' and '::' replaced with '--'.
      Specified by:
      getNamespaceName in interface Demangled
      Overrides:
      getNamespaceName in class DemangledObject
      Returns:
      the name
    • getParameterString

      public String getParameterString()
    • isAlreadyDemangled

      protected boolean isAlreadyDemangled(Program program, Address address)
      Description copied from class: DemangledObject
      Determine if the symbol at address has already been demangled. While memory symbols check for presence of demangledName, external symbols simply check if demangled/alternate name has already been assigned.
      Overrides:
      isAlreadyDemangled in class DemangledObject
      Parameters:
      program - the program being modified
      address - address of demangled symbol
      Returns:
      true if symbol at address has already been demangled
    • applyTo

      public boolean applyTo(Program program, Address address, DemanglerOptions options, TaskMonitor monitor) throws Exception
      Overrides:
      applyTo in class DemangledObject
      Throws:
      Exception
    • isDefinedFunctionDataTypes

      protected boolean isDefinedFunctionDataTypes(Function func)
      check if the return/param data types were defined by better than analysis (user, import)
      Parameters:
      func - the function to check
      Returns:
      true if the parameters are not undefined, or are of a higher source type.
    • maybeCreateClassStructure

      protected Structure maybeCreateClassStructure(Program program, Function function, String convention)
    • createFunction

      protected Function createFunction(Program prog, Address addr, boolean doDisassembly, TaskMonitor monitor) throws DemangledException
      Throws:
      DemangledException