1 // Copyright 2006-2007 all rights reserved; see LICENSE file for BSD-style license
3 package edu.berkeley.sbp;
4 import edu.berkeley.sbp.*;
5 import edu.berkeley.sbp.util.*;
6 import edu.berkeley.sbp.Parser.Table.*;
7 import edu.berkeley.sbp.Sequence.Pos;
8 import edu.berkeley.sbp.Sequence.Pos;
11 import java.lang.reflect.*;
13 class Node<OtherNode extends Node>
14 implements IntegerMappable,
18 protected FastSet<OtherNode> predecessors = new FastSet<OtherNode>();
19 protected FastSet<OtherNode> successors = new FastSet<OtherNode>();
20 //private HashSet<OtherNode> predecessors = new HashSet<OtherNode>();
21 //private HashSet<OtherNode> successors = new HashSet<OtherNode>();
23 public Iterator<OtherNode> iterator() { return predecessors.iterator(); }
25 public boolean noSuccessors() { return successors.size()==0; }
26 public boolean predecessorsContains(OtherNode n) {
27 return predecessors.contains(n);
30 // GraphViz //////////////////////////////////////////////////////////////////////////////
32 public GraphViz.StateNode toGraphViz(GraphViz gv) {
33 if (gv.hasNode(this)) return gv.createNode(this);
34 GraphViz.StateNode n = gv.createNode(this);
37 n.shape = "rectangle";
38 //if (pred()!=null) n.edge(pred, "");
41 ((GraphViz.Group)phase().toGraphViz(gv)).add(n);
42 n.label = "state["+state.toInt()+"]";
43 n.shape = "rectangle";
44 boolean haspreds = false;
45 for(ResultNode r : results) n.edge(r, "");
46 n.color = state.doomed ? "red" : "green";
47 ((GraphViz.Group)phase().toGraphViz(gv)).add(n);
51 public boolean isTransparent() { return false; }
52 public boolean isHidden() { return false; }
54 // IntegerMappable ////////////////////////////////////////////////////////////
56 private static int node_idx = 0;
57 private final int idx = node_idx++;
58 public int toInt() { return idx; }