1 cananian 1.1.4.1 // Factories.java, created Tue Jan 11 17:51:58 2000 by cananian 2 cananian 1.1.4.2 // Copyright (C) 2000 C. Scott Ananian <cananian@alumni.princeton.edu> 3 cananian 1.1.4.1 // Licensed under the terms of the GNU GPL; see COPYING for details. 4 cananian 1.1.4.1 package harpoon.ClassFile; 5 cananian 1.1.4.1 6 cananian 1.1.4.1 import harpoon.Util.ArrayFactory; 7 cananian 1.1.4.1 /** 8 cananian 1.1.4.1 * <code>Factories</code> contains various <code>ArrayFactory</code>s. 9 cananian 1.1.4.1 * This file is necessary because the JDK 1.2 javac compiler does 10 cananian 1.1.4.1 * not allow anonymous or non-public inner classes in an interface 11 cananian 1.1.4.1 * declaration. Therefore, the array factories accessed by 12 cananian 1.1.4.1 * <code>HMethod.arrayFactory</code> (and etc.) cannot be defined 13 cananian 1.1.4.1 * in the interface where the field is defined; they end up here 14 cananian 1.1.4.1 * instead. 15 cananian 1.1.4.1 * 16 cananian 1.1.4.1 * @author C. Scott Ananian <cananian@alumni.princeton.edu> 17 cananian 1.3 * @version $Id: Factories.java,v 1.3 2002/04/10 03:04:12 cananian Exp $ 18 cananian 1.1.4.1 */ 19 cananian 1.1.4.1 abstract class Factories { 20 cananian 1.1.4.1 /** Array factory: returns new <code>HClass[]</code>. */ 21 cananian 1.2.2.1 public static final ArrayFactory<HClass> hclassArrayFactory = 22 cananian 1.2.2.1 new ArrayFactory<HClass>() { 23 cananian 1.2.2.1 public HClass[] newArray(int len) { return new HClass[len]; } 24 cananian 1.1.4.1 }; 25 cananian 1.1.4.1 /** Array factory: returns new <code>HMember[]</code>. */ 26 cananian 1.2.2.1 public static final ArrayFactory<HMember> hmemberArrayFactory = 27 cananian 1.2.2.1 new ArrayFactory<HMember>() { 28 cananian 1.2.2.1 public HMember[] newArray(int len) { return new HMember[len]; } 29 cananian 1.1.4.1 }; 30 cananian 1.1.4.1 /** Array factory: returns new <code>HField[]</code>. */ 31 cananian 1.2.2.1 public static final ArrayFactory<HField> hfieldArrayFactory = 32 cananian 1.2.2.1 new ArrayFactory<HField>() { 33 cananian 1.2.2.1 public HField[] newArray(int len) { return new HField[len]; } 34 cananian 1.1.4.1 }; 35 cananian 1.1.4.1 /** Array factory: returns new <code>HMethod[]</code>. */ 36 cananian 1.2.2.1 public static final ArrayFactory<HMethod> hmethodArrayFactory = 37 cananian 1.2.2.1 new ArrayFactory<HMethod>() { 38 cananian 1.2.2.1 public HMethod[] newArray(int len) { return new HMethod[len]; } 39 cananian 1.1.4.1 }; 40 cananian 1.1.4.1 /** Array factory: returns new <code>HConstructor[]</code>. */ 41 cananian 1.2.2.1 public static final ArrayFactory<HConstructor> hconstructorArrayFactory = 42 cananian 1.2.2.1 new ArrayFactory<HConstructor>() { 43 cananian 1.2.2.1 public HConstructor[] newArray(int len) { return new HConstructor[len]; } 44 cananian 1.1.4.1 }; 45 cananian 1.1.4.1 /** Array factory: returns new <code>HInitializer[]</code>. */ 46 cananian 1.2.2.1 public static final ArrayFactory<HInitializer> hinitializerArrayFactory = 47 cananian 1.2.2.1 new ArrayFactory<HInitializer>() { 48 cananian 1.2.2.1 public HInitializer[] newArray(int len) { return new HInitializer[len]; } 49 cananian 1.1.4.1 }; 50 cananian 1.2 }