Changeset 156 for trunk/archive/pslib/src/Metadata/psMetaData.h
- Timestamp:
- Mar 9, 2004, 12:50:03 PM (22 years ago)
- File:
-
- 1 edited
-
trunk/archive/pslib/src/Metadata/psMetaData.h (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/archive/pslib/src/Metadata/psMetaData.h
r141 r156 8 8 */ 9 9 typedef enum { // type of val is: 10 PS_META_FLOAT = 0, // float (.f) 10 PS_META_ITEM_SET = 0, // NULL; metadata is in psMetaDataType.items 11 PS_META_FLOAT, // float (.f) 11 12 PS_META_INT, // int (.i) 12 13 PS_META_STR, // string (.v) … … 19 20 } psMetaDataType; 20 21 22 enum { 23 PS_META_TYPE_MASK = 0xffff, // the type enum must fit in this mask 24 PS_META_UNIQUE = 0x10000, // the name must be unique (default) 25 PS_META_NON_UNIQUE = 0x20000, // the name may be repeated, and should be disambiguated for us 26 }; 27 21 28 /* 22 29 * A struct to define a single item of metadata … … 25 32 const int id; // unique ID for this item 26 33 27 char * name;// Name of item34 char *restrict name; // Name of item 28 35 psMetaDataType type; // type of this item 36 int flags; // flags associated with this item 29 37 const union { 30 38 float f; // floating value … … 33 41 } val; // value of metadata 34 42 char *comment; // optional comment ("", not NULL) 35 } psMetaData; 43 psDlist *restrict items; // list of psMetaDataItems with the same name 44 } psMetaDataItem; 45 46 /* 47 * A set of metadata 48 */ 49 typedef struct { 50 psDlist *restrict list; // list of psMetaDataItem 51 psHash *restrict table; // hash table of the same metadata 52 } psMetaDataSet; 36 53 37 54 /*****************************************************************************/ … … 39 56 * Constructors and destructors 40 57 */ 41 psMetaData *psMetaDataNew( 42 const char *name, // name of new item of metadata 43 psMetaDataType type, // type of this piece of metadata 58 psMetaDataItem *psMetaDataItemNew( 59 int typeFlags, // type of this piece of metadata + flags 44 60 const void *val, // value of new item 45 61 // N.b. a pointer even if the item 46 62 // is of type e.g. int 47 63 const char *comment, // comment associated with item 48 int copy); // always copy data; NOTUSED 64 const char *name, // name of new item of metadata (may be an sprintf format) 65 ...); // possible arguments for name format 49 66 50 void psMetaDataDel(psMetaData *ms); // piece of metadata to destroy 67 void psMetaDataItemDel(psMetaDataItem *ms); // piece of metadata to destroy 68 69 psMetaDataSet *psMetaDataSetNew(void); // make a new set of metadata 70 void psMetaDataSetDel(psMetaDataSet *ms); // destroy a set of metadata 51 71 52 72 /*****************************************************************************/ … … 54 74 * Utilities 55 75 */ 56 void psMetaDataPrint(FILE *fd, // file descriptor to write to 57 const psMetaData *ms); // item of metadata to print 76 psMetaDataItem *psMetaDataAppend(psMetaDataSet *restrict ms, psMetaDataItem *restrict item); 77 psMetaDataItem *psMetaDataRemove(psMetaDataSet *restrict ms, const char *restrict key); 58 78 79 void psMetaDataSetIterator(psMetaDataSet *ms); 80 psMetaDataItem *psMetaDataGetNext(psMetaDataSet *restrict ms, const char *restrict match); 81 psMetaDataItem *psMetaDataLookup(const psMetaDataSet *restrict ms, const char *restrict key); 59 82 83 void psMetaDataItemPrint(FILE *fd, // file descriptor to write to 84 const psMetaDataItem *restrict ms, // item of metadata to print 85 const char *prefix); // print this at the beginning of each line 60 86 #endif
Note:
See TracChangeset
for help on using the changeset viewer.
