1 cananian 1.1.2.1 // DefaultFinalMap.java, created Sat Jan 16 21:12:44 1999 by cananian 2 cananian 1.1.2.3 // Copyright (C) 1998 C. Scott Ananian <cananian@alumni.princeton.edu> 3 cananian 1.1.2.3 // Licensed under the terms of the GNU GPL; see COPYING for details. 4 cananian 1.1.2.1 package harpoon.Backend.Maps; 5 cananian 1.1.2.1 6 cananian 1.1.2.1 import harpoon.ClassFile.HClass; 7 cananian 1.1.2.1 import harpoon.ClassFile.HField; 8 cananian 1.1.2.1 import harpoon.ClassFile.HMethod; 9 cananian 1.1.2.1 10 cananian 1.1.2.1 import java.lang.reflect.Modifier; 11 cananian 1.1.2.1 /** 12 cananian 1.1.2.1 * <code>DefaultFinalMap</code> is a stupid implementation of 13 cananian 1.1.2.1 * <code>FinalMap</code> that just looks for the <code>final</code> 14 cananian 1.1.2.1 * access modifier. 15 cananian 1.1.2.1 * 16 cananian 1.1.2.1 * @author C. Scott Ananian <cananian@alumni.princeton.edu> 17 cananian 1.2 * @version $Id: DefaultFinalMap.java,v 1.2 2002/02/25 21:01:56 cananian Exp $ 18 cananian 1.1.2.1 */ 19 cananian 1.1.2.1 20 cananian 1.1.2.4 public class DefaultFinalMap extends FinalMap implements java.io.Serializable { 21 cananian 1.1.2.1 /** Creates a <code>DefaultFinalMap</code>. No arguments, because 22 cananian 1.1.2.1 * this implementation is very simple-minded. */ 23 cananian 1.1.2.1 public DefaultFinalMap() { 24 cananian 1.1.2.1 // make snow angels in the park. 25 cananian 1.1.2.1 } 26 cananian 1.1.2.1 public boolean isFinal(HClass hc) { 27 cananian 1.1.2.1 return Modifier.isFinal(hc.getModifiers()); 28 cananian 1.1.2.1 } 29 cananian 1.1.2.1 public boolean isFinal(HMethod hm) { 30 cananian 1.1.2.1 // a buglet in javac doesn't explcitly put the final tag on 31 cananian 1.1.2.1 // methods when the class is final. 32 cananian 1.1.2.1 return 33 cananian 1.1.2.1 isFinal(hm.getDeclaringClass()) || 34 cananian 1.1.2.1 Modifier.isFinal(hm.getModifiers()); 35 cananian 1.1.2.2 // private methods are really final, too. 36 cananian 1.1.2.1 } 37 cananian 1.1.2.1 public boolean isFinal(HField hf) { 38 cananian 1.1.2.1 // trust the JVM, even though it lies about System.{in,out,err} 39 cananian 1.1.2.1 return Modifier.isFinal(hf.getModifiers()); 40 cananian 1.1.2.1 } 41 cananian 1.2 }