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


   NAME
        NextTagItem -- iterate through a tag list. (V36)

   SYNOPSIS
        tag = NextTagItem(tagItemPtr);
        D0                A0

        struct tagitem *nexttagitem(struct tagitem **);

   FUNCTION
        Iterates through a tag list, skipping and chaining as dictated by
        system tags. TAG_SKIP will cause it to skip the entry and a number
        of following tags as specified in ti_Data. 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 when the end of the list has been reached.

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

   RESULTS
        nextTag - each tagitem in the array or chain of arrays that should be
                  processed according to system tag values defined 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;

                    ...
                }
            }
        }

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

   SEE ALSO
        <utility/tagitem.h>, gettagdata(), packbooltags(), findtagitem()