1 marinov 1.1.2.1 // SetHClass.java, created Wed Nov 4 17:21:09 1998 by marinov 2 cananian 1.1.2.3 // Copyright (C) 1998 Darko Marinov <marinov@lcs.mit.edu> 3 cananian 1.1.2.3 // Licensed under the terms of the GNU GPL; see COPYING for details. 4 marinov 1.1.2.1 package harpoon.Analysis.TypeInference; 5 marinov 1.1.2.1 6 cananian 1.1.2.5 import harpoon.ClassFile.HClass; 7 marinov 1.1.2.1 8 cananian 1.1.2.5 import java.util.Collections; 9 marinov 1.1.2.1 import java.util.Enumeration; 10 cananian 1.1.2.5 import java.util.HashSet; 11 cananian 1.1.2.5 import java.util.Iterator; 12 cananian 1.1.2.5 import java.util.Set; 13 marinov 1.1.2.1 /** 14 marinov 1.1.2.1 * <code>SetHClass</code> represents concrete type. 15 marinov 1.1.2.1 * Right now it is just a <code>Set</code> of <code>HClass</code>es, 16 marinov 1.1.2.1 * but optimized ways of representing cone of classes 17 marinov 1.1.2.1 * (i.e. class and all its subclasses) can be considered. 18 marinov 1.1.2.1 * 19 marinov 1.1.2.1 * @author Darko Marinov <marinov@lcs.mit.edu> 20 cananian 1.2 * @version $Id: SetHClass.java,v 1.2 2002/02/25 21:00:38 cananian Exp $ 21 marinov 1.1.2.1 */ 22 marinov 1.1.2.1 23 pnkfelix 1.1.2.2 public class SetHClass extends HashSet { 24 marinov 1.1.2.1 public SetHClass() { } 25 cananian 1.1.2.5 public SetHClass(HClass c) { add(c); } 26 cananian 1.1.2.5 public SetHClass(SetHClass s) { super(s); } 27 marinov 1.1.2.1 /** finds the union of this set and the parameter and returns true 28 marinov 1.1.2.1 * if some elements were added. 29 marinov 1.1.2.1 */ 30 cananian 1.1.2.5 boolean union(SetHClass s) { return addAll(s); } 31 cananian 1.1.2.5 32 marinov 1.1.2.1 SetHClass getComponentType() { 33 marinov 1.1.2.1 SetHClass s = new SetHClass(); 34 cananian 1.1.2.5 for (Iterator i=iterator(); i.hasNext(); ) { 35 cananian 1.1.2.5 HClass c = ((HClass)i.next()).getComponentType(); 36 cananian 1.1.2.5 if (c!=null) s.add(c); 37 marinov 1.1.2.1 } 38 marinov 1.1.2.1 return s; 39 marinov 1.1.2.1 } 40 marinov 1.1.2.1 SetHClass copy() { 41 cananian 1.1.2.5 return new SetHClass(this); 42 marinov 1.1.2.1 } 43 cananian 1.1.2.5 Enumeration elements() { return Collections.enumeration(this); } 44 cananian 1.2 }