123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- /* *******************************************************************
- * 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;
-
- public class ArrayElementValue extends ElementValue {
- private static final ElementValue[] NO_VALUES = new ElementValue[0];
-
- // J5TODO: Should we make this an array or a list? A list would be easier to modify ...
- private ElementValue[] evalues = NO_VALUES;
-
- public ElementValue[] getElementValuesArray() {
- return evalues;
- }
-
- public int getElementValuesArraySize() {
- return evalues.length;
- }
-
- public ArrayElementValue(ConstantPool cp) {
- super(ARRAY, cp);
- }
-
- public ArrayElementValue(int type, ElementValue[] datums, ConstantPool cpool) {
- super(type, cpool);
- if (type != ARRAY)
- throw new RuntimeException("Only element values of type array can be built with this ctor");
- this.evalues = datums;
- }
-
- public ArrayElementValue(ArrayElementValue value, ConstantPool cpool, boolean copyPoolEntries) {
- super(ARRAY, cpool);
- evalues = new ElementValue[value.getElementValuesArraySize()];
- ElementValue[] in = value.getElementValuesArray();
- for (int i = 0; i < in.length; i++) {
- evalues[i] = ElementValue.copy(in[i], cpool, copyPoolEntries);
- }
- }
-
- @Override
- public void dump(DataOutputStream dos) throws IOException {
- dos.writeByte(type); // u1 type of value (ARRAY == '[')
- dos.writeShort(evalues.length);
- for (ElementValue evalue : evalues) {
- evalue.dump(dos);
- }
- }
-
- @Override
- public String stringifyValue() {
- StringBuilder sb = new StringBuilder();
- sb.append("[");
- for (int i = 0; i < evalues.length; i++) {
- ElementValue element = evalues[i];
- sb.append(element.stringifyValue());
- if ((i + 1) < evalues.length)
- sb.append(",");
- }
- sb.append("]");
- return sb.toString();
- }
-
- public void addElement(ElementValue gen) {
- ElementValue[] old = evalues;
- evalues = new ElementValue[evalues.length + 1];
- System.arraycopy(old, 0, evalues, 0, old.length);
- evalues[old.length] = gen;
- }
-
- }
|