home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD1.bin / gnu / os-include / utility / tagitem.h < prev    next >
C/C++ Source or Header  |  1993-10-15  |  2KB  |  78 lines

  1. #ifndef UTILITY_TAGITEM_H
  2. #define UTILITY_TAGITEM_H
  3. /*
  4. **    $VER: tagitem.h 40.1 (19.7.93)
  5. **    Includes Release 40.15
  6. **
  7. **    Extended specification mechanism
  8. **
  9. **    (C) Copyright 1989-1993 Commodore-Amiga Inc.
  10. **    All Rights Reserved
  11. */
  12.  
  13. /*****************************************************************************/
  14.  
  15.  
  16. #ifndef EXEC_TYPES_H
  17. #include <exec/types.h>
  18. #endif
  19.  
  20.  
  21. /*****************************************************************************/
  22.  
  23.  
  24. /* Tags are a general mechanism of extensible data arrays for parameter
  25.  * specification and property inquiry. In practice, tags are used in arrays,
  26.  * or chain of arrays.
  27.  *
  28.  */
  29.  
  30. typedef ULONG Tag;
  31.  
  32. struct TagItem
  33. {
  34.     Tag      ti_Tag;    /* identifies the type of data */
  35.     ULONG ti_Data;    /* type-specific data           */
  36. };
  37.  
  38. /* constants for Tag.ti_Tag, control tag values */
  39. #define TAG_DONE   (0L)      /* terminates array of TagItems. ti_Data unused */
  40. #define TAG_END       (0L)   /* synonym for TAG_DONE              */
  41. #define    TAG_IGNORE (1L)      /* ignore this item, not end of array          */
  42. #define    TAG_MORE   (2L)      /* ti_Data is pointer to another array of TagItems
  43.                * note that this tag terminates the current array
  44.                */
  45. #define    TAG_SKIP   (3L)      /* skip this and the next ti_Data items      */
  46.  
  47. /* differentiates user tags from control tags */
  48. #define TAG_USER   ((ULONG)(1L<<31))
  49.  
  50. /* If the TAG_USER bit is set in a tag number, it tells utility.library that
  51.  * the tag is not a control tag (like TAG_DONE, TAG_IGNORE, TAG_MORE) and is
  52.  * instead an application tag. "USER" means a client of utility.library in
  53.  * general, including system code like Intuition or ASL, it has nothing to do
  54.  * with user code.
  55.  */
  56.  
  57.  
  58. /*****************************************************************************/
  59.  
  60.  
  61. /* Tag filter logic specifiers for use with FilterTagItems() */
  62. #define TAGFILTER_AND 0        /* exclude everything but filter hits    */
  63. #define TAGFILTER_NOT 1        /* exclude only filter hits        */
  64.  
  65.  
  66. /*****************************************************************************/
  67.  
  68.  
  69. /* Mapping types for use with MapTags() */
  70. #define MAP_REMOVE_NOT_FOUND 0    /* remove tags that aren't in mapList */
  71. #define MAP_KEEP_NOT_FOUND   1    /* keep tags that aren't in mapList   */
  72.  
  73.  
  74. /*****************************************************************************/
  75.  
  76.  
  77. #endif /* UTILITY_TAGITEM_H */
  78.