[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]


NAME
    NextTagItem -- Iterate TagItem lists. (V36)

SYNOPSIS
    next_tag = NextTagItem( tagItemPtr )
    D0                      A0

    struct TagItem *NextTagItem( struct TagItem **tagItemPtr );

FUNCTION
    Iterates through a (chained) array of TagItem structures,
    skipping and chaining as dictated by system tags.  TAG_SKIP
    will cause it to skip the entry and the next, TAG_IGNORE ignores
    that single entry, and TAG_MORE has a pointer to another array
    of tags (and terminates the current array!)  TAG_DONE also
    terminates the current array.  Each call returns either the next
    tagitem you should examine, or NULL at the end.

INPUTS
    tagItemPtr      - doubly-indirect reference to a TagItem structure.
                      The pointer will be changed to keep track of the
                      iteration.

RESULT
    next_tag        - Each TagItem in the array or chain of arrays that
                      should be processed according to system Tag values
                      (in utility/tagitem.h) is returned in turn with
                      successive calls.

EXAMPLE
    Iterate( struct TagItem *tags );
    {
            struct TagItem *tstate;
            struct TagItem *tag;

            tstate = tags;
            while ( tag = NextTagItem( &tstate ) )
            {
                    switch ( tag->ti_Tag )
                    {
                    case TAG1:
                        ...
                        break;
                    case TAG2:
                        ...
                        break;
                    ...
                    }
            }
    }

NOTES
    Do NOT use the value of *tagItemPtr, but rather use the pointer
    returned by NextTagItem().


BUGS

SEE ALSO
    utility/tagitem.h, GetTagData(), PackBoolTags(), FindTagItem()