Class MissingBuiltInDataType

  • All Implemented Interfaces:
    BuiltInDataType, DataType, Dynamic, ExtensionPoint, java.util.EventListener, javax.swing.event.ChangeListener

    public class MissingBuiltInDataType
    extends DataTypeImpl
    implements Dynamic
    Provides an implementation of a data type that stands-in for a missing Built-In data type.

    This field is not meant to be loaded by the ClassSearcher, hence the X in the name.

    • Constructor Detail

      • MissingBuiltInDataType

        public MissingBuiltInDataType​(CategoryPath path,
                                      java.lang.String missingBuiltInName,
                                      java.lang.String missingBuiltInClassPath,
                                      DataTypeManager dtm)
        Construct a Missing Data Type
        Parameters:
        path - category path
        missingBuiltInName - name of missing built-in datatype for which this will standin for.
        missingBuiltInClassPath - classpath of missing built-in datatype for which this will standin for.
    • Method Detail

      • setCategory

        protected void setCategory()
        set the category for this data type
      • getMissingBuiltInName

        public java.lang.String getMissingBuiltInName()
        Returns name of missing built-in datatype for which this type is standing-in for
      • getMissingBuiltInClassPath

        public java.lang.String getMissingBuiltInClassPath()
        Returns classpath of missing built-in datatype for which this type is standing-in for
      • 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
      • canSpecifyLength

        public boolean canSpecifyLength()
        Description copied from interface: Dynamic
        Returns true if a user-specified length can be used
        Specified by:
        canSpecifyLength in interface Dynamic
      • getLength

        public int getLength​(MemBuffer buf,
                             int maxLength)
        Description copied from interface: Dynamic
        Compute the length for this data-type which corresponds to the specified memory location.
        Specified by:
        getLength in interface Dynamic
        Parameters:
        buf - memory location
        maxLength - maximum number of bytes to consume in computing length, or -1 for unspecified.
        Returns:
        data length or -1 if it could not be determined. Returned length may exceed maxLength if data-type does not supported constrained lengths.
        See Also:
        Dynamic.getLength(ghidra.program.model.mem.MemBuffer, int)
      • 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.
      • 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.
      • 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.
      • 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.
      • 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
      • 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
      • 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.
      • 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.
      • 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.
      • getLastChangeTime

        public long getLastChangeTime()
        Description copied from interface: DataType
        Get the timestamp corresponding to the last time this type was changed within its data type manager
        Specified by:
        getLastChangeTime in interface DataType
        Overrides:
        getLastChangeTime in class DataTypeImpl
        Returns:
        timestamp of last change within data type manager
      • getCTypeDeclaration

        public java.lang.String getCTypeDeclaration​(DataOrganization dataOrganization)
        Description copied from interface: BuiltInDataType
        Generate a suitable C-type declaration for this data-type as a #define or typedef. Since the length of a Dynamic datatype is unknown, such datatypes should only be referenced in C via a pointer. FactoryDataTypes should never be referenced and will always return null.
        Specified by:
        getCTypeDeclaration in interface BuiltInDataType
        Parameters:
        dataOrganization - or null for default
        Returns:
        definition C-statement (e.g., #define or typedef) or null if type name is a standard C-primitive name or if type is FactoryDataType or Dynamic.
        See Also:
        BuiltInDataType.getCTypeDeclaration(ghidra.program.model.data.DataOrganization)
      • getReplacementBaseType

        public DataType getReplacementBaseType()
        Description copied from interface: Dynamic
        Returns a suitable replacement base data-type for pointers and arrays when exporting to C code
        Specified by:
        getReplacementBaseType in interface Dynamic
        Returns:
        suitable base data-type for this Dynamic data-type