public final class ReentrantBlockIterator extends Object
Modifier and Type | Class and Description |
---|---|
static class |
ReentrantBlockIterator.BlockIteratorClosure<StateT> |
static class |
ReentrantBlockIterator.LoopInfo<StateT> |
Modifier | Constructor and Description |
---|---|
private |
ReentrantBlockIterator() |
Modifier and Type | Method and Description |
---|---|
private static <StateT> boolean |
allEndsVisited(Map<FixedNode,StateT> states,
Block current,
AbstractMergeNode merge) |
static <StateT> void |
apply(ReentrantBlockIterator.BlockIteratorClosure<StateT> closure,
Block start) |
static <StateT> Map<FixedNode,StateT> |
apply(ReentrantBlockIterator.BlockIteratorClosure<StateT> closure,
Block start,
StateT initialState,
Predicate<Block> stopAtBlock) |
private static <StateT> ArrayList<StateT> |
mergeStates(Map<FixedNode,StateT> states,
StateT state,
Block current,
Block successor,
AbstractMergeNode merge) |
static <StateT> ReentrantBlockIterator.LoopInfo<StateT> |
processLoop(ReentrantBlockIterator.BlockIteratorClosure<StateT> closure,
Loop<Block> loop,
StateT initialState) |
private static <StateT> Block |
processMultipleSuccessors(ReentrantBlockIterator.BlockIteratorClosure<StateT> closure,
Deque<Block> blockQueue,
Map<FixedNode,StateT> states,
StateT state,
List<Block> successors) |
private static <StateT> void |
recurseIntoLoop(ReentrantBlockIterator.BlockIteratorClosure<StateT> closure,
Deque<Block> blockQueue,
Map<FixedNode,StateT> states,
StateT state,
Block successor) |
private ReentrantBlockIterator()
public static <StateT> ReentrantBlockIterator.LoopInfo<StateT> processLoop(ReentrantBlockIterator.BlockIteratorClosure<StateT> closure, Loop<Block> loop, StateT initialState)
public static <StateT> void apply(ReentrantBlockIterator.BlockIteratorClosure<StateT> closure, Block start)
public static <StateT> Map<FixedNode,StateT> apply(ReentrantBlockIterator.BlockIteratorClosure<StateT> closure, Block start, StateT initialState, Predicate<Block> stopAtBlock)
private static <StateT> boolean allEndsVisited(Map<FixedNode,StateT> states, Block current, AbstractMergeNode merge)
private static <StateT> Block processMultipleSuccessors(ReentrantBlockIterator.BlockIteratorClosure<StateT> closure, Deque<Block> blockQueue, Map<FixedNode,StateT> states, StateT state, List<Block> successors)
private static <StateT> ArrayList<StateT> mergeStates(Map<FixedNode,StateT> states, StateT state, Block current, Block successor, AbstractMergeNode merge)
private static <StateT> void recurseIntoLoop(ReentrantBlockIterator.BlockIteratorClosure<StateT> closure, Deque<Block> blockQueue, Map<FixedNode,StateT> states, StateT state, Block successor)