Class SymbolDB

    • Method Detail

      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • refresh

        protected boolean refresh()
        Description copied from class: DatabaseObject
        Tells the object to refresh its state from the database.
        Specified by:
        refresh in class DatabaseObject
        Returns:
        true if the object was able to refresh itself. Return false if the 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.
      • refresh

        protected boolean refresh​(Record 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 DatabaseObject
        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.
      • setAddress

        protected void setAddress​(Address addr)
      • getName

        public java.lang.String getName()
        Specified by:
        getName in interface Symbol
      • getName

        public java.lang.String getName​(boolean includeNamespace)
        Description copied from interface: Symbol
        Returns the symbol name, optionally prepended with the namespace path.
        Specified by:
        getName in interface Symbol
        Parameters:
        includeNamespace - if true, the namespace path is prepended to the name.
      • getPath

        public java.lang.String[] getPath()
        Description copied from interface: Symbol
        Gets the full path name for this symbol as an ordered array of strings ending with the symbol name. The global symbol will return an empty array.
        Specified by:
        getPath in interface 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 TaskMonitorAdapter.DUMMY_MONITOR or null.
        Specified by:
        getReferences in interface Symbol
        Parameters:
        monitor - the monitor that is used to report progress and to cancel this potentially long-running call
      • hasReferences

        public boolean hasReferences()
        Specified by:
        hasReferences in interface Symbol
      • isDynamic

        public boolean isDynamic()
        Specified by:
        isDynamic in interface Symbol
      • isPrimary

        public abstract boolean isPrimary()
        Specified by:
        isPrimary in interface Symbol
      • setSource

        public void setSource​(SourceType newSource)
        Sets this symbol's source as specified.
        Specified by:
        setSource in interface Symbol
        Parameters:
        newSource - the new source type (IMPORTED, ANALYSIS, USER_DEFINED)
        Throws:
        java.lang.IllegalArgumentException - if you try to change the source from default or to default
      • getSource

        public SourceType getSource()
        Description copied from interface: Symbol
        Gets the source of this symbol. SourceTypes
        Specified by:
        getSource in interface Symbol
        Returns:
        the source of this symbol
      • isPinned

        public boolean isPinned()
        Description copied from interface: Symbol
        Returns true if the symbol is pinned to its current address. If it is pinned, then moving or removing the memory associated with that address will not affect this symbol.
        Specified by:
        isPinned in interface Symbol
      • doIsPinned

        protected boolean doIsPinned()
      • setPinned

        public void setPinned​(boolean pinned)
        Description copied from interface: Symbol

        Sets whether or not this symbol is pinned to its associated address.

        If the symbol is pinned then moving or removing the memory associated with its address will not cause this symbol to be removed and will not cause its address to change. If the symbol is not pinned, then removing the memory at its address will also remove this symbol.

        Likewise, moving a memory block containing a symbol that is not anchored will change the address for that symbol to keep it associated with the same byte in the memory block.

        Specified by:
        setPinned in interface Symbol
        Parameters:
        pinned - true indicates this symbol is anchored to its address. false indicates this symbol is not anchored to its address.
      • doSetPinned

        protected void doSetPinned​(boolean pinned)
      • setName

        public void setName​(java.lang.String newName,
                            SourceType source)
                     throws DuplicateNameException,
                            InvalidInputException
        Description copied from interface: Symbol
        Sets the name this symbol. If this symbol is dynamic, then the name is set and the symbol is no longer dynamic.
        Specified by:
        setName in interface Symbol
        Parameters:
        newName - the new name for this symbol.
        source - the source of this symbol
        Some symbol types, such as function symbols, can set the source to Symbol.DEFAULT.
        Throws:
        DuplicateNameException - if name already exists as the name of another symbol or alias.
        InvalidInputException - if alias contains blank characters, is zero length, or is null
      • validateNameSource

        protected SourceType validateNameSource​(java.lang.String newName,
                                                SourceType source)
        Allow symbol implementations to validate the source when setting the name of this symbol.
      • getSymbolsDynamicallyRenamedByMyRename

        protected java.util.List<SymbolDB> getSymbolsDynamicallyRenamedByMyRename()
      • setPrimary

        public boolean setPrimary()
        Description copied from interface: Symbol
        Sets this symbol to be primary. All other symbols at the same address will be set to !primary. Only applies to non-function symbols.
        Specified by:
        setPrimary in interface Symbol
        Returns:
        returns true if the symbol was not primary and now it is, otherwise false
        See Also:
        Symbol.setPrimary()
      • getID

        public long getID()
        Specified by:
        getID in interface Symbol
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • getParentSymbol

        public Symbol getParentSymbol()
        Description copied from interface: Symbol
        Returns namespace symbol of the namespace containing this symbol
        Specified by:
        getParentSymbol in interface Symbol
      • isGlobal

        public boolean isGlobal()
        Specified by:
        isGlobal in interface Symbol
      • getSymbolData3

        public java.lang.String getSymbolData3()
      • setSymbolData3

        public void setSymbolData3​(java.lang.String data3)
      • removeAllReferencesTo

        protected void removeAllReferencesTo()
      • getSymbolData1

        public long getSymbolData1()
      • setSymbolData1

        public void setSymbolData1​(long value)
        Sets the generic symbol data 1.
        Parameters:
        value - the value to set as symbol data 1.
      • getSymbolData2

        public int getSymbolData2()
        gets the generic symbol data 2 data.
      • setSymbolData2

        public void setSymbolData2​(int value)
        Sets the generic symbol data 2 data
        Parameters:
        value - the value to set as the symbols data 2 value.
      • delete

        public boolean delete()
        Description copied from interface: Symbol
        Delete the symbol and its associated resources.
        Specified by:
        delete in interface Symbol
      • isDeleting

        public boolean isDeleting()
      • isDescendant

        public boolean isDescendant​(Namespace namespace)
        Description copied from interface: Symbol
        Returns true if the given namespace symbol is a descendant of this symbol.
        Specified by:
        isDescendant in interface Symbol
        Parameters:
        namespace - to test as descendant symbol of this Symbol
        Returns:
        true if this symbol is an ancestor of the given namespace symbol
      • isValidParent

        public abstract boolean isValidParent​(Namespace parent)
        Description copied from interface: Symbol
        Returns whether the given parent is valid for this Symbol.
        Specified by:
        isValidParent in interface Symbol