IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jul 28, 2004, 4:04:20 PM (22 years ago)
Author:
harman
Message:

Fixed 64 bit compile problems

File:
1 edited

Legend:

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

    r1314 r1324  
    1111 *  @author Ross Harman, MHPCC
    1212 *
    13  *  @version $Revision: 1.1 $ $Name: not supported by cvs2svn $
    14  *  @date $Date: 2004-07-28 23:51:42 $
     13 *  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
     14 *  @date $Date: 2004-07-29 02:04:20 $
    1515 *
    1616 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    6060/*  FUNCTION IMPLEMENTATION - LOCAL                                          */
    6161/*****************************************************************************/
    62 static void p_psMetadataItemFree(psMetadataItem *metadataItem)
     62static void metadataItemFree(psMetadataItem *metadataItem)
    6363{
    6464    psMetadataType type;
     
    8181}
    8282
    83 static void p_psMetadataFree(psMetadata *metadata)
     83static void metadataFree(psMetadata *metadata)
    8484{
    8585    if (metadata == NULL) {
     
    9797psMetadataItem *psMetadataItemAlloc(const char *name, psMetadataType type, const char *comment, ...)
    9898{
    99     va_list argPtr = NULL;
     99    va_list argPtr;
    100100    psMetadataItem *metadataItem = NULL;
    101101
     
    128128
    129129    // Set deallocator
    130     p_psMemSetDeallocator(metadataItem,(psFreeFcn)p_psMetadataItemFree);
     130    p_psMemSetDeallocator(metadataItem,(psFreeFcn)metadataItemFree);
    131131
    132132    // Allocate and set metadata item comment
     
    140140
    141141    // Set metadata item id
    142     *(int*)metadataItem->id = ++metadataId;
     142    *(int*)(&metadataItem->id) = ++metadataId;
    143143
    144144    // Set metadata item type
     
    191191
    192192    // Set deallocator
    193     p_psMemSetDeallocator(metadata,(psFreeFcn)p_psMetadataFree);
     193    p_psMemSetDeallocator(metadata,(psFreeFcn)metadataFree);
    194194
    195195    // Allocate internal containers
     
    250250
    251251        // The key was found and the new metadata item is a leaf node (its type isn't PS_META_ITEM_SET), so
    252         // add the new metadata item as a child of the existing metadata item folder node.
     252        // add the new metadata item to hash as a child of the existing metadata item folder node.
    253253        if(!psListAdd(value->items, metadataItem, where)) {
    254254            psError(__func__, "Couldn't add metadata item to items list. Name: %s",
     
    265265    } else {
    266266
    267         // Duplicate key not found. Add new metadata item to metadata collection's hash and list containers
     267        // Duplicate key not found. Add new metadata item to metadata collection's hash
    268268        if(!psHashAdd(mdTable, key, metadataItem)) {
    269269            psError(__func__, "Couldn't add metadata item to metadata collection table. Name: %s",
     
    271271            return false;
    272272        }
    273 
    274         if(!psListAdd(md->list, metadataItem, where)) {
    275             psError(__func__, "Couldn't add metadata item to metadata collection list. Name: %s",
    276                     metadataItem->name);
    277             return false;
    278         }
     273    }
     274
     275    // Add all items to metadata collection's list, even if they have the same metadata item names
     276    if(!psListAdd(md->list, metadataItem, where)) {
     277        psError(__func__, "Couldn't add metadata item to metadata collection list. Name: %s",
     278                metadataItem->name);
     279        return false;
    279280    }
    280281
     
    285286                   const char *comment, ...)
    286287{
    287     va_list argPtr = NULL;
     288    va_list argPtr;
    288289    psMetadataItem *metadataItem = NULL;
    289290
     
    294295    return psMetadataAddItem(md, where, metadataItem);
    295296}
     297
     298/** Remove an item from metadata collection.
     299 *
     300 * Items may be removed from metadata by specifing a key or location. If the key is null, the where argument
     301 * is used instead. If name is not null, where is set to PS_LIST_UNKNOWN. If the item is found, it is removed
     302 * from the metadata and true is returned.  If the key is not unique, then all items corresponding to it are
     303 * removed.
     304 *
     305 * @return bool: True for success, false for failure.
     306 */
     307bool psMetadataRemove(psMetadata *restrict md, int where, const char *restrict key)
     308{
     309    /*    int i = 0;
     310        int numChildren = 0;
     311        psList mdList = NULL;
     312        psHash mdHash = NULL;
     313        psMetadataItem *entry = NULL;
     314        psMetadataItem *entryChild = NULL;
     315     
     316        mdList = md->list
     317        if(mdList == NULL) {
     318            psError(__func__, "Null metadata list not allowed");
     319            return false;
     320        }
     321     
     322        mdTable = md->table;
     323        if(mdTable == NULL) {
     324            psError(__func__, "Null metadata table not allowed");
     325            return false;
     326        }
     327     
     328        // Select removal by key or index
     329        if(key != NULL){
     330     
     331            // Remove by key name
     332            entry = (psMetadataItem*)psHashLookup(mdTable, key);
     333            if(entry == NULL) {
     334                psError(__func__, "Couldn't find metadata item remove. Name: %s", key);
     335                return false;
     336            }
     337     
     338            numChildren = entry->items->size;
     339            if(entry->type==PS_META_ITEM_SET && numChildren>0){
     340     
     341                // Table entry has children. Entry and children must be removed from metadata collection's list
     342                psListSetIterator(list, PS_LIST_HEAD);
     343                entryChild = psListGetCurrent(list);
     344                while (entryChild != NULL) {
     345                    if(!psListRemove(mdList, entry, PS_LIST_UNKNOWN)) {
     346                        psError(__func__, "Couldn't remove metadata item from list. Name: %s", key);
     347                        return false;
     348                    }
     349                }
     350                entryChild = psListGetNext(list);
     351            } else {
     352     
     353                // Table entry does not have children. Entry only must be removed from metadata collection's list
     354                if(!psListRemove(mdList, entry, PS_LIST_UNKNOWN)) {
     355                    psError(__func__, "Couldn't remove metadata item from list. Name: %s", key);
     356                    return false;
     357                }
     358     
     359            }
     360     
     361            // Remove entry from table once duplictes have been removed from the metadata collection's list
     362            if(!psHashRemove(mdHash, key)) {
     363                psError(__func__, "Couldn't remove metadata item from table. Name: %s", key);
     364                return false;
     365            }
     366        } else {
     367            // Remove by index
     368     
     369        }*/
     370
     371    return true;
     372}
     373
Note: See TracChangeset for help on using the changeset viewer.