Package ghidra.program.model.block
Class SingleEntSubIterator
- java.lang.Object
-
- ghidra.program.model.block.SingleEntSubIterator
-
- All Implemented Interfaces:
CodeBlockIterator
public class SingleEntSubIterator extends java.lang.Object implements CodeBlockIterator
SingleEntSubIterator
is an implementation ofCodeBlockIterator
capable of iterating in the forward direction over subroutine code blocks. This iterator supports subroutine models which allow only one called/source entry point within a subroutine and may share code with other subroutines produced by the same model. All entry points must be accounted for within M-Model subroutines. NOTE: This iterator only supports OverlapCodeSubModel block models and extensions. NOTE: If the containing M-model subroutine has two entry points, say A and B, such that the code traversed from A is identical to the code traversed by B (due to a cycle), then this iterator will include it twice rather than skipping over the identical address set. This is because the iterator works by iterating through M-model subroutines, and wherever M-model subroutines have n > 1 multiple entry points, the iterator produces an O-model subroutine for every one of the entry points.
-
-
Constructor Summary
Constructors Constructor Description SingleEntSubIterator(OverlapCodeSubModel model, AddressSetView set, TaskMonitor monitor)
Creates a new iterator that will iterate over the program within a given address range set.SingleEntSubIterator(OverlapCodeSubModel model, TaskMonitor monitor)
Creates a new iterator that will iterate over the entire program starting from its current minimum address.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
hasNext()
Return true if next() will return a CodeBlock.CodeBlock
next()
Return the next CodeBlock.
-
-
-
Constructor Detail
-
SingleEntSubIterator
public SingleEntSubIterator(OverlapCodeSubModel model, TaskMonitor monitor) throws CancelledException
Creates a new iterator that will iterate over the entire program starting from its current minimum address.- Parameters:
model
- the BlockModel the iterator will use in its operations.monitor
- task monitor which allows user to cancel operation.- Throws:
CancelledException
- if the monitor cancels the operation.
-
SingleEntSubIterator
public SingleEntSubIterator(OverlapCodeSubModel model, AddressSetView set, TaskMonitor monitor) throws CancelledException
Creates a new iterator that will iterate over the program within a given address range set. All blocks which overlap the address set will be returned.- Parameters:
model
- the BlockModel the iterator will use in its operations.set
- the address range set which the iterator is to be restricted to.monitor
- task monitor which allows user to cancel operation.- Throws:
CancelledException
- if the monitor cancels the operation.
-
-
Method Detail
-
hasNext
public boolean hasNext() throws CancelledException
Description copied from interface:CodeBlockIterator
Return true if next() will return a CodeBlock.- Specified by:
hasNext
in interfaceCodeBlockIterator
- Throws:
CancelledException
- thrown if the operation is cancelled.- See Also:
CodeBlockIterator.hasNext()
-
next
public CodeBlock next() throws CancelledException
Description copied from interface:CodeBlockIterator
Return the next CodeBlock.- Specified by:
next
in interfaceCodeBlockIterator
- Throws:
CancelledException
- thrown if the operation is cancelled.- See Also:
CodeBlockIterator.next()
-
-