hide IteratorPlusOne constructor
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@1706 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
This commit is contained in:
parent
43e0a28d9e
commit
d604c4c99e
|
@ -253,7 +253,7 @@ public abstract class AbstractCFG implements ControlFlowGraph, Constants {
|
|||
return result.iterator();
|
||||
} else {
|
||||
if (number > 0 && fallThru.get(number - 1)) {
|
||||
return new IteratorPlusOne<IBasicBlock>(normalEdgeManager.getPredNodes(N), getNode(number - 1));
|
||||
return IteratorPlusOne.make(normalEdgeManager.getPredNodes(N), getNode(number - 1));
|
||||
} else {
|
||||
return normalEdgeManager.getPredNodes(N);
|
||||
}
|
||||
|
@ -319,7 +319,7 @@ public abstract class AbstractCFG implements ControlFlowGraph, Constants {
|
|||
private Iterator<IBasicBlock> iterateExceptionalSuccessors(int number) {
|
||||
if (exceptionalEdgeManager.hasAnySuccessor(number)) {
|
||||
if (exceptionalToExit.get(number)) {
|
||||
return new IteratorPlusOne<IBasicBlock>(exceptionalEdgeManager.getSuccNodes(number), exit());
|
||||
return IteratorPlusOne.make(exceptionalEdgeManager.getSuccNodes(number), exit());
|
||||
} else {
|
||||
return exceptionalEdgeManager.getSuccNodes(number);
|
||||
}
|
||||
|
@ -356,7 +356,7 @@ public abstract class AbstractCFG implements ControlFlowGraph, Constants {
|
|||
} else {
|
||||
int number = getNumber(N);
|
||||
if (number > 0 && fallThru.get(number - 1)) {
|
||||
return new IteratorPlusOne<IBasicBlock>(normalEdgeManager.getPredNodes(N), getNode(number - 1));
|
||||
return IteratorPlusOne.make(normalEdgeManager.getPredNodes(N), getNode(number - 1));
|
||||
} else {
|
||||
return normalEdgeManager.getPredNodes(N);
|
||||
}
|
||||
|
@ -368,11 +368,11 @@ public abstract class AbstractCFG implements ControlFlowGraph, Constants {
|
|||
if (normalToExit.get(number)) {
|
||||
return new IteratorPlusTwo<IBasicBlock>(normalEdgeManager.getSuccNodes(number), getNode(number + 1), exit());
|
||||
} else {
|
||||
return new IteratorPlusOne<IBasicBlock>(normalEdgeManager.getSuccNodes(number), getNode(number + 1));
|
||||
return IteratorPlusOne.make(normalEdgeManager.getSuccNodes(number), getNode(number + 1));
|
||||
}
|
||||
} else {
|
||||
if (normalToExit.get(number)) {
|
||||
return new IteratorPlusOne<IBasicBlock>(normalEdgeManager.getSuccNodes(number), exit());
|
||||
return IteratorPlusOne.make(normalEdgeManager.getSuccNodes(number), exit());
|
||||
} else {
|
||||
return normalEdgeManager.getSuccNodes(number);
|
||||
}
|
||||
|
@ -381,7 +381,7 @@ public abstract class AbstractCFG implements ControlFlowGraph, Constants {
|
|||
|
||||
private Iterator<IBasicBlock> iterateNormalSuccessorsWithoutExit(int number) {
|
||||
if (fallThru.get(number)) {
|
||||
return new IteratorPlusOne<IBasicBlock>(normalEdgeManager.getSuccNodes(number), getNode(number + 1));
|
||||
return IteratorPlusOne.make(normalEdgeManager.getSuccNodes(number), getNode(number + 1));
|
||||
} else {
|
||||
return normalEdgeManager.getSuccNodes(number);
|
||||
}
|
||||
|
|
|
@ -193,7 +193,7 @@ public class TwoExitCFG implements ControlFlowGraph {
|
|||
* @see com.ibm.wala.util.graph.NodeManager#iterateNodes()
|
||||
*/
|
||||
public Iterator<IBasicBlock> iterator() {
|
||||
return new IteratorPlusOne<IBasicBlock>(delegate.iterator(), exceptionalExit);
|
||||
return IteratorPlusOne.make(delegate.iterator(), exceptionalExit);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -273,7 +273,7 @@ public class TwoExitCFG implements ControlFlowGraph {
|
|||
return EmptyIterator.instance();
|
||||
} else if (exceptionalPred.get(bb.getNumber())) {
|
||||
if (normalPred.get(bb.getNumber())) {
|
||||
return new IteratorPlusOne<IBasicBlock>(delegate.getSuccNodes(N), exceptionalExit);
|
||||
return IteratorPlusOne.make(delegate.getSuccNodes(N), exceptionalExit);
|
||||
} else {
|
||||
return new SubstitutionIterator(delegate.getSuccNodes(N));
|
||||
}
|
||||
|
|
|
@ -13,18 +13,21 @@ package com.ibm.wala.util;
|
|||
import java.util.Iterator;
|
||||
|
||||
/**
|
||||
*
|
||||
* A utility to efficiently compose an iterator and a singleton
|
||||
*
|
||||
* @author sfink
|
||||
*/
|
||||
public class IteratorPlusOne<T> implements Iterator<T> {
|
||||
public static <T> IteratorPlusOne<T> make(Iterator<? extends T> it, T xtra) {
|
||||
return new IteratorPlusOne<T>(it, xtra);
|
||||
}
|
||||
|
||||
private final Iterator<? extends T> it;
|
||||
|
||||
// the following field will be nulled out after visiting xtra.
|
||||
private T xtra;
|
||||
|
||||
public IteratorPlusOne(Iterator<? extends T> it, T xtra) {
|
||||
private IteratorPlusOne(Iterator<? extends T> it, T xtra) {
|
||||
this.it = it;
|
||||
this.xtra = xtra;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue