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