Index: /trunk/psLib/src/types/psMetadata.c
===================================================================
--- /trunk/psLib/src/types/psMetadata.c	(revision 5202)
+++ /trunk/psLib/src/types/psMetadata.c	(revision 5203)
@@ -12,6 +12,6 @@
  *  @author Ross Harman, MHPCC
  *
- *  @version $Revision: 1.86 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2005-09-29 23:30:32 $
+ *  @version $Revision: 1.87 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2005-09-30 01:34:45 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -183,4 +183,13 @@
 METADATAITEM_ALLOC_TYPE(S32,psS32,PS_DATA_S32)
 METADATAITEM_ALLOC_TYPE(Bool,psBool,PS_DATA_BOOL)
+
+psMetadataItem* psMetadataItemAllocPtr(const char *name,
+                                       psDataType type,
+                                       const char *comment,
+                                       psPtr value)
+{
+    return (psMetadataItemAlloc(name, type, comment, value));
+}
+
 
 psMetadataItem* psMetadataItemAllocV(const char *name,
@@ -465,4 +474,16 @@
 METADATA_ADD_TYPE(Array,psArray*,PS_DATA_ARRAY)
 METADATA_ADD_TYPE(Time,psTime*,PS_DATA_TIME)
+//METADATA_ADD_TYPE(Ptr,psPtr,PS_DATA_UNKNOWN)
+
+bool psMetadataAddPtr(psMetadata *md,
+                      long location,
+                      const char *name,
+                      psDataType type,
+                      const char *comment,
+                      psPtr value)
+{
+    return (psMetadataAdd(md, location, name, type, comment, value) );
+
+}
 
 bool psMetadataRemove(psMetadata *md,
Index: /trunk/psLib/src/types/psMetadata.h
===================================================================
--- /trunk/psLib/src/types/psMetadata.h	(revision 5202)
+++ /trunk/psLib/src/types/psMetadata.h	(revision 5203)
@@ -11,6 +11,6 @@
 *  @author Ross Harman, MHPCC
 *
-*  @version $Revision: 1.67 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2005-09-29 23:30:32 $
+*  @version $Revision: 1.68 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2005-09-30 01:34:45 $
 *
 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -212,4 +212,18 @@
 );
 
+/** Create a metadata item with specified psPtr data.
+ *
+ *  Returns a fill psMetadataItem ready for insertion into the psMetadata
+ *  struct.
+ *
+ * @return psMetadataItem* : Pointer metadata item.
+ */
+psMetadataItem* psMetadataItemAllocPtr(
+    const char* name,                  ///< Name of metadata item.
+    psDataType type,                   ///< Data type of metadata item.
+    const char* comment,               ///< Comment for metadata item.
+    psPtr value                        ///< the value of the metadata item.
+);
+
 #ifndef SWIG
 /** Create a metadata item with va_list.
@@ -472,4 +486,17 @@
 );
 
+/** Add a psPtr to metadata collection.
+ *
+ *  @return bool:  True for success, False for failure.
+ */
+psBool psMetadataAddPtr(
+    psMetadata* md,                    ///< Metadata collection to insert metadata item
+    long location,                     ///< Index number, PS_LIST_HEAD, or PS_LIST_TAIL
+    const char* name,                  ///< Name of metadata item
+    psDataType type,                   ///< psDataType for metadata item
+    const char* comment,               ///< Comment for metadata item
+    psPtr value                        ///< Unknown for metadata item data
+);
+
 /** Add Metadata to metadata collection.
  *
Index: /trunk/psLib/test/types/tst_psMetadata_07.c
===================================================================
--- /trunk/psLib/test/types/tst_psMetadata_07.c	(revision 5202)
+++ /trunk/psLib/test/types/tst_psMetadata_07.c	(revision 5203)
@@ -10,9 +10,10 @@
 *     Test E - psMetadataConfigWrite (also tests psMetadataConfigFormat)
 *     Test F - psMetadataRemoveKey, RemoveIndex
+*     Test G - psMetadataAddPtr, psMetadataItemAllocPtr
 *
 *  @author  David Robbins, MHPCC
 *
-*  @version $Revision: 1.9 $  $Name: not supported by cvs2svn $
-*  @date  $Date: 2005-09-29 23:30:32 $
+*  @version $Revision: 1.10 $  $Name: not supported by cvs2svn $
+*  @date  $Date: 2005-09-30 01:34:45 $
 *
 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -27,4 +28,5 @@
 static psS32 testMetaWrite(void);
 static psS32 testMetaRemove(void);
+static psS32 testMetaAddPtr(void);
 
 testDescription tests[] = {
@@ -32,4 +34,5 @@
                               {testMetaWrite, 0, "Test psMetadataConfigWrite", 0, false},
                               {testMetaRemove, 0, "Test psMetadataRemoveKey/Index", 0, false},
+                              {testMetaAddPtr, 0, "Test psMetadataAddPtr", 0, false},
                               {NULL}
                           };
@@ -156,2 +159,64 @@
     return 0;
 }
+
+psS32 testMetaAddPtr(void)
+{
+    bool status;
+    psVector *vecptr = NULL;
+    psVector *vecptr2 = NULL;
+    vecptr = psVectorAlloc(5, PS_TYPE_S32);
+    vecptr->data.S32[0] = 666;
+    psMetadata *md = NULL;
+    md = psMetadataAlloc();
+    psMetadataItem *item = NULL;
+    psMetadataItem *item2 = NULL;
+    item = psMetadataItemAllocPtr("itemptr", PS_DATA_STRING, "", "Devil String");
+    status = psMetadataAddPtr(md, PS_LIST_HEAD, "vecptr", PS_DATA_VECTOR,
+                              "this is a vector comment", vecptr);
+    if (!status) {
+        psError(PS_ERR_BAD_PARAMETER_VALUE, false,
+                "Unable to add psPtr (vector) to metadata.\n");
+        return 1;
+    }
+    status = false;
+    vecptr2 = (psVector*)psMetadataLookupPtr(&status, md, "vecptr");
+    if (!status) {
+        psError(PS_ERR_BAD_PARAMETER_VALUE, false,
+                "Unable to retrieve psPtr (vector) from metadata.\n");
+        return 2;
+    }
+    if (vecptr2->data.S32[0] != 666) {
+        psError(PS_ERR_BAD_PARAMETER_VALUE, false,
+                "Failed to retrieve correct psPtr (vector) from metadata.\n");
+        return 3;
+    }
+    status = false;
+    if (item == NULL) {
+        psError(PS_ERR_BAD_PARAMETER_VALUE, false,
+                "Unable to Alloc psPtr (string) metadata item .\n");
+        return 5;
+    }
+    if ( !psMetadataAddItem(md, item, PS_LIST_TAIL, 0) ) {
+        psError(PS_ERR_BAD_PARAMETER_VALUE, false,
+                "Unable to add psPtr (string) metadata item to metadata.\n");
+        return 6;
+    }
+    item2 = psMetadataGet(md, PS_LIST_TAIL);
+    if (item2 == NULL) {
+        psError(PS_ERR_BAD_PARAMETER_VALUE, false,
+                "Unable to retrieve psPtr (string) metadata item .\n");
+        return 7;
+    }
+    if ( strncmp((char*)item2->data.V, "Devil String", 20) ) {
+        psError(PS_ERR_BAD_PARAMETER_VALUE, false,
+                "Unable to retrieve correct psPtr (string) metadata item .\n");
+        printf("\n string = %s \n", (char*)item2->data.V);
+        return 8;
+    }
+
+    psFree(item);
+    psFree(vecptr);
+    psFree(md);
+    return 0;
+
+}
