Index: /trunk/glueforge/templates/psdb/popobject.tt
===================================================================
--- /trunk/glueforge/templates/psdb/popobject.tt	(revision 4163)
+++ /trunk/glueforge/templates/psdb/popobject.tt	(revision 4164)
@@ -3,30 +3,21 @@
 [% object_name %] *[% namespace %]PopObject(psDB *dbh)
 {
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
     bool            status;
-    int             rowID;
     [% indented(object_name, "*object") %];
+[% FOREACH item = columns -%]
+[% IF item.type == "STR" -%]
+    [% indented("char", "$item.name[256]") %];
+[% ELSE-%]
+    [% indented("$item.ctype", "$item.name") %];
+[% END -%]
+[% END -%]
 
-    rowSet = psDBSelectRows(dbh, [% namespace FILTER upper %]_TABLE_NAME, NULL, 1);
-    row = psArrayGet(rowSet, 0);
-    if (!row) {
-        // psError(); error or table is empty
-        return NULL;
-    }
-
-    rowID = psMetadataLookupS32(&status, row, "position");
+    status = [% namespace %]Pop(dbh, 
+[%- SET i = 0 -%]
+[% FOREACH item = columns -%]
+[% IF i == 0 %][% i = 1 %][% ELSE %], [% END -%]
+&[% item.name -%]
+[% END %]);
     if (!status) {
-        // psError(); something bad happened
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, "position", NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, [% namespace FILTER upper %]_TABLE_NAME, popped);
-    if (deleted != 1) {
         // psError(); something bad happened
         return NULL;
@@ -36,10 +27,8 @@
 
 [% FOREACH item = columns -%]
-[% IF item.type == "S32" or item.type == "F32" or item.type == "F64" -%]
-    object->[% item.name %] = psMetadataLookup[% item.type %](&status, row, "[% item.name %]");
-[% ELSIF item.type == "STR" -%]
-    object->[% item.name %] = psMetadataLookupPtr(&status, row, "[% item.name %]");
-[% ELSIF item.type == "BOOL" -%]
-    object->[% item.name %] = psMetadataLookupBool(&status, row, "[% item.name %]");
+[% IF item.type == "STR" -%]
+    object->[% item.name %] = psStringCopy([% item.name %]);
+[% ELSE -%]
+    object->[% item.name %] = [% item.name %];
 [% END -%]
 [% END -%]
