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     }