Class VariableSymbolDB

All Implemented Interfaces:
Symbol
Direct Known Subclasses:
GlobalVariableSymbolDB

public class VariableSymbolDB extends SymbolDB
Symbol class for function variables. Symbol Data Usage: String stringData - variable comment
  • Constructor Details

    • VariableSymbolDB

      public VariableSymbolDB(SymbolManager symbolMgr, DBObjectCache<SymbolDB> cache, SymbolType type, VariableStorageManagerDB variableMgr, Address address, DBRecord record)
      Constructs a new VariableSymbol
      Parameters:
      symbolMgr - the symbol manager
      cache - symbol object cache
      type - the symbol type.
      variableMgr - variable storage manager
      address - the address of the symbol (stack address)
      record - the record for the symbol
  • Method Details

    • setInvalid

      public void setInvalid()
      Description copied from class: DatabaseObject
      Invalidate this object. This does not necessarily mean that this object can never be used again. If the object can refresh itself, it may still be useable.
      Overrides:
      setInvalid in class DatabaseObject
    • getVariableStorage

      public VariableStorage getVariableStorage()
    • getSymbolType

      public SymbolType getSymbolType()
      Description copied from interface: Symbol
      Returns this symbol's type
      Returns:
      symbol type
      See Also:
    • refresh

      protected boolean refresh(DBRecord rec)
      Description copied from class: DatabaseObject
      Tells the object to refresh its state from the database using the specified record if not null. NOTE: The default implementation ignores the record and invokes refresh(). Implementations of this method must take care if multiple database tables are used since the record supplied could correspond to another object. In some cases it may be best not to override this method or ignore the record provided.
      Overrides:
      refresh in class SymbolDB
      Parameters:
      rec - valid record associated with object's key (optional, may be null to force record lookup or other refresh technique)
      Returns:
      true if the object was able to refresh itself. Return false if record is null and object was deleted. Objects that extend this class must implement a refresh method. If an object can never refresh itself, then it should always return false.
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class SymbolDB
      See Also:
    • delete

      public boolean delete()
      Description copied from interface: Symbol
      Delete the symbol and its associated resources. Any references symbol associations will be discarded.
      Specified by:
      delete in interface Symbol
      Overrides:
      delete in class SymbolDB
      Returns:
      true if successful
      See Also:
    • getObject

      public Object getObject()
      Returns:
      object associated with this symbol or null if symbol has been deleted
      See Also:
    • isPrimary

      public boolean isPrimary()
      Specified by:
      isPrimary in interface Symbol
      Specified by:
      isPrimary in class SymbolDB
      Returns:
      true if this symbol is primary
      See Also:
    • isExternal

      public boolean isExternal()
      Description copied from interface: Symbol
      Returns true if this an external symbol.
      Returns:
      true if this an external symbol.
      See Also:
    • getFunction

      public FunctionDB getFunction()
    • getProgramLocation

      public ProgramLocation getProgramLocation()
      Returns:
      a program location corresponding to this symbol
      See Also:
    • isValidParent

      public boolean isValidParent(Namespace parent)
      Description copied from interface: Symbol
      Determines if the given parent is valid for this Symbol. Specified namespace must belong to the same symbol table as this symbol.
      Specified by:
      isValidParent in interface Symbol
      Overrides:
      isValidParent in class SymbolDB
      Parameters:
      parent - prospective parent namespace for this symbol
      Returns:
      true if parent is valid
      See Also:
    • doGetName

      protected String doGetName()
      Description copied from class: SymbolDB
      The code for creating the name content for this symbol. This code will be called with the symbol's lock.
      Overrides:
      doGetName in class SymbolDB
      Returns:
      the name
    • validateNameSource

      protected SourceType validateNameSource(String newName, SourceType source)
      Description copied from class: SymbolDB
      Allow symbol implementations to validate the source when setting the name of this symbol
      Overrides:
      validateNameSource in class SymbolDB
      Parameters:
      newName - the new name
      source - the source type
      Returns:
      the validated source type
    • getDataType

      public DataType getDataType()
    • setStorageAndDataType

      public void setStorageAndDataType(VariableStorage newStorage, DataType dt)
      Change the storage address and data-type associated with this variable symbol.
      Parameters:
      newStorage -
      dt - data-type
    • getFirstUseOffset

      public int getFirstUseOffset()
    • setFirstUseOffset

      public void setFirstUseOffset(int firstUseOffset)
    • getOrdinal

      public int getOrdinal()
    • setOrdinal

      public void setOrdinal(int ordinal)
    • getReferenceCount

      public int getReferenceCount()
      Specified by:
      getReferenceCount in interface Symbol
      Overrides:
      getReferenceCount in class SymbolDB
      Returns:
      the number of References to this symbol.
    • getReferences

      public Reference[] getReferences(TaskMonitor monitor)
      Description copied from interface: Symbol
      Returns all memory references to the address of this symbol. If you do not have a TaskMonitor instance, then you can pass TaskMonitor.DUMMY or null.
      Specified by:
      getReferences in interface Symbol
      Overrides:
      getReferences in class SymbolDB
      Parameters:
      monitor - the monitor that is used to report progress and to cancel this potentially long-running call
      Returns:
      all memory references to the address of this symbol.
    • hasMultipleReferences

      public boolean hasMultipleReferences()
      Specified by:
      hasMultipleReferences in interface Symbol
      Overrides:
      hasMultipleReferences in class SymbolDB
      Returns:
      true if this symbol has more than one reference to it.
    • hasReferences

      public boolean hasReferences()
      Specified by:
      hasReferences in interface Symbol
      Overrides:
      hasReferences in class SymbolDB
      Returns:
      true if this symbol has at least one reference to it.