1 cananian 1.1.2.1 // FieldValueList.java, created Mon Dec 28 00:24:15 1998 by cananian
 2 cananian 1.1.2.4 // Copyright (C) 1998 C. Scott Ananian <cananian@alumni.princeton.edu>
 3 cananian 1.1.2.4 // Licensed under the terms of the GNU GPL; see COPYING for details.
 4 cananian 1.1.2.1 package harpoon.Interpret.Quads;
 5 cananian 1.1.2.1 
 6 cananian 1.1.2.3 import harpoon.ClassFile.HField;
 7 cananian 1.1.2.1 
 8 cananian 1.1.2.1 /**
 9 cananian 1.1.2.1  * <code>FieldValueList</code> holds field values.
10 cananian 1.1.2.1  * 
11 cananian 1.1.2.1  * @author  C. Scott Ananian <cananian@alumni.princeton.edu>
12 cananian 1.2      * @version $Id: FieldValueList.java,v 1.2 2002/02/25 21:05:45 cananian Exp $
13 cananian 1.1.2.1  */
14 cananian 1.1.2.5 final class FieldValueList implements java.io.Serializable {
15 cananian 1.1.2.1     /** which field this value is for. */
16 cananian 1.1.2.1     final HField which;
17 cananian 1.1.2.1     /** the value of the field. */
18 cananian 1.1.2.1     Object value;
19 cananian 1.1.2.1     /** the next field/value pair in the list. */
20 cananian 1.1.2.1     FieldValueList next;
21 cananian 1.1.2.1 
22 cananian 1.1.2.1     FieldValueList(HField which, Object value, FieldValueList next) {
23 cananian 1.1.2.1         this.which = which; this.value = value; this.next = next;
24 cananian 1.1.2.1     }
25 cananian 1.1.2.1 
26 cananian 1.1.2.1     static Object get(FieldValueList fvl, HField f) {
27 cananian 1.1.2.1         for (FieldValueList fvlp=fvl; fvlp!=null; fvlp=fvlp.next)
28 cananian 1.1.2.1             if (fvlp.which.equals(f)) return fvlp.value;
29 cananian 1.1.2.1         throw new Error("Field not found: "+f);
30 cananian 1.1.2.1     }
31 cananian 1.1.2.1     static FieldValueList update(FieldValueList fvl, HField f, Object value) {
32 cananian 1.1.2.1         for (FieldValueList fvlp=fvl; fvlp!=null; fvlp=fvlp.next)
33 cananian 1.1.2.1             if (fvlp.which.equals(f)) { fvlp.value = value; return fvl; }
34 cananian 1.1.2.1         return new FieldValueList(f, value, fvl);
35 cananian 1.1.2.2     }
36 cananian 1.1.2.2     static FieldValueList clone(FieldValueList fvl) {
37 cananian 1.1.2.2        return (fvl==null)?fvl:
38 cananian 1.1.2.2        new FieldValueList(fvl.which, fvl.value, clone(fvl.next));
39 cananian 1.1.2.1     }
40 cananian 1.2     }