| /******************************************************************************* |
| * Copyright (c) 2000, 2009 IBM Corporation and others. |
| * 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: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.jdt.core.util; |
| |
| /** |
| * Description of an annotation component value as described in the JVM specifications |
| * (added in J2SE 1.5). |
| * |
| * This interface may be implemented by clients. |
| * |
| * @since 3.1 |
| */ |
| public interface IAnnotationComponentValue { |
| |
| /** |
| * Tag value for a constant of type <code>byte</code> |
| * @since 3.1 |
| */ |
| int BYTE_TAG = 'B'; |
| /** |
| * Tag value for a constant of type <code>char</code> |
| * @since 3.1 |
| */ |
| int CHAR_TAG = 'C'; |
| /** |
| * Tag value for a constant of type <code>double</code> |
| * @since 3.1 |
| */ |
| int DOUBLE_TAG = 'D'; |
| /** |
| * Tag value for a constant of type <code>float</code> |
| * @since 3.1 |
| */ |
| int FLOAT_TAG = 'F'; |
| /** |
| * Tag value for a constant of type <code>int</code> |
| * @since 3.1 |
| */ |
| int INTEGER_TAG = 'I'; |
| /** |
| * Tag value for a constant of type <code>long</code> |
| * @since 3.1 |
| */ |
| int LONG_TAG = 'J'; |
| /** |
| * Tag value for a constant of type <code>short</code> |
| * @since 3.1 |
| */ |
| int SHORT_TAG = 'S'; |
| /** |
| * Tag value for a constant of type <code>boolean</code> |
| * @since 3.1 |
| */ |
| int BOOLEAN_TAG = 'Z'; |
| /** |
| * Tag value for a constant of type <code>java.lang.String</code> |
| * @since 3.1 |
| */ |
| int STRING_TAG = 's'; |
| /** |
| * Tag value for a value that represents an enum constant |
| * @since 3.1 |
| */ |
| int ENUM_TAG = 'e'; |
| /** |
| * Tag value for a value that represents a class |
| * @since 3.1 |
| */ |
| int CLASS_TAG = 'c'; |
| /** |
| * Tag value for a value that represents an annotation |
| * @since 3.1 |
| */ |
| int ANNOTATION_TAG = '@'; |
| /** |
| * Tag value for a value that represents an array |
| * @since 3.1 |
| */ |
| int ARRAY_TAG = '['; |
| |
| /** |
| * Returns the annotation component values as described in the JVM specifications |
| * if the tag item is '['. |
| * Returns null otherwise. |
| * |
| * @return the annotation component values |
| */ |
| IAnnotationComponentValue[] getAnnotationComponentValues(); |
| |
| /** |
| * Returns the annotation value as described in the JVM specifications |
| * if the tag item is '@'. |
| * Returns null otherwise. |
| * |
| * @return the attribute value |
| * @since 3.1 |
| */ |
| IAnnotation getAnnotationValue(); |
| |
| /** |
| * Returns the class info as described in the JVM specifications |
| * if the tag item is 'c'. |
| * Returns null otherwise. |
| * |
| * @return the class info |
| */ |
| IConstantPoolEntry getClassInfo(); |
| |
| /** |
| * Returns the class info index as described in the JVM specifications |
| * if the tag item is 'c'. |
| * Returns null otherwise. |
| * |
| * @return the class info index |
| */ |
| int getClassInfoIndex(); |
| |
| /** |
| * Returns the constant value as described in the JVM specifications |
| * if the tag item is one of 'B', 'C', 'D', 'F', 'I', 'J', 'S', 'Z', or 's'. |
| * Returns null otherwise. |
| * |
| * @return the constant value |
| */ |
| IConstantPoolEntry getConstantValue(); |
| |
| /** |
| * Returns the constant value index as described in the JVM specifications |
| * if the tag item is one of 'B', 'C', 'D', 'F', 'I', 'J', 'S', 'Z', or 's'. |
| * The value is unspecified otherwise. |
| * |
| * @return the constant value index |
| */ |
| int getConstantValueIndex(); |
| |
| /** |
| * Returns the simple name of the enum constant represented |
| * by this annotation component value as described in the JVM specifications |
| * if the tag item is 'e'. |
| * Returns null otherwise. |
| * |
| * @return the enum constant |
| * @since 3.1 |
| */ |
| char[] getEnumConstantName(); |
| |
| /** |
| * Returns the utf8 constant index as described in the JVM specifications |
| * if the tag item is 'e'. |
| * The value is unspecified otherwise. |
| * |
| * @return the enum constant index |
| * @since 3.1 |
| */ |
| int getEnumConstantNameIndex(); |
| |
| /** |
| * Returns the binary name of the type of the enum constant represented |
| * by this annotation component value as described in the JVM specifications |
| * if the tag item is 'e'. |
| * Returns null otherwise. |
| * |
| * @return the enum constant |
| * @since 3.1 |
| */ |
| char[] getEnumConstantTypeName(); |
| |
| /** |
| * Returns the utf8 constant index as described in the JVM specifications |
| * if the tag item is 'e'. |
| * The value is unspecified otherwise. |
| * |
| * @return the enum constant index |
| * @since 3.1 |
| */ |
| int getEnumConstantTypeNameIndex(); |
| |
| /** |
| * Returns the tag as described in the JVM specifications. |
| * |
| * @return the tag |
| */ |
| int getTag(); |
| |
| /** |
| * Returns the number of values as described in the JVM specifications |
| * if the tag item is '['. |
| * The value is unspecified otherwise. |
| * |
| * @return the number of values |
| */ |
| int getValuesNumber(); |
| } |