Package ghidra.util.table.field

# Class AddressBasedLocation

java.lang.Object
ghidra.util.table.field.AddressBasedLocation

All Implemented Interfaces:
  `Comparable<AddressBasedLocation>`

public class AddressBasedLocation extends Object implements Comparable<AddressBasedLocation>
`AddressBasedLocation` provides the ability to render and compare addresses (e.g., location table column). This may be necessary when working a mixture of address types (e.g., memory, stack, register, variable, external) with the need to render in a meaningful way. Generally, only memory addresses are meaningful to a user when rendered as a simple address (e.g., ram:00123456). While most address types are handled, VARIABLE addresses will only render as "<VARIABLE>". As such, this implementation should be extended if VARIABLE addresses will be encountered.

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  ``
  `AddressBasedLocation()`
  Construct a null location which generally corresponds to a unknown/bad address
  `protected`
  `AddressBasedLocation(Address address, String representation)`
  Construct a location with a specific address and representation
  ``
  `AddressBasedLocation(Program program, Address address)`
  Construction a location.
  ``
  `AddressBasedLocation(Program program, Reference reference, CodeUnitFormatOptions.ShowBlockName showBlockName)`
  Construct a location which corresponds to a reference TO address.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `compareTo(AddressBasedLocation otherLocation)`
  `boolean`
  `equals(Object obj)`
  `Address`
  `getAddress()`
  `int`
  `hashCode()`
  `boolean`
  `isMemoryLocation()`
  `boolean`
  `isOffsetAddress()`
  Determine if location corresponds to a shifted memory reference destination
  `boolean`
  `isReferenceDestination()`
  Determine if location corresponds to a reference destination
  `boolean`
  `isShiftedAddress()`
  Determine if location corresponds to a shifted memory reference destination
  `String`
  `toString()`

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

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

- ## Constructor Details

  - ### AddressBasedLocation

    public AddressBasedLocation()
    Construct a null location which generally corresponds to a unknown/bad address

  - ### AddressBasedLocation

    public AddressBasedLocation(Program program, Address address)
    Construction a location. The memory block name will never be included in string representation.
    Parameters:
      `program` - program to which address belongs
      `address` - address object (VARIABLE addresses should be avoided)

  - ### AddressBasedLocation

    public AddressBasedLocation(Program program, Reference reference, CodeUnitFormatOptions.ShowBlockName showBlockName)
    Construct a location which corresponds to a reference TO address. String representation includes support for Offset References and allows control over inclusion of memory block name with memory addresses.
    Parameters:
      `program` - program to which address belongs
      `reference` - program reference (e.g., memory, stack, register, external)
      `showBlockName` - ShowBlockName option for controlling inclusion of memory block name with address rendering

  - ### AddressBasedLocation

    protected AddressBasedLocation(Address address, String representation)
    Construct a location with a specific address and representation
    Parameters:
      `address` - address object
      `representation` - address/location string representation

- ## Method Details

  - ### getAddress

    public Address getAddress()

  - ### isMemoryLocation

    public boolean isMemoryLocation()
    Returns:
      true if location corresponds to memory address

  - ### isReferenceDestination

    public boolean isReferenceDestination()
    Determine if location corresponds to a reference destination
    Returns:
      true if location corresponds to a reference destination

  - ### isShiftedAddress

    public boolean isShiftedAddress()
    Determine if location corresponds to a shifted memory reference destination
    Returns:
      true if location corresponds to a shifted memory reference destination

  - ### isOffsetAddress

    public boolean isOffsetAddress()
    Determine if location corresponds to a shifted memory reference destination
    Returns:
      true if location corresponds to a shifted memory reference destination

  - ### toString

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

  - ### equals

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

  - ### hashCode

    public int hashCode()
    Overrides:
      `hashCode` in class `Object`

  - ### compareTo

    public int compareTo(AddressBasedLocation otherLocation)
    Specified by:
      `compareTo` in interface `Comparable<AddressBasedLocation>`