Class DataStub

java.lang.Object
ghidra.program.model.listing.DataStub
All Implemented Interfaces:
Settings, CodeUnit, Data, MemBuffer, PropertySet

public class DataStub extends Object implements Data
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.
  • Constructor Details

    • DataStub

      public DataStub()
  • Method Details

    • getAddressString

      public String getAddressString(boolean showBlockName, boolean pad)
      Description copied from interface: CodeUnit
      Get the string representation of the starting address for this code unit.
      Specified by:
      getAddressString in interface CodeUnit
      Parameters:
      showBlockName - true if the string should include the memory block name
      pad - 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

      public void setProperty(String name, Saveable value)
      Description copied from interface: PropertySet
      Set the named property with the given Saveable value.
      Specified by:
      setProperty in interface PropertySet
      Parameters:
      name - the name of the property.
      value - value to be stored.
    • setProperty

      public void setProperty(String name, String value)
      Description copied from interface: PropertySet
      Set the named string property with the given value.
      Specified by:
      setProperty in interface PropertySet
      Parameters:
      name - the name of the property.
      value - value to be stored.
    • setProperty

      public void setProperty(String name, int value)
      Description copied from interface: PropertySet
      Set the named integer property with the given value.
      Specified by:
      setProperty in interface PropertySet
      Parameters:
      name - the name of the property.
      value - value to be stored.
    • setProperty

      public void setProperty(String name)
      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 interface PropertySet
      Parameters:
      name - the name of the property.
    • getObjectProperty

      public Saveable getObjectProperty(String name)
      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 interface PropertySet
      Parameters:
      name - the name of the property
      Returns:
      Saveable property value, with map-specific implementation class, or null.
    • getStringProperty

      public String getStringProperty(String name)
      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 interface PropertySet
      Parameters:
      name - the name of the property
      Returns:
      string property value or null
    • getIntProperty

      public int getIntProperty(String name) throws NoValueException
      Description copied from interface: PropertySet
      Get the int property for name.
      Specified by:
      getIntProperty in interface PropertySet
      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

      public boolean hasProperty(String name)
      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 interface PropertySet
      Parameters:
      name - the name of the property
      Returns:
      true if property has been set, else false
    • getVoidProperty

      public boolean getVoidProperty(String name)
      Description copied from interface: PropertySet
      Returns whether this code unit is marked as having the name property.
      Specified by:
      getVoidProperty in interface PropertySet
      Parameters:
      name - the name of the property
      Returns:
      true if property has been set, else false
    • propertyNames

      public Iterator<String> propertyNames()
      Description copied from interface: PropertySet
      Get an iterator over the property names which have values applied.
      Specified by:
      propertyNames in interface PropertySet
      Returns:
      iterator of all property map names which have values applied
    • removeProperty

      public void removeProperty(String name)
      Description copied from interface: PropertySet
      Remove the property value associated with the given name .
      Specified by:
      removeProperty in interface PropertySet
      Parameters:
      name - the name of the property
    • getLabel

      public String getLabel()
      Description copied from interface: CodeUnit
      Get the label for this code unit.
      Specified by:
      getLabel in interface CodeUnit
    • getSymbols

      public Symbol[] getSymbols()
      Description copied from interface: CodeUnit
      Get the Symbols for this code unit.
      Specified by:
      getSymbols in interface CodeUnit
    • getPrimarySymbol

      public Symbol getPrimarySymbol()
      Description copied from interface: CodeUnit
      Get the Primary Symbol for this code unit.
      Specified by:
      getPrimarySymbol in interface CodeUnit
    • getMinAddress

      public Address getMinAddress()
      Description copied from interface: CodeUnit
      Get the starting address for this code unit.
      Specified by:
      getMinAddress in interface CodeUnit
    • getMaxAddress

      public Address getMaxAddress()
      Description copied from interface: CodeUnit
      Get the ending address for this code unit.
      Specified by:
      getMaxAddress in interface CodeUnit
    • getMnemonicString

      public String getMnemonicString()
      Description copied from interface: CodeUnit
      Get the mnemonic for this code unit, e.g., MOV, JMP
      Specified by:
      getMnemonicString in interface CodeUnit
    • getComment

      public String getComment(int commentType)
      Description copied from interface: CodeUnit
      Get the comment for the given type
      Specified by:
      getComment in interface CodeUnit
      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

      public String[] getCommentAsArray(int commentType)
      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 interface CodeUnit
      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

      public void setComment(int commentType, String comment)
      Description copied from interface: CodeUnit
      Set the comment for the given comment type. Passing null clears the comment
      Specified by:
      setComment in interface CodeUnit
      Parameters:
      commentType - either EOL_COMMENT, PRE_COMMENT, POST_COMMENT, or REPEATABLE_COMMENT
      comment - comment for code unit; null clears the comment
    • setCommentAsArray

      public void setCommentAsArray(int commentType, String[] comment)
      Description copied from interface: CodeUnit
      Set the comment (with each line in its own string) for the given comment type
      Specified by:
      setCommentAsArray in interface CodeUnit
      Parameters:
      commentType - either EOL_COMMENT, PRE_COMMENT, POST_COMMENT, or REPEATABLE_COMMENT
      comment - 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 an instruction length-override is set this method will return the reduced length.
      Specified by:
      getLength in interface CodeUnit
      Returns:
      code unit length
    • getBytes

      public byte[] getBytes() throws MemoryAccessException
      Description copied from interface: CodeUnit
      Get the bytes that make up this code unit. NOTE: If an instruction length-override is set this method will not return all bytes associated with the instruction prototype.
      Specified by:
      getBytes in interface CodeUnit
      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

      public void getBytesInCodeUnit(byte[] buffer, int bufferOffset) throws MemoryAccessException
      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 interface CodeUnit
      Parameters:
      buffer - byte array to copy into
      bufferOffset - offset in byte array the copy will start
      Throws:
      MemoryAccessException - if the full number of bytes could not be read.
    • contains

      public boolean contains(Address testAddr)
      Description copied from interface: CodeUnit
      Returns true if address is contained in the range of this codeUnit
      Specified by:
      contains in interface CodeUnit
      Parameters:
      testAddr - the address to test.
    • compareTo

      public int compareTo(Address addr)
      Description copied from interface: CodeUnit
      Compares the given address to the address range of this node.
      Specified by:
      compareTo in interface CodeUnit
      Parameters:
      addr - address to compare.
      Returns:
      a negative integer if this addr is greater than the maximum range address zero if addr is in the range a positive integer if addr is less than minimum range address
    • addMnemonicReference

      public void addMnemonicReference(Address refAddr, RefType refType, SourceType sourceType)
      Description copied from interface: CodeUnit
      Add a reference to the mnemonic for this code unit.
      Specified by:
      addMnemonicReference in interface CodeUnit
      Parameters:
      refAddr - address to add as a reference.
      refType - the type of reference to add.
      sourceType - the source of this reference
    • removeMnemonicReference

      public void removeMnemonicReference(Address refAddr)
      Description copied from interface: CodeUnit
      Remove a reference to the mnemonic for this code unit.
      Specified by:
      removeMnemonicReference in interface CodeUnit
      Parameters:
      refAddr - the address to remove as a reference.
    • getMnemonicReferences

      public Reference[] getMnemonicReferences()
      Description copied from interface: CodeUnit
      Get references for the mnemonic for this code unit.
      Specified by:
      getMnemonicReferences in interface CodeUnit
      Returns:
      an array of memory references. A zero length array will be returned if there are no references for the mnemonic.
    • getOperandReferences

      public Reference[] getOperandReferences(int index)
      Description copied from interface: CodeUnit
      Get the references for the operand index.
      Specified by:
      getOperandReferences in interface CodeUnit
      Parameters:
      index - operand index (0 is the first operand)
    • getPrimaryReference

      public Reference getPrimaryReference(int index)
      Description copied from interface: CodeUnit
      Get the primary reference for the operand index.
      Specified by:
      getPrimaryReference in interface CodeUnit
      Parameters:
      index - operand index (0 is the first operand)
    • addOperandReference

      public void addOperandReference(int index, Address refAddr, RefType type, SourceType sourceType)
      Description copied from interface: CodeUnit
      Add a memory reference to the operand at the given index.
      Specified by:
      addOperandReference in interface CodeUnit
      Parameters:
      index - operand index
      refAddr - reference address
      type - the reference type to be added.
      sourceType - the source of this reference
    • removeOperandReference

      public void removeOperandReference(int index, Address refAddr)
      Description copied from interface: CodeUnit
      Remove a reference to the operand.
      Specified by:
      removeOperandReference in interface CodeUnit
      Parameters:
      index - operand index
      refAddr - address referencing the operand
    • getReferencesFrom

      public Reference[] getReferencesFrom()
      Description copied from interface: CodeUnit
      Get ALL memory references FROM this code unit.
      Specified by:
      getReferencesFrom in interface CodeUnit
      Returns:
      an array of memory references from this codeUnit or an empty array if there are no references.
    • getReferenceIteratorTo

      public ReferenceIterator getReferenceIteratorTo()
      Description copied from interface: CodeUnit
      Get an iterator over all references TO this code unit.
      Specified by:
      getReferenceIteratorTo in interface CodeUnit
    • getProgram

      public Program getProgram()
      Description copied from interface: CodeUnit
      Returns the program that generated this CodeUnit.
      Specified by:
      getProgram in interface CodeUnit
    • getExternalReference

      public ExternalReference getExternalReference(int opIndex)
      Description copied from interface: CodeUnit
      Gets the external reference (if any) at the opIndex
      Specified by:
      getExternalReference in interface CodeUnit
      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 interface CodeUnit
    • setPrimaryMemoryReference

      public void setPrimaryMemoryReference(Reference ref)
      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 interface CodeUnit
      Parameters:
      ref - the reference to be set as primary.
    • setStackReference

      public void setStackReference(int opIndex, int offset, SourceType sourceType, RefType refType)
      Description copied from interface: CodeUnit
      Sets a stack reference at the offset 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 interface CodeUnit
      Parameters:
      opIndex - the index of the operand to set this stack reference
      offset - the (+/-) offset from stack base address
      sourceType - the source of this reference
      refType - type of reference, RefType.READ,WRITE,PTR...
    • setRegisterReference

      public void setRegisterReference(int opIndex, Register reg, SourceType sourceType, RefType refType)
      Description copied from interface: CodeUnit
      Sets a register reference at the offset 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 interface CodeUnit
      Parameters:
      opIndex - the index of the operand to set this register reference
      reg - a register
      sourceType - the source of this reference
      refType - 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 interface CodeUnit
    • getAddress

      public Address getAddress(int opIndex)
      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 interface CodeUnit
      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

      public Scalar getScalar(int opIndex)
      Description copied from interface: CodeUnit
      Returns the scalar at the given operand index. Data objects have one operand (the value).
      Specified by:
      getScalar in interface CodeUnit
      Parameters:
      opIndex - index of the operand.
      Returns:
      the scalar at the given operand index or null if no scalar exists at that index.
    • getByte

      public byte getByte(int offset) throws MemoryAccessException
      Description copied from interface: MemBuffer
      Get one byte from memory at the current position plus offset.
      Specified by:
      getByte in interface MemBuffer
      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
      Reads b.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 interface MemBuffer
      Parameters:
      b - the buffer into which bytes will be placed
      memoryBufferOffset - 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

      public Address getAddress()
      Description copied from interface: MemBuffer
      Get the Address which corresponds to the offset 0.
      Specified by:
      getAddress in interface MemBuffer
      Returns:
      the current address of offset 0.
    • getMemory

      public Memory getMemory()
      Description copied from interface: MemBuffer
      Get the Memory object actually used by the MemBuffer.
      Specified by:
      getMemory in interface MemBuffer
      Returns:
      the Memory used by this MemBuffer or null if not available.
    • 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 interface MemBuffer
      Returns:
      true if the underlying bytes are in big-endian order, false if they are little endian.
    • getShort

      public short getShort(int offset) throws MemoryAccessException
      Description copied from interface: MemBuffer
      returns the short at the given offset, taking into account the endianness.
      Specified by:
      getShort in interface MemBuffer
      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

      public int getInt(int offset) throws MemoryAccessException
      Description copied from interface: MemBuffer
      returns the int at the given offset, taking into account the endianness.
      Specified by:
      getInt in interface MemBuffer
      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

      public long getLong(int offset) throws MemoryAccessException
      Description copied from interface: MemBuffer
      returns the long at the given offset, taking into account the endianness.
      Specified by:
      getLong in interface MemBuffer
      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

      public BigInteger getBigInteger(int offset, int size, boolean signed) throws MemoryAccessException
      Description copied from interface: MemBuffer
      returns the value at the given offset, taking into account the endianness.
      Specified by:
      getBigInteger in interface MemBuffer
      Parameters:
      offset - the offset from the membuffers origin (the address that it is set at)
      size - the number of bytes to include in the value
      signed - 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

      public boolean isChangeAllowed(SettingsDefinition settingsDefinition)
      Description copied from interface: Settings
      Determine if a settings change corresponding to the specified settingsDefinition is permitted.
      Specified by:
      isChangeAllowed in interface Settings
      Parameters:
      settingsDefinition - settings definition
      Returns:
      true if change permitted else false
    • getLong

      public Long getLong(String name)
      Description copied from interface: Settings
      Gets the Long value associated with the given name
      Specified by:
      getLong in interface Settings
      Parameters:
      name - the key used to retrieve a value
      Returns:
      the Long value for a key
    • getString

      public String getString(String name)
      Description copied from interface: Settings
      Gets the String value associated with the given name
      Specified by:
      getString in interface Settings
      Parameters:
      name - the key used to retrieve a value
      Returns:
      the String value for a key
    • getValue

      public Object getValue(String name)
      Description copied from interface: Settings
      Gets the object associated with the given name
      Specified by:
      getValue in interface Settings
      Parameters:
      name - the key used to retrieve a value
      Returns:
      the object associated with a given key
    • setLong

      public void setLong(String name, long value)
      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).
      Specified by:
      setLong in interface Settings
      Parameters:
      name - the key
      value - the value associated with the key
    • setString

      public void setString(String name, String value)
      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).
      Specified by:
      setString in interface Settings
      Parameters:
      name - the key
      value - the value associated with the key
    • setValue

      public void setValue(String name, Object value)
      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).
      Specified by:
      setValue in interface Settings
      Parameters:
      name - the key
      value - the value to associate with the key
    • clearSetting

      public void clearSetting(String name)
      Description copied from interface: Settings
      Removes any value associated with the given name
      Specified by:
      clearSetting in interface Settings
      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 interface Settings
    • getNames

      public String[] getNames()
      Description copied from interface: Settings
      Get this list of keys that currently have values associated with them
      Specified by:
      getNames in interface Settings
      Returns:
      an array of string keys.
    • 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.
      Specified by:
      isEmpty in interface Settings
      Returns:
      true if there are no key-value pairs stored in this settings object
    • getDefaultSettings

      public Settings getDefaultSettings()
      Description copied from interface: Settings
      Returns the underlying default settings for these settings or null if there are none
      Specified by:
      getDefaultSettings in interface Settings
      Returns:
      underlying default settings or null
    • getValue

      public Object 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.
      Specified by:
      getValue in interface Data
      Returns:
      the value
    • getValueClass

      public Class<?> 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 interface Data
      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 interface Data
      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 explicit Data and DataType mutability settings and does not reflect independent memory block or processor specification settings.
      Specified by:
      isConstant in interface Data
      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 explicit Data and DataType mutability settings and does not reflect independent memory block or processor specification settings.
      Specified by:
      isWritable in interface Data
      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 explicit Data and DataType mutability settings and does not reflect independent memory block or processor specification settings.
      Specified by:
      isVolatile in interface Data
      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.
      Specified by:
      isDefined in interface Data
      Returns:
      true if is defined
    • getDataType

      public DataType getDataType()
      Description copied from interface: Data
      Get the Data type for the data.
      Specified by:
      getDataType in interface Data
      Returns:
      the data type
    • getBaseDataType

      public DataType 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 interface Data
      Returns:
      the data type
    • getValueReferences

      public Reference[] getValueReferences()
      Description copied from interface: Data
      Get the references for the value.
      Specified by:
      getValueReferences in interface Data
      Returns:
      the references
    • addValueReference

      public void addValueReference(Address refAddr, RefType type)
      Description copied from interface: Data
      Add a memory reference to the value.
      Specified by:
      addValueReference in interface Data
      Parameters:
      refAddr - address referenced.
      type - the type of reference to be added.
    • removeValueReference

      public void removeValueReference(Address refAddr)
      Description copied from interface: Data
      Remove a reference to the value.
      Specified by:
      removeValueReference in interface Data
      Parameters:
      refAddr - address of reference to be removed.
    • getFieldName

      public String 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 interface Data
      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

      public String 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 interface Data
      Returns:
      the path name
    • getComponentPathName

      public String getComponentPathName()
      Description copied from interface: Data
      Returns the component path name (dot notation) for this field
      Specified by:
      getComponentPathName in interface Data
      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.
      Specified by:
      isPointer in interface Data
      Returns:
      true if a pointer
    • isUnion

      public boolean isUnion()
      Description copied from interface: Data
      Returns true if this data item is a Union.
      Specified by:
      isUnion in interface Data
      Returns:
      true if a union
    • isStructure

      public boolean isStructure()
      Description copied from interface: Data
      Returns true if this data item is a Structure.
      Specified by:
      isStructure in interface Data
      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
      Specified by:
      isArray in interface Data
      Returns:
      true if an array
    • isDynamic

      public boolean isDynamic()
      Description copied from interface: Data
      Returns true if this data item is a dynamic DataType.
      Specified by:
      isDynamic in interface Data
      Returns:
      true if is dynamic
    • getParent

      public Data 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.
      Specified by:
      getParent in interface Data
      Returns:
      the data
    • getRoot

      public Data getRoot()
      Description copied from interface: Data
      Get the highest level Data item in a hierarchy of structures containing this component.
      Specified by:
      getRoot in interface Data
      Returns:
      the data
    • 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 interface Data
      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 interface Data
      Returns:
      the offset
    • getComponent

      public Data getComponent(int index)
      Description copied from interface: Data
      Returns the immediate n'th component or null if none exists.
      Specified by:
      getComponent in interface Data
      Parameters:
      index - the index of the component to get.
      Returns:
      the component
    • getComponent

      public Data getComponent(int[] componentPath)
      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 interface Data
      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 interface Data
      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 interface Data
      Returns:
      the number of components
    • getComponentAt

      public Data getComponentAt(int offset)
      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 (see Data.getComponentsContaining(int)).
      Specified by:
      getComponentAt in interface Data
      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

      public Data getComponentContaining(int offset)
      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 (see Data.getComponentsContaining(int)).
      Specified by:
      getComponentContaining in interface Data
      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

      public List<Data> getComponentsContaining(int offset)
      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 interface Data
      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

      public Data getPrimitiveAt(int offset)
      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 interface Data
      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 interface Data
      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 interface Data
      Returns:
      the level of this data item with 0 being the level of top data items.
    • getDefaultValueRepresentation

      public String getDefaultValueRepresentation()
      Description copied from interface: Data
      Returns a string that represents the data value without markup.
      Specified by:
      getDefaultValueRepresentation in interface Data
      Returns:
      the string
    • getDefaultLabelPrefix

      public String getDefaultLabelPrefix(DataTypeDisplayOptions options)
      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 interface Data
      Parameters:
      options - the options
      Returns:
      the prefix