Class RTTI0DataType

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

    public class RTTI0DataType
    extends RTTIDataType
    The RTTI0 data type represents a TypeDescriptor structure.

    Fields for this RunTimeTypeInformation structure can be found on http://www.openrce.org

     struct TypeDescriptor {
         Pointer vfTablePointer;
         Pointer dataPointer;
         NullTerminatedString name; // mangled version of class name
     }
     

    RTTI_Type_Descriptor is the label for the RTTI0 data structure.

    • Constructor Detail

      • RTTI0DataType

        public RTTI0DataType()
        Creates a dynamic Type Descriptor data type.
      • RTTI0DataType

        public RTTI0DataType​(DataTypeManager dtm)
        Creates a dynamic Type Descriptor data type.
        Parameters:
        dtm - the data type manager for this data type.
    • Method Detail

      • 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.
        Parameters:
        dtm - the data-type manager instance whose data-organization should apply.
      • getDescription

        public java.lang.String getDescription()
        Description copied from interface: DataType
        Get a String briefly describing this 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.
        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
        Parameters:
        buf - the data buffer.
        settings - the settings to use.
        length - the number of bytes to get the value from.
        Returns:
        the data Object.
      • getVFTableAddress

        public Address getVFTableAddress​(Memory memory,
                                         Address rtti0Address)
        Gets the address of the vf table or null if one isn't indicated.
        Parameters:
        memory - the program memory containing the address
        rtti0Address - the address for the RTTI 0
        Returns:
        the address of the vf table or null.
      • getSpareDataAddress

        public Address getSpareDataAddress​(Memory memory,
                                           Address rtti0Address)
        Gets the address of the spare data, a 0 address if there is no spare data, or null.
        Parameters:
        memory - the program memory containing the address
        rtti0Address - the address for the RTTI 0
        Returns:
        the address of the spare data, a 0 value, or null.
      • getVFTableName

        public java.lang.String getVFTableName​(MemBuffer buf)
        Gets the type name for this descriptor.
        Parameters:
        buf - the memory buffer where data has been created with this data type.
        Returns:
        the name
      • getLength

        public int getLength​(Memory memory,
                             Address address,
                             byte[] bytes)
        Gets the total length of the data created when this data type is placed at the indicated address in memory.
        Parameters:
        memory - the program memory for this data.
        address - the start address of the data.
        bytes - the bytes for this data.
        Returns:
        the length of the data. zero is returned if valid data can't be created at the indicated address using this data type.
      • isValid

        public boolean isValid​(Program program,
                               Address startAddress,
                               DataValidationOptions validationOptions)
        Description copied from class: RTTIDataType
        Determines if the data type is valid for placing at the indicated address in the program.
        Specified by:
        isValid in class RTTIDataType
        Parameters:
        program - the program
        startAddress - the address where the validated data type will be used to create data
        validationOptions - options indicating how to perform the validation
        Returns:
        true if this data type can be laid down at the specified address
      • getLength

        public int getLength​(Memory memory,
                             Address startAddress)
        Gets the total length of the data created when this data type is placed at the indicated address in memory.
        Parameters:
        memory - the program memory for this data.
        address - the start address of the data.
        Returns:
        the length of the data. zero is returned if valid data can't be created at the indicated address using this data type.
      • getDefaultLabelPrefix

        public java.lang.String getDefaultLabelPrefix()
        Description copied from interface: DataType
        Returns the appropriate string to use as the default label prefix in the absence of any data.
        Specified by:
        getDefaultLabelPrefix in interface DataType
        Overrides:
        getDefaultLabelPrefix in class AbstractDataType
        Returns:
        the default label prefix or null if none specified.