Package ghidra.program.model.data
Class CountedDynamicDataType
- 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.CountedDynamicDataType
-
- All Implemented Interfaces:
BuiltInDataType
,DataType
,Dynamic
,ExtensionPoint
,java.util.EventListener
,javax.swing.event.ChangeListener
public abstract class CountedDynamicDataType extends DynamicDataType
A dynamic data type that changes the number of elements it contains based on a count found in header data type. The data type has a header data type which will contain the number of base data types following the header data type. NOTE: This is a special Dynamic data-type which can only appear as a component created by a Dynamic data-type
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface ghidra.util.classfinder.ExtensionPoint
ExtensionPoint.Exclude, ExtensionPoint.Util
-
-
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, VOID
-
-
Constructor Summary
Constructors Constructor Description CountedDynamicDataType(java.lang.String name, java.lang.String description, DataType header, DataType baseStruct, long counterOffset, int counterSize, long mask)
Constructor for this dynamic data type builder.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description DataType
clone(DataTypeManager dtm)
Returns a new instance of this DataType with its universalID and SourceArchive identity retained.protected DataTypeComponent[]
getAllComponents(MemBuffer buf)
java.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.-
Methods inherited from class ghidra.program.model.data.DynamicDataType
canSpecifyLength, getComponent, getComponentAt, getComponents, getLength, getLength, getNumComponents, getReplacementBaseType, invalidateCache, isDynamicallySized
-
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, notifyDeleted, notifyNameChanged, notifyReplaced, notifySizeChanged, replaceWith, setDefaultSettings, setDescription, setLastChangeTime, setLastChangeTimeInSourceArchive, setSourceArchive, stateChanged
-
Methods inherited from class ghidra.program.model.data.AbstractDataType
getCategoryPath, getDataOrganization, getDataTypeManager, getDataTypePath, getDefaultAbbreviatedLabelPrefix, getDefaultLabelPrefix, getDefaultLabelPrefix, getDefaultOffcutLabelPrefix, getDisplayName, getDocs, getName, isDeleted, isNotYetDefined, 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, copy, dataTypeDeleted, dataTypeNameChanged, dataTypeReplaced, dataTypeSizeChanged, dependsOn, getAlignment, getCategoryPath, getDataOrganization, getDataTypeManager, getDataTypePath, getDefaultAbbreviatedLabelPrefix, getDefaultLabelPrefix, getDefaultLabelPrefix, getDefaultOffcutLabelPrefix, getDefaultSettings, getDisplayName, getDocs, getLastChangeTime, getLastChangeTimeInSourceArchive, getName, getParents, getPathName, getSettingsDefinitions, getSourceArchive, getUniversalID, getValueClass, isDeleted, isEquivalent, isNotYetDefined, removeParent, replaceWith, setCategoryPath, setDefaultSettings, setDescription, setLastChangeTime, setLastChangeTimeInSourceArchive, setName, setNameAndCategory, setSourceArchive
-
-
-
-
Constructor Detail
-
CountedDynamicDataType
public CountedDynamicDataType(java.lang.String name, java.lang.String description, DataType header, DataType baseStruct, long counterOffset, int counterSize, long mask)
Constructor for this dynamic data type builder.- Parameters:
name
- name of this dynamic data typedescription
- description of the data typeheader
- header data type that will contain the number of following elementsbaseStruct
- base data type for each of the following elementscounterOffset
- offset of the number of following elements from the start of the headercounterSize
- size of the count in bytesmask
- mask to apply to the count value to get the actual number of following elements.
-
-
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.
-
getAllComponents
protected DataTypeComponent[] getAllComponents(MemBuffer buf)
- Specified by:
getAllComponents
in classDynamicDataType
-
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 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.
-
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
- Returns:
- the mnemonic for this DataType.
-
-