diff options
author | Torsten Curdt <tcurdt@apache.org> | 2006-06-26 10:19:54 +0000 |
---|---|---|
committer | Torsten Curdt <tcurdt@apache.org> | 2006-06-26 10:19:54 +0000 |
commit | 555a09fd92af88a171f1302231ce6a3aaff1cffd (patch) | |
tree | 42bb31a559f193b107beee3b71b3bf159a28f882 /src/main/java/org/apache/bcel/generic/ElementValuePairGen.java | |
parent | f4865c297547619b5865fc59786b72ae48de73f7 (diff) | |
download | apache-commons-bcel-555a09fd92af88a171f1302231ce6a3aaff1cffd.tar.gz |
GSoC: latest changes from Dmitriy Khayredinov
git-svn-id: https://svn.apache.org/repos/asf/jakarta/bcel/trunk@417157 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/main/java/org/apache/bcel/generic/ElementValuePairGen.java')
-rwxr-xr-x | src/main/java/org/apache/bcel/generic/ElementValuePairGen.java | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/src/main/java/org/apache/bcel/generic/ElementValuePairGen.java b/src/main/java/org/apache/bcel/generic/ElementValuePairGen.java new file mode 100755 index 00000000..81e69d41 --- /dev/null +++ b/src/main/java/org/apache/bcel/generic/ElementValuePairGen.java @@ -0,0 +1,93 @@ +package org.apache.bcel.generic; + +import java.io.DataOutputStream; +import java.io.IOException; +import org.apache.bcel.classfile.ConstantUtf8; +import org.apache.bcel.classfile.ElementValue; +import org.apache.bcel.classfile.ElementValuePair; + +public class ElementValuePairGen +{ + private int nameIdx; + + private ElementValueGen value; + + private ConstantPoolGen cpool; + + public ElementValuePairGen(ElementValuePair nvp, ConstantPoolGen cpool, + boolean copyPoolEntries) + { + this.cpool = cpool; + // J5ASSERT: + // Could assert nvp.getNameString() points to the same thing as + // cpool.getConstant(nvp.getNameIndex()) + // if + // (!nvp.getNameString().equals(((ConstantUtf8)cpool.getConstant(nvp.getNameIndex())).getBytes())) + // { + // throw new RuntimeException("envp buggered"); + // } + if (copyPoolEntries) + { + nameIdx = cpool.addUtf8(nvp.getNameString()); + } + else + { + nameIdx = nvp.getNameIndex(); + } + value = ElementValueGen.copy(nvp.getValue(), cpool, copyPoolEntries); + } + + /** + * Retrieve an immutable version of this ElementNameValuePairGen + */ + public ElementValuePair getElementNameValuePair() + { + ElementValue immutableValue = value.getElementValue(); + return new ElementValuePair(nameIdx, immutableValue, cpool + .getConstantPool()); + } + + protected ElementValuePairGen(int idx, ElementValueGen value, + ConstantPoolGen cpool) + { + this.nameIdx = idx; + this.value = value; + this.cpool = cpool; + } + + public ElementValuePairGen(String name, ElementValueGen value, + ConstantPoolGen cpool) + { + this.nameIdx = cpool.addUtf8(name); + this.value = value; + this.cpool = cpool; + } + + protected void dump(DataOutputStream dos) throws IOException + { + dos.writeShort(nameIdx); // u2 name of the element + value.dump(dos); + } + + public int getNameIndex() + { + return nameIdx; + } + + public final String getNameString() + { + // ConstantString cu8 = (ConstantString)cpool.getConstant(nameIdx); + return ((ConstantUtf8) cpool.getConstant(nameIdx)).getBytes(); + } + + public final ElementValueGen getValue() + { + return value; + } + + public String toString() + { + return "ElementValuePair:[" + getNameString() + "=" + + value.stringifyValue() + "]"; + } +} |