[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()