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,
17 protected FastSet<OtherNode> predecessors = new FastSet<OtherNode>();
18 protected FastSet<OtherNode> successors = new FastSet<OtherNode>();
19 //private HashSet<OtherNode> predecessors = new HashSet<OtherNode>();
20 //private HashSet<OtherNode> successors = new HashSet<OtherNode>();
22 // GraphViz //////////////////////////////////////////////////////////////////////////////
24 public GraphViz.StateNode toGraphViz(GraphViz gv) {
25 if (gv.hasNode(this)) return gv.createNode(this);
26 GraphViz.StateNode n = gv.createNode(this);
29 n.shape = "rectangle";
30 //if (pred()!=null) n.edge(pred, "");
33 ((GraphViz.Group)phase().toGraphViz(gv)).add(n);
34 n.label = "state["+state.toInt()+"]";
35 n.shape = "rectangle";
36 boolean haspreds = false;
37 for(ResultNode r : results) n.edge(r, "");
38 n.color = state.doomed ? "red" : "green";
39 ((GraphViz.Group)phase().toGraphViz(gv)).add(n);
43 public boolean isTransparent() { return false; }
44 public boolean isHidden() { return false; }
46 // IntegerMappable ////////////////////////////////////////////////////////////
48 private static int node_idx = 0;
49 private final int idx = node_idx++;
50 public int toInt() { return idx; }