class Node<OtherNode extends Node>
implements IntegerMappable,
- GraphViz.ToGraphViz {
+ GraphViz.ToGraphViz,
+ Iterable<OtherNode> {
protected FastSet<OtherNode> predecessors = new FastSet<OtherNode>();
protected FastSet<OtherNode> successors = new FastSet<OtherNode>();
//private HashSet<OtherNode> predecessors = new HashSet<OtherNode>();
//private HashSet<OtherNode> successors = new HashSet<OtherNode>();
+ public Iterator<OtherNode> iterator() { return predecessors.iterator(); }
+
+ public boolean noSuccessors() { return successors.size()==0; }
+ public boolean predecessorsContains(OtherNode n) {
+ return predecessors.contains(n);
+ }
+
// GraphViz //////////////////////////////////////////////////////////////////////////////
public GraphViz.StateNode toGraphViz(GraphViz gv) {
private Pos reduction;
private GSS.Phase predPhase;
- public boolean predecessorsContains(StateNode n) {
- return predecessors.contains(n);
- }
public Pos reduction() { return reduction; }
public void merge(Forest newf) {
this.f.merge(newf);
*/
}
- public boolean noSuccessors() { return successors.size()==0; }
-
public GSS.Phase phase() { return predPhase; }
public Forest getForest() { return f; }
- public Iterable<StateNode> getPreds() { return predecessors; }
public void addSucc(StateNode succ) {
if (successors.contains(succ)) return;
successors.add(succ);
/** a node in the GSS */
final class StateNode
extends Node<ResultNode>
- implements Invokable<Pos, ResultNode, Object>,
- Iterable<ResultNode> {
+ implements Invokable<Pos, ResultNode, Object> {
/** which GSS.Phase this StateNode belongs to */
public GSS.Phase phase() { return phase; }
private void reduce(Pos r, int pos, GSS.Phase target, ResultNode only) {
for(ResultNode res : predecessors)
if (only == null || res == only)
- for(StateNode pred : res.getPreds())
+ for(StateNode pred : res)
reduce2(r, pos, target, pred, res.getForest());
}