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     }