Index: /trunk/glueforge/glueforge.in
===================================================================
--- /trunk/glueforge/glueforge.in	(revision 4331)
+++ /trunk/glueforge/glueforge.in	(revision 4332)
@@ -3,5 +3,5 @@
 # Copyright (C) 2005  Joshua Hoblitt
 #
-# $Id: glueforge.in,v 1.21 2005-06-21 02:14:47 jhoblitt Exp $
+# $Id: glueforge.in,v 1.22 2005-06-21 03:44:53 jhoblitt Exp $
 
 use strict;
@@ -105,4 +105,5 @@
     'popfits_c.tt'          => "$output/tests/popfits.c",
     'selectrowsfits_c.tt'   => "$output/tests/selectrowsfits.c",
+    'metadatafromobject_c.tt' => "$output/tests/metadatafromobject.c",
 );
 
Index: /trunk/glueforge/templates/psdb/code.tt
===================================================================
--- /trunk/glueforge/templates/psdb/code.tt	(revision 4331)
+++ /trunk/glueforge/templates/psdb/code.tt	(revision 4332)
@@ -16,3 +16,4 @@
 [% INCLUDE insertfits.tt %]
 [% INCLUDE popfits.tt %]
-[% INCLUDE selectrowsfits.tt -%]
+[% INCLUDE selectrowsfits.tt %]
+[% INCLUDE metadatafromobject.tt -%]
Index: /trunk/glueforge/templates/psdb/metadatafromobject.tt
===================================================================
--- /trunk/glueforge/templates/psdb/metadatafromobject.tt	(revision 4332)
+++ /trunk/glueforge/templates/psdb/metadatafromobject.tt	(revision 4332)
@@ -0,0 +1,21 @@
+psMetadata *[% namespace %]MetadataFromObject(const [% object_name %] *object)
+{
+    psMetadata      *md;
+
+    md = psMetadataAlloc();
+[% FOREACH item = columns -%]
+[% IF item.type == "S32" or item.type == "F32" or item.type == "F64" -%]
+    if (!psMetadataAdd[% item.type %](md, PS_LIST_TAIL, "[% item.name %]", NULL, object->[% item.name %])) {
+[% ELSIF item.type == "STR" -%]
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "[% item.name %]", NULL, psStringCopy(object->[% item.name %]))) {
+[% ELSIF item.type == "BOOL" -%]
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "[% item.name %]", PS_META_BOOL, NULL, object->[% item.name %])) {
+[% END -%]
+        // psError(); something bad happened
+        psFree(md);
+        return NULL;
+    }
+[% END -%]
+
+    return md;
+}
Index: /trunk/glueforge/templates/psdb/metadatafromobject_at.tt
===================================================================
--- /trunk/glueforge/templates/psdb/metadatafromobject_at.tt	(revision 4332)
+++ /trunk/glueforge/templates/psdb/metadatafromobject_at.tt	(revision 4332)
@@ -0,0 +1,6 @@
+AT_SETUP([[% object_name %]MetadataFromObject() - Convert a [% object_name %] into an equivalent psMetadata])
+AT_KEYWORDS([[% object_name %]MetadataFromObject])
+
+AT_CHECK([metadatafromobject])
+
+AT_CLEANUP
Index: /trunk/glueforge/templates/psdb/metadatafromobject_c.tt
===================================================================
--- /trunk/glueforge/templates/psdb/metadatafromobject_c.tt	(revision 4332)
+++ /trunk/glueforge/templates/psdb/metadatafromobject_c.tt	(revision 4332)
@@ -0,0 +1,31 @@
+[% USE format -%]
+[% indented = format('%-15s %s') -%]
+#include <pslib.h>
+#include <[% pkg_name %].h>
+#include <stdlib.h>
+
+int main ()
+{
+    psMetadata      *md;
+    [% indented(object_name, "*object") %];
+
+    object = [% object_name %]Alloc(
+[%- SET i = 0 -%]
+[%- FOREACH item = columns -%]
+    [%- IF i == 0 -%][%- i = 1 -%][%- ELSE -%], [% END -%] [%- item.test -%]
+[%- END -%]
+);
+    if (!object) {
+        exit(EXIT_FAILURE);
+    }
+
+    md = [% namespace %]MetadataFromObject(object);
+    if (!md) {
+        exit(EXIT_FAILURE);
+    }
+
+    psFree(md);
+    psFree(object);
+
+    exit(EXIT_SUCCESS);
+}
Index: /trunk/glueforge/templates/psdb/tests_makefile_am.tt
===================================================================
--- /trunk/glueforge/templates/psdb/tests_makefile_am.tt	(revision 4331)
+++ /trunk/glueforge/templates/psdb/tests_makefile_am.tt	(revision 4332)
@@ -56,5 +56,6 @@
     insertfits \
     popfits \
-    selectrowsfits
+    selectrowsfits \
+    metadatafromobject
 
 AM_CPPFLAGS = -I$(top_srcdir)/src$
Index: /trunk/glueforge/templates/psdb/testsuite_at.tt
===================================================================
--- /trunk/glueforge/templates/psdb/testsuite_at.tt	(revision 4331)
+++ /trunk/glueforge/templates/psdb/testsuite_at.tt	(revision 4332)
@@ -28,2 +28,4 @@
 [% INCLUDE selectrowsfits_at.tt %]
 ###
+[% INCLUDE metadatafromobject_at.tt %]
+###
