Class AbstractLeb128DataType
- java.lang.Object
-
- ghidra.program.model.data.AbstractDataType
-
- ghidra.program.model.data.DataTypeImpl
-
- ghidra.program.model.data.BuiltIn
-
- ghidra.app.plugin.exceptionhandlers.gcc.datatype.AbstractLeb128DataType
-
- All Implemented Interfaces:
BuiltInDataType
,DataType
,Dynamic
,ExtensionPoint
,java.util.EventListener
,javax.swing.event.ChangeListener
- Direct Known Subclasses:
SignedLeb128DataType
,UnsignedLeb128DataType
public abstract class AbstractLeb128DataType extends BuiltIn implements Dynamic
LEB128 is an integer compression system resulting in variable-length byte sequence. An abstract base class for a little endian base 128 integer data type.
-
-
Field Summary
Fields Modifier and Type Field Description static int
MAX_LEB128_ENCODED_VALUE_LEN
The maximum length in bytes of a leb128 data type.-
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 AbstractLeb128DataType(java.lang.String name, boolean signed, DataTypeManager dtm)
Base constructor for a little endian based 128 data type.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
canSpecifyLength()
Returns true if a user-specified length can be usedprotected SettingsDefinition[]
getBuiltInSettingsDefinitions()
Gets a list of all the settingsDefinitions used by this datatype.java.lang.String
getDescription()
Get a String briefly describing this DataType.int
getLength()
Get the length (number of 8-bit bytes) of this DataType.int
getLength(MemBuffer buf, int maxLength)
Compute the length for this data-type which corresponds to the specified memory location.DataType
getReplacementBaseType()
Returns a suitable replacement base data-type for pointers and arrays when exporting to C codejava.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.BuiltIn
addParent, copy, dataTypeDeleted, dataTypeNameChanged, dataTypeReplaced, dataTypeSizeChanged, dependsOn, 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, stateChanged
-
Methods inherited from class ghidra.program.model.data.AbstractDataType
dataTypeAlignmentChanged, getCategoryPath, getDataOrganization, getDataTypeManager, getDataTypePath, getDefaultAbbreviatedLabelPrefix, getDefaultLabelPrefix, getDefaultLabelPrefix, getDefaultOffcutLabelPrefix, getDisplayName, getDocs, getMnemonic, getName, 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.BuiltInDataType
getCTypeDeclaration
-
Methods inherited from interface ghidra.program.model.data.DataType
addParent, clone, copy, dataTypeAlignmentChanged, dataTypeDeleted, dataTypeNameChanged, dataTypeReplaced, dataTypeSizeChanged, dependsOn, getAlignment, getCategoryPath, getDataOrganization, getDataTypeManager, getDataTypePath, getDefaultAbbreviatedLabelPrefix, getDefaultLabelPrefix, getDefaultLabelPrefix, getDefaultOffcutLabelPrefix, getDefaultSettings, getDisplayName, getDocs, getLastChangeTime, getLastChangeTimeInSourceArchive, getMnemonic, getName, getParents, getPathName, getSettingsDefinitions, getSourceArchive, getUniversalID, getValueClass, hasLanguageDependantLength, isDeleted, isEquivalent, isNotYetDefined, isZeroLength, removeParent, replaceWith, setCategoryPath, setDefaultSettings, setDescription, setLastChangeTime, setLastChangeTimeInSourceArchive, setName, setNameAndCategory, setSourceArchive
-
-
-
-
Field Detail
-
MAX_LEB128_ENCODED_VALUE_LEN
public static final int MAX_LEB128_ENCODED_VALUE_LEN
The maximum length in bytes of a leb128 data type.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
AbstractLeb128DataType
public AbstractLeb128DataType(java.lang.String name, boolean signed, DataTypeManager dtm)
Base constructor for a little endian based 128 data type.- Parameters:
name
- name of the leb128 data type that extends this class.signed
- true if it is signed. false if unsigned.dtm
- the data type manager to associate with this data type.
-
-
Method Detail
-
getBuiltInSettingsDefinitions
protected SettingsDefinition[] getBuiltInSettingsDefinitions()
Description copied from class:BuiltIn
Gets a list of all the settingsDefinitions used by this datatype.- Overrides:
getBuiltInSettingsDefinitions
in classBuiltIn
- Returns:
- a list of the settingsDefinitions used by this datatype.
-
getDescription
public java.lang.String getDescription()
Description copied from interface:DataType
Get a String briefly describing this DataType.- Specified by:
getDescription
in interfaceDataType
- Returns:
- a one-liner describing this DataType.
-
getLength
public int getLength()
Description copied from interface:DataType
Get the length (number of 8-bit bytes) of this DataType.
-
getLength
public int getLength(MemBuffer buf, int maxLength)
Description copied from interface:Dynamic
Compute the length for this data-type which corresponds to the specified memory location.- Specified by:
getLength
in interfaceDynamic
- Parameters:
buf
- memory locationmaxLength
- maximum number of bytes to consume in computing length, or -1 for unspecified.- Returns:
- data length or -1 if it could not be determined. Returned length may exceed maxLength if data-type does not supported constrained lengths.
-
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
-
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.- Specified by:
getRepresentation
in interfaceDataType
- 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.
-
getReplacementBaseType
public DataType getReplacementBaseType()
Description copied from interface:Dynamic
Returns a suitable replacement base data-type for pointers and arrays when exporting to C code- Specified by:
getReplacementBaseType
in interfaceDynamic
- Returns:
- suitable base data-type for this Dynamic data-type
-
canSpecifyLength
public boolean canSpecifyLength()
Description copied from interface:Dynamic
Returns true if a user-specified length can be used- Specified by:
canSpecifyLength
in interfaceDynamic
-
-