Changeset 293 for trunk/archive/pslib/include/psMetaData.h
- Timestamp:
- Mar 23, 2004, 5:25:47 PM (22 years ago)
- File:
-
- 1 edited
-
trunk/archive/pslib/include/psMetaData.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/archive/pslib/include/psMetaData.h
r285 r293 8 8 9 9 /** Possible types of metadata. */ 10 typedef enum { // type of val is:11 PS_META_ITEM_SET = 0, // NULL; metadata is in psMetaDataType.items12 PS_META_FLOAT, // float (.f)13 PS_META_INT, // int (.i)14 PS_META_STR, // string (.v)15 PS_META_IMG, // image (.v)16 PS_META_JPEG, // JPEG (.v)17 PS_META_PNG, // PNG (.v)18 PS_META_ASTROM, // astrometric coefficients (.v)19 PS_META_UNKNOWN, // other (.v)20 PS_META_NTYPE // Number of types; must be last10 typedef enum { //!< type of val is: 11 PS_META_ITEM_SET = 0, //!< NULL; metadata is in psMetaDataType.items 12 PS_META_FLOAT, //!< float (.f) 13 PS_META_INT, //!< int (.i) 14 PS_META_STR, //!< string (.v) 15 PS_META_IMG, //!< image (.v) 16 PS_META_JPEG, //!< JPEG (.v) 17 PS_META_PNG, //!< PNG (.v) 18 PS_META_ASTROM, //!< astrometric coefficients (.v) 19 PS_META_UNKNOWN, //!< other (.v) 20 PS_META_NTYPE //!< Number of types; must be last 21 21 } psMetaDataType; 22 22 23 23 /** Metadata flags (not exclusive with psMetaDataType). */ 24 24 typedef enum { 25 PS_META_TYPE_MASK = 0xffff, // the type enum must fit in this mask26 PS_META_UNIQUE = 0x10000, // the name must be unique (default)27 PS_META_NON_UNIQUE = 0x20000, // the name may be repeated, and should be disambiguated for us25 PS_META_TYPE_MASK = 0xffff, //!< the type enum must fit in this mask 26 PS_META_UNIQUE = 0x10000, //!< the name must be unique (default) 27 PS_META_NON_UNIQUE = 0x20000, //!< the name may be repeated, and should be disambiguated for us 28 28 } psMetaDataFlags; 29 29 30 30 /** A struct to define a single item of metadata */ 31 31 typedef struct { 32 const int id; // unique ID for this item33 char *restrict name; // Name of item34 psMetaDataType type; // type of this item35 psMetaDataFlags flags; // flags associated with this item32 const int id; //!< unique ID for this item 33 char *restrict name; //!< Name of item 34 psMetaDataType type; //!< type of this item 35 psMetaDataFlags flags; //!< flags associated with this item 36 36 const union { 37 float f; // floating value38 int i; // integer value39 void *v; // other type40 } val; // value of metadata41 char *comment; // optional comment ("", not NULL)42 psDlist *restrict items; // list of psMetaDataItems with the same name37 float f; //!< floating value 38 int i; //!< integer value 39 void *v; //!< other type 40 } val; //!< value of metadata 41 char *comment; //!< optional comment ("", not NULL) 42 psDlist *restrict items; //!< list of psMetaDataItems with the same name 43 43 } psMetaDataItem; 44 44 45 45 /** A set of metadata */ 46 46 typedef struct { 47 psDlist *restrict list; // list of psMetaDataItem48 psHash *restrict table; // hash table of the same metadata47 psDlist *restrict list; //!< list of psMetaDataItem 48 psHash *restrict table; //!< hash table of the same metadata 49 49 } psMetaDataSet; 50 50 … … 56 56 /** Constructor */ 57 57 psMetaDataItem *psMetaDataItemAlloc( 58 int typeFlags, // type of this piece of metadata + flags 59 const void *val, // value of new item 60 // N.b. a pointer even if the item 61 // is of type e.g. int 62 const char *comment, // comment associated with item 63 const char *name, // name of new item of metadata (may be an sprintf format) 64 ...); // possible arguments for name format 58 int typeFlags, //!< type of this piece of metadata + flags 59 const void *val, //!< value of new item 60 //!< N.b. a pointer even if the item 61 //!< is of type e.g. int 62 const char *comment, //!< comment associated with item 63 const char *name, //!< name of new item of metadata (may be an sprintf format) 64 ... //!< possible arguments for name format 65 ); 65 66 66 67 /** Destructor */ 67 void psMetaDataItemFree(psMetaDataItem *ms ); //piece of metadata to destroy68 68 void psMetaDataItemFree(psMetaDataItem *ms //!< piece of metadata to destroy 69 ); 69 70 /** Constructor */ 70 psMetaDataSet *psMetaDataSetAlloc(void); // make a new set of metadata71 psMetaDataSet *psMetaDataSetAlloc(void); //!< make a new set of metadata 71 72 72 73 /** Destructor */ 73 void psMetaDataSetFree(psMetaDataSet *ms); // destroy a set of metadata 74 void psMetaDataSetFree(psMetaDataSet *ms //!< destroy a set of metadata 75 ); 74 76 75 77 /**** Utilities **********************************************************************/ 76 78 77 79 /// Add entry to the end of the metadata set 78 psMetaDataItem *psMetaDataAppend(psMetaDataSet *restrict ms, psMetaDataItem *restrict item); 80 psMetaDataItem *psMetaDataAppend(psMetaDataSet *restrict ms, //!< Metadata set to add to 81 psMetaDataItem *restrict item //!< Metatdata to add 82 ); 79 83 80 84 /// delete entry from the metadata set 81 psMetaDataItem *psMetaDataRemove(psMetaDataSet *restrict ms, const char *restrict key); 85 psMetaDataItem *psMetaDataRemove(psMetaDataSet *restrict ms, //!< Metadata set to delete from 86 const char *restrict key //!< Key to delete 87 ); 82 88 83 89 /// reset the iterator to the start of the list 84 void psMetaDataSetIterator(psMetaDataSet *ms); 90 void psMetaDataSetIterator(psMetaDataSet *ms //!< Metadata set to set iterator for 91 ); 85 92 86 93 /// get the next entry in the sequence 87 psMetaDataItem *psMetaDataGetNext(psMetaDataSet *restrict ms, const char *restrict match); 94 psMetaDataItem *psMetaDataGetNext(psMetaDataSet *restrict ms, //!< Metadata set to get from 95 const char *restrict match //!< Match this 96 ); 88 97 89 98 /// find the metadata with the specified key 90 psMetaDataItem *psMetaDataLookup(const psMetaDataSet *restrict ms, const char *restrict key); 99 psMetaDataItem *psMetaDataLookup(const psMetaDataSet *restrict ms, //!< Metadata set to look up 100 const char *restrict key //!< Key to find 101 ); 91 102 92 103 /// print metadata item to the specified stream 93 void psMetaDataItemPrint(FILE *fd, // file descriptor to write to 94 const psMetaDataItem *restrict ms, // item of metadata to print 95 const char *prefix); // print this at the beginning of each line 104 void psMetaDataItemPrint(FILE *fd, //!< file descriptor to write to 105 const psMetaDataItem *restrict ms, //!< item of metadata to print 106 const char *prefix //!< print this at the beginning of each line 107 ); 96 108 /* \} */ // End of AstroGroup Functions 97 109 #endif
Note:
See TracChangeset
for help on using the changeset viewer.
