JavaCompilerCore/bcel/.svn/pristine/cc/cc3ea3e6a2bca7f1f313f8ee5831a6f91b1cc1a4.svn-base
2016-07-11 22:15:14 +02:00

116 lines
3.3 KiB
Plaintext

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.apache.commons.bcel6.generic;
import java.io.DataOutputStream;
import java.io.IOException;
import org.apache.commons.bcel6.classfile.ConstantUtf8;
import org.apache.commons.bcel6.classfile.ElementValue;
import org.apache.commons.bcel6.classfile.ElementValuePair;
/**
* @since 6.0
*/
public class ElementValuePairGen
{
private int nameIdx;
private final ElementValueGen value;
private final 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;
}
@Override
public String toString()
{
return "ElementValuePair:[" + getNameString() + "="
+ value.stringifyValue() + "]";
}
}