001 package edu.rice.cs.cunit.classFile.constantPool;
002
003 import edu.rice.cs.cunit.classFile.constantPool.visitors.IPoolInfoVisitor;
004
005 import java.io.DataInputStream;
006 import java.io.IOException;
007 import java.util.ArrayList;
008
009 /**
010 * Represents Unicode data in the constant pool.
011 *
012 * @author Mathias Ricken
013 */
014 public class UnicodePoolInfo extends AUTFPoolInfo {
015 /**
016 * Constructor.
017 *
018 * @param s data
019 */
020 public UnicodePoolInfo(String s, ConstantPool cp) {
021 super(CONSTANT_Utf8_Unicode, s, cp);
022 }
023
024 /**
025 * Constructor reading from a stream.
026 *
027 * @param dis input stream
028 * @param cp constant pool
029 *
030 * @throws IOException
031 */
032 public UnicodePoolInfo(DataInputStream dis, ConstantPool cp) throws IOException {
033 super(CONSTANT_Utf8_Unicode, dis, cp);
034 }
035
036 /**
037 * Return a human-readable version of this constant pool object.
038 *
039 * @return string
040 */
041 public String toStringVerbose() {
042 return "CONSTANT_Utf8_Unicode: String = " + _strValue;
043 }
044
045 /**
046 * Compare this object and another one.
047 *
048 * @param obj other object
049 *
050 * @return true if the same
051 */
052 public boolean equals(Object obj) {
053 return (obj instanceof UnicodePoolInfo) &&
054 (((UnicodePoolInfo)obj)._strValue.equals(_strValue));
055 }
056
057 /**
058 * Execute a visitor.
059 *
060 * @param visitor visitor
061 * @param data visitor-specific parameter
062 *
063 * @return visitor-specific return value
064 */
065 public <R, D> R execute(IPoolInfoVisitor<R, D> visitor, D data) {
066 return visitor.unicodeCase(this, data);
067 }
068 }