Package ghidra.program.database.util

# Class SynchronizedAddressSetCollection

java.lang.Object
ghidra.program.database.util.SynchronizedAddressSetCollection

All Implemented Interfaces:
  `AddressSetCollection`

public class SynchronizedAddressSetCollection extends Object implements AddressSetCollection
Implementation of AddressSetCollection used by `ProgramChangeSet`. It contains the actual instances of the addressSets used by the `ProgramChangeSet` and protects access to them by synchronizing on the ProgramChangeSet. Because these objects use the actual addressSets within the programChangeSet for efficiency reasons, any changes to those underlying sets will be reflected in the set of addresses represented by this collection. But since it is synchronized, you will always get a stable set during any given call and the AddressSetCollection interface is careful not to include iterator or other methods that can't tolerate a underlying change. This object is really only intended for use by the GUI change bars and if it changes, it only results in possibly seeing the changes bars a bit earlier than otherwise.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SynchronizedAddressSetCollection(Object sync, AddressSetView... addressSetViews)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `contains(Address address)`
  Test if the address is contained within any of the addressSets in this collection.
  `Address`
  `findFirstAddressInCommon(AddressSetView set)`
  Finds the first address in this collection that is also in the given addressSet.
  `AddressSet`
  `getCombinedAddressSet()`
  Returns a single AddressSet containing the union of all the addressSetViews in the collection.
  `Address`
  `getMaxAddress()`
  Returns the largest address in this collection or null if the collection is empty.
  `Address`
  `getMinAddress()`
  Returns the smallest address in this collection or null if the collection is empty.
  `boolean`
  `hasFewerRangesThan(int rangeThreshold)`
  Tests whether this collection of addressSets has approximately fewer ranges than the given threshold.
  `boolean`
  `intersects(Address start, Address end)`
  Determine if range specified by start and end intersects with any of the AddressSets in this collection.
  `boolean`
  `intersects(AddressSetView addrSet)`
  Returns true if any AddressSet in this collection intersects with the specified address set; otherwise, false.
  `boolean`
  `isEmpty()`
  Returns true if all the AddressSets in this collection are empty.

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

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

- ## Constructor Details

  - ### SynchronizedAddressSetCollection

    public SynchronizedAddressSetCollection(Object sync, AddressSetView... addressSetViews)

- ## Method Details

  - ### intersects

    public boolean intersects(AddressSetView addrSet)
    Description copied from interface: `AddressSetCollection`
    Returns true if any AddressSet in this collection intersects with the specified address set; otherwise, false.
    Specified by:
      `intersects` in interface `AddressSetCollection`
    Parameters:
      `addrSet` - address set to check intersection with.
    Returns:
      true if any AddressSet in this collection intersects with the specified address set; otherwise, false

  - ### intersects

    public boolean intersects(Address start, Address end)
    Description copied from interface: `AddressSetCollection`
    Determine if range specified by start and end intersects with any of the AddressSets in this collection.
    Specified by:
      `intersects` in interface `AddressSetCollection`
    Parameters:
      `start` - start of range
      `end` - end of range
    Returns:
      true if the given range intersects this address set collection.

  - ### contains

    public boolean contains(Address address)
    Description copied from interface: `AddressSetCollection`
    Test if the address is contained within any of the addressSets in this collection.
    Specified by:
      `contains` in interface `AddressSetCollection`
    Parameters:
      `address` - address to test.
    Returns:
      true if addr exists in the set, false otherwise.

  - ### hasFewerRangesThan

    public boolean hasFewerRangesThan(int rangeThreshold)
    Description copied from interface: `AddressSetCollection`
    Tests whether this collection of addressSets has approximately fewer ranges than the given threshold. This is probably estimated by adding up the number of ranges in each AddressSet in this collections. Returns true if the total is less than the given threshold.
    Specified by:
      `hasFewerRangesThan` in interface `AddressSetCollection`
    Parameters:
      `rangeThreshold` - the number of ranges to test against.
    Returns:
      true if the max possible ranges is less than the given threshold.

  - ### getCombinedAddressSet

    public AddressSet getCombinedAddressSet()
    Description copied from interface: `AddressSetCollection`
    Returns a single AddressSet containing the union of all the addressSetViews in the collection.
    Specified by:
      `getCombinedAddressSet` in interface `AddressSetCollection`
    Returns:
      a single AddressSet containing the union of all the addressSetViews in the collection

  - ### findFirstAddressInCommon

    public Address findFirstAddressInCommon(AddressSetView set)
    Description copied from interface: `AddressSetCollection`
    Finds the first address in this collection that is also in the given addressSet.
    Specified by:
      `findFirstAddressInCommon` in interface `AddressSetCollection`
    Parameters:
      `set` - the addressSet to search for the first (lowest) common address.
    Returns:
      the first address that is contained in this set and the given set.

  - ### isEmpty

    public boolean isEmpty()
    Description copied from interface: `AddressSetCollection`
    Returns true if all the AddressSets in this collection are empty.
    Specified by:
      `isEmpty` in interface `AddressSetCollection`
    Returns:
      true if all the AddressSets in this collection are empty.

  - ### getMinAddress

    public Address getMinAddress()
    Description copied from interface: `AddressSetCollection`
    Returns the smallest address in this collection or null if the collection is empty.
    Specified by:
      `getMinAddress` in interface `AddressSetCollection`
    Returns:
      the smallest address in this collection or null if the collection is empty.

  - ### getMaxAddress

    public Address getMaxAddress()
    Description copied from interface: `AddressSetCollection`
    Returns the largest address in this collection or null if the collection is empty.
    Specified by:
      `getMaxAddress` in interface `AddressSetCollection`
    Returns:
      the largest address in this collection or null if the collection is empty.