Package ghidra.app.util.datatype.microsoft

# Class RTTIDataType

java.lang.Object
ghidra.program.model.data.AbstractDataType
ghidra.program.model.data.DataTypeImpl
ghidra.program.model.data.BuiltIn
ghidra.program.model.data.DynamicDataType
ghidra.app.util.datatype.microsoft.RTTIDataType

All Implemented Interfaces:
  `BuiltInDataType`, `DataType`, `Dynamic`, `ExtensionPoint`

Direct Known Subclasses:
  `RTTI0DataType`, `RTTI1DataType`, `RTTI2DataType`, `RTTI3DataType`, `RTTI4DataType`

public abstract class RTTIDataType extends DynamicDataType
An abstract class that each RTTI data type should extend to get common functionality.

- ## Field Summary

  ### Fields inherited from class ghidra.program.model.data.DataTypeImpl

  `defaultSettings`

  ### Fields inherited from class ghidra.program.model.data.AbstractDataType

  `categoryPath, dataMgr, name`

  ### Fields inherited from interface ghidra.program.model.data.DataType

  `CONFLICT_SUFFIX, DEFAULT, NO_LAST_CHANGE_TIME, NO_SOURCE_SYNC_TIME, TYPEDEF_ATTRIBUTE_PREFIX, TYPEDEF_ATTRIBUTE_SUFFIX, VOID`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `RTTIDataType(String name, DataTypeManager dtm)`
  Creates an RTTI data type.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected DataValidationOptions`
  `convertValidationOptions(boolean overwriteInstructions, boolean overwriteDefinedData)`
  Creates a DataValidationOptions object with the indicated settings for instructions and defined data.
  `boolean`
  `isValid(Program program, Address startAddress, boolean overwriteInstructions, boolean overwriteDefinedData)`
  Deprecated.
  `abstract boolean`
  `isValid(Program program, Address address, DataValidationOptions validationOptions)`
  Determines if the data type is valid for placing at the indicated address in the program.

  ### Methods inherited from class ghidra.program.model.data.DynamicDataType

  `canSpecifyLength, getAllComponents, getComponent, getComponentAt, getComponents, getComps, getLength, getLength, getNumComponents, getReplacementBaseType, invalidateCache`

  ### Methods inherited from class ghidra.program.model.data.BuiltIn

  `addParent, copy, dataTypeDeleted, dataTypeNameChanged, dataTypeReplaced, dataTypeSizeChanged, dependsOn, getBuiltInSettingsDefinitions, getCTypeDeclaration, getCTypeDeclaration, getCTypeDeclaration, getCTypeDeclaration, getDecompilerDisplayName, getLastChangeTime, getSettingsDefinitions, getUniversalID, isEquivalent, removeParent, setCategoryPath, setDefaultSettings, setName, setNameAndCategory`

  ### Methods inherited from class ghidra.program.model.data.DataTypeImpl

  `equals, getAlignedLength, getAlignment, getDefaultSettings, getLastChangeTimeInSourceArchive, getParents, getPathName, getSourceArchive, getValueClass, hashCode, notifyAlignmentChanged, notifyDeleted, notifyNameChanged, notifyParents, notifyReplaced, notifySizeChanged, replaceWith, setDescription, setLastChangeTime, setLastChangeTimeInSourceArchive, setSourceArchive`

  ### Methods inherited from class ghidra.program.model.data.AbstractDataType

  `dataTypeAlignmentChanged, encodeRepresentation, encodeValue, getCategoryPath, getDataOrganization, getDataOrganization, getDataTypeManager, getDataTypePath, getDefaultAbbreviatedLabelPrefix, getDefaultLabelPrefix, getDefaultLabelPrefix, getDefaultOffcutLabelPrefix, getDisplayName, getDocs, getMnemonic, getName, getTypeDefSettingsDefinitions, hasLanguageDependantLength, isDeleted, isEncodable, isNotYetDefined, isZeroLength, toString`

  ### Methods inherited from class java.lang.Object

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface ghidra.program.model.data.BuiltInDataType

  `getCTypeDeclaration, setDefaultSettings`

  ### Methods inherited from interface ghidra.program.model.data.DataType

  `addParent, clone, copy, dataTypeAlignmentChanged, dataTypeDeleted, dataTypeNameChanged, dataTypeReplaced, dataTypeSizeChanged, dependsOn, encodeRepresentation, encodeValue, getAlignedLength, getAlignment, getCategoryPath, getDataOrganization, getDataTypeManager, getDataTypePath, getDefaultAbbreviatedLabelPrefix, getDefaultLabelPrefix, getDefaultLabelPrefix, getDefaultOffcutLabelPrefix, getDefaultSettings, getDescription, getDisplayName, getDocs, getLastChangeTime, getLastChangeTimeInSourceArchive, getMnemonic, getName, getParents, getPathName, getRepresentation, getSettingsDefinitions, getSourceArchive, getTypeDefSettingsDefinitions, getUniversalID, getValue, getValueClass, hasLanguageDependantLength, isDeleted, isEncodable, isEquivalent, isNotYetDefined, isZeroLength, removeParent, replaceWith, setCategoryPath, setDescription, setLastChangeTime, setLastChangeTimeInSourceArchive, setName, setNameAndCategory, setSourceArchive`

- ## Constructor Details

  - ### RTTIDataType

    protected RTTIDataType(String name, DataTypeManager dtm)
    Creates an RTTI data type.
    Parameters:
      `name` - the name of the data type.
      `dtm` - the data type manager for this data type.

- ## Method Details

  - ### isValid

    @Deprecated public boolean isValid(Program program, Address startAddress, boolean overwriteInstructions, boolean overwriteDefinedData)
    Deprecated.
    Determines if the data type is valid for placing at the indicated address in the program.
    Parameters:
      `program` - the program
      `startAddress` - the start address
      `overwriteInstructions` - true indicates that existing instructions can be overwritten by this data type.
      `overwriteDefinedData` - true indicates that existing defined data can be overwritten by this data type.
    Returns:
      true if this data type can be laid down at the specified address.
    See Also:
      - `isValid(Program program, Address address, DataValidationOptions validationOptions)`

  - ### convertValidationOptions

    protected DataValidationOptions convertValidationOptions(boolean overwriteInstructions, boolean overwriteDefinedData)
    Creates a DataValidationOptions object with the indicated settings for instructions and defined data. Other validation options will be set to the default values.
    Parameters:
      `overwriteInstructions` - true indicates it is valid to overwrite instructions
      `overwriteDefinedData` - true indicates it is valid to overwrite defined data
    Returns:
      the DataValidationOptions object

  - ### isValid

    public abstract boolean isValid(Program program, Address address, DataValidationOptions validationOptions)
    Determines if the data type is valid for placing at the indicated address in the program.
    Parameters:
      `program` - the program
      `address` - 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