1 cananian 1.1.2.2 package harpoon.Backend.CSAHack.RegAlloc;
 2 cananian 1.1.2.1 
 3 cananian 1.1.2.2 import harpoon.Backend.CSAHack.Graph.Node;
 4 cananian 1.1.2.2 import harpoon.Backend.CSAHack.Graph.NodeList;
 5 cananian 1.1.2.1 
 6 cananian 1.1.2.1 import java.util.Hashtable;
 7 cananian 1.1.2.1 import java.util.Stack;
 8 cananian 1.1.2.1 
 9 cananian 1.1.2.1 class Set {
10 cananian 1.1.2.1   Hashtable lookup;
11 cananian 1.1.2.1   String name;
12 cananian 1.1.2.1 
13 cananian 1.1.2.1   boolean debug = false;
14 cananian 1.1.2.1 
15 cananian 1.1.2.1   public Set() {
16 cananian 1.1.2.1     lookup = new Hashtable();
17 cananian 1.1.2.1     name = "unknown";
18 cananian 1.1.2.1   }
19 cananian 1.1.2.1   public Set(String name) {
20 cananian 1.1.2.1     this();
21 cananian 1.1.2.1     this.name = name;
22 cananian 1.1.2.1   }
23 cananian 1.1.2.1   private String nodename(Node n) {
24 cananian 1.1.2.1     return n.toString();
25 cananian 1.1.2.1   }
26 cananian 1.1.2.1   public void add(Node n) {
27 cananian 1.1.2.1     if(debug) 
28 cananian 1.1.2.1       System.out.println(name+": add("+nodename(n)+")");
29 cananian 1.1.2.1     if (this.contains(n)) return;
30 cananian 1.1.2.3     lookup.put(n, n);
31 cananian 1.1.2.1   }
32 cananian 1.1.2.1   public boolean empty() {
33 cananian 1.1.2.1     return lookup.isEmpty();
34 cananian 1.1.2.1   }
35 cananian 1.1.2.1   public void remove(Node n) {
36 cananian 1.1.2.1     if(debug) 
37 cananian 1.1.2.1       System.out.println(name+": remove("+nodename(n)+")");
38 cananian 1.1.2.1     lookup.remove(n);
39 cananian 1.1.2.1   }
40 cananian 1.1.2.1   public boolean contains(Node n) {
41 cananian 1.1.2.1     return (lookup.get(n) != null);
42 cananian 1.1.2.1   }
43 cananian 1.1.2.1   public Node head() {
44 cananian 1.1.2.1     return (Node) lookup.keys().nextElement();
45 cananian 1.1.2.1   }
46 cananian 1.1.2.1   public NodeList nodes() {
47 cananian 1.1.2.1     NodeList nl = null;
48 cananian 1.1.2.1     java.util.Enumeration e=lookup.keys();
49 cananian 1.1.2.1     while (e.hasMoreElements())
50 cananian 1.1.2.1       nl = new NodeList((Node)e.nextElement(), nl);
51 cananian 1.1.2.1     return nl;
52 cananian 1.1.2.1   }
53 cananian 1.1.2.1   public int size() {
54 cananian 1.1.2.1     return lookup.size();
55 cananian 1.1.2.1   }
56 cananian 1.1.2.3   public String toString() { return name+": "+lookup.toString(); }
57 cananian 1.1.2.1 }
58 cananian 1.2