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     }