IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 5539


Ignore:
Timestamp:
Nov 17, 2005, 3:51:03 PM (21 years ago)
Author:
drobbin
Message:

Added fxn psMetadataCopy and test

Location:
trunk/psLib
Files:
1 added
3 edited

Legend:

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

    r5532 r5539  
    1212 *  @author Ross Harman, MHPCC
    1313 *
    14  *  @version $Revision: 1.91 $ $Name: not supported by cvs2svn $
    15  *  @date $Date: 2005-11-17 00:27:14 $
     14 *  @version $Revision: 1.92 $ $Name: not supported by cvs2svn $
     15 *  @date $Date: 2005-11-18 01:51:03 $
    1616 *
    1717 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    316316}
    317317
    318 
     318psMetadata *psMetadataCopy(psMetadata *out,
     319                           const psMetadata *in)
     320{
     321    PS_ASSERT_PTR_NON_NULL(in,NULL);
     322    if (out ==  NULL) {
     323        out = psMetadataAlloc();
     324    }
     325    psMetadataItem *item = NULL;
     326    psMetadataIterator *iter = NULL;
     327    iter = psMetadataIteratorAlloc(*(psMetadata**)&in, PS_LIST_HEAD, NULL);
     328    item = psMetadataGetAndIncrement(iter);
     329    while (item != NULL) {
     330        psMetadataAddItem(out, item, PS_LIST_TAIL, 0);
     331        item = psMetadataGetAndIncrement(iter);
     332    }
     333    psFree(item);
     334    psFree(iter);
     335    return out;
     336}
    319337
    320338bool psMetadataAddItem(psMetadata *md,
  • trunk/psLib/src/types/psMetadata.h

    r5455 r5539  
    1111*  @author Ross Harman, MHPCC
    1212*
    13 *  @version $Revision: 1.70 $ $Name: not supported by cvs2svn $
    14 *  @date $Date: 2005-11-02 01:07:25 $
     13*  @version $Revision: 1.71 $ $Name: not supported by cvs2svn $
     14*  @date $Date: 2005-11-18 01:51:03 $
    1515*
    1616*  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    270270);
    271271
     272/** Creates a new copy of all the psMetadataItems in the psMetadata collection, in, and
     273 *  returns them in out, or creates a new container if out is NULL.
     274 *
     275 *  @return psMetadata*:        the copy of the psMetadata container.
     276 */
     277psMetadata *psMetadataCopy(
     278    psMetadata *out,                   ///< output Metadata container for copying.
     279    const psMetadata *in               ///< Metadata collection to be copied.
     280);
    272281
    273282/** Add existing metadata item to metadata collection.
     
    279288 */
    280289bool psMetadataAddItem(
    281     psMetadata*  md,                   ///< Metadata collection to insert metadat item.
     290    psMetadata*  md,                   ///< Metadata collection to insert metadata item.
    282291    const psMetadataItem* item,        ///< Metadata item to be added.
    283292    int location,                      ///< Index number, PS_LIST_HEAD, or PS_LIST_TAIL
  • trunk/psLib/test/types/tst_psMetadata_07.c

    r5519 r5539  
    1111*     Test F - psMetadataRemoveKey, RemoveIndex
    1212*     Test G - psMetadataAddPtr, psMetadataItemAllocPtr
     13*     Test H - psMetadataCopy
     14*     Test I - psArgument Functions
    1315*
    1416*  @author  David Robbins, MHPCC
    1517*
    16 *  @version $Revision: 1.14 $  $Name: not supported by cvs2svn $
    17 *  @date  $Date: 2005-11-15 22:20:17 $
     18*  @version $Revision: 1.15 $  $Name: not supported by cvs2svn $
     19*  @date  $Date: 2005-11-18 01:51:03 $
    1820*
    1921*  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    2931static psS32 testMetaRemove(void);
    3032static psS32 testMetaAddPtr(void);
     33static psS32 testMetaCopy(void);
    3134static psS32 testArgument(void);
    3235
     
    3639                              {testMetaRemove, 0, "Test psMetadataRemoveKey/Index", 0, false},
    3740                              {testMetaAddPtr, 0, "Test psMetadataAddPtr", 0, false},
     41                              {testMetaCopy, 0, "Test psMetadataCopy", 0, false},
    3842                              {testArgument, 0, "Test psArgument fxns", 0, false},
    3943                              {NULL}
     
    225229}
    226230
     231psS32 testMetaCopy(void)
     232{
     233    psMetadata *test = NULL;
     234    psMetadata *empty = NULL;
     235    psMetadata *md = setupMeta();
     236
     237
     238    //Return NULL for NULL input Metadata
     239    test = psMetadataCopy(test, empty);
     240
     241    //Return a copy in of md in test
     242    test = psMetadataCopy(test, md);
     243    //Check if contents are the same
     244    psMetadataItem *testItem = NULL;
     245    psMetadataItem *mdItem = NULL;
     246    psMetadataIterator *testIterator = NULL;
     247    psMetadataIterator *mdIterator = NULL;
     248    testIterator = psMetadataIteratorAlloc(test, PS_LIST_HEAD, NULL);
     249    mdIterator = psMetadataIteratorAlloc(md, PS_LIST_HEAD, NULL);
     250    testItem = psMetadataGetAndIncrement(testIterator);
     251    mdItem = psMetadataGetAndIncrement(mdIterator);
     252    while (testItem != NULL || mdItem != NULL ) {
     253        if (testItem != mdItem) {
     254            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
     255                    "Copied psMetadataItem does not match Original.\n");
     256        }
     257        testItem = psMetadataGetAndIncrement(testIterator);
     258        mdItem = psMetadataGetAndIncrement(mdIterator);
     259    }
     260
     261    psFree(testItem);
     262    psFree(mdItem);
     263    psFree(testIterator);
     264    psFree(mdIterator);
     265    psFree(test);
     266    psFree(md);
     267    return 0;
     268}
     269
    227270psS32 testArgument(void)
    228271{
Note: See TracChangeset for help on using the changeset viewer.