Index: /trunk/psLib/src/astronomy/psAstronomyErrors.dat
===================================================================
--- /trunk/psLib/src/astronomy/psAstronomyErrors.dat	(revision 2647)
+++ /trunk/psLib/src/astronomy/psAstronomyErrors.dat	(revision 2648)
@@ -36,4 +36,5 @@
 #
 psMetadata_METATYPE_INVALID            Specified psMetadataType, %d, is not supported.
+psMetadata_METATYPE_MISMATCH           Specified psMetadataType, %d, is incorrect. Expected %d.
 psMetadata_ADD_LIST_FAILED             Failed to add metadata item, %s, to items list.
 psMetadata_ADD_TABLE_FAILED            Failed to add metadata item, %s, to items table.
Index: /trunk/psLib/src/astronomy/psAstronomyErrors.h
===================================================================
--- /trunk/psLib/src/astronomy/psAstronomyErrors.h	(revision 2647)
+++ /trunk/psLib/src/astronomy/psAstronomyErrors.h	(revision 2648)
@@ -7,6 +7,6 @@
  *  @author Robert DeSonia, MHPCC
  *
- *  @version $Revision: 1.7 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-12-03 23:14:13 $
+ *  @version $Revision: 1.8 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-12-07 19:09:18 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -56,4 +56,5 @@
 #define PS_ERRORTEXT_psAstrometry_NONLINEAR_TRANSFORM "The %s transfrom is not linear.  Only linear transforms are supported."
 #define PS_ERRORTEXT_psMetadata_METATYPE_INVALID "Specified psMetadataType, %d, is not supported."
+#define PS_ERRORTEXT_psMetadata_METATYPE_MISMATCH "Specified psMetadataType, %d, is incorrect. Expected %d."
 #define PS_ERRORTEXT_psMetadata_ADD_LIST_FAILED "Failed to add metadata item, %s, to items list."
 #define PS_ERRORTEXT_psMetadata_ADD_TABLE_FAILED "Failed to add metadata item, %s, to items table."
Index: /trunk/psLib/src/astronomy/psMetadata.c
===================================================================
--- /trunk/psLib/src/astronomy/psMetadata.c	(revision 2647)
+++ /trunk/psLib/src/astronomy/psMetadata.c	(revision 2648)
@@ -12,6 +12,6 @@
 *  @author Ross Harman, MHPCC
 *
-*  @version $Revision: 1.39 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-12-03 23:14:28 $
+*  @version $Revision: 1.40 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-12-07 19:09:05 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -218,5 +218,5 @@
 }
 
-psBool psMetadataAddItem(psMetadata *restrict md, psMetadataItem *restrict metadataItem, psS32 location)
+psBool psMetadataAddItem(psMetadata *md, psMetadataItem *metadataItem, psS32 location)
 {
     char * key = NULL;
@@ -328,5 +328,5 @@
 }
 
-psBool psMetadataAdd(psMetadata* restrict md, psS32 where, const char *name, psElemType pType,
+psBool psMetadataAdd(psMetadata *md, psS32 where, const char *name, psElemType pType,
                      psMetadataType type, const char *comment, ...)
 {
@@ -349,5 +349,5 @@
 }
 
-psBool psMetadataRemove(psMetadata* restrict md, psS32 where, const char *restrict key)
+psBool psMetadataRemove(psMetadata *md, psS32 where, const char *key)
 {
     psList* mdList = NULL;
@@ -421,5 +421,5 @@
 }
 
-psMetadataItem* psMetadataLookup(psMetadata* restrict md, const char *restrict key)
+psMetadataItem* psMetadataLookup(psMetadata *md, const char *key)
 {
     psHash* mdTable = NULL;
@@ -432,14 +432,67 @@
 
     mdTable = md->table;
-
     entry = (psMetadataItem*)psHashLookup(mdTable, key);
-    if (entry == NULL) {
-        return NULL;
-    }
 
     return entry;
 }
 
-psMetadataItem* psMetadataGet(psMetadata* restrict md, psS32 where)
+void* psMetadataLookupPtr(psMetadata *md, const char *key)
+{
+    void *value = NULL;
+    psElemType pType;
+    psMetadataItem *metadataItem = NULL;
+
+
+    metadataItem = psMetadataLookup(md, key);
+    PS_PTR_CHECK_NULL(metadataItem,NULL);
+    pType = metadataItem->pType;
+    value = metadataItem->data.V;
+    if(pType != PS_TYPE_PTR) {
+        psError(PS_ERR_BAD_PARAMETER_VALUE, true, PS_ERRORTEXT_psMetadata_METATYPE_MISMATCH, pType,
+                PS_TYPE_PTR);
+    }
+
+    return value;
+}
+
+psS32 psMetadataLookupS32(psMetadata *md, const char *key)
+{
+    psS32 value = 0;
+    psElemType pType;
+    psMetadataItem *metadataItem = NULL;
+
+
+    metadataItem = psMetadataLookup(md, key);
+    PS_PTR_CHECK_NULL(metadataItem,0);
+    pType = metadataItem->pType;
+    value = metadataItem->data.S32;
+    if(pType != PS_TYPE_S32) {
+        psError(PS_ERR_BAD_PARAMETER_VALUE, true, PS_ERRORTEXT_psMetadata_METATYPE_MISMATCH, pType,
+                PS_TYPE_S32);
+    }
+
+    return value;
+}
+
+psF64 psMetadataLookupF64(psMetadata *md, const char *key)
+{
+    psF64 value = 0.0;
+    psElemType pType;
+    psMetadataItem *metadataItem = NULL;
+
+
+    metadataItem = psMetadataLookup(md, key);
+    PS_PTR_CHECK_NULL(metadataItem,0.0);
+    pType = metadataItem->pType;
+    value = metadataItem->data.F64;
+    if(pType != PS_TYPE_F64) {
+        psError(PS_ERR_BAD_PARAMETER_VALUE, true, PS_ERRORTEXT_psMetadata_METATYPE_MISMATCH, pType,
+                PS_TYPE_F64);
+    }
+
+    return value;
+}
+
+psMetadataItem* psMetadataGet(psMetadata *md, psS32 where)
 {
     psMetadataItem* entry = NULL;
@@ -457,5 +510,5 @@
 }
 
-psBool psMetadataSetIterator(psMetadata* restrict md, psS32 where)
+psBool psMetadataSetIterator(psMetadata *md, psS32 where)
 {
     PS_PTR_CHECK_NULL(md,NULL);
@@ -467,5 +520,5 @@
 }
 
-psMetadataItem* psMetadataGetNext(psMetadata* restrict md, const char *restrict match, psS32 which)
+psMetadataItem* psMetadataGetNext(psMetadata *md, const char *match, psS32 which)
 {
     psList* mdList = NULL;
@@ -497,5 +550,5 @@
 }
 
-psMetadataItem* psMetadataGetPrevious(psMetadata* restrict md, const char *restrict match, psS32 which)
+psMetadataItem* psMetadataGetPrevious(psMetadata *md, const char *match, psS32 which)
 {
     psList* mdList = NULL;
Index: /trunk/psLib/src/astronomy/psMetadata.h
===================================================================
--- /trunk/psLib/src/astronomy/psMetadata.h	(revision 2647)
+++ /trunk/psLib/src/astronomy/psMetadata.h	(revision 2648)
@@ -11,6 +11,6 @@
 *  @author Ross Harman, MHPCC
 *
-*  @version $Revision: 1.27 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-12-03 23:14:34 $
+*  @version $Revision: 1.28 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-12-07 19:08:58 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -56,6 +56,6 @@
 typedef struct psMetadata
 {
-    psList* restrict list;             ///< the metadata in linked-list
-    psHash* restrict table;            ///< the metadata in a hash table
+    psList*  list;                     ///< Metadata in linked-list
+    psHash*  table;                    ///< Metadata in a hash table
 }
 psMetadata;
@@ -148,7 +148,7 @@
  */
 psBool psMetadataAddItem(
-    psMetadata* restrict md,           ///< Metadata collection to insert metadat item.
-    psMetadataItem* restrict item,     ///< Metadata item to be added.
-    psS32 location                     ///< Location to be added.
+    psMetadata*  md,          ///< Metadata collection to insert metadat item.
+    psMetadataItem*  item,    ///< Metadata item to be added.
+    psS32 location            ///< Location to be added.
 );
 
@@ -160,11 +160,11 @@
  */
 psBool psMetadataAdd(
-    psMetadata* restrict md,           ///< Metadata collection to insert metadat item.
-    psS32 where,                       ///< Location to be added.
-    const char *name,                  ///< Name of metadata item.
-    psElemType pType,                  ///< Primitive type.
-    psMetadataType type,               ///< Type of metadata item.
-    const char *comment,               ///< Comment for metadata item.
-    ...                                ///< Arguments for name formatting and metadata item data.
+    psMetadata* md,           ///< Metadata collection to insert metadat item.
+    psS32 where,              ///< Location to be added.
+    const char *name,         ///< Name of metadata item.
+    psElemType pType,         ///< Primitive type.
+    psMetadataType type,      ///< Type of metadata item.
+    const char *comment,      ///< Comment for metadata item.
+    ...                       ///< Arguments for name formatting and metadata item data.
 );
 
@@ -180,7 +180,7 @@
  */
 psBool psMetadataRemove(
-    psMetadata* restrict md,           ///< Metadata collection to insert metadat item.
-    psS32 where,                       ///< Location to be removed.
-    const char *restrict key           ///< Name of metadata key.
+    psMetadata*  md,           ///< Metadata collection to remove metadata item.
+    psS32 where,               ///< Location to be removed.
+    const char * key           ///< Name of metadata key.
 );
 
@@ -194,6 +194,45 @@
  */
 psMetadataItem* psMetadataLookup(
-    psMetadata* restrict md,           ///< Metadata collection to insert metadata item.
-    const char *restrict key           ///< Name of metadata key.
+    psMetadata * md,           ///< Metadata collection to lookup metadata item.
+    const char * key           ///< Name of metadata key.
+);
+
+/** Find an item in the metadata collection based on key name and return its double precision value.
+ *
+ *  Items may be found in the metadata by providing a key. If the key is
+ *  non-unique, the value of the first item is returned. If the item is not found, zero is
+ *  returned.
+ *
+ * @return psF64 : Value of metadata item.
+ */
+psF64 psMetadataLookupF64(
+    psMetadata *md,            ///< Metadata collection to lookup metadata item.
+    const char *key            ///< Name of metadata key.
+);
+
+/** Find an item in the metadata collection based on key name and return its integer value.
+ *
+ *  Items may be found in the metadata by providing a key. If the key is
+ *  non-unique, the value of the first item is returned. If the item is not found, zero is
+ *  returned.
+ *
+ * @return psS32 : Value of metadata item.
+ */
+psS32 psMetadataLookupS32(
+    psMetadata *md,            ///< Metadata collection to lookup metadata item.
+    const char *key            ///< Name of metadata key.
+);
+
+/** Find an item in the metadata collection based on key name and return its integer value.
+ *
+ *  Items may be found in the metadata by providing a key. If the key is
+ *  non-unique, the value of the first item is returned. If the item is not found, zero is
+ *  returned.
+ *
+ * @return void* : Value of metadata item.
+ */
+void* psMetadataLookupPtr(
+    psMetadata* md,            ///< Metadata collection to lookup metadata item.
+    const char *key            ///< Name of metadata key.
 );
 
@@ -206,6 +245,6 @@
  */
 psMetadataItem* psMetadataGet(
-    psMetadata* restrict md,           ///< Metadata collection to insert metadat item.
-    psS32 where                        ///< Location to be retrieved.
+    psMetadata*  md,           ///< Metadata collection to insert metadat item.
+    psS32 where                ///< Location to be retrieved.
 );
 
@@ -218,6 +257,6 @@
  */
 psBool psMetadataSetIterator(
-    psMetadata* restrict md,           ///< Metadata collection to iterate.
-    psS32 where                        ///< Location of iterator.
+    psMetadata*  md,           ///< Metadata collection to iterate.
+    psS32 where                ///< Location of iterator.
 );
 
@@ -229,7 +268,7 @@
  */
 psMetadataItem* psMetadataGetNext(
-    psMetadata* restrict md,           ///< Metadata collection to iterate.
-    const char *restrict match,        ///< Beginning of key name.
-    psS32 which                        ///< Iterator to be used.
+    psMetadata*  md,           ///< Metadata collection to iterate.
+    const char * match,        ///< Beginning of key name.
+    psS32 which                ///< Iterator to be used.
 );
 
@@ -241,7 +280,7 @@
  */
 psMetadataItem* psMetadataGetPrevious(
-    psMetadata* restrict md,           ///< Metadata collection to iterate.
-    const char *restrict match,        ///< Beginning of key name.
-    psS32 which                        ///< Iterator to be used.
+    psMetadata *md,            ///< Metadata collection to iterate.
+    const char *match,         ///< Beginning of key name.
+    psS32 which                ///< Iterator to be used.
 );
 
Index: /trunk/psLib/src/collections/psMetadata.c
===================================================================
--- /trunk/psLib/src/collections/psMetadata.c	(revision 2647)
+++ /trunk/psLib/src/collections/psMetadata.c	(revision 2648)
@@ -12,6 +12,6 @@
 *  @author Ross Harman, MHPCC
 *
-*  @version $Revision: 1.39 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-12-03 23:14:28 $
+*  @version $Revision: 1.40 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-12-07 19:09:05 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -218,5 +218,5 @@
 }
 
-psBool psMetadataAddItem(psMetadata *restrict md, psMetadataItem *restrict metadataItem, psS32 location)
+psBool psMetadataAddItem(psMetadata *md, psMetadataItem *metadataItem, psS32 location)
 {
     char * key = NULL;
@@ -328,5 +328,5 @@
 }
 
-psBool psMetadataAdd(psMetadata* restrict md, psS32 where, const char *name, psElemType pType,
+psBool psMetadataAdd(psMetadata *md, psS32 where, const char *name, psElemType pType,
                      psMetadataType type, const char *comment, ...)
 {
@@ -349,5 +349,5 @@
 }
 
-psBool psMetadataRemove(psMetadata* restrict md, psS32 where, const char *restrict key)
+psBool psMetadataRemove(psMetadata *md, psS32 where, const char *key)
 {
     psList* mdList = NULL;
@@ -421,5 +421,5 @@
 }
 
-psMetadataItem* psMetadataLookup(psMetadata* restrict md, const char *restrict key)
+psMetadataItem* psMetadataLookup(psMetadata *md, const char *key)
 {
     psHash* mdTable = NULL;
@@ -432,14 +432,67 @@
 
     mdTable = md->table;
-
     entry = (psMetadataItem*)psHashLookup(mdTable, key);
-    if (entry == NULL) {
-        return NULL;
-    }
 
     return entry;
 }
 
-psMetadataItem* psMetadataGet(psMetadata* restrict md, psS32 where)
+void* psMetadataLookupPtr(psMetadata *md, const char *key)
+{
+    void *value = NULL;
+    psElemType pType;
+    psMetadataItem *metadataItem = NULL;
+
+
+    metadataItem = psMetadataLookup(md, key);
+    PS_PTR_CHECK_NULL(metadataItem,NULL);
+    pType = metadataItem->pType;
+    value = metadataItem->data.V;
+    if(pType != PS_TYPE_PTR) {
+        psError(PS_ERR_BAD_PARAMETER_VALUE, true, PS_ERRORTEXT_psMetadata_METATYPE_MISMATCH, pType,
+                PS_TYPE_PTR);
+    }
+
+    return value;
+}
+
+psS32 psMetadataLookupS32(psMetadata *md, const char *key)
+{
+    psS32 value = 0;
+    psElemType pType;
+    psMetadataItem *metadataItem = NULL;
+
+
+    metadataItem = psMetadataLookup(md, key);
+    PS_PTR_CHECK_NULL(metadataItem,0);
+    pType = metadataItem->pType;
+    value = metadataItem->data.S32;
+    if(pType != PS_TYPE_S32) {
+        psError(PS_ERR_BAD_PARAMETER_VALUE, true, PS_ERRORTEXT_psMetadata_METATYPE_MISMATCH, pType,
+                PS_TYPE_S32);
+    }
+
+    return value;
+}
+
+psF64 psMetadataLookupF64(psMetadata *md, const char *key)
+{
+    psF64 value = 0.0;
+    psElemType pType;
+    psMetadataItem *metadataItem = NULL;
+
+
+    metadataItem = psMetadataLookup(md, key);
+    PS_PTR_CHECK_NULL(metadataItem,0.0);
+    pType = metadataItem->pType;
+    value = metadataItem->data.F64;
+    if(pType != PS_TYPE_F64) {
+        psError(PS_ERR_BAD_PARAMETER_VALUE, true, PS_ERRORTEXT_psMetadata_METATYPE_MISMATCH, pType,
+                PS_TYPE_F64);
+    }
+
+    return value;
+}
+
+psMetadataItem* psMetadataGet(psMetadata *md, psS32 where)
 {
     psMetadataItem* entry = NULL;
@@ -457,5 +510,5 @@
 }
 
-psBool psMetadataSetIterator(psMetadata* restrict md, psS32 where)
+psBool psMetadataSetIterator(psMetadata *md, psS32 where)
 {
     PS_PTR_CHECK_NULL(md,NULL);
@@ -467,5 +520,5 @@
 }
 
-psMetadataItem* psMetadataGetNext(psMetadata* restrict md, const char *restrict match, psS32 which)
+psMetadataItem* psMetadataGetNext(psMetadata *md, const char *match, psS32 which)
 {
     psList* mdList = NULL;
@@ -497,5 +550,5 @@
 }
 
-psMetadataItem* psMetadataGetPrevious(psMetadata* restrict md, const char *restrict match, psS32 which)
+psMetadataItem* psMetadataGetPrevious(psMetadata *md, const char *match, psS32 which)
 {
     psList* mdList = NULL;
Index: /trunk/psLib/src/collections/psMetadata.h
===================================================================
--- /trunk/psLib/src/collections/psMetadata.h	(revision 2647)
+++ /trunk/psLib/src/collections/psMetadata.h	(revision 2648)
@@ -11,6 +11,6 @@
 *  @author Ross Harman, MHPCC
 *
-*  @version $Revision: 1.27 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-12-03 23:14:34 $
+*  @version $Revision: 1.28 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-12-07 19:08:58 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -56,6 +56,6 @@
 typedef struct psMetadata
 {
-    psList* restrict list;             ///< the metadata in linked-list
-    psHash* restrict table;            ///< the metadata in a hash table
+    psList*  list;                     ///< Metadata in linked-list
+    psHash*  table;                    ///< Metadata in a hash table
 }
 psMetadata;
@@ -148,7 +148,7 @@
  */
 psBool psMetadataAddItem(
-    psMetadata* restrict md,           ///< Metadata collection to insert metadat item.
-    psMetadataItem* restrict item,     ///< Metadata item to be added.
-    psS32 location                     ///< Location to be added.
+    psMetadata*  md,          ///< Metadata collection to insert metadat item.
+    psMetadataItem*  item,    ///< Metadata item to be added.
+    psS32 location            ///< Location to be added.
 );
 
@@ -160,11 +160,11 @@
  */
 psBool psMetadataAdd(
-    psMetadata* restrict md,           ///< Metadata collection to insert metadat item.
-    psS32 where,                       ///< Location to be added.
-    const char *name,                  ///< Name of metadata item.
-    psElemType pType,                  ///< Primitive type.
-    psMetadataType type,               ///< Type of metadata item.
-    const char *comment,               ///< Comment for metadata item.
-    ...                                ///< Arguments for name formatting and metadata item data.
+    psMetadata* md,           ///< Metadata collection to insert metadat item.
+    psS32 where,              ///< Location to be added.
+    const char *name,         ///< Name of metadata item.
+    psElemType pType,         ///< Primitive type.
+    psMetadataType type,      ///< Type of metadata item.
+    const char *comment,      ///< Comment for metadata item.
+    ...                       ///< Arguments for name formatting and metadata item data.
 );
 
@@ -180,7 +180,7 @@
  */
 psBool psMetadataRemove(
-    psMetadata* restrict md,           ///< Metadata collection to insert metadat item.
-    psS32 where,                       ///< Location to be removed.
-    const char *restrict key           ///< Name of metadata key.
+    psMetadata*  md,           ///< Metadata collection to remove metadata item.
+    psS32 where,               ///< Location to be removed.
+    const char * key           ///< Name of metadata key.
 );
 
@@ -194,6 +194,45 @@
  */
 psMetadataItem* psMetadataLookup(
-    psMetadata* restrict md,           ///< Metadata collection to insert metadata item.
-    const char *restrict key           ///< Name of metadata key.
+    psMetadata * md,           ///< Metadata collection to lookup metadata item.
+    const char * key           ///< Name of metadata key.
+);
+
+/** Find an item in the metadata collection based on key name and return its double precision value.
+ *
+ *  Items may be found in the metadata by providing a key. If the key is
+ *  non-unique, the value of the first item is returned. If the item is not found, zero is
+ *  returned.
+ *
+ * @return psF64 : Value of metadata item.
+ */
+psF64 psMetadataLookupF64(
+    psMetadata *md,            ///< Metadata collection to lookup metadata item.
+    const char *key            ///< Name of metadata key.
+);
+
+/** Find an item in the metadata collection based on key name and return its integer value.
+ *
+ *  Items may be found in the metadata by providing a key. If the key is
+ *  non-unique, the value of the first item is returned. If the item is not found, zero is
+ *  returned.
+ *
+ * @return psS32 : Value of metadata item.
+ */
+psS32 psMetadataLookupS32(
+    psMetadata *md,            ///< Metadata collection to lookup metadata item.
+    const char *key            ///< Name of metadata key.
+);
+
+/** Find an item in the metadata collection based on key name and return its integer value.
+ *
+ *  Items may be found in the metadata by providing a key. If the key is
+ *  non-unique, the value of the first item is returned. If the item is not found, zero is
+ *  returned.
+ *
+ * @return void* : Value of metadata item.
+ */
+void* psMetadataLookupPtr(
+    psMetadata* md,            ///< Metadata collection to lookup metadata item.
+    const char *key            ///< Name of metadata key.
 );
 
@@ -206,6 +245,6 @@
  */
 psMetadataItem* psMetadataGet(
-    psMetadata* restrict md,           ///< Metadata collection to insert metadat item.
-    psS32 where                        ///< Location to be retrieved.
+    psMetadata*  md,           ///< Metadata collection to insert metadat item.
+    psS32 where                ///< Location to be retrieved.
 );
 
@@ -218,6 +257,6 @@
  */
 psBool psMetadataSetIterator(
-    psMetadata* restrict md,           ///< Metadata collection to iterate.
-    psS32 where                        ///< Location of iterator.
+    psMetadata*  md,           ///< Metadata collection to iterate.
+    psS32 where                ///< Location of iterator.
 );
 
@@ -229,7 +268,7 @@
  */
 psMetadataItem* psMetadataGetNext(
-    psMetadata* restrict md,           ///< Metadata collection to iterate.
-    const char *restrict match,        ///< Beginning of key name.
-    psS32 which                        ///< Iterator to be used.
+    psMetadata*  md,           ///< Metadata collection to iterate.
+    const char * match,        ///< Beginning of key name.
+    psS32 which                ///< Iterator to be used.
 );
 
@@ -241,7 +280,7 @@
  */
 psMetadataItem* psMetadataGetPrevious(
-    psMetadata* restrict md,           ///< Metadata collection to iterate.
-    const char *restrict match,        ///< Beginning of key name.
-    psS32 which                        ///< Iterator to be used.
+    psMetadata *md,            ///< Metadata collection to iterate.
+    const char *match,         ///< Beginning of key name.
+    psS32 which                ///< Iterator to be used.
 );
 
Index: /trunk/psLib/src/types/psMetadata.c
===================================================================
--- /trunk/psLib/src/types/psMetadata.c	(revision 2647)
+++ /trunk/psLib/src/types/psMetadata.c	(revision 2648)
@@ -12,6 +12,6 @@
 *  @author Ross Harman, MHPCC
 *
-*  @version $Revision: 1.39 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-12-03 23:14:28 $
+*  @version $Revision: 1.40 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-12-07 19:09:05 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -218,5 +218,5 @@
 }
 
-psBool psMetadataAddItem(psMetadata *restrict md, psMetadataItem *restrict metadataItem, psS32 location)
+psBool psMetadataAddItem(psMetadata *md, psMetadataItem *metadataItem, psS32 location)
 {
     char * key = NULL;
@@ -328,5 +328,5 @@
 }
 
-psBool psMetadataAdd(psMetadata* restrict md, psS32 where, const char *name, psElemType pType,
+psBool psMetadataAdd(psMetadata *md, psS32 where, const char *name, psElemType pType,
                      psMetadataType type, const char *comment, ...)
 {
@@ -349,5 +349,5 @@
 }
 
-psBool psMetadataRemove(psMetadata* restrict md, psS32 where, const char *restrict key)
+psBool psMetadataRemove(psMetadata *md, psS32 where, const char *key)
 {
     psList* mdList = NULL;
@@ -421,5 +421,5 @@
 }
 
-psMetadataItem* psMetadataLookup(psMetadata* restrict md, const char *restrict key)
+psMetadataItem* psMetadataLookup(psMetadata *md, const char *key)
 {
     psHash* mdTable = NULL;
@@ -432,14 +432,67 @@
 
     mdTable = md->table;
-
     entry = (psMetadataItem*)psHashLookup(mdTable, key);
-    if (entry == NULL) {
-        return NULL;
-    }
 
     return entry;
 }
 
-psMetadataItem* psMetadataGet(psMetadata* restrict md, psS32 where)
+void* psMetadataLookupPtr(psMetadata *md, const char *key)
+{
+    void *value = NULL;
+    psElemType pType;
+    psMetadataItem *metadataItem = NULL;
+
+
+    metadataItem = psMetadataLookup(md, key);
+    PS_PTR_CHECK_NULL(metadataItem,NULL);
+    pType = metadataItem->pType;
+    value = metadataItem->data.V;
+    if(pType != PS_TYPE_PTR) {
+        psError(PS_ERR_BAD_PARAMETER_VALUE, true, PS_ERRORTEXT_psMetadata_METATYPE_MISMATCH, pType,
+                PS_TYPE_PTR);
+    }
+
+    return value;
+}
+
+psS32 psMetadataLookupS32(psMetadata *md, const char *key)
+{
+    psS32 value = 0;
+    psElemType pType;
+    psMetadataItem *metadataItem = NULL;
+
+
+    metadataItem = psMetadataLookup(md, key);
+    PS_PTR_CHECK_NULL(metadataItem,0);
+    pType = metadataItem->pType;
+    value = metadataItem->data.S32;
+    if(pType != PS_TYPE_S32) {
+        psError(PS_ERR_BAD_PARAMETER_VALUE, true, PS_ERRORTEXT_psMetadata_METATYPE_MISMATCH, pType,
+                PS_TYPE_S32);
+    }
+
+    return value;
+}
+
+psF64 psMetadataLookupF64(psMetadata *md, const char *key)
+{
+    psF64 value = 0.0;
+    psElemType pType;
+    psMetadataItem *metadataItem = NULL;
+
+
+    metadataItem = psMetadataLookup(md, key);
+    PS_PTR_CHECK_NULL(metadataItem,0.0);
+    pType = metadataItem->pType;
+    value = metadataItem->data.F64;
+    if(pType != PS_TYPE_F64) {
+        psError(PS_ERR_BAD_PARAMETER_VALUE, true, PS_ERRORTEXT_psMetadata_METATYPE_MISMATCH, pType,
+                PS_TYPE_F64);
+    }
+
+    return value;
+}
+
+psMetadataItem* psMetadataGet(psMetadata *md, psS32 where)
 {
     psMetadataItem* entry = NULL;
@@ -457,5 +510,5 @@
 }
 
-psBool psMetadataSetIterator(psMetadata* restrict md, psS32 where)
+psBool psMetadataSetIterator(psMetadata *md, psS32 where)
 {
     PS_PTR_CHECK_NULL(md,NULL);
@@ -467,5 +520,5 @@
 }
 
-psMetadataItem* psMetadataGetNext(psMetadata* restrict md, const char *restrict match, psS32 which)
+psMetadataItem* psMetadataGetNext(psMetadata *md, const char *match, psS32 which)
 {
     psList* mdList = NULL;
@@ -497,5 +550,5 @@
 }
 
-psMetadataItem* psMetadataGetPrevious(psMetadata* restrict md, const char *restrict match, psS32 which)
+psMetadataItem* psMetadataGetPrevious(psMetadata *md, const char *match, psS32 which)
 {
     psList* mdList = NULL;
Index: /trunk/psLib/src/types/psMetadata.h
===================================================================
--- /trunk/psLib/src/types/psMetadata.h	(revision 2647)
+++ /trunk/psLib/src/types/psMetadata.h	(revision 2648)
@@ -11,6 +11,6 @@
 *  @author Ross Harman, MHPCC
 *
-*  @version $Revision: 1.27 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-12-03 23:14:34 $
+*  @version $Revision: 1.28 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-12-07 19:08:58 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -56,6 +56,6 @@
 typedef struct psMetadata
 {
-    psList* restrict list;             ///< the metadata in linked-list
-    psHash* restrict table;            ///< the metadata in a hash table
+    psList*  list;                     ///< Metadata in linked-list
+    psHash*  table;                    ///< Metadata in a hash table
 }
 psMetadata;
@@ -148,7 +148,7 @@
  */
 psBool psMetadataAddItem(
-    psMetadata* restrict md,           ///< Metadata collection to insert metadat item.
-    psMetadataItem* restrict item,     ///< Metadata item to be added.
-    psS32 location                     ///< Location to be added.
+    psMetadata*  md,          ///< Metadata collection to insert metadat item.
+    psMetadataItem*  item,    ///< Metadata item to be added.
+    psS32 location            ///< Location to be added.
 );
 
@@ -160,11 +160,11 @@
  */
 psBool psMetadataAdd(
-    psMetadata* restrict md,           ///< Metadata collection to insert metadat item.
-    psS32 where,                       ///< Location to be added.
-    const char *name,                  ///< Name of metadata item.
-    psElemType pType,                  ///< Primitive type.
-    psMetadataType type,               ///< Type of metadata item.
-    const char *comment,               ///< Comment for metadata item.
-    ...                                ///< Arguments for name formatting and metadata item data.
+    psMetadata* md,           ///< Metadata collection to insert metadat item.
+    psS32 where,              ///< Location to be added.
+    const char *name,         ///< Name of metadata item.
+    psElemType pType,         ///< Primitive type.
+    psMetadataType type,      ///< Type of metadata item.
+    const char *comment,      ///< Comment for metadata item.
+    ...                       ///< Arguments for name formatting and metadata item data.
 );
 
@@ -180,7 +180,7 @@
  */
 psBool psMetadataRemove(
-    psMetadata* restrict md,           ///< Metadata collection to insert metadat item.
-    psS32 where,                       ///< Location to be removed.
-    const char *restrict key           ///< Name of metadata key.
+    psMetadata*  md,           ///< Metadata collection to remove metadata item.
+    psS32 where,               ///< Location to be removed.
+    const char * key           ///< Name of metadata key.
 );
 
@@ -194,6 +194,45 @@
  */
 psMetadataItem* psMetadataLookup(
-    psMetadata* restrict md,           ///< Metadata collection to insert metadata item.
-    const char *restrict key           ///< Name of metadata key.
+    psMetadata * md,           ///< Metadata collection to lookup metadata item.
+    const char * key           ///< Name of metadata key.
+);
+
+/** Find an item in the metadata collection based on key name and return its double precision value.
+ *
+ *  Items may be found in the metadata by providing a key. If the key is
+ *  non-unique, the value of the first item is returned. If the item is not found, zero is
+ *  returned.
+ *
+ * @return psF64 : Value of metadata item.
+ */
+psF64 psMetadataLookupF64(
+    psMetadata *md,            ///< Metadata collection to lookup metadata item.
+    const char *key            ///< Name of metadata key.
+);
+
+/** Find an item in the metadata collection based on key name and return its integer value.
+ *
+ *  Items may be found in the metadata by providing a key. If the key is
+ *  non-unique, the value of the first item is returned. If the item is not found, zero is
+ *  returned.
+ *
+ * @return psS32 : Value of metadata item.
+ */
+psS32 psMetadataLookupS32(
+    psMetadata *md,            ///< Metadata collection to lookup metadata item.
+    const char *key            ///< Name of metadata key.
+);
+
+/** Find an item in the metadata collection based on key name and return its integer value.
+ *
+ *  Items may be found in the metadata by providing a key. If the key is
+ *  non-unique, the value of the first item is returned. If the item is not found, zero is
+ *  returned.
+ *
+ * @return void* : Value of metadata item.
+ */
+void* psMetadataLookupPtr(
+    psMetadata* md,            ///< Metadata collection to lookup metadata item.
+    const char *key            ///< Name of metadata key.
 );
 
@@ -206,6 +245,6 @@
  */
 psMetadataItem* psMetadataGet(
-    psMetadata* restrict md,           ///< Metadata collection to insert metadat item.
-    psS32 where                        ///< Location to be retrieved.
+    psMetadata*  md,           ///< Metadata collection to insert metadat item.
+    psS32 where                ///< Location to be retrieved.
 );
 
@@ -218,6 +257,6 @@
  */
 psBool psMetadataSetIterator(
-    psMetadata* restrict md,           ///< Metadata collection to iterate.
-    psS32 where                        ///< Location of iterator.
+    psMetadata*  md,           ///< Metadata collection to iterate.
+    psS32 where                ///< Location of iterator.
 );
 
@@ -229,7 +268,7 @@
  */
 psMetadataItem* psMetadataGetNext(
-    psMetadata* restrict md,           ///< Metadata collection to iterate.
-    const char *restrict match,        ///< Beginning of key name.
-    psS32 which                        ///< Iterator to be used.
+    psMetadata*  md,           ///< Metadata collection to iterate.
+    const char * match,        ///< Beginning of key name.
+    psS32 which                ///< Iterator to be used.
 );
 
@@ -241,7 +280,7 @@
  */
 psMetadataItem* psMetadataGetPrevious(
-    psMetadata* restrict md,           ///< Metadata collection to iterate.
-    const char *restrict match,        ///< Beginning of key name.
-    psS32 which                        ///< Iterator to be used.
+    psMetadata *md,            ///< Metadata collection to iterate.
+    const char *match,         ///< Beginning of key name.
+    psS32 which                ///< Iterator to be used.
 );
 
