1 salcianu 1.1.2.1 // PAWorkList.java, created Mon Jan 10 20:32:58 2000 by salcianu
 2 cananian 1.1.2.2 // 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>PAWorkList</code>
11 salcianu 1.1.2.1  * 
12 salcianu 1.1.2.1  * @author  Alexandru SALCIANU <salcianu@retezat.lcs.mit.edu>
13 cananian 1.2      * @version $Id: PAWorkList.java,v 1.2 2002/02/25 20:58:40 cananian Exp $
14 salcianu 1.1.2.1  */
15 salcianu 1.1.2.6 public class PAWorkList 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>PAWorkList</code>. */
21 salcianu 1.1.2.1     public PAWorkList() {
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.5         if(set.add(o)){
29 salcianu 1.1.2.1             list.addLast(o);
30 salcianu 1.1.2.4             return true;
31 salcianu 1.1.2.1         }
32 salcianu 1.1.2.4         return false;
33 salcianu 1.1.2.1     }
34 salcianu 1.1.2.1     // take an object from the workset
35 salcianu 1.1.2.1     public final Object remove(){
36 salcianu 1.1.2.1         if(list.isEmpty()){
37 salcianu 1.1.2.1             System.err.println("Trying to get an element from an empty" +
38 salcianu 1.1.2.1                                "PAWorkStack");
39 salcianu 1.1.2.1             System.exit(1);
40 salcianu 1.1.2.1         }
41 salcianu 1.1.2.3         // Add is at the end, remove at the beginning -> list (FIFO)
42 salcianu 1.1.2.1         Object o = list.removeFirst();
43 salcianu 1.1.2.1         set.remove(o);
44 salcianu 1.1.2.1         return o;
45 salcianu 1.1.2.1     }
46 salcianu 1.1.2.1 
47 salcianu 1.1.2.1     // test the presence of an object into the workset
48 salcianu 1.1.2.1     public final boolean contains(Object o){
49 salcianu 1.1.2.1         return set.contains(o);
50 salcianu 1.1.2.1     }
51 salcianu 1.1.2.1 
52 salcianu 1.1.2.1     // check whether the workset is empty or not
53 salcianu 1.1.2.1     public final boolean isEmpty(){
54 salcianu 1.1.2.1         return list.isEmpty();
55 salcianu 1.1.2.1     }
56 cananian 1.2     }