1 cananian 1.1.4.1 // HInitializer.java, created Sat Nov 28 13:54:33 1998 by cananian
 2 cananian 1.1.4.1 // Copyright (C) 1998 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 import java.lang.reflect.Modifier;
 9 cananian 1.1.4.1 
10 cananian 1.1.4.1 /**
11 cananian 1.1.4.1  * An <code>HInitializerImpl</code> is a basic implemention of
12 cananian 1.1.4.1  * <code>HInitializer</code>.
13 cananian 1.1.4.1  * 
14 cananian 1.1.4.1  * @author  C. Scott Ananian <cananian@alumni.princeton.edu>
15 cananian 1.2      * @version $Id: HInitializerImpl.java,v 1.2 2002/02/25 21:03:03 cananian Exp $
16 cananian 1.1.4.1  * @see HInitializer
17 cananian 1.1.4.1  */
18 cananian 1.1.4.1 
19 cananian 1.1.4.1 abstract class HInitializerImpl extends HMethodImpl implements HInitializer {
20 cananian 1.1.4.1     HInitializerImpl() { name="<clinit>"; returnType=HClass.Void; }
21 cananian 1.1.4.1     
22 cananian 1.1.4.1     /**
23 cananian 1.1.4.1      * Returns the name of this class initializer, as a string.  This is
24 cananian 1.1.4.1      * always the string "<code>&lt;clinit&gt;</code>".
25 cananian 1.1.4.1      */
26 cananian 1.1.4.1     public String getName() { return "<clinit>"; }
27 cananian 1.1.4.1     
28 cananian 1.1.4.2     public boolean isInterfaceMethod() { return false; }
29 cananian 1.1.4.2 
30 cananian 1.1.4.1     /**
31 cananian 1.1.4.1      * Returns a hashcode for this class initializer.  This hashcode is
32 cananian 1.1.4.1      * computed as the exclusive-or of the hashcodes of the initializer's
33 cananian 1.1.4.1      * declaring class and the string "<code>&lt;clinit&gt;</code>".
34 cananian 1.1.4.1      */
35 cananian 1.1.4.1     public int hashCode() { return hashCode(this); }
36 cananian 1.1.4.1     // factored out for re-use
37 cananian 1.1.4.1     static int hashCode(HInitializer hi) {
38 cananian 1.1.4.1         return hi.getDeclaringClass().hashCode() ^ hi.getName().hashCode();
39 cananian 1.1.4.1     }
40 cananian 1.2     }