scale.annot
Interface AnnotationInterface

All Known Implementing Classes:
AbsoluteValueExpr, AbsoluteValueOp, AdditionAssignmentOp, AdditionExpr, AdditionOp, AddressLiteral, AddressOp, AggregateOp, AggregateType, AggregationElements, AllocArrayType, AllocateExpr, AllocatePlacementOp, AllocateSettingFieldsOp, AltCase, AndConditionalOp, AndExpr, AndOp, ArithmeticIfStmt, ArrayIndexExpr, ArrayType, AssignedGotoStmt, AssignLabelStmt, AssignmentOp, AssignSimpleOp, AtomicType, BeginChord, BinaryExpr, BitAndAssignmentOp, BitAndExpr, BitAndOp, BitComplementExpr, BitComplementOp, BitOrAssignmentOp, BitOrExpr, BitOrOp, BitShiftAssignmentOp, BitShiftExpr, BitShiftOp, BitXorAssignmentOp, BitXorExpr, BitXorOp, BlockStmt, BooleanLiteral, BooleanType, Bound, BranchChord, BreakStmt, CallExpr, CallFunctionExpr, CallFunctionOp, CallMethodExpr, CallOp, CaseLabelDecl, CaseStmt, CharacterType, CharLiteral, Chord, CompareExpr, ComplexLiteral, ComplexOp, ComplexType, ComplexValueExpr, CompositeType, CompoundAssignmentOp, ComputedGotoStmt, ConditionalExpr, ContinueStmt, ConversionExpr, DecisionChord, Declaration, DeclStmt, DefOp, DeleteArrayOp, DeleteOp, DereferenceOp, DivisionAssignmentOp, DivisionExpr, DivisionOp, DoLoopStmt, Domination, DualExpr, DyadicOp, EndChord, EnumElementDecl, EnumerationType, EqualityExpr, EqualityOp, EquivalenceDecl, EvalStmt, ExceptionDecl, ExitChord, ExitStmt, ExponentiationExpr, ExponentiationOp, Expr, ExprChord, Expression, ExpressionIfOp, ExprPhiExpr, FieldDecl, FieldExpr, FileDecl, FixedArrayType, FloatArrayLiteral, FloatLiteral, FloatType, ForLoopStmt, FormalDecl, FortranCharType, ForwardProcedureDecl, GotoChord, GotoStmt, GreaterEqualExpr, GreaterEqualOp, GreaterExpr, GreaterOp, HeapOp, Hyperblock, IdAddressOp, IdReferenceOp, IdValueOp, IfStmt, IfThenElseChord, IfThenElseStmt, IncompleteType, IncrementOp, IntArrayLiteral, IntegerType, IntLiteral, LabelDecl, LabelStmt, LeaveChord, LessEqualExpr, LessEqualOp, LessExpr, LessOp, Literal, LiteralExpr, LoadDeclAddressExpr, LoadDeclValueExpr, LoadExpr, LoadFieldAddressExpr, LoadFieldValueExpr, LoadValueIndirectExpr, LoopExitChord, LoopHeaderChord, LoopInitChord, LoopPreHeaderChord, LoopStmt, LoopTailChord, MarkerChord, MatchExpr, MaxExpr, MaximumOp, MinExpr, MinimumOp, ModulusOp, MonadicOp, MultiBranchStmt, MultiplicationAssignmentOp, MultiplicationExpr, MultiplicationOp, NaryExpr, NegativeExpr, NegativeOp, NilExpr, NilOp, Node, Node, Note, NotEqualExpr, NotEqualOp, NotExpr, NotOp, NullChord, NullStmt, NumericType, OrConditionalOp, OrExpr, OrOp, ParenthesesOp, PhiExpr, PhiExprChord, PointerType, PositiveOp, PostDecrementOp, PostIncrementOp, PPBlock, PPCfg, PPEdge, PPSupergraphBlock, PreDecrementOp, PredicateBlock, PreIncrementOp, ProcedureDecl, ProcedureType, Raise, RaiseWithObject, RaiseWithType, RealType, RecordType, RefType, RemainderAssignmentOp, RemainderExpr, RemainderOp, RenamedVariableDecl, RepeatUntilLoopStmt, RepeatWhileLoopStmt, ReturnChord, ReturnStmt, Root, RoutineDecl, Scribble, SelectIndirectOp, SelectOp, SequentialChord, SeriesOp, SignedIntegerType, SizeofLiteral, Statement, StatementOp, StmtFtnDecl, StringLiteral, SubscriptAddressOp, SubscriptExpr, SubscriptOp, SubscriptValueOp, SubstringOp, SubtractionAssignmentOp, SubtractionExpr, SubtractionOp, SubVirtualVar, Suite, SuperVirtualVar, SwitchChord, SwitchStmt, TernaryExpr, TernaryOp, TestLoopStmt, ThisOp, Transcendental2Expr, Transcendental2Op, TranscendentalExpr, TranscendentalOp, Type, TypeConversionOp, TypeDecl, TypeName, UnaryExpr, UnionType, UnknownFormals, UnsignedIntegerType, VaArgExpr, VaArgOp, VaCopyOp, VaEndExpr, VaEndOp, ValueDecl, ValueExpr, VarArgExpr, VarArgOp, VariableDecl, VaStartExpr, VaStartOp, VectorExpr, VirtualVar, VoidType, WhileLoopStmt

public interface AnnotationInterface

Defins the operations required of a class in order to use annotations.

$Id: AnnotationInterface.java,v 1.19 2007-08-13 12:32:02 burrill Exp $

Copyright 2007 by the Scale Compiler Group,
Department of Computer Science
University of Massachusetts,
Amherst MA. 01003, USA
All Rights Reserved.

Each node contains a container of annotations that have been associated with it. For the key to retrieve annotations, we use the value returned by the static method Annotation.annotationKey().

The goal of this interface is to make sure that details about how annotations are actually managed stay hidden. The interface provides only very general container operations, plus a few specialized routines unique to annotations.

See Also:
Annotation

Method Summary
 void addAnnotation(Annotation a)
          Adds an annotation to this node's annotation list.
 java.util.Enumeration<Annotation> allAnnotations()
          Return an enumeration of all the annotations associated with this node.
 java.util.Enumeration<Annotation> allMatchingAnnotations(java.lang.Object annotationKey)
          Return an enumeration of all the annotations of the given kind associated with this node.
 Annotation getAnnotation(java.lang.Object annotationKey)
          Returns a single instance of the annotation with the given key.
 boolean hasAnnotation(java.lang.Object annotationKey)
           
 boolean hasEqualAnnotation(Annotation annotationKey)
          Return true if an equivalent annotation is associated with the node.
 void removeAnnotation(Annotation annotation)
          Delete all annotations which match the key of the given Annotation.
 

Method Detail

addAnnotation

void addAnnotation(Annotation a)
Adds an annotation to this node's annotation list. Redundant annotations are permitted.


removeAnnotation

void removeAnnotation(Annotation annotation)
Delete all annotations which match the key of the given Annotation.


getAnnotation

Annotation getAnnotation(java.lang.Object annotationKey)
Returns a single instance of the annotation with the given key. This method may return null.

Parameters:
annotationKey - the annotation key
Returns:
an arbitrary annotation of the indicated kind or null.

hasAnnotation

boolean hasAnnotation(java.lang.Object annotationKey)
Parameters:
annotationKey - the annotation key
Returns:
true if the indicated kind of annotation is associated with the node.

hasEqualAnnotation

boolean hasEqualAnnotation(Annotation annotationKey)
Return true if an equivalent annotation is associated with the node. Note - the Creator, Beliefs, and the Combining Rule are not used in equivalence testing.

Parameters:
annotationKey - the annotation key

allAnnotations

java.util.Enumeration<Annotation> allAnnotations()
Return an enumeration of all the annotations associated with this node.


allMatchingAnnotations

java.util.Enumeration<Annotation> allMatchingAnnotations(java.lang.Object annotationKey)
Return an enumeration of all the annotations of the given kind associated with this node.