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><clinit></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><clinit></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 }