| /* ******************************************************************* |
| * Copyright (c) 2004 IBM |
| * All rights reserved. |
| * This program and the accompanying materials are made available |
| * under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Andy Clement - initial implementation |
| * ******************************************************************/ |
| |
| package org.aspectj.apache.bcel.classfile.annotation; |
| |
| import java.io.DataOutputStream; |
| import java.io.IOException; |
| |
| import org.aspectj.apache.bcel.classfile.ConstantPool; |
| |
| public class NameValuePair { |
| private int nameIdx; |
| private ElementValue value; |
| private ConstantPool cpool; |
| |
| public NameValuePair(NameValuePair pair, ConstantPool 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(pair.getNameString()); |
| } else { |
| nameIdx = pair.getNameIndex(); |
| } |
| value = ElementValue.copy(pair.getValue(), cpool, copyPoolEntries); |
| } |
| |
| protected NameValuePair(int idx, ElementValue value, ConstantPool cpool) { |
| this.nameIdx = idx; |
| this.value = value; |
| this.cpool = cpool; |
| } |
| |
| public NameValuePair(String name, ElementValue value, ConstantPool 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() { |
| return cpool.getConstantUtf8(nameIdx).getValue(); |
| } |
| |
| public final ElementValue getValue() { |
| return value; |
| } |
| |
| @Override |
| public String toString() { |
| StringBuffer sb = new StringBuffer(); |
| sb.append(getNameString()).append("=").append(value.stringifyValue()); |
| return sb.toString(); |
| } |
| } |