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