Package ghidra.program.model.block

# Class SimpleSourceReferenceIterator

java.lang.Object
ghidra.program.model.block.SimpleSourceReferenceIterator

All Implemented Interfaces:
  `CodeBlockReferenceIterator`

public class SimpleSourceReferenceIterator extends Object implements CodeBlockReferenceIterator
SimpleSourceReferenceIterator is a unidirectional iterator over the `CodeBlockReference`s for a CodeBlock. It is not failfast, whenever `hasNext()` are called it will find if there is a next `CodeBlockReference` and acquire a handle if there is one. If new code units are added to the listing after the iterator is created it will find them as it scans ahead.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SimpleSourceReferenceIterator(CodeBlock block, boolean followIndirectFlows, TaskMonitor monitor)`
  Construct an Iterator over Source blocks for a CodeBlock.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static int`
  `getNumSources(CodeBlock block, boolean followIndirectFlows, TaskMonitor monitor)`
  Deprecated.
  this method should be avoided since it repeats the work of the iterator
  `boolean`
  `hasNext()`
  Return true if next() will return a CodeBlockReference.
  `CodeBlockReference`
  `next()`
  Return the next CodeBlockReference.

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

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

- ## Constructor Details

  - ### SimpleSourceReferenceIterator

    public SimpleSourceReferenceIterator(CodeBlock block, boolean followIndirectFlows, TaskMonitor monitor) throws CancelledException
    Construct an Iterator over Source blocks for a CodeBlock.
    Parameters:
      `block` - block to get destination blocks for. This should be a block obtained from SimpleBlockModel.
      `followIndirectFlows` - indirect references will only be included if true
      `monitor` - task monitor which allows user to cancel operation.
    Throws:
      `CancelledException` - if the monitor cancels the operation.

- ## Method Details

  - ### next

    public CodeBlockReference next() throws CancelledException
    Description copied from interface: `CodeBlockReferenceIterator`
    Return the next CodeBlockReference.
    Specified by:
      `next` in interface `CodeBlockReferenceIterator`
    Throws:
      `CancelledException` - thrown if the operation is cancelled.
    See Also:
      - `CodeBlockReferenceIterator.next()`

  - ### hasNext

    public boolean hasNext() throws CancelledException
    Description copied from interface: `CodeBlockReferenceIterator`
    Return true if next() will return a CodeBlockReference.
    Specified by:
      `hasNext` in interface `CodeBlockReferenceIterator`
    Throws:
      `CancelledException` - thrown if the operation is cancelled.
    See Also:
      - `CodeBlockReferenceIterator.hasNext()`

  - ### getNumSources

    @Deprecated public static int getNumSources(CodeBlock block, boolean followIndirectFlows, TaskMonitor monitor) throws CancelledException
    Deprecated.
    this method should be avoided since it repeats the work of the iterator
    Get number of source references flowing from this subroutine (block). All Calls to this block, and all external FlowType block references to this block are counted.
    Parameters:
      `block` - code block to get the number of source references to.
      `followIndirectFlows` - indirect references will only be included if true
      `monitor` - task monitor which allows user to cancel operation.
    Throws:
      `CancelledException` - if the monitor cancels the operation.