Class FunctionDefinitionDataType

    • Constructor Detail

      • FunctionDefinitionDataType

        public FunctionDefinitionDataType​(java.lang.String name)
      • FunctionDefinitionDataType

        public FunctionDefinitionDataType​(java.lang.String name,
                                          DataTypeManager dtm)
      • FunctionDefinitionDataType

        public FunctionDefinitionDataType​(CategoryPath path,
                                          java.lang.String name)
      • FunctionDefinitionDataType

        public FunctionDefinitionDataType​(FunctionSignature sig)
      • FunctionDefinitionDataType

        public FunctionDefinitionDataType​(Function function,
                                          boolean formalSignature)
        Create a Function Definition based on a Function
        Parameters:
        function - the function to use to create a Function Signature.
        formalSignature - if true only original formal types will be retained and auto-params discarded (e.g., this, __return_storage_ptr__, etc.). If false, the effective signature will be used where forced indirect and auto-params are reflected in the signature. This option has no affect if the specified function has custom storage enabled.
    • Method Detail

      • setComment

        public void setComment​(java.lang.String comment)
        Description copied from interface: FunctionDefinition
        Set the function comment
        Specified by:
        setComment in interface FunctionDefinition
        Parameters:
        comment - the comment to set.
      • setVarArgs

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

        public DataType copy​(DataTypeManager dtm)
        Description copied from interface: DataType
        Returns a new instance of this DataType with a new identity. Note: for built-in DataType's, clone and copy should have the same affect.
        Specified by:
        copy in interface DataType
        Parameters:
        dtm - the data-type manager instance whose data-organization should apply.
      • clone

        public DataType clone​(DataTypeManager dtm)
        Description copied from interface: DataType
        Returns a new instance of this DataType with its universalID and SourceArchive identity retained. Note: for built-in DataType's, clone and copy should have the same affect.
        Specified by:
        clone in interface DataType
        Parameters:
        dtm - the data-type manager instance whose data-organization should apply.
      • getLength

        public int getLength()
        Description copied from interface: DataType
        Get the length (number of 8-bit bytes) of this DataType.
        Specified by:
        getLength in interface DataType
        Returns:
        the length of this DataType
      • getDescription

        public java.lang.String getDescription()
        Description copied from interface: DataType
        Get a String briefly describing this DataType.
        Specified by:
        getDescription in interface DataType
        Returns:
        a one-liner describing this DataType.
      • getValue

        public java.lang.Object getValue​(MemBuffer buf,
                                         Settings settings,
                                         int length)
        Description copied from interface: DataType
        Get the data in the form of the appropriate Object for this DataType. For instance if the data type is an AddressDT, return an Address object. a Byte, return a Scalar* (maybe this should be a Byte) a Float, return a Float
        Specified by:
        getValue in interface DataType
        Parameters:
        buf - the data buffer.
        settings - the settings to use.
        length - the number of bytes to get the value from.
        Returns:
        the data Object.
      • getRepresentation

        public java.lang.String getRepresentation​(MemBuffer buf,
                                                  Settings settings,
                                                  int length)
        Description copied from interface: DataType
        Get bytes from memory in a printable format for this type.
        Specified by:
        getRepresentation in interface DataType
        Parameters:
        buf - the data.
        settings - the settings to use for the representation.
        length - the number of bytes to represent.
        Returns:
        the representation of the data in this format, never null.
      • getPrototypeString

        public java.lang.String getPrototypeString()
        Description copied from interface: FunctionSignature
        Return a string representation of the function signature without the calling convention specified.
        Specified by:
        getPrototypeString in interface FunctionSignature
      • getPrototypeString

        public java.lang.String getPrototypeString​(boolean includeCallingConvention)
        Description copied from interface: FunctionSignature
        Return a string representation of the function signature
        Specified by:
        getPrototypeString in interface FunctionSignature
        Parameters:
        includeCallingConvention - if true prototype will include call convention declaration if known.
      • hasVarArgs

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

        public boolean isEquivalent​(DataType dt)
        Description copied from interface: DataType
        Returns true if the given dataType is equivalent to this dataType. The precise meaning of "equivalent" is dataType dependent.
        Specified by:
        isEquivalent in interface DataType
        Parameters:
        dt - the dataType being tested for equivalence.
        Returns:
        true if the if the given dataType is equivalent to this dataType.
      • isEquivalentSignature

        public boolean isEquivalentSignature​(FunctionSignature signature)
        Description copied from interface: FunctionSignature
        Returns true if the given signature is equivalent to this signature. The precise meaning of "equivalent" is dependent upon return/parameter dataTypes.
        Specified by:
        isEquivalentSignature in interface FunctionSignature
        Returns:
        true if the if the given signature is equivalent to this signature.
      • dataTypeReplaced

        public void dataTypeReplaced​(DataType oldDt,
                                     DataType newDt)
        Description copied from interface: DataType
        Informs this data type that the given oldDT has been replaced with newDT
        TODO: This method is reserved for internal DB use and should be removed from the public DataType interface!!
        Specified by:
        dataTypeReplaced in interface DataType
        Overrides:
        dataTypeReplaced in class AbstractDataType
        Parameters:
        oldDt - old data type
        newDt - new data type
      • replaceArgument

        public void replaceArgument​(int ordinal,
                                    java.lang.String newName,
                                    DataType dt,
                                    java.lang.String newComment,
                                    SourceType source)
        Description copied from interface: FunctionDefinition
        Replace the given argument with another data type
        Specified by:
        replaceArgument in interface FunctionDefinition
        Parameters:
        ordinal - the index of the argument to be replaced, starting from '0'
        newName - name of the new argument
        dt - data type of the new argument
        newComment - comment for the argument
        source - the source of this function definition argument: Symbol.DEFAULT, Symbol.ANALYSIS, Symbol.IMPORTED, or Symbol.USER_DEFINED
      • dataTypeSizeChanged

        public void dataTypeSizeChanged​(DataType dt)
        Description copied from interface: DataType
        Notification that the given dataType's size has changed. DataTypes may need to make internal changes in response.
        TODO: This method is reserved for internal DB use and should be removed from the public DataType interface!!
        Specified by:
        dataTypeSizeChanged in interface DataType
        Overrides:
        dataTypeSizeChanged in class AbstractDataType
        Parameters:
        dt - the dataType that has changed.
      • dataTypeDeleted

        public void dataTypeDeleted​(DataType dt)
        Description copied from interface: DataType
        Informs this dataType that the given dataType has been deleted.
        TODO: This method is reserved for internal DB use and should be removed from the public DataType interface!!
        Specified by:
        dataTypeDeleted in interface DataType
        Overrides:
        dataTypeDeleted in class AbstractDataType
        Parameters:
        dt - the dataType that has been deleted.
      • dataTypeNameChanged

        public void dataTypeNameChanged​(DataType dt,
                                        java.lang.String oldName)
        Description copied from interface: DataType
        Informs this data type that its name has changed from the indicated old name.
        TODO: This method is reserved for internal DB use and should be removed from the public DataType interface!!
        Specified by:
        dataTypeNameChanged in interface DataType
        Overrides:
        dataTypeNameChanged in class AbstractDataType
        Parameters:
        dt - the data type whose name changed
        oldName - the data type's old name
      • dependsOn

        public boolean dependsOn​(DataType dt)
        Description copied from interface: DataType
        Returns true if this dataType depends on the existence of the given dataType. For example byte[] depends on byte. If byte were deleted, then byte[] would also be deleted.
        Specified by:
        dependsOn in interface DataType
        Overrides:
        dependsOn in class AbstractDataType
        Parameters:
        dt - the dataType to test that this dataType depends on.