Package ghidra.program.model.listing
Class DataStub
java.lang.Object
ghidra.program.model.listing.DataStub
- All Implemented Interfaces:
Settings
,CodeUnit
,Data
,MemBuffer
,PropertySet
DataStub can be extended for use by tests. It throws an UnsupportedOperationException
for all methods in the Data interface. Any method that is needed for your test can then
be overridden so it can provide its own test implementation and return value.
-
Field Summary
Fields inherited from interface ghidra.program.model.listing.CodeUnit
COMMENT_PROPERTY, DEFINED_DATA_PROPERTY, EOL_COMMENT, INSTRUCTION_PROPERTY, MNEMONIC, NO_COMMENT, PLATE_COMMENT, POST_COMMENT, PRE_COMMENT, REPEATABLE_COMMENT, SPACE_PROPERTY
Fields inherited from interface ghidra.docking.settings.Settings
EMPTY_STRING_ARRAY
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addMnemonicReference
(Address refAddr, RefType refType, SourceType sourceType) Add a reference to the mnemonic for this code unit.void
addOperandReference
(int index, Address refAddr, RefType type, SourceType sourceType) Add a memory reference to the operand at the given index.void
addValueReference
(Address refAddr, RefType type) Add a memory reference to the value.void
Removes all name-value pairs from this settings objectvoid
clearSetting
(String name) Removes any value associated with the given nameint
Compares the given address to the address range of this node.boolean
Returns true if address is contained in the range of this codeUnitGet the Address which corresponds to the offset 0.getAddress
(int opIndex) Get the Address for the given operand index if one exists.getAddressString
(boolean showBlockName, boolean pad) Get the string representation of the starting address for this code unit.If the dataType is a typeDef, then the typeDef's base type is returned, otherwise, the datatType is returned.getBigInteger
(int offset, int size, boolean signed) returns the value at the given offset, taking into account the endianness.byte
getByte
(int offset) Get one byte from memory at the current position plus offset.byte[]
getBytes()
Get the bytes that make up this code unit.int
getBytes
(byte[] b, int memoryBufferOffset) Readsb.length
bytes from this memory buffer starting at the address of this memory buffer plus the given memoryBufferOffset from that position.void
getBytesInCodeUnit
(byte[] buffer, int bufferOffset) Copies max(buffer.length, code unit length) bytes into buffer starting at location offset in buffer.getComment
(int commentType) Get the comment for the given typeString[]
getCommentAsArray
(int commentType) Get the comment for the given type and parse it into an array of strings such that each line is its own string.getComponent
(int index) Returns the immediate n'th component or null if none exists.getComponent
(int[] componentPath) Get a data item given the index path.getComponentAt
(int offset) Return the first immediate child component that contains the byte at the given offset.getComponentContaining
(int offset) Return the first immediate child component that contains the byte at the given offset.int
Get the index of this component in its parentint
Get this data's component level in its hierarchy of components.int[]
Get the component path if this is a component.Returns the component path name (dot notation) for this fieldgetComponentsContaining
(int offset) Returns a list of all the immediate child components that contain the byte at the given offset.Get the Data type for the data.Returns the appropriate string to use as the default label prefix or null if it has no preferred default label prefix;Returns the underlying default settings for these settings or null if there are noneReturns a string that represents the data value without markup.getExternalReference
(int opIndex) Gets the external reference (if any) at the opIndexGet the field name of this data item if it is "inside" another data item, otherwise return null.int
getInt
(int offset) returns the int at the given offset, taking into account the endianness.int
getIntProperty
(String name) Get the int property for name.getLabel()
Get the label for this code unit.int
Get length of this code unit.long
getLong
(int offset) returns the long at the given offset, taking into account the endianness.Gets the Long value associated with the given nameGet the ending address for this code unit.Get the Memory object actually used by the MemBuffer.Get the starting address for this code unit.Get references for the mnemonic for this code unit.Get the mnemonic for this code unit, e.g., MOV, JMPString[]
getNames()
Get this list of keys that currently have values associated with themint
Return the number of components that make up this data item.int
Get the number of operands for this code unit.getObjectProperty
(String name) Get the object property for name; returns null if there is no name property for this code unit.getOperandReferences
(int index) Get the references for the operand index.Get the immediate parent data item of this data item or null if this data item is not contained in another data item.int
Get the offset of this Data item from the start of its immediate parent.Returns the full path name (dot notation) for this field.getPrimaryReference
(int index) Get the primary reference for the operand index.Get the Primary Symbol for this code unit.getPrimitiveAt
(int offset) Returns the primitive component containing this offset (i.e., one that does not have sub-components).Returns the program that generated this CodeUnit.Get an iterator over all references TO this code unit.Get ALL memory references FROM this code unit.getRoot()
Get the highest level Data item in a hierarchy of structures containing this component.int
Get the offset of this Data item from the start of the root data item of some hierarchy of structures.getScalar
(int opIndex) Returns the scalar at the given operand index.short
getShort
(int offset) returns the short at the given offset, taking into account the endianness.Gets the String value associated with the given namegetStringProperty
(String name) Get the string property for name; returns null if there is no name property for this code unit.Symbol[]
Get the Symbols for this code unit.getValue()
Returns the value of the data item.Gets the object associated with the given nameClass
<?> Get the class used to express the value of this data.Get the references for the value.boolean
getVoidProperty
(String name) Returns whether this code unit is marked as having the name property.boolean
hasProperty
(String name) Returns true if the codeunit has the given property defined.boolean
Returns true if this data corresponds to string data.boolean
isArray()
Returns true if this data item is an Array of DataTypesboolean
Returns true if the underlying bytes are in big-endian order, false if they are little endian.boolean
isChangeAllowed
(SettingsDefinition settingsDefinition) Determine if a settings change corresponding to the specified settingsDefinition is permitted.boolean
Determine if this data has explicitly been marked as constant.boolean
Returns true if the data type is defined.boolean
Returns true if this data item is a dynamic DataType.boolean
isEmpty()
Returns true if there are no key-value pairs stored in this settings object.boolean
Returns true if this is a pointer, implies getValue() will will return an Object that is an Address.boolean
Returns true if this data item is a Structure.boolean
isUnion()
Returns true if this data item is a Union.boolean
Determine if this data has explicitly been marked as volatile.boolean
Determine if this data has explicitly been marked as writable.Get an iterator over the property names which have values applied.void
removeExternalReference
(int opIndex) Remove external reference (if any) at the given opIndex opIndex the index of the operand from which to remove any external reference.void
removeMnemonicReference
(Address refAddr) Remove a reference to the mnemonic for this code unit.void
removeOperandReference
(int index, Address refAddr) Remove a reference to the operand.void
removeProperty
(String name) Remove the property value associated with the given name .void
removeValueReference
(Address refAddr) Remove a reference to the value.void
setComment
(int commentType, String comment) Set the comment for the given comment type.void
setCommentAsArray
(int commentType, String[] comment) Set the comment (with each line in its own string) for the given comment typevoid
Associates the given long value with the name.void
Sets a memory reference to be the primary reference at its address/opIndex location.void
setProperty
(String name) Set the named property.void
setProperty
(String name, int value) Set the named integer property with the given value.void
setProperty
(String name, Saveable value) Set the named property with the givenSaveable
value.void
setProperty
(String name, String value) Set the named string property with the given value.void
setRegisterReference
(int opIndex, Register reg, SourceType sourceType, RefType refType) Sets a register reference at theoffset
on the specified operand index, which effectively substitutes the previous operation interpretation
NOTE: If another reference was previously set on the operand, then it will be replaced with this register referencevoid
setStackReference
(int opIndex, int offset, SourceType sourceType, RefType refType) Sets a stack reference at theoffset
on the specified operand index, which effectively substitutes the previous operation interpretation
NOTE: If another reference was previously set on the operand, then it will be replaced with this stack referencevoid
Associates the given String value with the name.void
Associates the given object with the name.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface ghidra.program.model.mem.MemBuffer
getInputStream, getInputStream, getUnsignedByte, getUnsignedInt, getUnsignedShort, getVarLengthInt, getVarLengthUnsignedInt, isInitializedMemory
Methods inherited from interface ghidra.docking.settings.Settings
getSuggestedValues
-
Constructor Details
-
DataStub
public DataStub()
-
-
Method Details
-
getAddressString
Description copied from interface:CodeUnit
Get the string representation of the starting address for this code unit.- Specified by:
getAddressString
in interfaceCodeUnit
- Parameters:
showBlockName
- true if the string should include the memory block namepad
- if true, the address will be padded with leading zeros. Even if pad is false, the string will be padded to make the address string contain at least 4 digits.- Returns:
- string representation of address
-
setProperty
Description copied from interface:PropertySet
Set the named property with the givenSaveable
value.- Specified by:
setProperty
in interfacePropertySet
- Parameters:
name
- the name of the property.value
- value to be stored.
-
setProperty
Description copied from interface:PropertySet
Set the named string property with the given value.- Specified by:
setProperty
in interfacePropertySet
- Parameters:
name
- the name of the property.value
- value to be stored.
-
setProperty
Description copied from interface:PropertySet
Set the named integer property with the given value.- Specified by:
setProperty
in interfacePropertySet
- Parameters:
name
- the name of the property.value
- value to be stored.
-
setProperty
Description copied from interface:PropertySet
Set the named property. This method is used for "void" properites. The property is either set or not set - there is no value- Specified by:
setProperty
in interfacePropertySet
- Parameters:
name
- the name of the property.
-
getObjectProperty
Description copied from interface:PropertySet
Get the object property for name; returns null if there is no name property for this code unit.- Specified by:
getObjectProperty
in interfacePropertySet
- Parameters:
name
- the name of the property- Returns:
Saveable
property value, with map-specific implementation class, or null.
-
getStringProperty
Description copied from interface:PropertySet
Get the string property for name; returns null if there is no name property for this code unit.- Specified by:
getStringProperty
in interfacePropertySet
- Parameters:
name
- the name of the property- Returns:
- string property value or null
-
getIntProperty
Description copied from interface:PropertySet
Get the int property for name.- Specified by:
getIntProperty
in interfacePropertySet
- Parameters:
name
- the name of the property- Returns:
- integer property value property has been set
- Throws:
NoValueException
- if there is not name property for this code unit
-
hasProperty
Description copied from interface:PropertySet
Returns true if the codeunit has the given property defined. This method works for all property map types.- Specified by:
hasProperty
in interfacePropertySet
- Parameters:
name
- the name of the property- Returns:
- true if property has been set, else false
-
getVoidProperty
Description copied from interface:PropertySet
Returns whether this code unit is marked as having the name property.- Specified by:
getVoidProperty
in interfacePropertySet
- Parameters:
name
- the name of the property- Returns:
- true if property has been set, else false
-
propertyNames
Description copied from interface:PropertySet
Get an iterator over the property names which have values applied.- Specified by:
propertyNames
in interfacePropertySet
- Returns:
- iterator of all property map names which have values applied
-
removeProperty
Description copied from interface:PropertySet
Remove the property value associated with the given name .- Specified by:
removeProperty
in interfacePropertySet
- Parameters:
name
- the name of the property
-
getLabel
Description copied from interface:CodeUnit
Get the label for this code unit. -
getSymbols
Description copied from interface:CodeUnit
Get the Symbols for this code unit.- Specified by:
getSymbols
in interfaceCodeUnit
-
getPrimarySymbol
Description copied from interface:CodeUnit
Get the Primary Symbol for this code unit.- Specified by:
getPrimarySymbol
in interfaceCodeUnit
-
getMinAddress
Description copied from interface:CodeUnit
Get the starting address for this code unit.- Specified by:
getMinAddress
in interfaceCodeUnit
-
getMaxAddress
Description copied from interface:CodeUnit
Get the ending address for this code unit.- Specified by:
getMaxAddress
in interfaceCodeUnit
-
getMnemonicString
Description copied from interface:CodeUnit
Get the mnemonic for this code unit, e.g., MOV, JMP- Specified by:
getMnemonicString
in interfaceCodeUnit
-
getComment
Description copied from interface:CodeUnit
Get the comment for the given type- Specified by:
getComment
in interfaceCodeUnit
- Parameters:
commentType
- either EOL_COMMENT, PRE_COMMENT, POST_COMMENT, or REPEATABLE_COMMENT- Returns:
- the comment string of the appropriate type or null if no comment of that type exists for this codeunit
-
getCommentAsArray
Description copied from interface:CodeUnit
Get the comment for the given type and parse it into an array of strings such that each line is its own string.- Specified by:
getCommentAsArray
in interfaceCodeUnit
- Parameters:
commentType
- either EOL_COMMENT, PRE_COMMENT, POST_COMMENT, or REPEATABLE_COMMENT- Returns:
- an array of strings where each item in the array is a line of text in the comment. If there is no comment of the requested type, an empty array is returned.
-
setComment
Description copied from interface:CodeUnit
Set the comment for the given comment type. Passingnull
clears the comment- Specified by:
setComment
in interfaceCodeUnit
- Parameters:
commentType
- either EOL_COMMENT, PRE_COMMENT, POST_COMMENT, or REPEATABLE_COMMENTcomment
- comment for code unit; null clears the comment
-
setCommentAsArray
Description copied from interface:CodeUnit
Set the comment (with each line in its own string) for the given comment type- Specified by:
setCommentAsArray
in interfaceCodeUnit
- Parameters:
commentType
- either EOL_COMMENT, PRE_COMMENT, POST_COMMENT, or REPEATABLE_COMMENTcomment
- an array of strings where each string is a single line of the comment.
-
getLength
public int getLength()Description copied from interface:CodeUnit
Get length of this code unit. NOTE: If aninstruction length-override
is set this method will return the reduced length. -
getBytes
Description copied from interface:CodeUnit
Get the bytes that make up this code unit. NOTE: If aninstruction length-override
is set this method will not return all bytes associated with theinstruction prototype
.- Specified by:
getBytes
in interfaceCodeUnit
- Returns:
- an array of bytes that are in memory at the codeunits address. The array length is the same as the codeUnits length
- Throws:
MemoryAccessException
- if the full number of bytes could not be read.
-
getBytesInCodeUnit
Description copied from interface:CodeUnit
Copies max(buffer.length, code unit length) bytes into buffer starting at location offset in buffer.- Specified by:
getBytesInCodeUnit
in interfaceCodeUnit
- Parameters:
buffer
- byte array to copy intobufferOffset
- offset in byte array the copy will start- Throws:
MemoryAccessException
- if the full number of bytes could not be read.
-
contains
Description copied from interface:CodeUnit
Returns true if address is contained in the range of this codeUnit -
compareTo
Description copied from interface:CodeUnit
Compares the given address to the address range of this node. -
addMnemonicReference
Description copied from interface:CodeUnit
Add a reference to the mnemonic for this code unit.- Specified by:
addMnemonicReference
in interfaceCodeUnit
- Parameters:
refAddr
- address to add as a reference.refType
- the type of reference to add.sourceType
- the source of this reference
-
removeMnemonicReference
Description copied from interface:CodeUnit
Remove a reference to the mnemonic for this code unit.- Specified by:
removeMnemonicReference
in interfaceCodeUnit
- Parameters:
refAddr
- the address to remove as a reference.
-
getMnemonicReferences
Description copied from interface:CodeUnit
Get references for the mnemonic for this code unit.- Specified by:
getMnemonicReferences
in interfaceCodeUnit
- Returns:
- an array of memory references. A zero length array will be returned if there are no references for the mnemonic.
-
getOperandReferences
Description copied from interface:CodeUnit
Get the references for the operand index.- Specified by:
getOperandReferences
in interfaceCodeUnit
- Parameters:
index
- operand index (0 is the first operand)
-
getPrimaryReference
Description copied from interface:CodeUnit
Get the primary reference for the operand index.- Specified by:
getPrimaryReference
in interfaceCodeUnit
- Parameters:
index
- operand index (0 is the first operand)
-
addOperandReference
Description copied from interface:CodeUnit
Add a memory reference to the operand at the given index.- Specified by:
addOperandReference
in interfaceCodeUnit
- Parameters:
index
- operand indexrefAddr
- reference addresstype
- the reference type to be added.sourceType
- the source of this reference
-
removeOperandReference
Description copied from interface:CodeUnit
Remove a reference to the operand.- Specified by:
removeOperandReference
in interfaceCodeUnit
- Parameters:
index
- operand indexrefAddr
- address referencing the operand
-
getReferencesFrom
Description copied from interface:CodeUnit
Get ALL memory references FROM this code unit.- Specified by:
getReferencesFrom
in interfaceCodeUnit
- Returns:
- an array of memory references from this codeUnit or an empty array if there are no references.
-
getReferenceIteratorTo
Description copied from interface:CodeUnit
Get an iterator over all references TO this code unit.- Specified by:
getReferenceIteratorTo
in interfaceCodeUnit
-
getProgram
Description copied from interface:CodeUnit
Returns the program that generated this CodeUnit.- Specified by:
getProgram
in interfaceCodeUnit
-
getExternalReference
Description copied from interface:CodeUnit
Gets the external reference (if any) at the opIndex- Specified by:
getExternalReference
in interfaceCodeUnit
- Parameters:
opIndex
- the operand index to look for external references- Returns:
- the external reference at the operand or null if none exists.
-
removeExternalReference
public void removeExternalReference(int opIndex) Description copied from interface:CodeUnit
Remove external reference (if any) at the given opIndex opIndex the index of the operand from which to remove any external reference.- Specified by:
removeExternalReference
in interfaceCodeUnit
-
setPrimaryMemoryReference
Description copied from interface:CodeUnit
Sets a memory reference to be the primary reference at its address/opIndex location. The primary reference is the one that is used in the getOperandRepresentation() method.- Specified by:
setPrimaryMemoryReference
in interfaceCodeUnit
- Parameters:
ref
- the reference to be set as primary.
-
setStackReference
Description copied from interface:CodeUnit
Sets a stack reference at theoffset
on the specified operand index, which effectively substitutes the previous operation interpretation
NOTE: If another reference was previously set on the operand, then it will be replaced with this stack reference- Specified by:
setStackReference
in interfaceCodeUnit
- Parameters:
opIndex
- the index of the operand to set this stack referenceoffset
- the (+/-) offset from stack base addresssourceType
- the source of this referencerefType
- type of reference, RefType.READ,WRITE,PTR...
-
setRegisterReference
Description copied from interface:CodeUnit
Sets a register reference at theoffset
on the specified operand index, which effectively substitutes the previous operation interpretation
NOTE: If another reference was previously set on the operand, then it will be replaced with this register reference- Specified by:
setRegisterReference
in interfaceCodeUnit
- Parameters:
opIndex
- the index of the operand to set this register referencereg
- a registersourceType
- the source of this referencerefType
- type of reference, RefType.READ,WRITE,PTR...
-
getNumOperands
public int getNumOperands()Description copied from interface:CodeUnit
Get the number of operands for this code unit.- Specified by:
getNumOperands
in interfaceCodeUnit
-
getAddress
Description copied from interface:CodeUnit
Get the Address for the given operand index if one exists. Data objects have one operand (the value).- Specified by:
getAddress
in interfaceCodeUnit
- Parameters:
opIndex
- index of the operand.- Returns:
- An addres if the operand represents a fully qualified address (given the context), or if the operand is a Scalar treated as an address. Null is returned if no address or scalar exists on that operand.
-
getScalar
Description copied from interface:CodeUnit
Returns the scalar at the given operand index. Data objects have one operand (the value). -
getByte
Description copied from interface:MemBuffer
Get one byte from memory at the current position plus offset.- Specified by:
getByte
in interfaceMemBuffer
- Parameters:
offset
- the displacement from the current position.- Returns:
- the data at offset from the current position.
- Throws:
MemoryAccessException
- if memory cannot be read at the specified offset
-
getBytes
public int getBytes(byte[] b, int memoryBufferOffset) Description copied from interface:MemBuffer
Readsb.length
bytes from this memory buffer starting at the address of this memory buffer plus the given memoryBufferOffset from that position. The actual number of bytes may be fewer if bytes can't be read.- Specified by:
getBytes
in interfaceMemBuffer
- Parameters:
b
- the buffer into which bytes will be placedmemoryBufferOffset
- the offset in this memory buffer from which to start reading bytes.- Returns:
- the number of bytes read which may be fewer than b.length if available bytes are exhausted or no bytes are available at the specified offset.
-
getAddress
Description copied from interface:MemBuffer
Get the Address which corresponds to the offset 0.- Specified by:
getAddress
in interfaceMemBuffer
- Returns:
- the current address of offset 0.
-
getMemory
Description copied from interface:MemBuffer
Get the Memory object actually used by the MemBuffer. -
isBigEndian
public boolean isBigEndian()Description copied from interface:MemBuffer
Returns true if the underlying bytes are in big-endian order, false if they are little endian.- Specified by:
isBigEndian
in interfaceMemBuffer
- Returns:
- true if the underlying bytes are in big-endian order, false if they are little endian.
-
getShort
Description copied from interface:MemBuffer
returns the short at the given offset, taking into account the endianness.- Specified by:
getShort
in interfaceMemBuffer
- Parameters:
offset
- the offset from the membuffers origin (the address that it is set at)- Returns:
- the short at the given offset, taking into account the endianness.
- Throws:
MemoryAccessException
- if a 2-byte short value cannot be read at the specified offset
-
getInt
Description copied from interface:MemBuffer
returns the int at the given offset, taking into account the endianness.- Specified by:
getInt
in interfaceMemBuffer
- Parameters:
offset
- the offset from the membuffers origin (the address that it is set at)- Returns:
- the int at the given offset, taking into account the endianness.
- Throws:
MemoryAccessException
- if a 4-byte integer value cannot be read at the specified offset
-
getLong
Description copied from interface:MemBuffer
returns the long at the given offset, taking into account the endianness.- Specified by:
getLong
in interfaceMemBuffer
- Parameters:
offset
- the offset from the membuffers origin (the address that it is set at)- Returns:
- the long at the given offset, taking into account the endianness.
- Throws:
MemoryAccessException
- if a 8-byte long value cannot be read at the specified offset
-
getBigInteger
Description copied from interface:MemBuffer
returns the value at the given offset, taking into account the endianness.- Specified by:
getBigInteger
in interfaceMemBuffer
- Parameters:
offset
- the offset from the membuffers origin (the address that it is set at)size
- the number of bytes to include in the valuesigned
- true if value should be treated as a signed twos-compliment value.- Returns:
- the value at the given offset, taking into account the endianness.
- Throws:
MemoryAccessException
- if the request size value cannot be read at the specified offset
-
isChangeAllowed
Description copied from interface:Settings
Determine if a settings change corresponding to the specified settingsDefinition is permitted.- Specified by:
isChangeAllowed
in interfaceSettings
- Parameters:
settingsDefinition
- settings definition- Returns:
- true if change permitted else false
-
getLong
Description copied from interface:Settings
Gets the Long value associated with the given name -
getString
Description copied from interface:Settings
Gets the String value associated with the given name -
getValue
Description copied from interface:Settings
Gets the object associated with the given name -
setLong
Description copied from interface:Settings
Associates the given long value with the name. Note that an attempted setting change may be ignored if prohibited (e.g., immutable Settings, undefined setting name). -
setString
Description copied from interface:Settings
Associates the given String value with the name. Note that an attempted setting change may be ignored if prohibited (e.g., immutable Settings, undefined setting name). -
setValue
Description copied from interface:Settings
Associates the given object with the name. Note that an attempted setting change may be ignored if prohibited (e.g., immutable Settings, undefined setting name). -
clearSetting
Description copied from interface:Settings
Removes any value associated with the given name- Specified by:
clearSetting
in interfaceSettings
- Parameters:
name
- the key to remove any association
-
clearAllSettings
public void clearAllSettings()Description copied from interface:Settings
Removes all name-value pairs from this settings object- Specified by:
clearAllSettings
in interfaceSettings
-
getNames
Description copied from interface:Settings
Get this list of keys that currently have values associated with them -
isEmpty
public boolean isEmpty()Description copied from interface:Settings
Returns true if there are no key-value pairs stored in this settings object. This is not a reflection of the underlying default settings which may still contain a key-value pair when this settings object is empty. -
getDefaultSettings
Description copied from interface:Settings
Returns the underlying default settings for these settings or null if there are none- Specified by:
getDefaultSettings
in interfaceSettings
- Returns:
- underlying default settings or null
-
getValue
Description copied from interface:Data
Returns the value of the data item. The value may be an address, a scalar, register or null if no value. -
getValueClass
Description copied from interface:Data
Get the class used to express the value of this data.NOTE: This determination is made based upon data type and settings only and does not examine memory bytes which are used to construct the data value object.
- Specified by:
getValueClass
in interfaceData
- Returns:
- value class or null if a consistent class is not utilized.
-
hasStringValue
public boolean hasStringValue()Description copied from interface:Data
Returns true if this data corresponds to string data. This is determined by the corresponding data type producing a String value.- Specified by:
hasStringValue
in interfaceData
- Returns:
- true if this data returns a String value and can be treated as string data.
-
isConstant
public boolean isConstant()Description copied from interface:Data
Determine if this data has explicitly been marked as constant. NOTE: This is based upon explicitData
andDataType
mutability settings and does not reflect independent memory block or processor specification settings.- Specified by:
isConstant
in interfaceData
- Returns:
- true if data is constant, else false.
-
isWritable
public boolean isWritable()Description copied from interface:Data
Determine if this data has explicitly been marked as writable. NOTE: This is based upon explicitData
andDataType
mutability settings and does not reflect independent memory block or processor specification settings.- Specified by:
isWritable
in interfaceData
- Returns:
- true if data is writable, else false.
-
isVolatile
public boolean isVolatile()Description copied from interface:Data
Determine if this data has explicitly been marked as volatile. NOTE: This is based upon explicitData
andDataType
mutability settings and does not reflect independent memory block or processor specification settings.- Specified by:
isVolatile
in interfaceData
- Returns:
- true if data is volatile, else false.
-
isDefined
public boolean isDefined()Description copied from interface:Data
Returns true if the data type is defined. Any address that has not been defined to be code or data is treated as undefined data. -
getDataType
Description copied from interface:Data
Get the Data type for the data.- Specified by:
getDataType
in interfaceData
- Returns:
- the data type
-
getBaseDataType
Description copied from interface:Data
If the dataType is a typeDef, then the typeDef's base type is returned, otherwise, the datatType is returned.- Specified by:
getBaseDataType
in interfaceData
- Returns:
- the data type
-
getValueReferences
Description copied from interface:Data
Get the references for the value.- Specified by:
getValueReferences
in interfaceData
- Returns:
- the references
-
addValueReference
Description copied from interface:Data
Add a memory reference to the value.- Specified by:
addValueReference
in interfaceData
- Parameters:
refAddr
- address referenced.type
- the type of reference to be added.
-
removeValueReference
Description copied from interface:Data
Remove a reference to the value.- Specified by:
removeValueReference
in interfaceData
- Parameters:
refAddr
- address of reference to be removed.
-
getFieldName
Description copied from interface:Data
Get the field name of this data item if it is "inside" another data item, otherwise return null.- Specified by:
getFieldName
in interfaceData
- Returns:
- the name of this data as known from some parent data item or null if this data item is not a component of another data item.
-
getPathName
Description copied from interface:Data
Returns the full path name (dot notation) for this field. This includes the symbol name at this address.- Specified by:
getPathName
in interfaceData
- Returns:
- the path name
-
getComponentPathName
Description copied from interface:Data
Returns the component path name (dot notation) for this field- Specified by:
getComponentPathName
in interfaceData
- Returns:
- the component path name
-
isPointer
public boolean isPointer()Description copied from interface:Data
Returns true if this is a pointer, implies getValue() will will return an Object that is an Address. -
isUnion
public boolean isUnion()Description copied from interface:Data
Returns true if this data item is a Union. -
isStructure
public boolean isStructure()Description copied from interface:Data
Returns true if this data item is a Structure.- Specified by:
isStructure
in interfaceData
- Returns:
- true if a structure
-
isArray
public boolean isArray()Description copied from interface:Data
Returns true if this data item is an Array of DataTypes -
isDynamic
public boolean isDynamic()Description copied from interface:Data
Returns true if this data item is a dynamic DataType. -
getParent
Description copied from interface:Data
Get the immediate parent data item of this data item or null if this data item is not contained in another data item. -
getRoot
Description copied from interface:Data
Get the highest level Data item in a hierarchy of structures containing this component. -
getRootOffset
public int getRootOffset()Description copied from interface:Data
Get the offset of this Data item from the start of the root data item of some hierarchy of structures.- Specified by:
getRootOffset
in interfaceData
- Returns:
- the offset
-
getParentOffset
public int getParentOffset()Description copied from interface:Data
Get the offset of this Data item from the start of its immediate parent.- Specified by:
getParentOffset
in interfaceData
- Returns:
- the offset
-
getComponent
Description copied from interface:Data
Returns the immediate n'th component or null if none exists.- Specified by:
getComponent
in interfaceData
- Parameters:
index
- the index of the component to get.- Returns:
- the component
-
getComponent
Description copied from interface:Data
Get a data item given the index path. Each integer in the array represents an index into the data item at that level.- Specified by:
getComponent
in interfaceData
- Parameters:
componentPath
- the array of indexes to use to find the requested data item.- Returns:
- the component
-
getComponentPath
public int[] getComponentPath()Description copied from interface:Data
Get the component path if this is a component. The component path is an array of integers that represent each index in the tree of data items. Top level data items have an empty array for their component path.- Specified by:
getComponentPath
in interfaceData
- Returns:
- the path
-
getNumComponents
public int getNumComponents()Description copied from interface:Data
Return the number of components that make up this data item. if this is an Array, return the number of elements in the array.- Specified by:
getNumComponents
in interfaceData
- Returns:
- the number of components
-
getComponentAt
Description copied from interface:Data
Return the first immediate child component that contains the byte at the given offset. It is important to note that with certain datatypes there may be more than one component containing the specified offset (seeData.getComponentsContaining(int)
).- Specified by:
getComponentAt
in interfaceData
- Parameters:
offset
- the amount to add to this data items address to get the address of the requested data item.- Returns:
- first data component containing offset or null
-
getComponentContaining
Description copied from interface:Data
Return the first immediate child component that contains the byte at the given offset. It is important to note that with certain datatypes there may be more than one component containing the specified offset (seeData.getComponentsContaining(int)
).- Specified by:
getComponentContaining
in interfaceData
- Parameters:
offset
- the amount to add to this data items address to get the- Returns:
- first data component containing offset or null address of the requested data item.
-
getComponentsContaining
Description copied from interface:Data
Returns a list of all the immediate child components that contain the byte at the given offset.For a union, this will return all the components (if the offset is 0). The presence of bit-fields or zero-length components may cause multiple components to be returned.
- Specified by:
getComponentsContaining
in interfaceData
- Parameters:
offset
- the amount to add to this data items address to get the address of the requested data item.- Returns:
- a list of all the immediate child components that contain the byte at the given offset or null if offset is out of bounds.
-
getPrimitiveAt
Description copied from interface:Data
Returns the primitive component containing this offset (i.e., one that does not have sub-components). This is useful for data items which are made up of multiple layers of other data items. This method immediately goes to the lowest level data item. If the minimum offset of a component is specified, the only first component containing the offset will be considered (e.g., 0-element array).- Specified by:
getPrimitiveAt
in interfaceData
- Parameters:
offset
- the offset- Returns:
- primitive component containing this offset
-
getComponentIndex
public int getComponentIndex()Description copied from interface:Data
Get the index of this component in its parent- Specified by:
getComponentIndex
in interfaceData
- Returns:
- -1 if this data item is not a component of another data item.
-
getComponentLevel
public int getComponentLevel()Description copied from interface:Data
Get this data's component level in its hierarchy of components.- Specified by:
getComponentLevel
in interfaceData
- Returns:
- the level of this data item with 0 being the level of top data items.
-
getDefaultValueRepresentation
Description copied from interface:Data
Returns a string that represents the data value without markup.- Specified by:
getDefaultValueRepresentation
in interfaceData
- Returns:
- the string
-
getDefaultLabelPrefix
Description copied from interface:Data
Returns the appropriate string to use as the default label prefix or null if it has no preferred default label prefix;- Specified by:
getDefaultLabelPrefix
in interfaceData
- Parameters:
options
- the options- Returns:
- the prefix
-