Package ghidra.trace.database.listing

# Class AbstractComposedDBTraceCodeUnitsView<T extends DBTraceCodeUnitAdapter,P extends AbstractSingleDBTraceCodeUnitsView<? extends T>>

java.lang.Object
ghidra.trace.database.listing.AbstractBaseDBTraceCodeUnitsView<T>
ghidra.trace.database.listing.AbstractComposedDBTraceCodeUnitsView<T,P>

Type Parameters:
  `T` - the implementation type of units contained in the view
  `P` - the implementation type of views composed by this view

Direct Known Subclasses:
  `DBTraceCodeUnitsView`, `DBTraceDataView`, `DBTraceDefinedUnitsView`

public abstract class AbstractComposedDBTraceCodeUnitsView<T extends DBTraceCodeUnitAdapter,P extends AbstractSingleDBTraceCodeUnitsView<? extends T>> extends AbstractBaseDBTraceCodeUnitsView<T>
An abstract implementation of a multi-type view, by composing other single-type views

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected final Collection<P>`
  `parts`

  ### Fields inherited from class ghidra.trace.database.listing.AbstractBaseDBTraceCodeUnitsView

  `space`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AbstractComposedDBTraceCodeUnitsView(DBTraceCodeSpace space, Collection<P> parts)`
  Construct a view

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected static int`
  `compareBackward(TraceCodeUnit a, TraceCodeUnit b)`
  Compare two code units for backward iteration
  `protected static int`
  `compareForward(TraceCodeUnit a, TraceCodeUnit b)`
  Compare two code units for forward iteration
  `boolean`
  `containsAddress(long snap, Address address)`
  `Iterable<? extends T>`
  `get(long snap, Address min, Address max, boolean forward)`
  `AddressSetView`
  `getAddressSetView(long snap, AddressRange within)`
  `T`
  `getAt(long snap, Address address)`
  `T`
  `getCeiling(long snap, Address address)`
  `T`
  `getContaining(long snap, Address address)`
  `T`
  `getFloor(long snap, Address address)`
  `Iterable<? extends T>`
  `getIntersecting(TraceAddressSnapRange tasr)`
  `int`
  `size()`

  ### Methods inherited from class ghidra.trace.database.listing.AbstractBaseDBTraceCodeUnitsView

  `coversRange, coversRange, get, get, get, get, getAddressSetView, getAddressSpace, getAfter, getBefore, getSpace, getTrace, intersectsRange, intersectsRange`

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

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

- ## Field Details

  - ### parts

    protected final Collection<P extends AbstractSingleDBTraceCodeUnitsView<? extends T>> parts

- ## Constructor Details

  - ### AbstractComposedDBTraceCodeUnitsView

    public AbstractComposedDBTraceCodeUnitsView(DBTraceCodeSpace space, Collection<P> parts)
    Construct a view
    Parameters:
      `space` - the space, bound to an address space
      `parts` - the single-type views composed

- ## Method Details

  - ### compareForward

    protected static int compareForward(TraceCodeUnit a, TraceCodeUnit b)
    Compare two code units for forward iteration
    Parameters:
      `a` - a code unit
      `b` - a code unit
    Returns:
      as in `Comparable.compareTo(Object)`

  - ### compareBackward

    protected static int compareBackward(TraceCodeUnit a, TraceCodeUnit b)
    Compare two code units for backward iteration
    Parameters:
      `a` - a code unit
      `b` - a code unit
    Returns:
      as in `Comparable.compareTo(Object)`

  - ### size

    public int size()
    Specified by:
      `size` in class `AbstractBaseDBTraceCodeUnitsView<T extends DBTraceCodeUnitAdapter>`
    See Also:
      - `TraceBaseCodeUnitsView.size()`

  - ### get

    public Iterable<? extends T> get(long snap, Address min, Address max, boolean forward)
    Specified by:
      `get` in class `AbstractBaseDBTraceCodeUnitsView<T extends DBTraceCodeUnitAdapter>`
    See Also:
      - `TraceBaseCodeUnitsView.get(long, Address, Address, boolean)`

  - ### getIntersecting

    public Iterable<? extends T> getIntersecting(TraceAddressSnapRange tasr)
    Specified by:
      `getIntersecting` in class `AbstractBaseDBTraceCodeUnitsView<T extends DBTraceCodeUnitAdapter>`
    See Also:
      - `TraceBaseCodeUnitsView.getIntersecting(TraceAddressSnapRange)`

  - ### getFloor

    public T getFloor(long snap, Address address)
    Specified by:
      `getFloor` in class `AbstractBaseDBTraceCodeUnitsView<T extends DBTraceCodeUnitAdapter>`
    See Also:
      - `TraceBaseCodeUnitsView.getFloor(long, Address)`

  - ### getContaining

    public T getContaining(long snap, Address address)
    Specified by:
      `getContaining` in class `AbstractBaseDBTraceCodeUnitsView<T extends DBTraceCodeUnitAdapter>`
    See Also:
      - `TraceBaseCodeUnitsView.getContaining(long, Address)`

  - ### getAt

    public T getAt(long snap, Address address)
    Specified by:
      `getAt` in class `AbstractBaseDBTraceCodeUnitsView<T extends DBTraceCodeUnitAdapter>`
    See Also:
      - `TraceBaseCodeUnitsView.getAt(long, Address)`

  - ### getCeiling

    public T getCeiling(long snap, Address address)
    Specified by:
      `getCeiling` in class `AbstractBaseDBTraceCodeUnitsView<T extends DBTraceCodeUnitAdapter>`
    See Also:
      - `TraceBaseCodeUnitsView.getCeiling(long, Address)`

  - ### getAddressSetView

    public AddressSetView getAddressSetView(long snap, AddressRange within)
    Specified by:
      `getAddressSetView` in class `AbstractBaseDBTraceCodeUnitsView<T extends DBTraceCodeUnitAdapter>`
    See Also:
      - `TraceBaseCodeUnitsView.getAddressSetView(long, AddressRange)`

  - ### containsAddress

    public boolean containsAddress(long snap, Address address)
    Specified by:
      `containsAddress` in class `AbstractBaseDBTraceCodeUnitsView<T extends DBTraceCodeUnitAdapter>`
    See Also:
      - `TraceBaseCodeUnitsView.containsAddress(long, Address)`