Class PropertyMapDB<T>

java.lang.Object
ghidra.program.database.properties.PropertyMapDB<T>
Type Parameters:
T - property value type
All Implemented Interfaces:
PropertyMap<T>
Direct Known Subclasses:
IntPropertyMapDB, LongPropertyMapDB, ObjectPropertyMapDB, StringPropertyMapDB, UnsupportedMapDB, VoidPropertyMapDB

public abstract class PropertyMapDB<T> extends Object implements PropertyMap<T>
Abstract class which defines a map containing properties over a set of addresses. The map is stored within a database table.
  • Field Details

    • SCHEMA_FIELD_NAMES

      protected static final String[] SCHEMA_FIELD_NAMES
    • NO_SCHEMA_FIELD_NAMES

      protected static final String[] NO_SCHEMA_FIELD_NAMES
    • NO_SCHEMA_FIELDS

      protected static final Field[] NO_SCHEMA_FIELDS
    • PROPERTY_VALUE_COL

      protected static final int PROPERTY_VALUE_COL
      See Also:
    • DEFAULT_CACHE_SIZE

      protected static final int DEFAULT_CACHE_SIZE
      See Also:
    • dbHandle

      protected DBHandle dbHandle
    • errHandler

      protected ErrorHandler errHandler
    • changeMgr

      protected ChangeManager changeMgr
    • schema

      protected Schema schema
    • propertyTable

      protected Table propertyTable
    • addrMap

      protected AddressMap addrMap
    • name

      protected String name
    • cache

      protected ObjectCache cache
    • lock

      protected Lock lock
  • Method Details

    • getTableName

      public static String getTableName(String propertyName)
    • getTableName

      protected String getTableName()
      Get the default property table name for this property map.
      Returns:
      default property map table name.
    • createTable

      protected void createTable(Field valueField) throws IOException
      Create the default propertyTable. This method may be called by add property methods if propertyTable is null.
      Parameters:
      valueField - property value field type
      Throws:
      IOException - if IO error occurs
    • getName

      public String getName()
      Description copied from interface: PropertyMap
      Get the name for this property map.
      Specified by:
      getName in interface PropertyMap<T>
      Returns:
      map name
    • setCacheSize

      public void setCacheSize(int size)
      Adjust the size of the underlying read cache.
      Parameters:
      size - the size of the cache.
    • delete

      public void delete() throws IOException
      Delete this property map and all underlying tables. This method should be overidden if any table other than the default propertyTable is used.
      Throws:
      IOException - if IO error occurs
    • intersects

      public boolean intersects(Address startAddr, Address endAddr)
      Description copied from interface: PropertyMap
      Given two addresses, indicate whether there is an address in that range (inclusive) having the property.

      Specified by:
      intersects in interface PropertyMap<T>
      Parameters:
      startAddr - the start of the range.
      endAddr - the end of the range.
      Returns:
      boolean true if at least one address in the range has the property, false otherwise.
    • intersects

      public boolean intersects(AddressSetView set)
      Description copied from interface: PropertyMap
      Indicate whether there is an address within the set which exists within this map.

      Specified by:
      intersects in interface PropertyMap<T>
      Parameters:
      set - set of addresses
      Returns:
      boolean true if at least one address in the set has the property, false otherwise.
    • removeRange

      public boolean removeRange(Address startAddr, Address endAddr)
      Description copied from interface: PropertyMap
      Removes all property values within a given range.
      Specified by:
      removeRange in interface PropertyMap<T>
      Parameters:
      startAddr - begin range
      endAddr - end range, inclusive
      Returns:
      true if any property value was removed; return false otherwise.
    • remove

      public boolean remove(Address addr)
      Description copied from interface: PropertyMap
      Remove the property value at the given address.
      Specified by:
      remove in interface PropertyMap<T>
      Parameters:
      addr - the address where the property should be removed
      Returns:
      true if the property value was removed, false otherwise.
    • hasProperty

      public boolean hasProperty(Address addr)
      Description copied from interface: PropertyMap
      returns whether there is a property value at addr.
      Specified by:
      hasProperty in interface PropertyMap<T>
      Parameters:
      addr - the address in question
      Returns:
      true if map has value at specified address
    • getNextPropertyAddress

      public Address getNextPropertyAddress(Address addr)
      Description copied from interface: PropertyMap
      Get the next address where the property value exists.
      Specified by:
      getNextPropertyAddress in interface PropertyMap<T>
      Parameters:
      addr - the address from which to begin the search (exclusive).
      Returns:
      property value location after specified addr or null if none found
    • getPreviousPropertyAddress

      public Address getPreviousPropertyAddress(Address addr)
      Description copied from interface: PropertyMap
      Get the previous Address where a property value exists.
      Specified by:
      getPreviousPropertyAddress in interface PropertyMap<T>
      Parameters:
      addr - the address from which to begin the search (exclusive).
      Returns:
      property value location after specified addr or null if none found
    • getFirstPropertyAddress

      public Address getFirstPropertyAddress()
      Description copied from interface: PropertyMap
      Get the first Address where a property value exists.
      Specified by:
      getFirstPropertyAddress in interface PropertyMap<T>
      Returns:
      first property value location or null if none found
    • getLastPropertyAddress

      public Address getLastPropertyAddress()
      Description copied from interface: PropertyMap
      Get the last Address where a property value exists.
      Specified by:
      getLastPropertyAddress in interface PropertyMap<T>
      Returns:
      last property value location or null if none found
    • getSize

      public int getSize()
      Description copied from interface: PropertyMap
      Get the number of properties in the map.
      Specified by:
      getSize in interface PropertyMap<T>
      Returns:
      number of stored property values
    • getAddressKeyIterator

      public AddressKeyIterator getAddressKeyIterator(AddressSetView set, boolean atStart) throws IOException
      Get an iterator over the long address keys which contain a property value.
      Parameters:
      set - addresses over which to iterate (null indicates all defined memory regions)
      atStart - true if the iterator should be positioned at the start of the range
      Returns:
      long address iterator.
      Throws:
      IOException - if IO error occurs
    • getAddressKeyIterator

      public AddressKeyIterator getAddressKeyIterator(Address start, boolean before) throws IOException
      Get an iterator over the long address keys which contain a property value.
      Parameters:
      start - iterator starting position
      before - true if the iterator should be positioned before the start address
      Returns:
      long address iterator.
      Throws:
      IOException - if IO error occurs
    • getAddressKeyIterator

      public AddressKeyIterator getAddressKeyIterator(Address start, Address end, boolean atStart) throws IOException
      Get an iterator over the long address keys which contain a property value.
      Parameters:
      start - start of iterator address range
      end - end of iterator address range
      atStart - true if the iterator should be positioned at the start of the range
      Returns:
      long address iterator.
      Throws:
      IOException - if IO error occurs
    • getPropertyIterator

      public AddressIterator getPropertyIterator(Address start, Address end)
      Description copied from interface: PropertyMap
      Returns an iterator over the indices having a property value.
      Specified by:
      getPropertyIterator in interface PropertyMap<T>
      Parameters:
      start - minimum address
      end - maximum address
      Returns:
      forward property address iterator
    • getPropertyIterator

      public AddressIterator getPropertyIterator(Address start, Address end, boolean forward)
      Description copied from interface: PropertyMap
      Returns an iterator over addresses that have a property value.
      Specified by:
      getPropertyIterator in interface PropertyMap<T>
      Parameters:
      start - minimum address
      end - maximum address
      forward - if true will iterate in increasing address order, otherwise it will start at the end and iterate in decreasing address order
      Returns:
      property address iterator
    • getPropertyIterator

      public AddressIterator getPropertyIterator()
      Description copied from interface: PropertyMap
      Returns an iterator over the addresses that a property value.
      Specified by:
      getPropertyIterator in interface PropertyMap<T>
      Returns:
      forward property address iterator
    • getPropertyIterator

      public AddressIterator getPropertyIterator(AddressSetView asv)
      Description copied from interface: PropertyMap
      Returns an iterator over the addresses that have a property value and are in the given address set.
      Specified by:
      getPropertyIterator in interface PropertyMap<T>
      Parameters:
      asv - the set of addresses to iterate over.
      Returns:
      forward property address iterator
    • getPropertyIterator

      public AddressIterator getPropertyIterator(AddressSetView asv, boolean forward)
      Description copied from interface: PropertyMap
      Returns an iterator over the addresses that have a property value and are in the given address set.
      Specified by:
      getPropertyIterator in interface PropertyMap<T>
      Parameters:
      asv - the set of addresses to iterate over.
      forward - if true will iterate in increasing address order, otherwise it will start at the end and iterate in decreasing address order
      Returns:
      property address iterator
    • getPropertyIterator

      public AddressIterator getPropertyIterator(Address start, boolean forward)
      Description copied from interface: PropertyMap
      Returns an iterator over the address having a property value.
      Specified by:
      getPropertyIterator in interface PropertyMap<T>
      Parameters:
      start - the starting address
      forward - if true will iterate in increasing address order, otherwise it will start at the end and iterate in decreasing address order
      Returns:
      property address iterator
    • invalidateCache

      public void invalidateCache()
      Invalidates the cache.
    • moveRange

      public void moveRange(Address start, Address end, Address newStart)
      Description copied from interface: PropertyMap
      Moves the properties defined in the range from the start address thru the end address to now be located beginning at the newStart address. The moved properties will be located at the same relative location to the newStart address as they were previously to the start address.
      Specified by:
      moveRange in interface PropertyMap<T>
      Parameters:
      start - the start of the range to move.
      end - the end of the range to move.
      newStart - the new start location of the range of properties after the move.