09718afdce0d970fc521ba769c670ce7025b4460
[sbp.git] / src / edu / berkeley / sbp / Node.java
1 // Copyright 2006-2007 all rights reserved; see LICENSE file for BSD-style license
2
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;
9 import java.io.*;
10 import java.util.*;
11 import java.lang.reflect.*;
12
13 class Node<OtherNode extends Node>
14     implements IntegerMappable,
15                GraphViz.ToGraphViz {
16
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>();
21
22     // GraphViz //////////////////////////////////////////////////////////////////////////////
23
24     public GraphViz.StateNode toGraphViz(GraphViz gv) {
25         if (gv.hasNode(this)) return gv.createNode(this);
26         GraphViz.StateNode n = gv.createNode(this);
27         /*
28         n.label = ""+f;
29         n.shape = "rectangle";
30         //if (pred()!=null) n.edge(pred, "");
31         n.color = "blue";
32         if (phase() != null)
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);
40         */
41         return n;
42     }
43     public boolean isTransparent() { return false; }
44     public boolean isHidden() { return false; }
45
46     // IntegerMappable ////////////////////////////////////////////////////////////
47
48     private static int node_idx = 0;
49     private final int idx = node_idx++;
50     public int toInt() { return idx; }
51
52 }