From: aclement Date: Wed, 22 Feb 2006 15:25:39 +0000 (+0000) Subject: optimizationasm: new BCI independant Annotation representation. X-Git-Tag: POST_MEMORY_CHANGES~33 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=63bba68515457d8194e595ab5ecb09d84cb2eaf8;p=aspectj.git optimizationasm: new BCI independant Annotation representation. --- diff --git a/weaver/src/org/aspectj/weaver/SimpleAnnotationValue.java b/weaver/src/org/aspectj/weaver/SimpleAnnotationValue.java new file mode 100644 index 000000000..836de9462 --- /dev/null +++ b/weaver/src/org/aspectj/weaver/SimpleAnnotationValue.java @@ -0,0 +1,85 @@ +/* ******************************************************************* + * Copyright (c) 2006 Contributors + * 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 IBM initial implementation + * ******************************************************************/ + package org.aspectj.weaver; + +import sun.reflect.generics.reflectiveObjects.NotImplementedException; + +public class SimpleAnnotationValue extends AnnotationValue { + + public SimpleAnnotationValue(int kind) { + super(kind); + } + + public SimpleAnnotationValue(int kind, Object value) { + super(kind); + switch (kind) { + case AnnotationValue.PRIMITIVE_BYTE: theByte = ((Byte)value).byteValue(); break; + case AnnotationValue.PRIMITIVE_CHAR: theChar = ((Character)value).charValue(); break; + case AnnotationValue.PRIMITIVE_INT: theInt = ((Integer)value).intValue(); break; + case AnnotationValue.STRING: theString = (String)value; break; + case AnnotationValue.PRIMITIVE_DOUBLE: theDouble = ((Double)value).doubleValue(); break; + case AnnotationValue.PRIMITIVE_FLOAT: theFloat = ((Float)value).floatValue(); break; + case AnnotationValue.PRIMITIVE_LONG: theLong = ((Long)value).longValue(); break; + case AnnotationValue.PRIMITIVE_SHORT: theShort = ((Short)value).shortValue(); break; + case AnnotationValue.PRIMITIVE_BOOLEAN: theBoolean = ((Boolean)value).booleanValue(); break; + default: + System.err.println("value = "+whatKindIsThis(kind)); + throw new NotImplementedException(); + } + } + + private byte theByte; + private char theChar; + private int theInt; + private String theString; + private double theDouble; + private float theFloat; + private long theLong; + private short theShort; + private boolean theBoolean; + + public void setValueString(String s) { theString = s; } + public void setValueByte(byte b) { theByte = b; } + public void setValueChar(char c) { theChar = c; } + public void setValueInt(int i) { theInt = i; } + + + public String stringify() { + switch (valueKind) { + case 'B': // byte + return Byte.toString(theByte); + case 'C': // char + return Character.toString(theChar); + case 'D': // double + return Double.toString(theDouble); + case 'F': // float + return Float.toString(theFloat); + case 'I': // int + return Integer.toString(theInt); + case 'J': // long + return Long.toString(theLong); + case 'S': // short + return Short.toString(theShort); + case 'Z': // boolean + return Boolean.toString(theBoolean); + case 's': // String + return theString; + default: throw new NotImplementedException(); + } + } + + public String toString() { + return stringify(); + } + + +}