1 cananian 1.1.2.1 // FinalMap.java, created Sat Jan 16 21:07:48 1999 by cananian
 2 cananian 1.1.2.2 // Copyright (C) 1998 C. Scott Ananian <cananian@alumni.princeton.edu>
 3 cananian 1.1.2.2 // 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  * A <code>FinalMap</code> determines whether a class or method is
11 cananian 1.1.2.3  * <code>final</code>.  A simple implementation (for example,
12 cananian 1.1.2.3  * <code>DefaultFinalMap</code>) simply looks at the <code>final</code>
13 cananian 1.1.2.1  * tag on the class or method.  A more sophisticated implementation
14 cananian 1.1.2.3  * (for example, <code>CHFinalMap</code>)
15 cananian 1.1.2.3  * takes a particular <code>ClassHierarchy</code> as an argument
16 cananian 1.1.2.3  * and returns <code>true</code> if the given class or method is never
17 cananian 1.1.2.1  * subclassed/overridden <i>in context</i>, even if it does not have a
18 cananian 1.1.2.1  * <code>final</code> access modifier tag.
19 cananian 1.1.2.1  * 
20 cananian 1.1.2.1  * @author  C. Scott Ananian <cananian@alumni.princeton.edu>
21 cananian 1.2      * @version $Id: FinalMap.java,v 1.2 2002/02/25 21:01:58 cananian Exp $ */
22 cananian 1.1.2.1 
23 cananian 1.1.2.1 public abstract class FinalMap  {
24 cananian 1.1.2.1     /** Returns <code>true</code> if the class is never subclassed. */
25 cananian 1.1.2.1     public abstract boolean isFinal(HClass hc);
26 cananian 1.1.2.1     /** Returns <code>true</code> if the method is never overridden. */
27 cananian 1.1.2.1     public abstract boolean isFinal(HMethod hm);
28 cananian 1.1.2.1     /** Returns <code>true</code> if the field is never modified after
29 cananian 1.1.2.1      *  declaration. */
30 cananian 1.1.2.1     public abstract boolean isFinal(HField hf);
31 cananian 1.2     }