Index: /trunk/glueforge/configure.ac
===================================================================
--- /trunk/glueforge/configure.ac	(revision 10682)
+++ /trunk/glueforge/configure.ac	(revision 10683)
@@ -1,5 +1,5 @@
 AC_PREREQ(2.59)
 
-AC_INIT([glueforge], [0.35], [jhoblitt@cpan.org])
+AC_INIT([glueforge], [0.36], [jhoblitt@cpan.org])
 AC_CONFIG_SRCDIR([glueforge.in])
 
Index: /trunk/glueforge/templates/psdb/Makefile.am
===================================================================
--- /trunk/glueforge/templates/psdb/Makefile.am	(revision 10682)
+++ /trunk/glueforge/templates/psdb/Makefile.am	(revision 10683)
@@ -73,4 +73,6 @@
     printmetadatasraw.tt \
     printmetadatasraw_h.tt \
+    printobject.tt \
+    printobject_h.tt \
     printobjects.tt \
     printobjects_h.tt \
Index: /trunk/glueforge/templates/psdb/code.tt
===================================================================
--- /trunk/glueforge/templates/psdb/code.tt	(revision 10682)
+++ /trunk/glueforge/templates/psdb/code.tt	(revision 10683)
@@ -58,3 +58,4 @@
 [% INCLUDE deleterowobjects.tt -%]
 [% INCLUDE printobjects.tt -%]
+[% INCLUDE printobject.tt -%]
 [% END -%]
Index: /trunk/glueforge/templates/psdb/header.tt
===================================================================
--- /trunk/glueforge/templates/psdb/header.tt	(revision 10682)
+++ /trunk/glueforge/templates/psdb/header.tt	(revision 10683)
@@ -61,4 +61,5 @@
 [% INCLUDE deleterowobjects_h.tt -%]
 [% INCLUDE printobjects_h.tt -%]
+[% INCLUDE printobject_h.tt -%]
 [% END -%]
 
Index: /trunk/glueforge/templates/psdb/printobject.tt
===================================================================
--- /trunk/glueforge/templates/psdb/printobject.tt	(revision 10683)
+++ /trunk/glueforge/templates/psdb/printobject.tt	(revision 10683)
@@ -0,0 +1,15 @@
+bool [% table.namespace %]PrintObject(FILE *stream, [% table.object_name %] *object, bool mdcf)
+{
+    PS_ASSERT_PTR_NON_NULL(object, false);
+
+    psMetadata *md = [% table.namespace %]MetadataFromObject(object);
+
+    if (![% pkg_namespace %]PrintMetadataRaw(stream, md, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
+        psFree(md);
+    }
+
+    psFree(md);
+
+    return true;
+}
Index: /trunk/glueforge/templates/psdb/printobject_h.tt
===================================================================
--- /trunk/glueforge/templates/psdb/printobject_h.tt	(revision 10683)
+++ /trunk/glueforge/templates/psdb/printobject_h.tt	(revision 10683)
@@ -0,0 +1,13 @@
+/** Formats and prints an [% table.object_name %] object
+ *
+ * When mdcf is set the formated output is in psMetadataConfig
+ * format, otherwise it is in a simple tabular format.
+ *
+ * @return true on success
+ */
+
+bool [% table.namespace %]PrintObject(
+    FILE            *stream,            ///< a stream
+    [% table.object_name %] *object,    ///< an [% table.object_name %] object
+    bool            mdcf                ///< format as mdconfig or simple
+);
