Package ghidra.program.util

# Class DefinedDataIterator

java.lang.Object
ghidra.program.util.DefinedDataIterator

All Implemented Interfaces:
  `DataIterator`, `Iterable<Data>`, `Iterator<Data>`

public class DefinedDataIterator extends Object implements DataIterator
Iterator that visits each defined data instance in the initialized memory of a Program or in the footprint of a specified data element.

Data elements that are nested inside of composites or arrays are visited, not just the parent/containing data element.

Not thread safe.

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from interface ghidra.program.model.listing.DataIterator

  `DataIterator.IteratorWrapper`

- ## Field Summary

  ### Fields inherited from interface ghidra.program.model.listing.DataIterator

  `EMPTY`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static DefinedDataIterator`
  `byDataInstance(Program program, Predicate<Data> dataInstancePredicate)`
  Creates a new iterator that traverses the entire Program's address space, returning data instances that successfully match the predicate.
  `static DefinedDataIterator`
  `byDataType(Program program, AddressSetView addresses, Predicate<DataType> dataTypePredicate)`
  Creates a new iterator that traverses a portion of the Program's address space, returning data instances that successfully match the predicate.
  `static DefinedDataIterator`
  `byDataType(Program program, Predicate<DataType> dataTypePredicate)`
  Creates a new iterator that traverses the entire Program's address space, returning data instances that successfully match the predicate.
  `boolean`
  `hasNext()`
  `Data`
  `next()`

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

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

  ### Methods inherited from interface ghidra.program.model.listing.DataIterator

  `iterator`

  ### Methods inherited from interface java.lang.Iterable

  `forEach, spliterator`

  ### Methods inherited from interface java.util.Iterator

  `forEachRemaining, remove`

- ## Method Details

  - ### byDataType

    public static DefinedDataIterator byDataType(Program program, Predicate<DataType> dataTypePredicate)
    Creates a new iterator that traverses the entire Program's address space, returning data instances that successfully match the predicate.
    Parameters:
      `program` - Program to search
      `dataTypePredicate` - `Predicate` that tests each data instance's `DataType`
    Returns:
      new iterator

  - ### byDataType

    public static DefinedDataIterator byDataType(Program program, AddressSetView addresses, Predicate<DataType> dataTypePredicate)
    Creates a new iterator that traverses a portion of the Program's address space, returning data instances that successfully match the predicate.
    Parameters:
      `program` - Program to search
      `addresses` - addresses to limit the iteration to
      `dataTypePredicate` - `Predicate` that tests each data instance's `DataType`
    Returns:
      new iterator

  - ### byDataInstance

    public static DefinedDataIterator byDataInstance(Program program, Predicate<Data> dataInstancePredicate)
    Creates a new iterator that traverses the entire Program's address space, returning data instances that successfully match the predicate.
    Parameters:
      `program` - Program to search
      `dataInstancePredicate` - `Predicate` that tests each data instance's properties
    Returns:
      new iterator

  - ### hasNext

    public boolean hasNext()
    Specified by:
      `hasNext` in interface `DataIterator`
    Specified by:
      `hasNext` in interface `Iterator<Data>`

  - ### next

    public Data next()
    Specified by:
      `next` in interface `DataIterator`
    Specified by:
      `next` in interface `Iterator<Data>`