Class DemangledFunction

    • Constructor Detail

      • DemangledFunction

        public DemangledFunction​(java.lang.String mangled,
                                 java.lang.String originalDemangled,
                                 java.lang.String name)
    • Method Detail

      • setReturnType

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

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

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

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

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

        public void setTemplatedConstructorType​(java.lang.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​(java.lang.String throwAttribute)
      • getSignature

        public java.lang.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​(java.lang.StringBuilder buffer,
                                     boolean format)
      • getNamespaceName

        public java.lang.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 java.lang.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
      • 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,
                                                      java.lang.String convention)