Package ghidra.program.model.data
Class StructuredDynamicDataType
- java.lang.Object
-
- ghidra.program.model.data.AbstractDataType
-
- ghidra.program.model.data.DataTypeImpl
-
- ghidra.program.model.data.BuiltIn
-
- ghidra.program.model.data.DynamicDataType
-
- ghidra.program.model.data.StructuredDynamicDataType
-
- All Implemented Interfaces:
BuiltInDataType
,DataType
,Dynamic
,ExtensionPoint
public abstract class StructuredDynamicDataType extends DynamicDataType
Structured Dynamic Data type. Dynamic Structure that is built by adding data types to it. NOTE: This is a special Dynamic data-type which can only appear as a component created by a Dynamic data-type
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.List<java.lang.String>
componentDescs
protected java.util.List<java.lang.String>
componentNames
protected java.util.List<DataType>
components
protected java.lang.String
description
-
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, VOID
-
-
Constructor Summary
Constructors Constructor Description StructuredDynamicDataType(java.lang.String name, java.lang.String description, DataTypeManager dtm)
Construct an empty dynamic structure
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(DataType data, java.lang.String componentName, java.lang.String componentDescription)
Add a component data type onto the end of the dynamic structureprotected DataTypeComponent[]
getAllComponents(MemBuffer buf)
Get all dynamic components associated with the specified MemBufferjava.lang.String
getDescription()
Get a String briefly describing this DataType.java.lang.String
getMnemonic(Settings settings)
Get the mnemonic for this DataType.java.lang.String
getRepresentation(MemBuffer buf, Settings settings, int length)
Get bytes from memory in a printable format for this type.java.lang.Object
getValue(MemBuffer buf, Settings settings, int length)
Get the data in the form of the appropriate Object for this DataType.void
setComponents(java.util.List<DataType> components, java.util.List<java.lang.String> componentNames, java.util.List<java.lang.String> componentDescs)
Set the components of the dynamic structure all at once.-
Methods inherited from class ghidra.program.model.data.DynamicDataType
canSpecifyLength, 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, setName, setNameAndCategory
-
Methods inherited from class ghidra.program.model.data.DataTypeImpl
equals, getAlignment, getDefaultSettings, getLastChangeTimeInSourceArchive, getParents, getPathName, getSourceArchive, getValueClass, hashCode, notifyAlignmentChanged, notifyDeleted, notifyNameChanged, notifyParents, notifyReplaced, notifySizeChanged, replaceWith, setDefaultSettings, setDescription, setLastChangeTime, setLastChangeTimeInSourceArchive, setSourceArchive
-
Methods inherited from class ghidra.program.model.data.AbstractDataType
dataTypeAlignmentChanged, encodeRepresentation, encodeValue, getCategoryPath, getDataOrganization, getDataTypeManager, getDataTypePath, getDefaultAbbreviatedLabelPrefix, getDefaultLabelPrefix, getDefaultLabelPrefix, getDefaultOffcutLabelPrefix, getDisplayName, getDocs, getName, 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
-
Methods inherited from interface ghidra.program.model.data.DataType
addParent, clone, copy, dataTypeAlignmentChanged, dataTypeDeleted, dataTypeNameChanged, dataTypeReplaced, dataTypeSizeChanged, dependsOn, encodeRepresentation, encodeValue, getAlignment, getCategoryPath, getDataOrganization, getDataTypeManager, getDataTypePath, getDefaultAbbreviatedLabelPrefix, getDefaultLabelPrefix, getDefaultLabelPrefix, getDefaultOffcutLabelPrefix, getDefaultSettings, getDisplayName, getDocs, getLastChangeTime, getLastChangeTimeInSourceArchive, getName, getParents, getPathName, getSettingsDefinitions, getSourceArchive, getUniversalID, getValueClass, hasLanguageDependantLength, isDeleted, isEncodable, isEquivalent, isNotYetDefined, isZeroLength, removeParent, replaceWith, setCategoryPath, setDefaultSettings, setDescription, setLastChangeTime, setLastChangeTimeInSourceArchive, setName, setNameAndCategory, setSourceArchive
-
-
-
-
Field Detail
-
description
protected java.lang.String description
-
components
protected java.util.List<DataType> components
-
componentNames
protected java.util.List<java.lang.String> componentNames
-
componentDescs
protected java.util.List<java.lang.String> componentDescs
-
-
Constructor Detail
-
StructuredDynamicDataType
public StructuredDynamicDataType(java.lang.String name, java.lang.String description, DataTypeManager dtm)
Construct an empty dynamic structure- Parameters:
name
- name of the dynamic structuredescription
- description of the dynamic structure
-
-
Method Detail
-
add
public void add(DataType data, java.lang.String componentName, java.lang.String componentDescription)
Add a component data type onto the end of the dynamic structure- Parameters:
data
- data type to addcomponentName
- name of the field in the dynamic structurecomponentDescription
- description of the field
-
setComponents
public void setComponents(java.util.List<DataType> components, java.util.List<java.lang.String> componentNames, java.util.List<java.lang.String> componentDescs)
Set the components of the dynamic structure all at once. This does not add the components in, it replaces any existing ones.- Parameters:
components
- list of components to addcomponentNames
- list of field names of each componentcomponentDescs
- list of descriptions of each component
-
getAllComponents
protected DataTypeComponent[] getAllComponents(MemBuffer buf)
Description copied from class:DynamicDataType
Get all dynamic components associated with the specified MemBuffer- Specified by:
getAllComponents
in classDynamicDataType
- Parameters:
buf
- memory buffer positioned at start of data type instance- Returns:
- all components or null if memory data is not valid for this data type.
-
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.
-
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 datatype 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.
-
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.
-
getMnemonic
public java.lang.String getMnemonic(Settings settings)
Description copied from interface:DataType
Get the mnemonic for this DataType.- Specified by:
getMnemonic
in interfaceDataType
- Overrides:
getMnemonic
in classAbstractDataType
- Parameters:
settings
- settings which may influence the result or null- Returns:
- the mnemonic for this DataType.
-
-