package cute.concolic.input; import cute.concolic.Globals; import java.io.PrintWriter; import java.io.Serializable; /** * Author: Koushik Sen <ksen@cs.uiuc.edu> */ public class InputElement implements Serializable { public Object val=null; public Object next=null; public int type; public int id; public InputElement() { } public InputElement(Object val, Object next, int type, int id) { this.val = val; this.next = next; this.type = type; this.id = id; } public InputElement makeSerializable() { InputElement ret = new InputElement(val,next,type,id); if(next!=null){ ret.next = new ReferenceObject(((InputElement)next).id); } if(type == Globals.REFERENCE && val!=null && val instanceof InputElement){ ret.val = new ReferenceObject(((InputElement)val).id); } return ret; } public void print(PrintWriter out) { out.println("id = " + id); if(next==null){ out.println(" next = null"); } else if(next instanceof InputElement){ out.println(" next = " + (((InputElement)next).id)); } else { out.println(" next = " + next); } switch(type){ case Globals.INT: out.print(" int "); out.println(((Integer)val).intValue()); break; case Globals.SHORT: out.print(" short "); out.println(((Short)val).shortValue()); break; case Globals.LONG: out.print(" long "); out.println(((Long)val).longValue()); break; case Globals.BYTE: out.print(" byte "); out.println(((Byte)val).byteValue()); break; case Globals.CHAR: out.print(" char "); out.println(((Character)val).charValue()); break; case Globals.FLOAT: out.print(" float "); out.println(((Float)val).floatValue()); break; case Globals.DOUBLE: out.print(" double "); out.println(((Double)val).doubleValue()); break; case Globals.BOOLEAN: out.print(" boolean "); out.println(((Boolean)val).booleanValue()); break; case Globals.OBJECT: out.print(" Object "); out.println(val); break; case Globals.REFERENCE: if(val==null){ out.println(" Reference null"); } else if(val == Dumbo.val){ out.println(" Reference uninitialized"); } else if(val instanceof InputElement){ out.print(" Reference "); out.println(((InputElement)val).id); } else { out.print(" Reference to be initialized by "); out.println(val); } } } }