Package ghidra.program.model.data

# Class WideChar16DataType

java.lang.Object
ghidra.program.model.data.AbstractDataType
ghidra.program.model.data.DataTypeImpl
ghidra.program.model.data.BuiltIn
ghidra.program.model.data.WideChar16DataType

All Implemented Interfaces:
  `ArrayStringable`, `BuiltInDataType`, `DataType`, `DataTypeWithCharset`, `ExtensionPoint`

public class WideChar16DataType extends BuiltIn implements ArrayStringable, DataTypeWithCharset

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final WideChar16DataType`
  `dataType`
  A statically defined WideCharDataType instance.

  ### 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
  Constructor
  Description
  `WideChar16DataType()`
  `WideChar16DataType(DataTypeManager dtm)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `DataType`
  `clone(DataTypeManager dtm)`
  Returns an instance of this DataType using the specified `DataTypeManager` to allow its use of the corresponding `DataOrganization` while retaining its unique identity (see `DataType.getUniversalID()` and archive association (see `DataType.getSourceArchive()`) if applicable.
  `byte[]`
  `encodeRepresentation(String repr, MemBuffer buf, Settings settings, int length)`
  Encode bytes according to the display format for this type.
  `byte[]`
  `encodeValue(Object value, MemBuffer buf, Settings settings, int length)`
  Encode bytes from an Object appropriate for this DataType.
  `String`
  `getArrayDefaultLabelPrefix(MemBuffer buf, Settings settings, int len, DataTypeDisplayOptions options)`
  For cases where an array of this type exists, get the appropriate string to use as the default label prefix for the array.
  `String`
  `getArrayDefaultOffcutLabelPrefix(MemBuffer buf, Settings settings, int len, DataTypeDisplayOptions options, int offcutOffset)`
  For cases where an array of this type exists, get the appropriate string to use as the default label prefix, taking into account the fact that there exists a reference to the data that references `offcutLength` bytes into this type
  `protected SettingsDefinition[]`
  `getBuiltInSettingsDefinitions()`
  Gets a list of all the settingsDefinitions used by this datatype.
  `String`
  `getCharsetName(Settings settings)`
  Get the character set for a specific data type and settings
  `String`
  `getDefaultLabelPrefix()`
  Returns the appropriate string to use as the default label prefix in the absence of any data.
  `String`
  `getDefaultLabelPrefix(MemBuffer buf, Settings settings, int length, DataTypeDisplayOptions options)`
  Returns the appropriate string to use as the default label prefix.
  `String`
  `getDescription()`
  Get a String briefly describing this DataType.
  `int`
  `getLength()`
  Get the length of this DataType as a number of 8-bit bytes.
  `String`
  `getMnemonic(Settings settings)`
  Get the mnemonic for this DataType.
  `String`
  `getRepresentation(MemBuffer buf, Settings settings, int length)`
  Get bytes from memory in a printable format for this type.
  `Object`
  `getValue(MemBuffer buf, Settings settings, int length)`
  Returns the interpreted data value as an instance of the `advertised value class`.
  `Class<?>`
  `getValueClass(Settings settings)`
  Get the Class of the value Object to be returned by this datatype (see `DataType.getValue(MemBuffer, Settings, int)`).
  `boolean`
  `hasStringValue(Settings settings)`
  For cases where an array of this type exists, determines if a String value will be returned.
  `boolean`
  `isEncodable()`
  Check if this type supports encoding (patching)

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

  `addParent, copy, dataTypeDeleted, dataTypeNameChanged, dataTypeReplaced, dataTypeSizeChanged, dependsOn, 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, hashCode, notifyAlignmentChanged, notifyDeleted, notifyNameChanged, notifyParents, notifyReplaced, notifySizeChanged, replaceWith, setDescription, setLastChangeTime, setLastChangeTimeInSourceArchive, setSourceArchive`

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

  `dataTypeAlignmentChanged, getCategoryPath, getDataOrganization, getDataOrganization, getDataTypeManager, getDataTypePath, getDefaultAbbreviatedLabelPrefix, getDefaultOffcutLabelPrefix, getDisplayName, getDocs, getName, getTypeDefSettingsDefinitions, hasLanguageDependantLength, isDeleted, 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.ArrayStringable

  `getArrayString`

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

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

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

  `encodeCharacterRepresentation, encodeCharacterValue`

- ## Field Details

  - ### dataType

    public static final WideChar16DataType dataType
    A statically defined WideCharDataType instance.

- ## Constructor Details

  - ### WideChar16DataType

    public WideChar16DataType()

  - ### WideChar16DataType

    public WideChar16DataType(DataTypeManager dtm)

- ## Method Details

  - ### getLength

    public int getLength()
    Description copied from interface: `DataType`
    Get the length of this DataType as a number of 8-bit bytes.

    For primitive datatypes this reflects the smallest varnode which can be used to contain its value (i.e., raw data length).

    Example: For x86 32-bit gcc an 80-bit `long double` `raw data length` of 10-bytes will fit within a floating point register while its `aligned-length` of 12-bytes is used by the gcc compiler for data/array/component allocations to maintain alignment (i.e., `sizeof(long double)` ).

    NOTE: Other than the `VoidDataType`, no datatype should ever return 0, even if `DataType.isZeroLength()`, and only `Dynamic`/`FactoryDataType` datatypes should return -1. If `DataType.isZeroLength()` is true a length of 1 should be returned. Where a zero-length datatype can be handled (e.g., `Composite`) the `DataType.isZeroLength()` method should be used.

    Specified by:
      `getLength` in interface `DataType`
    Returns:
      the length of this DataType

  - ### getDescription

    public 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.

  - ### clone

    public DataType clone(DataTypeManager dtm)
    Description copied from interface: `DataType`
    Returns an instance of this DataType using the specified `DataTypeManager` to allow its use of the corresponding `DataOrganization` while retaining its unique identity (see `DataType.getUniversalID()` and archive association (see `DataType.getSourceArchive()`) if applicable.

    This instance will be returned if this datatype's DataTypeManager matches the specified dtm. The recursion depth of a clone will stop on any datatype whose `DataTypeManager` matches the specified dtm and simply use the existing datatype instance.

    NOTE: In general, this method should not be used to obtain an instance to be modified. In most cases changes may be made directly to this instance if supported or to a `DataType.copy(DataTypeManager)` of this type.

    Specified by:
      `clone` in interface `DataType`
    Parameters:
      `dtm` - the data-type manager instance whose data-organization should apply.
    Returns:
      cloned instance which may be the same as this instance

  - ### getMnemonic

    public String getMnemonic(Settings settings)
    Description copied from interface: `DataType`
    Get the mnemonic for this DataType.
    Specified by:
      `getMnemonic` in interface `DataType`
    Overrides:
      `getMnemonic` in class `AbstractDataType`
    Parameters:
      `settings` - settings which may influence the result or null
    Returns:
      the mnemonic for this DataType.

  - ### getBuiltInSettingsDefinitions

    protected SettingsDefinition[] getBuiltInSettingsDefinitions()
    Description copied from class: `BuiltIn`
    Gets a list of all the settingsDefinitions used by this datatype.
    Overrides:
      `getBuiltInSettingsDefinitions` in class `BuiltIn`
    Returns:
      a list of the settingsDefinitions used by this datatype.

  - ### getRepresentation

    public 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 Object getValue(MemBuffer buf, Settings settings, int length)
    Description copied from interface: `DataType`
    Returns the interpreted data value as an instance of the `advertised value class`.

    For instance, `Pointer` data types should return an Address object (or null), or integer data types should return a `Scalar` object.

    Specified by:
      `getValue` in interface `DataType`
    Parameters:
      `buf` - the data buffer
      `settings` - the settings to use.
      `length` - indicates the maximum number of bytes that may be consumed by a `Dynamic` datatype, otherwise this value is ignored. A value of -1 may be specified to allow a Dynamic datatype to determine the length based upon the actual data bytes
    Returns:
      the data object, or null if data is invalid

  - ### isEncodable

    public boolean isEncodable()
    Description copied from interface: `DataType`
    Check if this type supports encoding (patching)

    If unsupported, `DataType.encodeValue(Object, MemBuffer, Settings, int)` and `DataType.encodeRepresentation(String, MemBuffer, Settings, int)` will always throw an exception. Actions which rely on either `encode` method should not be displayed if the applicable datatype is not encodable.

    Specified by:
      `isEncodable` in interface `DataType`
    Overrides:
      `isEncodable` in class `AbstractDataType`
    Returns:
      true if encoding is supported

  - ### encodeValue

    public byte[] encodeValue(Object value, MemBuffer buf, Settings settings, int length) throws DataTypeEncodeException
    Description copied from interface: `DataType`
    Encode bytes from an Object appropriate for this DataType.

    Converts the given object to the byte encoding and returns it. When appropriate, this should seek the nearest encoding to the specified value, since the object may come from a user script. For example, a floating-point value may be rounded. Invalid values should be rejected with a `DataTypeEncodeException`.

    Specified by:
      `encodeValue` in interface `DataType`
    Overrides:
      `encodeValue` in class `AbstractDataType`
    Parameters:
      `value` - the desired value.
      `buf` - a buffer representing the eventual destination of the bytes.
      `settings` - the settings to use.
      `length` - the expected length of the result, usually the length of the data unit, or -1 to let the type choose the length. It may be ignored, e.g., for fixed-length types.
    Returns:
      the encoded value.
    Throws:
      `DataTypeEncodeException` - if the value cannot be encoded for any reason, e.g., incorrect type, not enough space, buffer overflow, unsupported (see `DataType.isEncodable()`).

  - ### encodeRepresentation

    public byte[] encodeRepresentation(String repr, MemBuffer buf, Settings settings, int length) throws DataTypeEncodeException
    Description copied from interface: `DataType`
    Encode bytes according to the display format for this type.

    Converts the given representation to the byte encoding and returns it. When appropriate, this should seek the nearest encoding to the specified value, since the representation is likely coming from user input. For example, a floating-point value may be rounded. Invalid representations should be rejected with a `DataTypeEncodeException`.

    Specified by:
      `encodeRepresentation` in interface `DataType`
    Overrides:
      `encodeRepresentation` in class `AbstractDataType`
    Parameters:
      `repr` - the representation of the desired value, as in `DataType.getRepresentation(MemBuffer, Settings, int)`. The supported formats depend on the specific datatype and its settings.
      `buf` - a buffer representing the eventual destination of the bytes.
      `settings` - the settings to use for the representation.
      `length` - the expected length of the result, usually the length of the data unit, or -1 to let the type choose the length. It may be ignored, e.g., for fixed-length types.
    Returns:
      the encoded value.
    Throws:
      `DataTypeEncodeException` - if the value cannot be encoded for any reason, e.g., incorrect format, not enough space, buffer overflow, unsupported (see `DataType.isEncodable()`).

  - ### getValueClass

    public Class<?> getValueClass(Settings settings)
    Description copied from interface: `DataType`
    Get the Class of the value Object to be returned by this datatype (see `DataType.getValue(MemBuffer, Settings, int)`).
    Specified by:
      `getValueClass` in interface `DataType`
    Overrides:
      `getValueClass` in class `DataTypeImpl`
    Parameters:
      `settings` - the relevant settings to use or null for default.
    Returns:
      Class of the value to be returned by this datatype or null if it can vary or is unspecified. Types which correspond to a string or char array will return the String class.

  - ### getDefaultLabelPrefix

    public String getDefaultLabelPrefix(MemBuffer buf, Settings settings, int length, DataTypeDisplayOptions options)
    Description copied from interface: `DataType`
    Returns the appropriate string to use as the default label prefix.
    Specified by:
      `getDefaultLabelPrefix` in interface `DataType`
    Overrides:
      `getDefaultLabelPrefix` in class `AbstractDataType`
    Parameters:
      `buf` - memory buffer containing the bytes.
      `settings` - the Settings object
      `length` - the length of the data.
      `options` - options for how to format the default label prefix.
    Returns:
      the default label prefix or null if none specified.

  - ### getDefaultLabelPrefix

    public 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.

  - ### hasStringValue

    public boolean hasStringValue(Settings settings)
    Description copied from interface: `ArrayStringable`
    For cases where an array of this type exists, determines if a String value will be returned.

    Specified by:
      `hasStringValue` in interface `ArrayStringable`
    Returns:
      true if array of this type with the specified settings will return a String value.

  - ### getArrayDefaultLabelPrefix

    public String getArrayDefaultLabelPrefix(MemBuffer buf, Settings settings, int len, DataTypeDisplayOptions options)
    Description copied from interface: `ArrayStringable`
    For cases where an array of this type exists, get the appropriate string to use as the default label prefix for the array.
    Specified by:
      `getArrayDefaultLabelPrefix` in interface `ArrayStringable`
    Parameters:
      `buf` - memory buffer containing the bytes.
      `settings` - the Settings object
      `len` - the length of the data.
      `options` - options for how to format the default label prefix.
    Returns:
      the default label prefix or null if none specified.

  - ### getArrayDefaultOffcutLabelPrefix

    public String getArrayDefaultOffcutLabelPrefix(MemBuffer buf, Settings settings, int len, DataTypeDisplayOptions options, int offcutOffset)
    Description copied from interface: `ArrayStringable`
    For cases where an array of this type exists, get the appropriate string to use as the default label prefix, taking into account the fact that there exists a reference to the data that references `offcutLength` bytes into this type
    Specified by:
      `getArrayDefaultOffcutLabelPrefix` in interface `ArrayStringable`
    Parameters:
      `buf` - memory buffer containing the bytes.
      `settings` - the Settings object.
      `len` - the length of the data.
      `options` - options for how to format the default label prefix.
      `offcutOffset` - the length of the offcut label prefix.
    Returns:
      the default label prefix or null if none specified.

  - ### getCharsetName

    public String getCharsetName(Settings settings)
    Description copied from interface: `DataTypeWithCharset`
    Get the character set for a specific data type and settings
    Specified by:
      `getCharsetName` in interface `DataTypeWithCharset`
    Parameters:
      `settings` - data instance settings
    Returns:
      Charset for this datatype and settings