Package ghidra.pcode.exec.trace.data

# Interface PcodeTracePropertyAccess<T>

Type Parameters:
  `T` - the type of the property's values

All Known Implementing Classes:
  `DefaultPcodeTracePropertyAccess`

public interface PcodeTracePropertyAccess<T>
A trace-property access shim for a specific property

See Also:
  - `PcodeTraceAccess`
  - `PcodeTraceDataAccess`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `clear(AddressRange range)`
  Clear the property's value across a range
  `T`
  `get(Address address)`
  Get the property's value at the given address
  `Map.Entry<AddressRange,T>`
  `getEntry(Address address)`
  Get the property's entry at the given address
  `Language`
  `getLanguage()`
  Returns the language.
  `boolean`
  `hasSpace(AddressSpace space)`
  Check if the trace has allocated property space for the given address space
  `void`
  `put(AddressRange range, T value)`
  Set the property's value at the given range
  `void`
  `put(Address address, T value)`
  Set the property's value at the given address

- ## Method Details

  - ### getLanguage

    Language getLanguage()
    Returns the language.
    Returns:
      the language

  - ### get

    T get(Address address)
    Get the property's value at the given address

    This may search for the same property from other related data sources, e.g., from mapped static images.

    Parameters:
      `address` - the address
    Returns:
      the value, or null if not set

  - ### getEntry

    Map.Entry<AddressRange,T> getEntry(Address address)
    Get the property's entry at the given address
    Parameters:
      `address` - the address
    Returns:
      the entry, or null if not set

  - ### put

    void put(Address address, T value)
    Set the property's value at the given address

    The value is effective for future snapshots up to but excluding the next snapshot where another value is set at the same address.

    Parameters:
      `address` - the address
      `value` - the value to set

  - ### put

    void put(AddressRange range, T value)
    Set the property's value at the given range

    The value is effective for future snapshots up to but excluding the next snapshot where another value is set at the same address.

    Parameters:
      `range` - the range
      `value` - the value to set

  - ### clear

    void clear(AddressRange range)
    Clear the property's value across a range
    Parameters:
      `range` - the range

  - ### hasSpace

    boolean hasSpace(AddressSpace space)
    Check if the trace has allocated property space for the given address space

    This is available for optimizations when it may take effort to compute an address. If the space is not allocated, then no matter the offset, the property will not have a value. Clients can check this method to avoid the address computation, if they already know the address space.

    Parameters:
      `space` - the address space
    Returns:
      true if there is a property space