12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- /* *******************************************************************
- * Copyright (c) 2004 IBM
- * All rights reserved.
- * This program and the accompanying materials are made available
- * under the terms of the Eclipse Public License v 2.0
- * which accompanies this distribution and is available at
- * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
- *
- * Contributors:
- * Andy Clement - initial implementation {date}
- * ******************************************************************/
-
- package org.aspectj.apache.bcel.classfile.annotation;
-
- import java.io.DataOutputStream;
- import java.io.IOException;
-
- import org.aspectj.apache.bcel.classfile.ConstantPool;
- import org.aspectj.apache.bcel.classfile.ConstantUtf8;
- import org.aspectj.apache.bcel.generic.ObjectType;
-
- public class ClassElementValue extends ElementValue {
-
- // For primitive types and string type, this points to the value entry in the cpool
- // For 'class' this points to the class entry in the cpool
- private int idx;
-
- protected ClassElementValue(int typeIdx, ConstantPool cpool) {
- super(ElementValue.CLASS, cpool);
- this.idx = typeIdx;
- }
-
- public ClassElementValue(ObjectType t, ConstantPool cpool) {
- super(ElementValue.CLASS, cpool);
- // this.idx = cpool.addClass(t);
- idx = cpool.addUtf8(t.getSignature());
- }
-
- /**
- * Return immutable variant of this ClassElementValueGen
- */
- // public ElementValueGen getElementValue() {
- // return new ClassElementValueGen(type,idx,cpGen);
- // }
- public ClassElementValue(ClassElementValue value, ConstantPool cpool, boolean copyPoolEntries) {
- super(CLASS, cpool);
- if (copyPoolEntries) {
- // idx = cpool.addClass(value.getClassString());
- idx = cpool.addUtf8(value.getClassString());
- } else {
- idx = value.getIndex();
-
- }
- }
-
- public int getIndex() {
- return idx;
- }
-
- public String getClassString() {
- ConstantUtf8 cu8 = (ConstantUtf8) getConstantPool().getConstant(idx);
- return cu8.getValue();
- // ConstantClass c = (ConstantClass)getConstantPool().getConstant(idx);
- // ConstantUtf8 utf8 = (ConstantUtf8)getConstantPool().getConstant(c.getNameIndex());
- // return utf8.getBytes();
- }
-
- @Override
- public String stringifyValue() {
- return getClassString();
- }
-
- @Override
- public void dump(DataOutputStream dos) throws IOException {
- dos.writeByte(type); // u1 kind of value
- dos.writeShort(idx);
- }
-
- }
|