1 salcianu 1.1.2.1 // PAWorkStack.java, created Mon Jan 10 20:16:39 2000 by salcianu
 2 cananian 1.1.2.6 // Copyright (C) 2000 Alexandru SALCIANU <salcianu@retezat.lcs.mit.edu>
 3 salcianu 1.1.2.1 // Licensed under the terms of the GNU GPL; see COPYING for details.
 4 salcianu 1.1.2.1 package harpoon.Analysis.PointerAnalysis;
 5 salcianu 1.1.2.1 
 6 salcianu 1.1.2.1 import java.util.LinkedList;
 7 salcianu 1.1.2.1 import java.util.HashSet;
 8 salcianu 1.1.2.1 
 9 salcianu 1.1.2.1 /**
10 salcianu 1.1.2.1  * <code>PAWorkStack</code>
11 salcianu 1.1.2.1  * 
12 cananian 1.1.2.6  * @author  Alexandru SALCIANU <salcianu@retezat.lcs.mit.edu>
13 cananian 1.2      * @version $Id: PAWorkStack.java,v 1.2 2002/02/25 20:58:40 cananian Exp $
14 salcianu 1.1.2.1  */
15 salcianu 1.1.2.5 public class PAWorkStack extends PAWorkSet implements java.io.Serializable {
16 salcianu 1.1.2.1 
17 salcianu 1.1.2.1     LinkedList list;
18 salcianu 1.1.2.1     HashSet    set;
19 salcianu 1.1.2.1 
20 salcianu 1.1.2.1     /** Creates a <code>PAWorkStack</code>. */
21 salcianu 1.1.2.1     public PAWorkStack() {
22 salcianu 1.1.2.1         list = new LinkedList();
23 salcianu 1.1.2.1         set  = new HashSet();
24 salcianu 1.1.2.1     }
25 salcianu 1.1.2.1 
26 salcianu 1.1.2.1     // add an object to the workset
27 salcianu 1.1.2.4     public final boolean add(Object o){
28 salcianu 1.1.2.1         if(!set.contains(o)){
29 salcianu 1.1.2.1             set.add(o);
30 salcianu 1.1.2.1             list.addLast(o);
31 salcianu 1.1.2.4             return true;
32 salcianu 1.1.2.1         }
33 salcianu 1.1.2.4         return false;
34 salcianu 1.1.2.1     }
35 salcianu 1.1.2.1     // take an object from the workset
36 salcianu 1.1.2.1     public final Object remove(){
37 salcianu 1.1.2.1         if(list.isEmpty()){
38 salcianu 1.1.2.1             System.err.println("Trying to get an element from an empty" +
39 salcianu 1.1.2.1                                "PAWorkStack");
40 salcianu 1.1.2.1             System.exit(1);
41 salcianu 1.1.2.1         }
42 salcianu 1.1.2.1         // Both add and remove takes place at the end of the list -> queue
43 salcianu 1.1.2.1         Object o = list.removeLast();
44 salcianu 1.1.2.1         set.remove(o);
45 salcianu 1.1.2.1         return o;
46 salcianu 1.1.2.1     }
47 salcianu 1.1.2.1 
48 salcianu 1.1.2.1     // test the presence of an object into the workset
49 salcianu 1.1.2.1     public final boolean contains(Object o){
50 salcianu 1.1.2.1         return set.contains(o);
51 salcianu 1.1.2.1     }
52 salcianu 1.1.2.1 
53 salcianu 1.1.2.1     // check whether the workset is empty or not
54 salcianu 1.1.2.1     public final boolean isEmpty(){
55 salcianu 1.1.2.1         return list.isEmpty();
56 salcianu 1.1.2.1     }
57 cananian 1.2     }