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 }