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

#ifndef UTILITY_TAGITEM_H
#define UTILITY_TAGITEM_H TRUE
/*
**      $Filename: utility/tagitem.h $
**      $Release: 2.04 Includes, V37.4 $
**      $Revision: 36.1 $
**      $Date: 90/07/12 $
**
**      extended specification mechanism
**
**      (C) Copyright 1989-1999 Amiga, Inc.
**              All Rights Reserved
*/

#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif

/* ======================================================================= */
/* ==== TagItem ========================================================== */
/* ======================================================================= */
/* This data type may propagate through the system for more general use.
 * In the meantime, it is used as a general mechanism of extensible data
 * arrays for parameter specification and property inquiry (coming soon
 * to a display controller near you).
 *
 * In practice, an array (or chain of arrays) of TagItems is used.
 */

typedef ULONG   Tag;

struct TagItem {
    Tag                ti_Tag;
    ULONG       ti_Data;
};

/* ----        system tag values ----------------------------- */
#define TAG_DONE   (0L)        /* terminates array of TagItems. ti_Data unused */
#define TAG_END        TAG_DONE
#define TAG_IGNORE (1L) /* ignore this item, not end of array           */
#define TAG_MORE   (2L) /* ti_Data is pointer to another array of TagItems
                        * note that this tag terminates the current array
                        */
#define TAG_SKIP   (3L) /* skip this and the next ti_Data items         */

/* ----        user tag identification ----------------------- */
#define TAG_USER  (1L<<31)    /* differentiates user tags from system tags*/

/* until further notice, tag bits 16-30 are RESERVED and should be zero.
 * Also, the value (TAG_USER | 0) should never be used as a tag value.
 */

/* ---- Tag filter logic specifiers ---- */
#define TAGFILTER_AND  0       /* exclude everything but filter hits   */
#define TAGFILTER_NOT   1       /* exclude only filter hits             */

#endif