Package ghidra.program.util

# Class FunctionLocation

java.lang.Object
ghidra.program.util.ProgramLocation
ghidra.program.util.FunctionLocation

All Implemented Interfaces:
  `Cloneable`, `Comparable<ProgramLocation>`

Direct Known Subclasses:
  `FunctionCallFixupFieldLocation`, `FunctionRepeatableCommentFieldLocation`, `FunctionSignatureFieldLocation`, `FunctionSignatureSourceFieldLocation`, `FunctionTagFieldLocation`, `ThunkedFunctionFieldLocation`, `VariableLocation`

public class FunctionLocation extends ProgramLocation
`FunctionLocation` provides information about the location in a program within a `Function`.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected Address`
  `functionAddr`

  ### Fields inherited from class ghidra.program.util.ProgramLocation

  `addr, program, refAddr`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `FunctionLocation()`
  Default constructor needed for restoring a program function location from XML
  `protected`
  `FunctionLocation(Program program, Address locationAddr, Address functionAddr, int row, int col, int charOffset)`
  Create a new FunctionLocation.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `equals(Object obj)`
  `Address`
  `getFunctionAddress()`
  Return the Function symbol address which may differ from the "location address" when a function is indirectly inferred via a reference.
  `boolean`
  `isValid(Program p)`
  Returns true if this location represents a valid location in the given program.
  `void`
  `restoreState(Program program1, SaveState obj)`
  Restore this function location using the given program and save state object.
  `void`
  `saveState(SaveState obj)`
  Save this function location to the given save state object.
  `String`
  `toString()`

  ### Methods inherited from class ghidra.program.util.ProgramLocation

  `clone, compareAddr, compareTo, getAddress, getByteAddress, getCharOffset, getColumn, getComponentPath, getLocation, getProgram, getRefAddress, getRow, getTranslatedCopy, hashCode`

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

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

- ## Field Details

  - ### functionAddr

    protected Address functionAddr

- ## Constructor Details

  - ### FunctionLocation

    protected FunctionLocation(Program program, Address locationAddr, Address functionAddr, int row, int col, int charOffset)
    Create a new FunctionLocation.
    Parameters:
      `program` - the program of the location
      `locationAddr` - the address of the listing location (i.e., referent code unit)
      `functionAddr` - the function address
      `row` - the row in the field
      `col` - the display piece on the row
      `charOffset` - the character position within the display piece specified by row,col

  - ### FunctionLocation

    protected FunctionLocation()
    Default constructor needed for restoring a program function location from XML

- ## Method Details

  - ### equals

    public boolean equals(Object obj)
    Overrides:
      `equals` in class `ProgramLocation`

  - ### getFunctionAddress

    public Address getFunctionAddress()
    Return the Function symbol address which may differ from the "location address" when a function is indirectly inferred via a reference. WARNING: The `ProgramLocation.getAddress()` should not be used to obtain the function address!
    Returns:
      the function address corresponding to this program location

  - ### saveState

    public void saveState(SaveState obj)
    Save this function location to the given save state object.
    Overrides:
      `saveState` in class `ProgramLocation`
    Parameters:
      `obj` - the save state object for saving the location

  - ### restoreState

    public void restoreState(Program program1, SaveState obj)
    Restore this function location using the given program and save state object.
    Overrides:
      `restoreState` in class `ProgramLocation`
    Parameters:
      `program1` - the program containing the function location
      `obj` - the save state object for saving the location

  - ### isValid

    public boolean isValid(Program p)
    Description copied from class: `ProgramLocation`
    Returns true if this location represents a valid location in the given program.
    Overrides:
      `isValid` in class `ProgramLocation`
    Parameters:
      `p` - the program to test if this location is valid.
    Returns:
      true if this location represents a valid location in the given program.

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `ProgramLocation`