From d604c4c99e7fe73af9ce706d8675a1570b1a4ea0 Mon Sep 17 00:00:00 2001 From: sjfink Date: Fri, 31 Aug 2007 23:50:48 +0000 Subject: [PATCH] hide IteratorPlusOne constructor git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@1706 f5eafffb-2e1d-0410-98e4-8ec43c5233c4 --- .../src/com/ibm/wala/cfg/AbstractCFG.java | 12 ++++++------ .../src/com/ibm/wala/cfg/TwoExitCFG.java | 4 ++-- .../src/com/ibm/wala/util/IteratorPlusOne.java | 7 +++++-- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/com.ibm.wala.core/src/com/ibm/wala/cfg/AbstractCFG.java b/com.ibm.wala.core/src/com/ibm/wala/cfg/AbstractCFG.java index 9d50b6e64..9a8e47824 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/cfg/AbstractCFG.java +++ b/com.ibm.wala.core/src/com/ibm/wala/cfg/AbstractCFG.java @@ -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(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 iterateExceptionalSuccessors(int number) { if (exceptionalEdgeManager.hasAnySuccessor(number)) { if (exceptionalToExit.get(number)) { - return new IteratorPlusOne(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(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(normalEdgeManager.getSuccNodes(number), getNode(number + 1), exit()); } else { - return new IteratorPlusOne(normalEdgeManager.getSuccNodes(number), getNode(number + 1)); + return IteratorPlusOne.make(normalEdgeManager.getSuccNodes(number), getNode(number + 1)); } } else { if (normalToExit.get(number)) { - return new IteratorPlusOne(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 iterateNormalSuccessorsWithoutExit(int number) { if (fallThru.get(number)) { - return new IteratorPlusOne(normalEdgeManager.getSuccNodes(number), getNode(number + 1)); + return IteratorPlusOne.make(normalEdgeManager.getSuccNodes(number), getNode(number + 1)); } else { return normalEdgeManager.getSuccNodes(number); } diff --git a/com.ibm.wala.core/src/com/ibm/wala/cfg/TwoExitCFG.java b/com.ibm.wala.core/src/com/ibm/wala/cfg/TwoExitCFG.java index 546bec775..4ac6f0737 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/cfg/TwoExitCFG.java +++ b/com.ibm.wala.core/src/com/ibm/wala/cfg/TwoExitCFG.java @@ -193,7 +193,7 @@ public class TwoExitCFG implements ControlFlowGraph { * @see com.ibm.wala.util.graph.NodeManager#iterateNodes() */ public Iterator iterator() { - return new IteratorPlusOne(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(delegate.getSuccNodes(N), exceptionalExit); + return IteratorPlusOne.make(delegate.getSuccNodes(N), exceptionalExit); } else { return new SubstitutionIterator(delegate.getSuccNodes(N)); } diff --git a/com.ibm.wala.core/src/com/ibm/wala/util/IteratorPlusOne.java b/com.ibm.wala.core/src/com/ibm/wala/util/IteratorPlusOne.java index 3f46796d7..bea05957a 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/util/IteratorPlusOne.java +++ b/com.ibm.wala.core/src/com/ibm/wala/util/IteratorPlusOne.java @@ -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 implements Iterator { + public static IteratorPlusOne make(Iterator it, T xtra) { + return new IteratorPlusOne(it, xtra); + } + private final Iterator it; // the following field will be nulled out after visiting xtra. private T xtra; - public IteratorPlusOne(Iterator it, T xtra) { + private IteratorPlusOne(Iterator it, T xtra) { this.it = it; this.xtra = xtra; }