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 }