Home  /  Autodocs  /  utility.library

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