]> source.dussan.org Git - aspectj.git/commitdiff
optimizationasm: new BCI independant Annotation representation.
authoraclement <aclement>
Wed, 22 Feb 2006 15:25:39 +0000 (15:25 +0000)
committeraclement <aclement>
Wed, 22 Feb 2006 15:25:39 +0000 (15:25 +0000)
weaver/src/org/aspectj/weaver/SimpleAnnotationValue.java [new file with mode: 0644]

diff --git a/weaver/src/org/aspectj/weaver/SimpleAnnotationValue.java b/weaver/src/org/aspectj/weaver/SimpleAnnotationValue.java
new file mode 100644 (file)
index 0000000..836de94
--- /dev/null
@@ -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();
+       }
+
+
+}