/*
 * 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.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;

Since:6.0
/** * @since 6.0 */
public class ElementValuePairGen { private int nameIdx; private final ElementValueGen value; private final ConstantPoolGen cpool; public ElementValuePairGen(final ElementValuePair nvp, final ConstantPoolGen cpool, final 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
/** * Retrieve an immutable version of this ElementNameValuePairGen */
public ElementValuePair getElementNameValuePair() { final ElementValue immutableValue = value.getElementValue(); return new ElementValuePair(nameIdx, immutableValue, cpool .getConstantPool()); } protected ElementValuePairGen(final int idx, final ElementValueGen value, final ConstantPoolGen cpool) { this.nameIdx = idx; this.value = value; this.cpool = cpool; } public ElementValuePairGen(final String name, final ElementValueGen value, final ConstantPoolGen cpool) { this.nameIdx = cpool.addUtf8(name); this.value = value; this.cpool = cpool; } protected void dump(final 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() + "]"; } }