1 cananian 1.1.2.1 // FieldMap.java, created Sat Jan 16 21:42:16 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.3 import harpoon.ClassFile.HClass; 7 cananian 1.1.2.1 import harpoon.ClassFile.HField; 8 cananian 1.1.2.3 import harpoon.Util.Util; 9 cananian 1.1.2.1 10 cananian 1.1.2.3 import java.util.Iterator; 11 cananian 1.1.2.3 import java.util.List; 12 cananian 1.1.2.1 /** 13 cananian 1.1.2.1 * A <code>FieldMap</code> assigns an ordering to a set of fields. 14 cananian 1.1.2.1 * Typically separate <code>FieldMap</code>s will be used for class 15 cananian 1.1.2.1 * fields (which are allocated locally) and static fields (which are 16 cananian 1.1.2.3 * allocated globally). Note that the ordering corresponds directly to 17 cananian 1.1.2.3 * an offset from the first ordered field when the size returned by 18 cananian 1.1.2.3 * fieldSize() is taken into account. 19 cananian 1.1.2.1 * 20 cananian 1.1.2.1 * @author C. Scott Ananian <cananian@alumni.princeton.edu> 21 salcianu 1.4 * @version $Id: FieldMap.java,v 1.4 2003/04/19 01:03:54 salcianu Exp $ */ 22 salcianu 1.4 public abstract class FieldMap implements java.io.Serializable { 23 cananian 1.1.2.3 /** Return an offset to the given field. */ 24 cananian 1.1.2.4 public abstract int fieldOffset(HField hf); 25 cananian 1.1.2.3 /** Return an unmodifiable List over all appropriate fields in the given 26 cananian 1.1.2.3 * class, in order from smallest to largest offset. */ 27 cananian 1.2.2.1 public abstract List<HField> fieldList(HClass hc); 28 cananian 1.1.2.3 /** Return the allocated size of a given field. */ 29 cananian 1.1.2.3 public abstract int fieldSize(HField hf); 30 cananian 1.1.2.4 /* Override this method if you need the fields aligned in any special 31 cananian 1.1.2.4 * way. Default implementation aligns every field to its size. */ 32 cananian 1.1.2.4 public int fieldAlignment(HField hf) { return fieldSize(hf); } 33 cananian 1.2 }