001    package serp.bytecode.lowlevel;
002    
003    import java.io.*;
004    
005    import serp.bytecode.visitor.*;
006    import serp.util.*;
007    
008    /**
009     * A long constant in the constant pool.
010     *
011     * @author Abe White
012     */
013    public 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    }