001 package serp.bytecode.lowlevel;
002
003 import java.io.*;
004
005 import serp.bytecode.visitor.*;
006
007 /**
008 * A constant double value in the constant pool.
009 *
010 * @author Abe White
011 */
012 public class DoubleEntry extends Entry implements ConstantEntry {
013 private double _value = 0.0;
014
015 /**
016 * Default constructor.
017 */
018 public DoubleEntry() {
019 }
020
021 /**
022 * Constructor.
023 *
024 * @param value the constant double value of this entry
025 */
026 public DoubleEntry(double value) {
027 _value = value;
028 }
029
030 public boolean isWide() {
031 return true;
032 }
033
034 public int getType() {
035 return Entry.DOUBLE;
036 }
037
038 /**
039 * Return the value of the constant.
040 */
041 public double getValue() {
042 return _value;
043 }
044
045 /**
046 * Set the value of the constant.
047 */
048 public void setValue(double value) {
049 Object key = beforeModify();
050 _value = value;
051 afterModify(key);
052 }
053
054 public Object getConstant() {
055 return new Double(getValue());
056 }
057
058 public void setConstant(Object value) {
059 setValue(((Number) value).doubleValue());
060 }
061
062 public void acceptVisit(BCVisitor visit) {
063 visit.enterDoubleEntry(this);
064 visit.exitDoubleEntry(this);
065 }
066
067 void readData(DataInput in) throws IOException {
068 _value = in.readDouble();
069 }
070
071 void writeData(DataOutput out) throws IOException {
072 out.writeDouble(_value);
073 }
074 }