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


   NAME
        FilterTagChanges -- eliminate tags which specify no change. (V36)

   SYNOPSIS
        FilterTagChanges(changeList,originalList,apply);
                         A0         A1           D0

        VOID FilterTagChanges(struct tagitem *, struct tagitem *, ulong);

   FUNCTION
        This function goes through changeList. For each item found in
        changeList, if the item is also present in originalList, and their
        data values are identical, then the tag is removed from changeList.
        If the two tag's data values are different and the 'apply' value is
        non-zero, then the tag data in originalList will be updated to match
        the value from changeList.

   INPUTS
        changeList - list of new tags (may be NULL)
        originalList - a list of existing tags (may be NULL)
        apply - boolean specification as to whether the data values in
                originalList are to be updated to the data values in
                changeList.

   EXAMPLE
        Assume you have an attribute list for an object (originalList)
        which looks like this:

                {ATTR_Size,  "large"},
                {ATTR_Color, "orange"},
                {ATTR_Shape, "square"}

        If you receive a new tag list containing some changes (changeList),
        which looks like this:

                {ATTR_Size,  "large"},
                {ATTR_Shape, "triangle"}

        If you call FilterTagChanges(), changeList will be modified to
        contain only those attributes which are different from those
        in originalList. All other items will have their tag values set to
        TAG_IGNORE. The resulting changeList will become:

                {TAG_IGNORE, "large"},
                {ATTR_Shape, "triangle"}

        If 'apply' was set to 0, originalList would be unchanged. If 'apply'
        was non-zero, originalList would be changed to:

                {ATTR_Size,  "large"},
                {ATTR_Color, "orange"},
                {ATTR_Shape, "triangle"}

   SEE ALSO
        <utility/tagitem.h>, applytagchanges()