A tag is made up of an attribute/value pair as defined below (from <utility/tagitem.h>): struct TagItem { ULONG ti_Tag; /* identifies the type of this item */ ULONG ti_Data; /* type-specific data, can be a pointer */ }; The ti_Tag field specifies an attribute to set. The possible values of ti_Tag are implementation specific. System tags are defined in the include files. The value the attribute is set to is specified in ti_Data. An example of the attribute/value pair that will specify a window's name is: ti_Tag = WA_Title; ti_Data = "My Window's Name"; The ti_Data field often contains 32-bit data as well as pointers. These are brief descriptions of the utility functions you can use to manipulate and access tags. For complete descriptions, see the "simple tag usage" and "advanced tag usage" sections. The following utility library calls are for supporting tags: Table 37-1: Utility Library Tag Functions ______________________________________________________________________ | | | allocatetagitems() allocate a tagitem array (or chain). | | freetagitems() frees allocated tagitem lists. | |----------------------------------------------------------------------| | clonetagitems() copies a tagitem list. | | refreshtagitemclones() rejuvenates a clone from the original. | |----------------------------------------------------------------------| | findtagitem() scans tagitem list for a tag. | | gettagdata() obtain data corresponding to tag. | | nexttagitem() iterate tagitem lists. | | taginarray() check if a tag value appears in a tag array. | |----------------------------------------------------------------------| | filtertagchanges() eliminate tagitems which specify no change. | | filtertagitems() remove selected items from a tagitem list. | | maptags() convert ti_tag values in a list via map | | pairing. | | packbooltags() builds a "flag" word from a tagitem list. | |______________________________________________________________________|