package com.redhat.ceylon.compiler.java.codegen;
import com.sun.tools.javac.tree.JCTree.JCAnnotation;
import com.sun.tools.javac.tree.JCTree.JCExpression;
import com.sun.tools.javac.util.ListBuffer;
/**
* Represents an argument in the invocation of an annotation class or
* annotation constructor
*/
public abstract class AnnotationTerm {
/**
* On the JVM the number of method parameters is limited to 255
* So 0-255 are for unmodified parameter expressions being used as arguments
* 256-511 are for spread parameter expressions being used as arguments
*/
public abstract int encode(AbstractTransformer gen, ListBuffer<JCExpression> instantiations);
public abstract JCExpression makeAnnotationArgumentValue(
ExpressionTransformer exprGen, AnnotationInvocation ai,
com.sun.tools.javac.util.List<AnnotationFieldName> fieldPath);
public abstract com.sun.tools.javac.util.List<JCAnnotation> makeDpmAnnotations(ExpressionTransformer exprGen);
public abstract com.sun.tools.javac.util.List<JCAnnotation> makeExprs(ExpressionTransformer exprGen, com.sun.tools.javac.util.List<JCAnnotation> value);
public abstract com.sun.tools.javac.util.List<JCAnnotation> makeExprAnnotations(
ExpressionTransformer exprGen, AnnotationInvocation toplevel,
com.sun.tools.javac.util.List<AnnotationFieldName> fieldPath);
}