The annotation manager keeps track of the annotations that have been registered. For each annotation name, it records whether the annotation is flat or structured and whether it should be written to the output file. Additional information is stored for structured annotations.
The annotation manager is implemented in the files `aman.h' and
`aman.cc'. The annote_def
class is used to hold the
annotation information. Each annote_def
object records the
information for annotations with a particular name (which can be
accessed with the name
method). As with the annotations
themselves, the name in the annote_def
is entered in the
lexicon
(see section Lexicon), except that in this case the
annote_def
constructor automatically makes sure that the name is
in the lexicon
.
The manager is implemented as a list of annote_def
objects. This
list is initialized by the init_aman
function, which is
automatically called when the library is initialized. The
register_annote
function adds an annote_def
to the list.
An error occurs if the name in the annote_def
is already used in
another registered annote_def
. Rather than calling the
register_annote
function directly, use the ANNOTE
and
STRUCT_ANNOTE
macros described below to enter new annotations.
The information in the manager can be retrieved using the
lookup_annote
function. Given an annotation name that is entered
in the lexicon
, lookup_annote
searches the list of
registered annotations and returns the annote_def
corresponding
to that name. If the name is not found, it returns NULL
.