blob: ec935751f342140859e80e88bf1c2f326c338a43 [file] [log] [blame]
package org.objectweb.asm;
import com.sun.tools.javac.code.TypeAnnotationPosition.TypePathEntry;
/**
* A visitor to visit a Java extended annotation. The methods of this
* interface must be called in the following order:
* (<tt>visit<tt> |
* <tt>visitEnum<tt> |
* <tt>visitAnnotation<tt> |
* <tt>visitArray<tt>)*
*
* <tt>visitXTargetType<tt>
*
* (<i>visit the fields (if any) of the <tt>reference_info</tt> structure
* for the given target type in the correct order using <tt>visitXOffset</tt>,
* <tt>visitXStartPc</tt>, <tt>visitXLength</tt>, <tt>visitXIndex</tt>,
* <tt>visitXParamIndex</tt>, <tt>visitXBoundIndex</tt>,
* <tt>visitXLocationLength</tt>, and/or <tt>visitXLocation</tt></i>)
*
* <tt>visitEnd<tt>
*
* @author jaimeq
*/
public interface TypeAnnotationVisitor extends AnnotationVisitor {
/**
* Visits the target type of the extended annotation, which defines the
* type and structure of the reference info of the extended annotation.
*
* @param target_type the target type of the extended annotation
*/
void visitXTargetType(int target_type);
/**
* Visits the offset specified by the extended annotation, whose meaning
* depends on the extended annotation's target type.
*
* @param offset the offset specified by the extended annotation
*/
void visitXOffset(int offset);
/**
* Visits the location_length specified by the extended annotation, whose
* meaning depends on the extended annotation's target type.
*
* @param location_length the location_length specified by the extended
* annotation
*/
void visitXLocationLength(int location_length);
/**
* Visits the location specified by the extended annotation, whose meaning
* depends on the extended annotation's target type.
*
* @param location the location specified by the extended annotation
*/
void visitXLocation(TypePathEntry location);
void visitXNumEntries(int num_entries);
/**
* Visits the start_pc specified by the extended annotation, whose meaning
* depends on the extended annotation's target type.
*
* @param start_pc the start_pc specified by the extended annotation
*/
void visitXStartPc(int start_pc);
/**
* Visits the length specified by the extended annotation, whose meaning
* depends on the extended annotation's target type.
*
* @param length the length specified by the extended annotation
*/
void visitXLength(int length);
/**
* Visits the index specified by the extended annotation, whose meaning
* depends on the extended annotation's target type.
*
* @param index the index specified by the extended annotation
*/
void visitXIndex(int index);
/**
* Visits the param_index specified by the extended annotation, whose meaning
* depends on the extended annotation's target type.
*
* @param param_index the param_index specified by the extended annotation
*/
public void visitXParamIndex(int param_index);
/**
* Visits the bound_index specified by the extended annotation, whose meaning
* depends on the extended annotation's target type.
*
* @param bound_index the bound_index specified by the extended annotation
*/
public void visitXBoundIndex(int bound_index);
/**
* Visits the type_index specified by the extended annotation, whose meaning
* depends on the extended annotation's target type.
* @param type_index
*/
public void visitXTypeIndex(int type_index);
/**
* Visits the exception_index specified by the extended annotation.
* @param exception_index
*/
public void visitXExceptionIndex(int exception_index);
/**
* Visits the annotation name and arguments size.
*/
public void visitXNameAndArgsSize();
}