1 21 package proguard.classfile; 22 23 import proguard.classfile.util.*; 24 import proguard.classfile.visitor.*; 25 26 import java.util.*; 27 28 34 public class ClassPool 35 { 36 private Map classes = new HashMap(); 37 38 39 42 public void clear() 43 { 44 classes.clear(); 45 } 46 47 48 51 public void addClass(Clazz clazz) 52 { 53 classes.put(clazz.getName(), clazz); 54 } 55 56 57 60 public void removeClass(Clazz clazz) 61 { 62 classes.remove(clazz.getName()); 63 } 64 65 66 71 public Clazz getClass(String className) 72 { 73 return (Clazz)classes.get(ClassUtil.internalClassNameFromClassType(className)); 74 } 75 76 77 80 public Iterator classNames() 81 { 82 return classes.keySet().iterator(); 83 } 84 85 86 89 public int size() 90 { 91 return classes.size(); 92 } 93 94 95 98 public void accept(ClassPoolVisitor classPoolVisitor) 99 { 100 classPoolVisitor.visitClassPool(this); 101 } 102 103 104 108 public void classesAccept(ClassVisitor classVisitor) 109 { 110 Iterator iterator = classes.values().iterator(); 111 while (iterator.hasNext()) 112 { 113 Clazz clazz = (Clazz)iterator.next(); 114 clazz.accept(classVisitor); 115 } 116 } 117 118 119 123 public void classesAcceptAlphabetically(ClassVisitor classVisitor) 124 { 125 TreeMap sortedClasses = new TreeMap(classes); 126 Iterator iterator = sortedClasses.values().iterator(); 127 while (iterator.hasNext()) 128 { 129 Clazz clazz = (Clazz)iterator.next(); 130 clazz.accept(classVisitor); 131 } 132 } 133 134 135 139 public void classAccept(String className, ClassVisitor classVisitor) 140 { 141 Clazz clazz = getClass(className); 142 if (clazz != null) 143 { 144 clazz.accept(classVisitor); 145 } 146 } 147 } 148 | Popular Tags |