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 }