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     }