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