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 Details

    • SynchronizedAddressSetCollection

      public SynchronizedAddressSetCollection(Object sync, AddressSetView... addressSetViews)
  • Method Details

    • intersects

      public boolean intersects(AddressSetView addrSet)
      Description copied from interface: AddressSetCollection
      Determine if any AddressSet in this collection intersects with the specified address set.
      Specified by:
      intersects in interface AddressSetCollection
      Parameters:
      addrSet - address set to check intersection with.
    • 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
    • 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.