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