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 }