1 cananian 1.1.2.3 // ConstantDouble.java, created Mon Jan 18 22:44:37 1999 by cananian 2 cananian 1.1.2.1 // Copyright (C) 1998 C. Scott Ananian <cananian@alumni.princeton.edu> 3 cananian 1.1.2.1 // Licensed under the terms of the GNU GPL; see COPYING for details. 4 cananian 1.1.2.1 package harpoon.IR.RawClass; 5 cananian 1.1.2.1 6 cananian 1.1.2.1 /** 7 cananian 1.1.2.1 * The <code>CONSTANT_Double_info</code> structure represents eight-byte 8 cananian 1.1.2.1 * floating-point numeric constants. 9 cananian 1.1.2.1 * 10 cananian 1.1.2.1 * @author C. Scott Ananian <cananian@alumni.princeton.edu> 11 cananian 1.3 * @version $Id: ConstantDouble.java,v 1.3 2003/09/05 21:45:16 cananian Exp $ 12 cananian 1.1.2.1 * @see "The Java Virtual Machine Specification, section 4.4.5" 13 cananian 1.1.2.1 * @see Constant 14 cananian 1.1.2.1 * @see ConstantLong 15 cananian 1.1.2.1 */ 16 cananian 1.1.2.1 public class ConstantDouble extends ConstantValue { 17 cananian 1.1.2.1 /** The value of the <code>double</code> constant. */ 18 cananian 1.1.2.1 public double val; 19 cananian 1.1.2.1 20 cananian 1.1.2.1 /** Constructor. */ 21 cananian 1.1.2.1 ConstantDouble(ClassFile parent, ClassDataInputStream in) 22 cananian 1.1.2.1 throws java.io.IOException { 23 cananian 1.1.2.1 super(parent); 24 cananian 1.1.2.1 this.val = in.readDouble(); 25 cananian 1.1.2.1 } 26 cananian 1.1.2.1 /** Constructor. */ 27 cananian 1.1.2.1 public ConstantDouble(ClassFile parent, double val) { 28 cananian 1.1.2.1 super(parent); 29 cananian 1.1.2.1 this.val = val; 30 cananian 1.1.2.1 } 31 cananian 1.3 public int entrySize() { return 2; } // takes up two entries in table. 32 cananian 1.1.2.1 33 cananian 1.1.2.1 /** Write to a bytecode file. */ 34 cananian 1.1.2.1 public void write(ClassDataOutputStream out) throws java.io.IOException { 35 cananian 1.1.2.1 out.write_u1(CONSTANT_Double); 36 cananian 1.1.2.1 out.writeDouble(val); 37 cananian 1.1.2.1 } 38 cananian 1.1.2.1 39 cananian 1.1.2.1 /** Returns the value of this constant. */ 40 cananian 1.1.2.1 public double doubleValue() { return val; } 41 cananian 1.1.2.1 /** Returns the value of this constant, wrapped as a 42 cananian 1.1.2.1 * <code>java.lang.Double</code>. */ 43 cananian 1.1.2.1 public Object value() { return new Double(val); } 44 cananian 1.1.2.1 45 cananian 1.1.2.1 /** Create a human-readable representation of this constant. */ 46 cananian 1.1.2.1 public String toString() { 47 cananian 1.1.2.1 return "CONSTANT_Double: "+doubleValue(); 48 cananian 1.1.2.1 } 49 cananian 1.2 }