Package ghidra.util.datastruct

# Class RangeMap

java.lang.Object
ghidra.util.datastruct.RangeMap

public class RangeMap extends Object
Stores ranges of int values throughout "long" space. Every "long" index has an associated int value (initially 0). Users can paint (set) ranges of indexes to a given integer value, overwriting any value that currently exists in that range. This class is implemented using an IntPropertyMap. The first index (0) will always contain a value. The value at any other given index will either be the value stored at that index, or if no value stored there, then the value stored at the nearest previous index that contains a value.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `RangeMap()`
  Constructor for RangeMap with a default value of 0.
  `RangeMap(int defaultValue)`
  Creates a new range map with specified default value.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `clear()`
  Clears all current values from the range map and resets the default value.
  `LongIterator`
  `getChangePointIterator(long start, long end)`
  Returns an iterator over all indexes where the value changes.
  `IndexRangeIterator`
  `getIndexRangeIterator(long index)`
  Returns an iterator over all occupied ranges in the map.
  `int`
  `getNumRanges()`
  Get the total number of ranges in map.
  `int`
  `getValue(long index)`
  Returns the int value associated with the given index.
  `ValueRange`
  `getValueRange(long index)`
  Returns the value range containing the given index.
  `void`
  `paintRange(long start, long end, int value)`
  Associates the given value with every index from start to end (inclusive) Any previous associates are overwritten.

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

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

- ## Constructor Details

  - ### RangeMap

    public RangeMap()
    Constructor for RangeMap with a default value of 0.

  - ### RangeMap

    public RangeMap(int defaultValue)
    Creates a new range map with specified default value.
    Parameters:
      `defaultValue` - the default value

- ## Method Details

  - ### getNumRanges

    public int getNumRanges()
    Get the total number of ranges in map.
    Returns:
      number of ranges

  - ### clear

    public void clear()
    Clears all current values from the range map and resets the default value.

  - ### paintRange

    public void paintRange(long start, long end, int value)
    Associates the given value with every index from start to end (inclusive) Any previous associates are overwritten.
    Parameters:
      `start` - the start index of the range to fill.
      `end` - the end index of the range to fill
      `value` - the value to put at every index in the range.

  - ### getValue

    public int getValue(long index)
    Returns the int value associated with the given index.
    Parameters:
      `index` - the index at which to get the value.

  - ### getValueRange

    public ValueRange getValueRange(long index)
    Returns the value range containing the given index. The value range indicates the int value and the start and end index for the range.
    Parameters:
      `index` - the index at which to get the associated value range
    Returns:
      the value range

  - ### getIndexRangeIterator

    public IndexRangeIterator getIndexRangeIterator(long index)
    Returns an iterator over all occupied ranges in the map.
    Parameters:
      `index` - the index to start the iterator
    Returns:
      an iterator over all occupied ranges in the map.

  - ### getChangePointIterator

    public LongIterator getChangePointIterator(long start, long end)
    Returns an iterator over all indexes where the value changes.
    Parameters:
      `start` - the starting index to search.
      `end` - the ending index to search.
    Returns:
      an iterator over all indexes where the value changes.