Package ghidra.app.util

# Class SymbolInspector

java.lang.Object
ghidra.app.util.SymbolInspector

All Implemented Interfaces:
  `OptionsChangeListener`

public class SymbolInspector extends Object implements OptionsChangeListener
Class for coloring symbols.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SymbolInspector(ToolOptions options, Component repaintComp)`
  Constructs a new symbol inspector
  `SymbolInspector(ServiceProvider serviceProvider, Component repaintComp)`
  Constructs a new symbol inspector It uses the tool to get the CATEGORY_BROWSER_DISPLAY options

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `dispose()`
  Call this when you are done with this inspector and will not use it again.
  `Color`
  `getColor(Symbol s)`
  Get the color used to render the given symbol.
  `ColorAndStyle`
  `getColorAndStyle(Symbol s)`
  Gets the color and style used to render the given symbol.
  `Color`
  `getOffcutSymbolColor()`
  `int`
  `getOffcutSymbolStyle()`
  `Program`
  `getProgram()`
  Returns the program in use by this inspector; may be null;
  `ScreenElement`
  `getScreenElement(Symbol s)`
  Get the ScreenElement corresponding to the type of the symbol
  `int`
  `getStyle(Symbol s)`
  Get the style used to render the given symbol
  `boolean`
  `isBadReferenceSymbol(Symbol s)`
  Returns true if symbol is at a non-existent address
  `boolean`
  `isDataSymbol(Symbol s)`
  Returns true if the symbol is on a data item.
  `boolean`
  `isDeadCodeSymbol(Symbol s)`
  Returns true if the symbol is on "dead" code
  `boolean`
  `isEntryPointSymbol(Symbol s)`
  Checks if the given symbol is at an external entry point
  `boolean`
  `isExternalSymbol(Symbol s)`
  `boolean`
  `isFunctionSymbol(Symbol s)`
  Checks if the symbol is at a function
  `boolean`
  `isGlobalSymbol(Symbol s)`
  Checks if the symbol is global or local
  `boolean`
  `isInstructionSymbol(Symbol s)`
  Checks if the symbol is at or inside an instruction
  `boolean`
  `isLocalSymbol(Symbol s)`
  Checks if the symbol is local
  `boolean`
  `isNonPrimarySymbol(Symbol s)`
  Checks if the symbol is not a primary symbol
  `boolean`
  `isOffcutSymbol(Symbol s)`
  Checks if the symbol is offcut
  `boolean`
  `isPrimarySymbol(Symbol s)`
  returns true if the symbol is primary
  `boolean`
  `isSubroutineSymbol(Symbol s)`
  Checks if the symbol is at the beginning of a subroutine.
  `boolean`
  `isVariableSymbol(Symbol s)`
  Checks if the symbol is a function variable
  `void`
  `optionsChanged(ToolOptions options, String name, Object oldValue, Object newValue)`
  Notification that an option changed.
  `void`
  `setProgram(Program p)`
  Associates a program with this symbol inspector

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

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### SymbolInspector

    public SymbolInspector(ServiceProvider serviceProvider, Component repaintComp)
    Constructs a new symbol inspector It uses the tool to get the CATEGORY_BROWSER_DISPLAY options
    Parameters:
      `serviceProvider` - a service provider for getting services
      `repaintComp` - the component to repaint when the options change

  - ### SymbolInspector

    public SymbolInspector(ToolOptions options, Component repaintComp)
    Constructs a new symbol inspector
    Parameters:
      `options` - the options from which to get colors
      `repaintComp` - the component to repaint when the options change

- ## Method Details

  - ### optionsChanged

    public void optionsChanged(ToolOptions options, String name, Object oldValue, Object newValue)
    Description copied from interface: `OptionsChangeListener`
    Notification that an option changed.

    Note: to reject an options change, you can throw a `OptionsVetoException`.

    Specified by:
      `optionsChanged` in interface `OptionsChangeListener`
    Parameters:
      `options` - options object containing the property that changed
      `name` - name of option that changed
      `oldValue` - old value of the option
      `newValue` - new value of the option

  - ### setProgram

    public void setProgram(Program p)
    Associates a program with this symbol inspector
    Parameters:
      `p` - the program for inspecting symbols

  - ### getProgram

    public Program getProgram()
    Returns the program in use by this inspector; may be null;
    Returns:
      the program in use by this inspector; may be null;

  - ### dispose

    public void dispose()
    Call this when you are done with this inspector and will not use it again. Cleans up listeners, etc.

  - ### isBadReferenceSymbol

    public boolean isBadReferenceSymbol(Symbol s)
    Returns true if symbol is at a non-existent address
    Parameters:
      `s` - the symbol to check
    Returns:
      boolean true if symbol is bad

  - ### isDataSymbol

    public boolean isDataSymbol(Symbol s)
    Returns true if the symbol is on a data item.
    Parameters:
      `s` - the symbol to check
    Returns:
      boolean true if s is a data symbol

  - ### isDeadCodeSymbol

    public boolean isDeadCodeSymbol(Symbol s)
    Returns true if the symbol is on "dead" code
    Parameters:
      `s` - the symbol to check
    Returns:
      boolean true if the symbol is on dead code

  - ### isEntryPointSymbol

    public boolean isEntryPointSymbol(Symbol s)
    Checks if the given symbol is at an external entry point
    Parameters:
      `s` - the symbol to check
    Returns:
      boolean true if the symbol is at an external entry point address.

  - ### isFunctionSymbol

    public boolean isFunctionSymbol(Symbol s)
    Checks if the symbol is at a function
    Parameters:
      `s` - the symbol to check.
    Returns:
      boolean true if there is a function at the symbol's address.

  - ### isVariableSymbol

    public boolean isVariableSymbol(Symbol s)
    Checks if the symbol is a function variable
    Parameters:
      `s` - the symbol to check
    Returns:
      true if s is a function variable symbol

  - ### isGlobalSymbol

    public boolean isGlobalSymbol(Symbol s)
    Checks if the symbol is global or local
    Parameters:
      `s` - the symbol to check
    Returns:
      boolean true if the symbol is global, false if the symbol is local.

  - ### isInstructionSymbol

    public boolean isInstructionSymbol(Symbol s)
    Checks if the symbol is at or inside an instruction
    Parameters:
      `s` - the symbol to check
    Returns:
      boolean true if the symbol is on an instruction

  - ### isLocalSymbol

    public boolean isLocalSymbol(Symbol s)
    Checks if the symbol is local
    Parameters:
      `s` - the symbol to check
    Returns:
      boolean true if the symbol is local, false if it is global

  - ### isNonPrimarySymbol

    public boolean isNonPrimarySymbol(Symbol s)
    Checks if the symbol is not a primary symbol
    Parameters:
      `s` - the symbol to check.
    Returns:
      boolean true if the symbol is non-primary

  - ### isOffcutSymbol

    public boolean isOffcutSymbol(Symbol s)
    Checks if the symbol is offcut
    Parameters:
      `s` - the symbol to check
    Returns:
      boolean true if the symbol is offcut

  - ### isPrimarySymbol

    public boolean isPrimarySymbol(Symbol s)
    returns true if the symbol is primary
    Parameters:
      `s` - the symbol to check
    Returns:
      boolean true if the symbol is primary

  - ### isSubroutineSymbol

    public boolean isSubroutineSymbol(Symbol s)
    Checks if the symbol is at the beginning of a subroutine.
    Parameters:
      `s` - the symbol to check
    Returns:
      boolean true if the symbol is at the beginning of a subroutine.

  - ### isExternalSymbol

    public boolean isExternalSymbol(Symbol s)

  - ### getColorAndStyle

    public ColorAndStyle getColorAndStyle(Symbol s)
    Gets the color and style used to render the given symbol. Calling this method is faster than calling `getColor(Symbol)` and `getStyle(Symbol)` separately.
    Parameters:
      `s` - the symbol
    Returns:
      the color and style

  - ### getColor

    public Color getColor(Symbol s)
    Get the color used to render the given symbol.
    Parameters:
      `s` - symbol to inspect
    Returns:
      Color for the symbol

  - ### getStyle

    public int getStyle(Symbol s)
    Get the style used to render the given symbol
    Parameters:
      `s` - symbol to inspect
    Returns:
      the style for the symbol

  - ### getScreenElement

    public ScreenElement getScreenElement(Symbol s)
    Get the ScreenElement corresponding to the type of the symbol
    Parameters:
      `s` - symbol to inspect
    Returns:
      the screen element

  - ### getOffcutSymbolColor

    public Color getOffcutSymbolColor()

  - ### getOffcutSymbolStyle

    public int getOffcutSymbolStyle()