An annotation (Annote) is itself annotable, thus it is derived from AnnotableObject itself. An Annote has a name that defines the content it contains and its data.
abstract Annote : AnnotableObject {
virtual LString name key;
};
concrete BrickAnnote : Annote {
LString name implements name;
list<SuifBrick * owner> bricks;
};
concrete GeneralAnnote : Annote {
LString name implements name;
};
Fields:
| name | key for searching the Annote on a list. |
| bricks | contents of the BrickAnnote |
Two Annote subclasses are defined in the standard SUIF representation. First the BrickAnnote allows the user to store a list of SuifBricks. Since SuifBricks can represent any object in the SUIF environment, arbitrary information can be associated with an AnnotableObject. The GeneralAnnote is an abstract subclass that should be used by programmers that want to create their own implementation of annotes. Programmers should create a hoof definition for their Annote that subclasses from GeneralAnnote.