/******************************************************************************* * 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(); }