Package ghidra.program.database.symbol

# Class LibrarySymbol

java.lang.Object
ghidra.program.database.DatabaseObject
ghidra.program.database.symbol.SymbolDB
ghidra.program.database.symbol.LibrarySymbol

All Implemented Interfaces:
  `Symbol`

public class LibrarySymbol extends SymbolDB
Class for library symbols. Symbol data usage: String stringData - associated program project file path

- ## Field Summary

  ### Fields inherited from class ghidra.program.database.symbol.SymbolDB

  `address, lock, symbolMgr`

  ### Fields inherited from class ghidra.program.database.DatabaseObject

  `key`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `LibrarySymbol(SymbolManager symbolMgr, DBObjectCache<SymbolDB> cache, Address address, DBRecord record)`
  Constructs a new Library Symbol

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Object`
  `getObject()`
  `ProgramLocation`
  `getProgramLocation()`
  `SymbolType`
  `getSymbolType()`
  Returns this symbol's type
  `boolean`
  `isExternal()`
  Returns true if this an external symbol.
  `boolean`
  `isPrimary()`
  `boolean`
  `isValidParent(Namespace parent)`
  Determines if the given parent is valid for this Symbol.
  `void`
  `setName(String newName, SourceType source)`
  Sets the name this symbol.
  `void`
  `setNameAndNamespace(String newName, Namespace newNamespace, SourceType source)`
  Sets the symbols name and namespace.
  `void`
  `setSymbolStringData(String newPath)`
  Sets the symbol's string data field.

  ### Methods inherited from class ghidra.program.database.symbol.SymbolDB

  `checkDeleted, delete, doCheckIsPrimary, doGetName, doGetParentNamespace, doIsPinned, doSetNameAndNamespace, doSetPinned, doSetPrimary, equals, getAddress, getDataTypeId, getID, getName, getName, getParentNamespace, getParentSymbol, getPath, getProgram, getReferenceCount, getReferences, getReferences, getSource, getSymbolsDynamicallyRenamedByMyRename, getSymbolStringData, getVariableOffset, hashCode, hasMultipleReferences, hasReferences, isDeleted, isDeleting, isDescendant, isDynamic, isExternalEntryPoint, isGlobal, isPinned, moveLowLevel, refresh, refresh, setAddress, setDataTypeId, setNamespace, setPinned, setPrimary, setSource, setVariableOffset, toString, validateNameSource`

  ### Methods inherited from class ghidra.program.database.DatabaseObject

  `checkIsValid, checkIsValid, getKey, isDeleted, isInvalid, keyChanged, setDeleted, setInvalid, validate`

  ### Methods inherited from class java.lang.Object

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### LibrarySymbol

    public LibrarySymbol(SymbolManager symbolMgr, DBObjectCache<SymbolDB> cache, Address address, DBRecord record)
    Constructs a new Library Symbol
    Parameters:
      `symbolMgr` - the symbol manager
      `cache` - symbol object cache
      `address` - the address for this symbol
      `record` - the record for this symbol

- ## Method Details

  - ### setName

    public void setName(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`
    Overrides:
      `setName` in class `SymbolDB`
    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

  - ### setNameAndNamespace

    public void setNameAndNamespace(String newName, Namespace newNamespace, SourceType source) throws DuplicateNameException, InvalidInputException, CircularDependencyException
    Description copied from interface: `Symbol`
    Sets the symbols name and namespace. This is provided to allow the caller to avoid a name conflict by creating an autonomous action.
    Specified by:
      `setNameAndNamespace` in interface `Symbol`
    Overrides:
      `setNameAndNamespace` in class `SymbolDB`
    Parameters:
      `newName` - new symbol name
      `newNamespace` - new parent namespace
      `source` - the source of this symbol
      Some symbol types, such as function symbols, can set the source to Symbol.DEFAULT.
    Throws:
      `DuplicateNameException` - if newNamespace already contains a symbol with this symbol's name
      `InvalidInputException` - is newNamespace is not a valid parent for this symbol
      `CircularDependencyException` - if this symbol is an ancestor of newNamespace

  - ### setSymbolStringData

    public void setSymbolStringData(String newPath)
    Description copied from class: `SymbolDB`
    Sets the symbol's string data field. This field's data has different uses depending on the symbol type and whether or not it is external.
    Overrides:
      `setSymbolStringData` in class `SymbolDB`
    Parameters:
      `newPath` - the string to store in the string data field

  - ### getSymbolType

    public SymbolType getSymbolType()
    Description copied from interface: `Symbol`
    Returns this symbol's type
    Returns:
      symbol type

  - ### 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:
      - `Address.isExternalAddress()`

  - ### getObject

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

  - ### isPrimary

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

  - ### getProgramLocation

    public ProgramLocation getProgramLocation()
    Returns:
      a program location corresponding to this symbol
    See Also:
      - `Symbol.getProgramLocation()`

  - ### 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