Index: /trunk/psLib/src/astronomy/psMetadata.c
===================================================================
--- /trunk/psLib/src/astronomy/psMetadata.c	(revision 2656)
+++ /trunk/psLib/src/astronomy/psMetadata.c	(revision 2657)
@@ -12,6 +12,6 @@
 *  @author Ross Harman, MHPCC
 *
-*  @version $Revision: 1.40 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-12-07 19:09:05 $
+*  @version $Revision: 1.41 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-12-07 22:58:59 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -437,5 +437,5 @@
 }
 
-void* psMetadataLookupPtr(psMetadata *md, const char *key)
+void* psMetadataLookupPtr(psMetadata *md, const char *key, psU32 *status)
 {
     void *value = NULL;
@@ -445,5 +445,9 @@
 
     metadataItem = psMetadataLookup(md, key);
-    PS_PTR_CHECK_NULL(metadataItem,NULL);
+    if(metadataItem == NULL) {
+        *status = 1;
+        return value;
+    }
+
     pType = metadataItem->pType;
     value = metadataItem->data.V;
@@ -456,5 +460,5 @@
 }
 
-psS32 psMetadataLookupS32(psMetadata *md, const char *key)
+psS32 psMetadataLookupS32(psMetadata *md, const char *key, psU32 *status)
 {
     psS32 value = 0;
@@ -464,5 +468,9 @@
 
     metadataItem = psMetadataLookup(md, key);
-    PS_PTR_CHECK_NULL(metadataItem,0);
+    if(metadataItem == NULL) {
+        *status = 1;
+        return value;
+    }
+
     pType = metadataItem->pType;
     value = metadataItem->data.S32;
@@ -475,5 +483,5 @@
 }
 
-psF64 psMetadataLookupF64(psMetadata *md, const char *key)
+psF64 psMetadataLookupF64(psMetadata *md, const char *key, psU32 *status)
 {
     psF64 value = 0.0;
@@ -483,5 +491,9 @@
 
     metadataItem = psMetadataLookup(md, key);
-    PS_PTR_CHECK_NULL(metadataItem,0.0);
+    if(metadataItem == NULL) {
+        *status = 1;
+        return value;
+    }
+
     pType = metadataItem->pType;
     value = metadataItem->data.F64;
Index: /trunk/psLib/src/astronomy/psMetadata.h
===================================================================
--- /trunk/psLib/src/astronomy/psMetadata.h	(revision 2656)
+++ /trunk/psLib/src/astronomy/psMetadata.h	(revision 2657)
@@ -11,6 +11,6 @@
 *  @author Ross Harman, MHPCC
 *
-*  @version $Revision: 1.28 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-12-07 19:08:58 $
+*  @version $Revision: 1.29 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-12-07 22:59:05 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -208,5 +208,6 @@
 psF64 psMetadataLookupF64(
     psMetadata *md,            ///< Metadata collection to lookup metadata item.
-    const char *key            ///< Name of metadata key.
+    const char *key,           ///< Name of metadata key.
+    psU32 *status              ///< Status of lookup.
 );
 
@@ -221,5 +222,6 @@
 psS32 psMetadataLookupS32(
     psMetadata *md,            ///< Metadata collection to lookup metadata item.
-    const char *key            ///< Name of metadata key.
+    const char *key,           ///< Name of metadata key.
+    psU32 *status              ///< Status of lookup.
 );
 
@@ -234,5 +236,6 @@
 void* psMetadataLookupPtr(
     psMetadata* md,            ///< Metadata collection to lookup metadata item.
-    const char *key            ///< Name of metadata key.
+    const char *key,           ///< Name of metadata key.
+    psU32 *status              ///< Status of lookup.
 );
 
Index: /trunk/psLib/src/collections/psMetadata.c
===================================================================
--- /trunk/psLib/src/collections/psMetadata.c	(revision 2656)
+++ /trunk/psLib/src/collections/psMetadata.c	(revision 2657)
@@ -12,6 +12,6 @@
 *  @author Ross Harman, MHPCC
 *
-*  @version $Revision: 1.40 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-12-07 19:09:05 $
+*  @version $Revision: 1.41 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-12-07 22:58:59 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -437,5 +437,5 @@
 }
 
-void* psMetadataLookupPtr(psMetadata *md, const char *key)
+void* psMetadataLookupPtr(psMetadata *md, const char *key, psU32 *status)
 {
     void *value = NULL;
@@ -445,5 +445,9 @@
 
     metadataItem = psMetadataLookup(md, key);
-    PS_PTR_CHECK_NULL(metadataItem,NULL);
+    if(metadataItem == NULL) {
+        *status = 1;
+        return value;
+    }
+
     pType = metadataItem->pType;
     value = metadataItem->data.V;
@@ -456,5 +460,5 @@
 }
 
-psS32 psMetadataLookupS32(psMetadata *md, const char *key)
+psS32 psMetadataLookupS32(psMetadata *md, const char *key, psU32 *status)
 {
     psS32 value = 0;
@@ -464,5 +468,9 @@
 
     metadataItem = psMetadataLookup(md, key);
-    PS_PTR_CHECK_NULL(metadataItem,0);
+    if(metadataItem == NULL) {
+        *status = 1;
+        return value;
+    }
+
     pType = metadataItem->pType;
     value = metadataItem->data.S32;
@@ -475,5 +483,5 @@
 }
 
-psF64 psMetadataLookupF64(psMetadata *md, const char *key)
+psF64 psMetadataLookupF64(psMetadata *md, const char *key, psU32 *status)
 {
     psF64 value = 0.0;
@@ -483,5 +491,9 @@
 
     metadataItem = psMetadataLookup(md, key);
-    PS_PTR_CHECK_NULL(metadataItem,0.0);
+    if(metadataItem == NULL) {
+        *status = 1;
+        return value;
+    }
+
     pType = metadataItem->pType;
     value = metadataItem->data.F64;
Index: /trunk/psLib/src/collections/psMetadata.h
===================================================================
--- /trunk/psLib/src/collections/psMetadata.h	(revision 2656)
+++ /trunk/psLib/src/collections/psMetadata.h	(revision 2657)
@@ -11,6 +11,6 @@
 *  @author Ross Harman, MHPCC
 *
-*  @version $Revision: 1.28 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-12-07 19:08:58 $
+*  @version $Revision: 1.29 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-12-07 22:59:05 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -208,5 +208,6 @@
 psF64 psMetadataLookupF64(
     psMetadata *md,            ///< Metadata collection to lookup metadata item.
-    const char *key            ///< Name of metadata key.
+    const char *key,           ///< Name of metadata key.
+    psU32 *status              ///< Status of lookup.
 );
 
@@ -221,5 +222,6 @@
 psS32 psMetadataLookupS32(
     psMetadata *md,            ///< Metadata collection to lookup metadata item.
-    const char *key            ///< Name of metadata key.
+    const char *key,           ///< Name of metadata key.
+    psU32 *status              ///< Status of lookup.
 );
 
@@ -234,5 +236,6 @@
 void* psMetadataLookupPtr(
     psMetadata* md,            ///< Metadata collection to lookup metadata item.
-    const char *key            ///< Name of metadata key.
+    const char *key,           ///< Name of metadata key.
+    psU32 *status              ///< Status of lookup.
 );
 
Index: /trunk/psLib/src/types/psMetadata.c
===================================================================
--- /trunk/psLib/src/types/psMetadata.c	(revision 2656)
+++ /trunk/psLib/src/types/psMetadata.c	(revision 2657)
@@ -12,6 +12,6 @@
 *  @author Ross Harman, MHPCC
 *
-*  @version $Revision: 1.40 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-12-07 19:09:05 $
+*  @version $Revision: 1.41 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-12-07 22:58:59 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -437,5 +437,5 @@
 }
 
-void* psMetadataLookupPtr(psMetadata *md, const char *key)
+void* psMetadataLookupPtr(psMetadata *md, const char *key, psU32 *status)
 {
     void *value = NULL;
@@ -445,5 +445,9 @@
 
     metadataItem = psMetadataLookup(md, key);
-    PS_PTR_CHECK_NULL(metadataItem,NULL);
+    if(metadataItem == NULL) {
+        *status = 1;
+        return value;
+    }
+
     pType = metadataItem->pType;
     value = metadataItem->data.V;
@@ -456,5 +460,5 @@
 }
 
-psS32 psMetadataLookupS32(psMetadata *md, const char *key)
+psS32 psMetadataLookupS32(psMetadata *md, const char *key, psU32 *status)
 {
     psS32 value = 0;
@@ -464,5 +468,9 @@
 
     metadataItem = psMetadataLookup(md, key);
-    PS_PTR_CHECK_NULL(metadataItem,0);
+    if(metadataItem == NULL) {
+        *status = 1;
+        return value;
+    }
+
     pType = metadataItem->pType;
     value = metadataItem->data.S32;
@@ -475,5 +483,5 @@
 }
 
-psF64 psMetadataLookupF64(psMetadata *md, const char *key)
+psF64 psMetadataLookupF64(psMetadata *md, const char *key, psU32 *status)
 {
     psF64 value = 0.0;
@@ -483,5 +491,9 @@
 
     metadataItem = psMetadataLookup(md, key);
-    PS_PTR_CHECK_NULL(metadataItem,0.0);
+    if(metadataItem == NULL) {
+        *status = 1;
+        return value;
+    }
+
     pType = metadataItem->pType;
     value = metadataItem->data.F64;
Index: /trunk/psLib/src/types/psMetadata.h
===================================================================
--- /trunk/psLib/src/types/psMetadata.h	(revision 2656)
+++ /trunk/psLib/src/types/psMetadata.h	(revision 2657)
@@ -11,6 +11,6 @@
 *  @author Ross Harman, MHPCC
 *
-*  @version $Revision: 1.28 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-12-07 19:08:58 $
+*  @version $Revision: 1.29 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-12-07 22:59:05 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -208,5 +208,6 @@
 psF64 psMetadataLookupF64(
     psMetadata *md,            ///< Metadata collection to lookup metadata item.
-    const char *key            ///< Name of metadata key.
+    const char *key,           ///< Name of metadata key.
+    psU32 *status              ///< Status of lookup.
 );
 
@@ -221,5 +222,6 @@
 psS32 psMetadataLookupS32(
     psMetadata *md,            ///< Metadata collection to lookup metadata item.
-    const char *key            ///< Name of metadata key.
+    const char *key,           ///< Name of metadata key.
+    psU32 *status              ///< Status of lookup.
 );
 
@@ -234,5 +236,6 @@
 void* psMetadataLookupPtr(
     psMetadata* md,            ///< Metadata collection to lookup metadata item.
-    const char *key            ///< Name of metadata key.
+    const char *key,           ///< Name of metadata key.
+    psU32 *status              ///< Status of lookup.
 );
 
Index: /trunk/psLib/test/astronomy/tst_psMetadata_04.c
===================================================================
--- /trunk/psLib/test/astronomy/tst_psMetadata_04.c	(revision 2656)
+++ /trunk/psLib/test/astronomy/tst_psMetadata_04.c	(revision 2657)
@@ -11,14 +11,18 @@
 *     Test E - Attempt to lookup non-existant metadata item
 *     Test F - Lookup metadata item by index
-*     Test G - Attempt to use null metadata
-*     Test H - Attempt to get non-existant metadata item
-*     Test I - Attempt to look up with an invalid metadata object
-*     Test J - Attempt get item  with an invalid metadata object
-*     Test K - Free psMetadata
+*     Test G - Lookup metadata item and return psS32 value
+*     Test H - Lookup metadata item and return psF64 value
+*     Test I - Lookup metadata item and return psVector pointer
+*     Test J - Attempt to use null metadata
+*     Test K - Attempt to get non-existant metadata item
+*     Test L - Attempt to look up with an invalid metadata object
+*     Test M - Attempt get item  with an invalid metadata object
+*     Test N - Attempt get value of non-existant metadata item
+*     Test O - Free psMetadata
 *
 *  @author  Ross Harman, MHPCC
 *
-*  @version $Revision: 1.9 $  $Name: not supported by cvs2svn $
-*  @date  $Date: 2004-12-03 23:19:07 $
+*  @version $Revision: 1.10 $  $Name: not supported by cvs2svn $
+*  @date  $Date: 2004-12-07 22:59:11 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -70,8 +74,11 @@
 psS32 main( psS32 argc, char* argv[] )
 {
+    psU32 status = 0;
     psMetadataItem *item1 = NULL;
     psMetadataItem *item2 = NULL;
     psMetadataItem *item3 = NULL;
     psMetadataItem *item4 = NULL;
+    psMetadataItem *item5 = NULL;
+    psMetadataItem *item6 = NULL;
     psMetadataItem *item = NULL;
     psMetadata *metadata = NULL;
@@ -82,4 +89,5 @@
     // Test A - Allocate metadata and items
     printPositiveTestHeader(stdout, "psMetadata", "Test A - Allocate metadata items");
+    psVector *vec = psVectorAlloc(5, PS_TYPE_S32);
     metadata = psMetadataAlloc();
     item1 = psMetadataItemAlloc("myItem1", PS_TYPE_BOOL, PS_META_PRIMITIVE, "I am a boolean", true);
@@ -87,12 +95,17 @@
     item3 = psMetadataItemAlloc("myItem3", PS_TYPE_BOOL, PS_META_PRIMITIVE, "I am a boolean", false);
     item4 = psMetadataItemAlloc("myItem4", PS_TYPE_S32, PS_META_PRIMITIVE, "I am a integer", 66);
+    item5 = psMetadataItemAlloc("myItem5", PS_TYPE_F64, PS_META_PRIMITIVE, "I am a double", 3.14);
+    item6 = psMetadataItemAlloc("myItem6", PS_TYPE_PTR, PS_META_VEC, "I am a vector", vec);
     printMetadataItem(item1);
     printMetadataItem(item2);
     printMetadataItem(item3);
     printMetadataItem(item4);
+    printMetadataItem(item5);
     psMetadataAddItem(metadata, item1, PS_LIST_HEAD);
     psMetadataAddItem(metadata, item2, PS_LIST_HEAD);
     psMetadataAddItem(metadata, item3, PS_LIST_HEAD);
     psMetadataAddItem(metadata, item4, PS_LIST_HEAD);
+    psMetadataAddItem(metadata, item5, PS_LIST_HEAD);
+    psMetadataAddItem(metadata, item6, PS_LIST_HEAD);
     printFooter(stdout, "psMetadata", "Test A - Allocate metadata items", true);
 
@@ -149,51 +162,123 @@
     printFooter(stdout, "psMetadata", "Test F - Lookup metadata item by index", true);
 
-
-    // Test G - Attempt to use null metadata
-    printNegativeTestHeader(stdout,"psMetadata", "Test G - Attempt to use null metadata",
+    // Test G - Lookup metadata item and return psS32 value
+    printPositiveTestHeader(stdout, "psMetadata", "Test G - Lookup metadata item and return psS32 value");
+    psS32 valueS32 = 0;
+    status = 0;
+    valueS32 = psMetadataLookupS32(metadata, "myItem2", &status);
+    if(valueS32 != 55) {
+        printf("ERROR: Bad value, %d, Expected 55\n", valueS32);
+        return 15;
+    } else if(status != 0) {
+        printf("ERROR: Bad status, %d\n", status);
+        return 15;
+    }
+    printFooter(stdout, "psMetadata", "Test G - Lookup metadata item and return psS32 value", true);
+
+    // Test H - Lookup metadata item and return psF64 value
+    printPositiveTestHeader(stdout, "psMetadata", "Test H - Lookup metadata item and return psF64 value");
+    psF64 valueF64 = 0.0;
+    status = 0;
+    valueF64 = psMetadataLookupF64(metadata, "myItem5", &status);
+    if(fabs(valueF64-3.14) > FLT_EPSILON) {
+        printf("ERROR: Bad value, %g, Expected 3.14\n", valueF64);
+        return 16;
+    } else if(status != 0) {
+        printf("ERROR: Bad status, %d\n", status);
+        return 16;
+    }
+    printFooter(stdout, "psMetadata", "Test H - Lookup metadata item and return psF64 value", true);
+
+    // Test I - Lookup metadata item and return psVector pointer
+    printPositiveTestHeader(stdout, "psMetadata", "Test I - Lookup metadata item and return psVector pointer");
+    psVector *valueVec = NULL;
+    status = 0;
+    valueVec = psMetadataLookupPtr(metadata, "myItem6", &status);
+    if(valueVec != vec) {
+        printf("ERROR: Bad vector pointer\n");
+        return 17;
+    } else if(status != 0) {
+        printf("ERROR: Bad status, %d\n", status);
+        return 17;
+    }
+    printFooter(stdout, "psMetadata", "Test I - Lookup metadata item and return psVector pointer", true);
+
+
+    // Test J - Attempt to use null metadata
+    printNegativeTestHeader(stdout,"psMetadata", "Test J - Attempt to use null metadata",
                             "Null metadata collection not allowed", 0);
     item = psMetadataGet(NULL, 0);
     if ( item != NULL ) {
-        psError(PS_ERR_UNKNOWN, true,"psMetadataGet did not return NULL with null metadata structure.");
-        return 15;
-    }
-    printFooter(stdout, "psMetadata", "Test G - Attempt to use null metadata", true);
-
-
-    // Test H - Attempt to get non-existant metadata item
-    printNegativeTestHeader(stdout,"psMetadata", "Test H - Attempt to get non-existant metadata item",
+        psError(PS_ERR_UNKNOWN, true,"psMetadataGet did not return NULL with null metadata structure");
+        return 18;
+    }
+    printFooter(stdout, "psMetadata", "Test J - Attempt to use null metadata", true);
+
+
+    // Test K - Attempt to get non-existant metadata item
+    printNegativeTestHeader(stdout,"psMetadata", "Test K - Attempt to get non-existant metadata item",
                             "Couldn't find metadata item with given index. Index: 22", 0);
     if ( psMetadataGet(metadata, 22) != NULL ) {
-        psError(PS_ERR_UNKNOWN, true,"psMetadataGet did not return NULL with non-existant metadata item.");
-        return 16;
-    }
-    printFooter(stdout, "psMetadata", "Test H - Attempt to get non-existant metadata item", true);
-
-    // Test I - Attempt to look up with an invalid metadata object
-    printNegativeTestHeader(stdout,"psMetadata","Test I - Attemp to look up with an invalid metadata",
+        psError(PS_ERR_UNKNOWN, true,"psMetadataGet did not return NULL with non-existant metadata item");
+        return 19;
+    }
+    printFooter(stdout, "psMetadata", "Test K - Attempt to get non-existant metadata item", true);
+
+    // Test L - Attempt to look up with an invalid metadata object
+    printNegativeTestHeader(stdout,"psMetadata","Test L - Attemp to look up with an invalid metadata",
                             "Lookup item with invalid metadata object.", 0 );
     tmpTable = metadata->table;
     metadata->table = NULL;
     if ( psMetadataLookup(metadata,"myItem2") != NULL ) {
-        psError(PS_ERR_UNKNOWN, true,"psMetadataLookup did not return null for invalid metadata object.");
+        psError(PS_ERR_UNKNOWN, true,"psMetadataLookup did not return null for invalid metadata object");
         return 20;
     }
     metadata->table = tmpTable;
-    printFooter(stdout, "psMetadata","Test I - Attempt to lookup an invalid metadata object.",true);
-
-    // Test J - Attempt get item  with an invalid metadata object
-    printNegativeTestHeader(stdout,"psMetadata","Test J - Attemp to get item with an invalid metadata",
+    printFooter(stdout, "psMetadata","Test L - Attempt to lookup an invalid metadata object.",true);
+
+    // Test M - Attempt get item with an invalid metadata object
+    printNegativeTestHeader(stdout,"psMetadata","Test M - Attempt to get item with an invalid metadata",
                             "Get item with invalid metadata object.", 0 );
     tmpList = metadata->list;
     metadata->list = NULL;
     if ( psMetadataGet(metadata,0) != NULL ) {
-        psError(PS_ERR_UNKNOWN, true,"psMetadataLookup did not return null for invalid metadata object.");
-        return 20;
+        psError(PS_ERR_UNKNOWN, true,"psMetadataLookup did not return null for invalid metadata object");
+        return 21;
     }
     metadata->list = tmpList;
-    printFooter(stdout, "psMetadata","Test J - Attempt to get item with  invalid metadata object.",true);
-
-    // Test K - Free psMetadata
-    printPositiveTestHeader(stdout, "psMetadata", "Test K - Free psMetadata");
+    printFooter(stdout, "psMetadata","Test M - Attempt to get item with  invalid metadata object",true);
+
+    // Test N - Attempt get psS32 value of non-existant metadata item
+    printPositiveTestHeader(stdout, "psMetadata", "Test N - Attempt get psS32 value of non-existant metadata item");
+    status = 0;
+    valueS32 = psMetadataLookupS32(metadata, "myItem22", &status);
+    if(status != 1) {
+        printf("ERROR: Bad status, %d, \n", status);
+        return 22;
+    }
+    printFooter(stdout, "psMetadata","Test N - Attempt get psS32 value of non-existant metadata item",true);
+
+    // Test O - Attempt get psF64 value of non-existant metadata item
+    printPositiveTestHeader(stdout, "psMetadata", "Test O - Attempt get psF64 value of non-existant metadata item");
+    status = 0;
+    valueF64 = psMetadataLookupF64(metadata, "myItem22", &status);
+    if(status != 1) {
+        printf("ERROR: Bad status, %d, \n", status);
+        return 23;
+    }
+    printFooter(stdout, "psMetadata","Test O - Attempt get psF64 value of non-existant metadata item",true);
+
+    // Test P - Attempt get psVector value of non-existant metadata item
+    printPositiveTestHeader(stdout, "psMetadata", "Test P - Attempt get psVector value of non-existant metadata item");
+    status = 0;
+    valueVec = psMetadataLookupPtr(metadata, "myItem22", &status);
+    if(status != 1) {
+        printf("ERROR: Bad status, %d, \n", status);
+        return 24;
+    }
+    printFooter(stdout, "psMetadata","Test P - Attempt get psVector value of non-existant metadata item",true);
+
+    // Test Q - Free psMetadata
+    printPositiveTestHeader(stdout, "psMetadata", "Test Q - Free psMetadata");
     psFree(metadata);
     psFree(item1);
@@ -201,7 +286,9 @@
     psFree(item3);
     psFree(item4);
+    psFree(item5);
+    psFree(item6);
     if ( psMemCheckLeaks(0, NULL, stdout,false) != 0 ) {
         psError(PS_ERR_UNKNOWN, true,"memory leaks detected.");
-        return 20;
+        return 23;
     }
     psMemCheckCorruption(0);
@@ -209,7 +296,7 @@
     if(nBad) {
         printf("ERROR: Found %d bad memory blocks\n", nBad);
-        return 21;
-    }
-    printFooter(stdout, "psMetadata", "Test K - Free psMetadata", true);
+        return 24;
+    }
+    printFooter(stdout, "psMetadata", "Test Q - Free psMetadata", true);
 
 
Index: /trunk/psLib/test/collections/tst_psMetadata_04.c
===================================================================
--- /trunk/psLib/test/collections/tst_psMetadata_04.c	(revision 2656)
+++ /trunk/psLib/test/collections/tst_psMetadata_04.c	(revision 2657)
@@ -11,14 +11,18 @@
 *     Test E - Attempt to lookup non-existant metadata item
 *     Test F - Lookup metadata item by index
-*     Test G - Attempt to use null metadata
-*     Test H - Attempt to get non-existant metadata item
-*     Test I - Attempt to look up with an invalid metadata object
-*     Test J - Attempt get item  with an invalid metadata object
-*     Test K - Free psMetadata
+*     Test G - Lookup metadata item and return psS32 value
+*     Test H - Lookup metadata item and return psF64 value
+*     Test I - Lookup metadata item and return psVector pointer
+*     Test J - Attempt to use null metadata
+*     Test K - Attempt to get non-existant metadata item
+*     Test L - Attempt to look up with an invalid metadata object
+*     Test M - Attempt get item  with an invalid metadata object
+*     Test N - Attempt get value of non-existant metadata item
+*     Test O - Free psMetadata
 *
 *  @author  Ross Harman, MHPCC
 *
-*  @version $Revision: 1.9 $  $Name: not supported by cvs2svn $
-*  @date  $Date: 2004-12-03 23:19:07 $
+*  @version $Revision: 1.10 $  $Name: not supported by cvs2svn $
+*  @date  $Date: 2004-12-07 22:59:11 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -70,8 +74,11 @@
 psS32 main( psS32 argc, char* argv[] )
 {
+    psU32 status = 0;
     psMetadataItem *item1 = NULL;
     psMetadataItem *item2 = NULL;
     psMetadataItem *item3 = NULL;
     psMetadataItem *item4 = NULL;
+    psMetadataItem *item5 = NULL;
+    psMetadataItem *item6 = NULL;
     psMetadataItem *item = NULL;
     psMetadata *metadata = NULL;
@@ -82,4 +89,5 @@
     // Test A - Allocate metadata and items
     printPositiveTestHeader(stdout, "psMetadata", "Test A - Allocate metadata items");
+    psVector *vec = psVectorAlloc(5, PS_TYPE_S32);
     metadata = psMetadataAlloc();
     item1 = psMetadataItemAlloc("myItem1", PS_TYPE_BOOL, PS_META_PRIMITIVE, "I am a boolean", true);
@@ -87,12 +95,17 @@
     item3 = psMetadataItemAlloc("myItem3", PS_TYPE_BOOL, PS_META_PRIMITIVE, "I am a boolean", false);
     item4 = psMetadataItemAlloc("myItem4", PS_TYPE_S32, PS_META_PRIMITIVE, "I am a integer", 66);
+    item5 = psMetadataItemAlloc("myItem5", PS_TYPE_F64, PS_META_PRIMITIVE, "I am a double", 3.14);
+    item6 = psMetadataItemAlloc("myItem6", PS_TYPE_PTR, PS_META_VEC, "I am a vector", vec);
     printMetadataItem(item1);
     printMetadataItem(item2);
     printMetadataItem(item3);
     printMetadataItem(item4);
+    printMetadataItem(item5);
     psMetadataAddItem(metadata, item1, PS_LIST_HEAD);
     psMetadataAddItem(metadata, item2, PS_LIST_HEAD);
     psMetadataAddItem(metadata, item3, PS_LIST_HEAD);
     psMetadataAddItem(metadata, item4, PS_LIST_HEAD);
+    psMetadataAddItem(metadata, item5, PS_LIST_HEAD);
+    psMetadataAddItem(metadata, item6, PS_LIST_HEAD);
     printFooter(stdout, "psMetadata", "Test A - Allocate metadata items", true);
 
@@ -149,51 +162,123 @@
     printFooter(stdout, "psMetadata", "Test F - Lookup metadata item by index", true);
 
-
-    // Test G - Attempt to use null metadata
-    printNegativeTestHeader(stdout,"psMetadata", "Test G - Attempt to use null metadata",
+    // Test G - Lookup metadata item and return psS32 value
+    printPositiveTestHeader(stdout, "psMetadata", "Test G - Lookup metadata item and return psS32 value");
+    psS32 valueS32 = 0;
+    status = 0;
+    valueS32 = psMetadataLookupS32(metadata, "myItem2", &status);
+    if(valueS32 != 55) {
+        printf("ERROR: Bad value, %d, Expected 55\n", valueS32);
+        return 15;
+    } else if(status != 0) {
+        printf("ERROR: Bad status, %d\n", status);
+        return 15;
+    }
+    printFooter(stdout, "psMetadata", "Test G - Lookup metadata item and return psS32 value", true);
+
+    // Test H - Lookup metadata item and return psF64 value
+    printPositiveTestHeader(stdout, "psMetadata", "Test H - Lookup metadata item and return psF64 value");
+    psF64 valueF64 = 0.0;
+    status = 0;
+    valueF64 = psMetadataLookupF64(metadata, "myItem5", &status);
+    if(fabs(valueF64-3.14) > FLT_EPSILON) {
+        printf("ERROR: Bad value, %g, Expected 3.14\n", valueF64);
+        return 16;
+    } else if(status != 0) {
+        printf("ERROR: Bad status, %d\n", status);
+        return 16;
+    }
+    printFooter(stdout, "psMetadata", "Test H - Lookup metadata item and return psF64 value", true);
+
+    // Test I - Lookup metadata item and return psVector pointer
+    printPositiveTestHeader(stdout, "psMetadata", "Test I - Lookup metadata item and return psVector pointer");
+    psVector *valueVec = NULL;
+    status = 0;
+    valueVec = psMetadataLookupPtr(metadata, "myItem6", &status);
+    if(valueVec != vec) {
+        printf("ERROR: Bad vector pointer\n");
+        return 17;
+    } else if(status != 0) {
+        printf("ERROR: Bad status, %d\n", status);
+        return 17;
+    }
+    printFooter(stdout, "psMetadata", "Test I - Lookup metadata item and return psVector pointer", true);
+
+
+    // Test J - Attempt to use null metadata
+    printNegativeTestHeader(stdout,"psMetadata", "Test J - Attempt to use null metadata",
                             "Null metadata collection not allowed", 0);
     item = psMetadataGet(NULL, 0);
     if ( item != NULL ) {
-        psError(PS_ERR_UNKNOWN, true,"psMetadataGet did not return NULL with null metadata structure.");
-        return 15;
-    }
-    printFooter(stdout, "psMetadata", "Test G - Attempt to use null metadata", true);
-
-
-    // Test H - Attempt to get non-existant metadata item
-    printNegativeTestHeader(stdout,"psMetadata", "Test H - Attempt to get non-existant metadata item",
+        psError(PS_ERR_UNKNOWN, true,"psMetadataGet did not return NULL with null metadata structure");
+        return 18;
+    }
+    printFooter(stdout, "psMetadata", "Test J - Attempt to use null metadata", true);
+
+
+    // Test K - Attempt to get non-existant metadata item
+    printNegativeTestHeader(stdout,"psMetadata", "Test K - Attempt to get non-existant metadata item",
                             "Couldn't find metadata item with given index. Index: 22", 0);
     if ( psMetadataGet(metadata, 22) != NULL ) {
-        psError(PS_ERR_UNKNOWN, true,"psMetadataGet did not return NULL with non-existant metadata item.");
-        return 16;
-    }
-    printFooter(stdout, "psMetadata", "Test H - Attempt to get non-existant metadata item", true);
-
-    // Test I - Attempt to look up with an invalid metadata object
-    printNegativeTestHeader(stdout,"psMetadata","Test I - Attemp to look up with an invalid metadata",
+        psError(PS_ERR_UNKNOWN, true,"psMetadataGet did not return NULL with non-existant metadata item");
+        return 19;
+    }
+    printFooter(stdout, "psMetadata", "Test K - Attempt to get non-existant metadata item", true);
+
+    // Test L - Attempt to look up with an invalid metadata object
+    printNegativeTestHeader(stdout,"psMetadata","Test L - Attemp to look up with an invalid metadata",
                             "Lookup item with invalid metadata object.", 0 );
     tmpTable = metadata->table;
     metadata->table = NULL;
     if ( psMetadataLookup(metadata,"myItem2") != NULL ) {
-        psError(PS_ERR_UNKNOWN, true,"psMetadataLookup did not return null for invalid metadata object.");
+        psError(PS_ERR_UNKNOWN, true,"psMetadataLookup did not return null for invalid metadata object");
         return 20;
     }
     metadata->table = tmpTable;
-    printFooter(stdout, "psMetadata","Test I - Attempt to lookup an invalid metadata object.",true);
-
-    // Test J - Attempt get item  with an invalid metadata object
-    printNegativeTestHeader(stdout,"psMetadata","Test J - Attemp to get item with an invalid metadata",
+    printFooter(stdout, "psMetadata","Test L - Attempt to lookup an invalid metadata object.",true);
+
+    // Test M - Attempt get item with an invalid metadata object
+    printNegativeTestHeader(stdout,"psMetadata","Test M - Attempt to get item with an invalid metadata",
                             "Get item with invalid metadata object.", 0 );
     tmpList = metadata->list;
     metadata->list = NULL;
     if ( psMetadataGet(metadata,0) != NULL ) {
-        psError(PS_ERR_UNKNOWN, true,"psMetadataLookup did not return null for invalid metadata object.");
-        return 20;
+        psError(PS_ERR_UNKNOWN, true,"psMetadataLookup did not return null for invalid metadata object");
+        return 21;
     }
     metadata->list = tmpList;
-    printFooter(stdout, "psMetadata","Test J - Attempt to get item with  invalid metadata object.",true);
-
-    // Test K - Free psMetadata
-    printPositiveTestHeader(stdout, "psMetadata", "Test K - Free psMetadata");
+    printFooter(stdout, "psMetadata","Test M - Attempt to get item with  invalid metadata object",true);
+
+    // Test N - Attempt get psS32 value of non-existant metadata item
+    printPositiveTestHeader(stdout, "psMetadata", "Test N - Attempt get psS32 value of non-existant metadata item");
+    status = 0;
+    valueS32 = psMetadataLookupS32(metadata, "myItem22", &status);
+    if(status != 1) {
+        printf("ERROR: Bad status, %d, \n", status);
+        return 22;
+    }
+    printFooter(stdout, "psMetadata","Test N - Attempt get psS32 value of non-existant metadata item",true);
+
+    // Test O - Attempt get psF64 value of non-existant metadata item
+    printPositiveTestHeader(stdout, "psMetadata", "Test O - Attempt get psF64 value of non-existant metadata item");
+    status = 0;
+    valueF64 = psMetadataLookupF64(metadata, "myItem22", &status);
+    if(status != 1) {
+        printf("ERROR: Bad status, %d, \n", status);
+        return 23;
+    }
+    printFooter(stdout, "psMetadata","Test O - Attempt get psF64 value of non-existant metadata item",true);
+
+    // Test P - Attempt get psVector value of non-existant metadata item
+    printPositiveTestHeader(stdout, "psMetadata", "Test P - Attempt get psVector value of non-existant metadata item");
+    status = 0;
+    valueVec = psMetadataLookupPtr(metadata, "myItem22", &status);
+    if(status != 1) {
+        printf("ERROR: Bad status, %d, \n", status);
+        return 24;
+    }
+    printFooter(stdout, "psMetadata","Test P - Attempt get psVector value of non-existant metadata item",true);
+
+    // Test Q - Free psMetadata
+    printPositiveTestHeader(stdout, "psMetadata", "Test Q - Free psMetadata");
     psFree(metadata);
     psFree(item1);
@@ -201,7 +286,9 @@
     psFree(item3);
     psFree(item4);
+    psFree(item5);
+    psFree(item6);
     if ( psMemCheckLeaks(0, NULL, stdout,false) != 0 ) {
         psError(PS_ERR_UNKNOWN, true,"memory leaks detected.");
-        return 20;
+        return 23;
     }
     psMemCheckCorruption(0);
@@ -209,7 +296,7 @@
     if(nBad) {
         printf("ERROR: Found %d bad memory blocks\n", nBad);
-        return 21;
-    }
-    printFooter(stdout, "psMetadata", "Test K - Free psMetadata", true);
+        return 24;
+    }
+    printFooter(stdout, "psMetadata", "Test Q - Free psMetadata", true);
 
 
