IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 12283


Ignore:
Timestamp:
Mar 6, 2007, 11:58:47 AM (19 years ago)
Author:
Paul Price
Message:

Adding function psMetadataKeys to return a list of keys from a metadata. Adding (and employing) additional PS_ASSERT macros specific for metadata, instead of using PS_ASSERT_PTR everywhere.

Location:
trunk/psLib/src/types
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/types/psMetadata.c

    r11724 r12283  
    1212 *  @author Ross Harman, MHPCC
    1313 *
    14  *  @version $Revision: 1.152 $ $Name: not supported by cvs2svn $
    15  *  @date $Date: 2007-02-09 01:26:00 $
     14 *  @version $Revision: 1.153 $ $Name: not supported by cvs2svn $
     15 *  @date $Date: 2007-03-06 21:58:47 $
    1616 *
    1717 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    207207                                     va_list argPtr)
    208208{
    209     psMetadataItem* metadataItem = NULL;
    210 
    211 
    212     PS_ASSERT_PTR_NON_NULL(name,NULL);
     209    PS_ASSERT_STRING_NON_EMPTY(name, NULL);
     210    PS_ASSERT_INT_POSITIVE(type, NULL);
    213211
    214212    // Allocate metadata item
    215     metadataItem = (psMetadataItem*) p_psAlloc(file, lineno, func, sizeof(psMetadataItem));
     213    psMetadataItem *metadataItem = (psMetadataItem*) p_psAlloc(file, lineno, func, sizeof(psMetadataItem));
    216214    metadataItem->data.V = NULL;
    217215
     
    360358                                     const psMetadataItem *in)
    361359{
    362     PS_ASSERT_PTR_NON_NULL(in,NULL);
     360    PS_ASSERT_METADATA_ITEM_NON_NULL(in,NULL);
    363361
    364362    psMetadataItem *newItem = NULL;     // New metadata item, to be returned
     
    437435                             const psMetadata *in)
    438436{
    439 
    440     if (in == NULL) {
    441         psError(PS_ERR_BAD_PARAMETER_NULL, true, "psMetadataCopy: 'in' cannot be NULL");
    442         return NULL;
    443     }
    444 
    445     //    PS_ASSERT_PTR_NON_NULL(in->list,NULL);
    446     if (in->list == NULL) {
    447         psError(PS_ERR_BAD_PARAMETER_NULL, true, "psMetadataCopy: 'in' has NULL list");
    448         return NULL;
    449     }
     437    PS_ASSERT_METADATA_NON_NULL(in, NULL);
     438
    450439    bool errorOccurred = false;
    451440    bool outAlloced = false;
     
    524513    psMetadataItem *existingEntry = NULL;
    525514
    526     PS_ASSERT_PTR_NON_NULL(md,false);
    527     PS_ASSERT_PTR_NON_NULL(md->hash,false);
    528     PS_ASSERT_PTR_NON_NULL(md->list,false);
    529     PS_ASSERT_PTR_NON_NULL(item,false);
    530     PS_ASSERT_PTR_NON_NULL(item->name,false);
     515    PS_ASSERT_METADATA_NON_NULL(md,false);
     516    PS_ASSERT_METADATA_ITEM_NON_NULL(item,false);
    531517
    532518    mdTable = md->hash;
     
    642628                   const char *comment,...)
    643629{
    644     PS_ASSERT_PTR_NON_NULL(md,false);
    645     PS_ASSERT_PTR_NON_NULL(md->list,false);
     630    PS_ASSERT_METADATA_NON_NULL(md, false);
     631
    646632    va_list argPtr;
    647 
    648633    va_start(argPtr, comment);
    649634    bool result = psMetadataAddV(md,location,name,format,comment,argPtr);
     
    660645                    va_list list)
    661646{
    662     PS_ASSERT_PTR_NON_NULL(md,false);
    663     PS_ASSERT_PTR_NON_NULL(md->list,false);
    664     psMetadataItem* metadataItem = NULL;
    665 
    666     metadataItem = psMetadataItemAllocV(name, format & PS_METADATA_TYPE_MASK, comment, list);
     647    PS_ASSERT_METADATA_NON_NULL(md,false);
     648
     649    psMetadataItem* metadataItem = psMetadataItemAllocV(name, format & PS_METADATA_TYPE_MASK, comment, list);
    667650
    668651    if (!psMetadataAddItem(md, metadataItem, location, format & PS_METADATA_FLAGS_MASK)) {
     
    717700                         const char *key)
    718701{
    719     PS_ASSERT_PTR_NON_NULL(md, false);
    720 
    721     PS_ASSERT_PTR_NON_NULL(md->list, false);
     702    PS_ASSERT_METADATA_NON_NULL(md, false);
     703    PS_ASSERT_STRING_NON_EMPTY(key, false);
     704
    722705    psList* mdList = md->list;
    723 
    724     PS_ASSERT_PTR_NON_NULL(md->hash,false);
    725706    psHash* mdTable = md->hash;
    726 
    727     PS_ASSERT_PTR_NON_NULL(key, false);
    728     PS_ASSERT_INT_POSITIVE(strlen(key), false);
    729707
    730708    psMetadataItem* entry = psHashLookup(mdTable,key);
     
    757735                           long location)
    758736{
    759     PS_ASSERT_PTR_NON_NULL(md, false);
    760 
    761     PS_ASSERT_PTR_NON_NULL(md->list, false);
     737    PS_ASSERT_METADATA_NON_NULL(md, false);
     738
    762739    psList* mdList = md->list;
    763 
    764     PS_ASSERT_PTR_NON_NULL(md->hash,false);
    765740    psHash* mdTable = md->hash;
    766741
     
    802777                                 const char *key)
    803778{
    804     psHash* mdTable = NULL;
    805     psMetadataItem* entry = NULL;
    806 
    807 
    808     PS_ASSERT_PTR_NON_NULL(md,NULL);
    809     PS_ASSERT_PTR_NON_NULL(md->hash,NULL);
    810     PS_ASSERT_PTR_NON_NULL(key,NULL);
    811 
    812     mdTable = md->hash;
    813     entry = (psMetadataItem*)psHashLookup(mdTable, key);
    814 
    815     return entry;
     779    PS_ASSERT_METADATA_NON_NULL(md,NULL);
     780    PS_ASSERT_STRING_NON_EMPTY(key,NULL);
     781
     782    return (psMetadataItem*)psHashLookup(md->hash, key);
    816783}
    817784
     
    820787                          const char *key)
    821788{
    822     PS_ASSERT_PTR_NON_NULL(md,NULL);
    823     PS_ASSERT_PTR_NON_NULL(md->list,NULL);
    824     psMetadataItem *metadataItem = NULL;
     789    PS_ASSERT_METADATA_NON_NULL(md,NULL);
    825790
    826791    if (status) {
     
    828793    }
    829794
    830     metadataItem = psMetadataLookup(md, key);
    831     if(metadataItem == NULL) {
     795    psMetadataItem *metadataItem = psMetadataLookup(md, key);
     796    if (metadataItem == NULL) {
    832797        if (status) {
    833798            *status = false;
     
    944909    psMetadataItem* entry = NULL;
    945910
    946     PS_ASSERT_PTR_NON_NULL(md,NULL);
    947     PS_ASSERT_PTR_NON_NULL(md->list,NULL);
     911    PS_ASSERT_METADATA_NON_NULL(md,NULL);
    948912
    949913    entry = (psMetadataItem*) psListGet(md->list, location);
     
    964928                                              const char* regex)
    965929{
    966     PS_ASSERT_PTR_NON_NULL(md,NULL);
    967     PS_ASSERT_PTR_NON_NULL(md->list,NULL);
     930    PS_ASSERT_METADATA_NON_NULL(md,NULL);
    968931
    969932    psMetadataIterator* newIter = p_psAlloc(file, lineno, func, sizeof(psMetadataIterator));
     
    999962                           long location)
    1000963{
    1001     PS_ASSERT_PTR_NON_NULL(iterator, NULL);
     964    PS_ASSERT_METADATA_ITERATOR_NON_NULL(iterator, NULL);
    1002965    psListIterator *listIter = iterator->iter;
    1003     PS_ASSERT_PTR_NON_NULL(listIter, NULL);
    1004966
    1005967    regex_t *regex = iterator->regex;
     
    10501012psMetadataItem* psMetadataGetAndIncrement(psMetadataIterator* iterator)
    10511013{
    1052     PS_ASSERT_PTR_NON_NULL(iterator,NULL);
     1014    PS_ASSERT_METADATA_ITERATOR_NON_NULL(iterator,NULL);
    10531015    psListIterator* listIter = iterator->iter;
    1054     PS_ASSERT_PTR_NON_NULL(listIter,NULL);
    1055 
    10561016    regex_t* regex = iterator->regex;
    10571017
     
    10741034psMetadataItem* psMetadataGetAndDecrement(psMetadataIterator* iterator)
    10751035{
    1076     PS_ASSERT_PTR_NON_NULL(iterator, NULL);
     1036    PS_ASSERT_METADATA_ITERATOR_NON_NULL(iterator, NULL);
    10771037    psListIterator* listIter = iterator->iter;
    1078     PS_ASSERT_PTR_NON_NULL(listIter, NULL);
    1079 
    10801038    regex_t* regex = iterator->regex;
    10811039
     
    11001058                                     const char *key)
    11011059{
    1102     PS_ASSERT_PTR_NON_NULL(md,NULL);
    1103     PS_ASSERT_PTR_NON_NULL(md->list,NULL);
     1060    PS_ASSERT_METADATA_NON_NULL(md,NULL);
    11041061    psMetadataItem *item = psMetadataLookup((psMetadata*)md, key); // The metadata with instruments
    11051062    psMetadata *value = NULL;  // The value to return
     
    11331090                             const char *key)
    11341091{
    1135     PS_ASSERT_PTR_NON_NULL(md,NULL);
    1136     PS_ASSERT_PTR_NON_NULL(md->list,NULL);
     1092    PS_ASSERT_METADATA_NON_NULL(md,NULL);
    11371093
    11381094    psMetadataItem *item = psMetadataLookup((psMetadata*)md, key);
     
    11701126                             const char *key)
    11711127{
    1172     PS_ASSERT_PTR_NON_NULL(md,NULL);
    1173     PS_ASSERT_PTR_NON_NULL(md->list,NULL);
     1128    PS_ASSERT_METADATA_NON_NULL(md,NULL);
     1129
    11741130    psMetadataItem *item = psMetadataLookup((psMetadata*)md, key); // The metadata with instruments
    11751131    //    char *value = NULL;   // The value to return
     
    12001156}
    12011157
     1158psList *psMetadataKeys(psMetadata *md)
     1159{
     1160    PS_ASSERT_METADATA_NON_NULL(md, NULL);
     1161
     1162    psList *list = psListAlloc(NULL);   // List with the keys
     1163    psMetadataIterator *iter = psMetadataIteratorAlloc(md, PS_LIST_HEAD, false);
     1164    psMetadataItem *item;               // Item from iteration
     1165    while ((item = psMetadataGetAndIncrement(iter))) {
     1166        psListAdd(list, PS_LIST_TAIL, item->name);
     1167    }
     1168    return list;
     1169}
     1170
    12021171
    12031172bool psMetadataPrint(FILE *fd,
     
    12051174                     int level)
    12061175{
    1207     PS_ASSERT_PTR_NON_NULL(md,false);
     1176    PS_ASSERT_METADATA_NON_NULL(md,false);
    12081177    if (fd == NULL) {
    12091178        fd = stdout;
  • trunk/psLib/src/types/psMetadata.h

    r11724 r12283  
    99*  @author Ross Harman, MHPCC
    1010*
    11 *  @version $Revision: 1.98 $ $Name: not supported by cvs2svn $
    12 *  @date $Date: 2007-02-09 01:26:00 $
     11*  @version $Revision: 1.99 $ $Name: not supported by cvs2svn $
     12*  @date $Date: 2007-03-06 21:58:47 $
    1313*
    1414*  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    11891189);
    11901190
     1191/// Return a list of keys for a metadata
     1192psList *psMetadataKeys(psMetadata *md   ///< Metadata for which to return keys
     1193                       );
    11911194
    11921195/** Prints metadata collection.
     
    12021205    int level                          ///< the level of metadata items.
    12031206);
    1204 
    1205 
    12061207
    12071208/// Assert on metadata with extant hash and list components
     
    12141215}
    12151216
     1217/// Assert on metadata item with extant name and type
     1218///
     1219/// The data contained within the metadata item is permitted to be NULL.
     1220#define PS_ASSERT_METADATA_ITEM_NON_NULL(NAME, RVAL) \
     1221if (!(NAME) || !(NAME)->name || !(NAME)->type) { \
     1222    psError(PS_ERR_BAD_PARAMETER_VALUE, true, \
     1223            "Error: Metadata item %s or its name or type is NULL.", \
     1224            #NAME); \
     1225    return RVAL; \
     1226}
     1227
     1228#define PS_ASSERT_METADATA_ITERATOR_NON_NULL(NAME, RVAL) \
     1229if (!(NAME) || !(NAME)->iter) { \
     1230    psError(PS_ERR_BAD_PARAMETER_VALUE, true, \
     1231            "Error: Metadata iterator %s or its component is NULL.", \
     1232            #NAME); \
     1233    return RVAL; \
     1234}
     1235
    12161236/// @}
    12171237#endif // #ifndef PS_METADATA_H
Note: See TracChangeset for help on using the changeset viewer.