Index: trunk/ippdb/src/ippdb.c
===================================================================
--- trunk/ippdb/src/ippdb.c	(revision 10155)
+++ trunk/ippdb/src/ippdb.c	(revision 10238)
@@ -20,5 +20,5 @@
 /*
  *
- * This file was generated by glueforge 0.31
+ * This file was generated by glueforge 0.32
  *
  * Do NOT directly edit this file.
@@ -60,6 +60,4 @@
 #define DETNORMALIZEDIMFILE_TABLE_NAME "detNormalizedImfile"
 #define DETNORMALIZEDEXP_TABLE_NAME "detNormalizedExp"
-#define DETMASTERFRAME_TABLE_NAME "detMasterFrame"
-#define DETMASTERIMFILE_TABLE_NAME "detMasterImfile"
 #define DETRESIDIMFILE_TABLE_NAME "detResidImfile"
 #define DETRESIDEXP_TABLE_NAME "detResidExp"
@@ -542,12 +540,9 @@
         return false;
     }
-    psTime* dateobs = psTimeFromISO("", PS_TIME_UTC);
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, dateobs)) {
-        psFree(dateobs);
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, NULL)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
         psFree(md);
         return false;
     }
-    psFree(dateobs);
     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_type", PS_DATA_STRING, NULL, "64")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_type");
@@ -2718,12 +2713,9 @@
         return false;
     }
-    psTime* dateobs = psTimeFromISO("", PS_TIME_UTC);
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, dateobs)) {
-        psFree(dateobs);
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, NULL)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
         psFree(md);
         return false;
     }
-    psFree(dateobs);
     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_type", PS_DATA_STRING, NULL, "64")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_type");
@@ -3519,12 +3511,9 @@
         return false;
     }
-    psTime* dateobs = psTimeFromISO("0001-01-01T00:00:00", PS_TIME_UTC);
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, dateobs)) {
-        psFree(dateobs);
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, NULL)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
         psFree(md);
         return false;
     }
-    psFree(dateobs);
 
     bool status = psDBCreateTable(dbh, RAWDETRENDEXP_TABLE_NAME, md);
@@ -4165,12 +4154,9 @@
         return false;
     }
-    psTime* dateobs = psTimeFromISO("0001-01-01T00:00:00", PS_TIME_UTC);
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, dateobs)) {
-        psFree(dateobs);
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, NULL)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
         psFree(md);
         return false;
     }
-    psFree(dateobs);
 
     bool status = psDBCreateTable(dbh, RAWSCIENCEEXP_TABLE_NAME, md);
@@ -4812,12 +4798,9 @@
         return false;
     }
-    psTime* dateobs = psTimeFromISO("0001-01-01T00:00:00", PS_TIME_UTC);
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, dateobs)) {
-        psFree(dateobs);
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, NULL)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
         psFree(md);
         return false;
     }
-    psFree(dateobs);
 
     bool status = psDBCreateTable(dbh, RAWIMFILE_TABLE_NAME, md);
@@ -8657,28 +8640,19 @@
         return false;
     }
-    psTime* registered = psTimeFromISO("0001-01-01T00:00:00", PS_TIME_TAI);
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "registered", PS_DATA_TIME, NULL, registered)) {
-        psFree(registered);
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "registered", PS_DATA_TIME, NULL, NULL)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item registered");
         psFree(md);
         return false;
     }
-    psFree(registered);
-    psTime* use_begin = psTimeFromISO("0001-01-01T00:00:00", PS_TIME_TAI);
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "use_begin", PS_DATA_TIME, NULL, use_begin)) {
-        psFree(use_begin);
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "use_begin", PS_DATA_TIME, NULL, NULL)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item use_begin");
         psFree(md);
         return false;
     }
-    psFree(use_begin);
-    psTime* use_end = psTimeFromISO("0001-01-01T00:00:00", PS_TIME_TAI);
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "use_end", PS_DATA_TIME, NULL, use_end)) {
-        psFree(use_end);
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "use_end", PS_DATA_TIME, NULL, NULL)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item use_end");
         psFree(md);
         return false;
     }
-    psFree(use_end);
 
     bool status = psDBCreateTable(dbh, DETRUN_TABLE_NAME, md);
@@ -11875,629 +11849,4 @@
     return true;
 }
-static void detMasterFrameRowFree(detMasterFrameRow *object);
-
-detMasterFrameRow *detMasterFrameRowAlloc(psS32 det_id, psS32 iteration, const char *comment)
-{
-    detMasterFrameRow *_object;
-
-    _object = psAlloc(sizeof(detMasterFrameRow));
-    psMemSetDeallocator(_object, (psFreeFunc)detMasterFrameRowFree);
-
-    _object->det_id = det_id;
-    _object->iteration = iteration;
-    _object->comment = psStringCopy(comment);
-
-    return _object;
-}
-
-static void detMasterFrameRowFree(detMasterFrameRow *object)
-{
-    psFree(object->comment);
-}
-
-bool detMasterFrameCreateTable(psDB *dbh)
-{
-    psMetadata *md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S32, "Primary Key", 0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key", 0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "comment", PS_DATA_STRING, NULL, "255")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item comment");
-        psFree(md);
-        return false;
-    }
-
-    bool status = psDBCreateTable(dbh, DETMASTERFRAME_TABLE_NAME, md);
-
-    psFree(md);
-
-    return status;
-}
-
-bool detMasterFrameDropTable(psDB *dbh)
-{
-    return psDBDropTable(dbh, DETMASTERFRAME_TABLE_NAME);
-}
-
-bool detMasterFrameInsert(psDB * dbh, psS32 det_id, psS32 iteration, const char *comment)
-{
-    psMetadata *md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S32, NULL, det_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, NULL, iteration)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "comment", PS_DATA_STRING, NULL, comment)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item comment");
-        psFree(md);
-        return false;
-    }
-
-    bool status = psDBInsertOneRow(dbh, DETMASTERFRAME_TABLE_NAME, md);
-    psFree(md);
-
-    return status;
-}
-
-long long detMasterFrameDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
-{
-    long long       deleted = 0;
-
-    long long count = psDBDeleteRows(dbh, DETMASTERFRAME_TABLE_NAME, where, limit);
-    if (count < 0) {
-        psError(PS_ERR_UNKNOWN, true, "failed to delete row from detMasterFrame");
-        return count;
-
-        deleted += count;
-    }
-
-    return deleted;
-}
-bool detMasterFrameInsertObject(psDB *dbh, detMasterFrameRow *object)
-{
-    return detMasterFrameInsert(dbh, object->det_id, object->iteration, object->comment);
-}
-
-bool detMasterFrameInsertObjects(psDB *dbh, psArray *objects)
-{
-    for (long i = 0; i < psArrayLength(objects); i++) {
-        if (!detMasterFrameInsertObject(dbh, objects->data[i])) {
-            return false;
-        }
-    }
-
-    return true;
-}
-
-bool detMasterFrameInsertFits(psDB *dbh, const psFits *fits)
-{
-    psArray         *rowSet;
-
-    // move to (the first?) extension named  DETMASTERFRAME_TABLE_NAME
-    if (!psFitsMoveExtName(fits, DETMASTERFRAME_TABLE_NAME)) {
-        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", DETMASTERFRAME_TABLE_NAME);
-        return false;
-    }
-
-    // check HDU type
-    if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
-        psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
-        return false;
-    }
-
-    // read fits table
-    rowSet = psFitsReadTable(fits);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
-        psFree(rowSet);
-        return false;
-    }
-
-    if (!psDBInsertRows(dbh, DETMASTERFRAME_TABLE_NAME, rowSet)) {
-        psError(PS_ERR_UNKNOWN, false, "databse insert failed");
-        psFree(rowSet);
-        return false;
-    }
-
-    psFree(rowSet);
-
-    return true;
-}
-
-bool detMasterFrameSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
-{
-    psArray         *rowSet;
-
-    rowSet = psDBSelectRows(dbh, DETMASTERFRAME_TABLE_NAME, where, limit);
-    if (!rowSet) {
-        return false;
-    }
-
-    // output to fits
-    if (!psFitsWriteTable(fits, NULL, rowSet, DETMASTERFRAME_TABLE_NAME)) {
-        psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
-        psFree(rowSet);
-        return false;
-    }
-
-    psFree(rowSet);
-
-    return true;
-}
-
-psMetadata *detMasterFrameMetadataFromObject(const detMasterFrameRow *object)
-{
-    psMetadata *md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S32, NULL, object->det_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, NULL, object->iteration)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "comment", PS_DATA_STRING, NULL, object->comment)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item comment");
-        psFree(md);
-        return false;
-    }
-
-
-    return md;
-}
-
-detMasterFrameRow *detMasterFrameObjectFromMetadata(psMetadata *md)
-{
-
-bool status = false;
-    psS32 det_id = psMetadataLookupS32(&status, md, "det_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
-        return false;
-    }
-    psS32 iteration = psMetadataLookupS32(&status, md, "iteration");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item iteration");
-        return false;
-    }
-    char* comment = psMetadataLookupPtr(&status, md, "comment");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item comment");
-        return false;
-    }
-
-    return detMasterFrameRowAlloc(det_id, iteration, comment);
-}
-psArray *detMasterFrameSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
-{
-    psArray         *rowSet;
-    psArray         *returnSet;
-    psU64           i;
-
-    rowSet = psDBSelectRows(dbh, DETMASTERFRAME_TABLE_NAME, where, limit);
-    if (!rowSet) {
-        return NULL;
-    }
-
-    // convert psMetadata rows to row objects
-
-    returnSet = psArrayAllocEmpty(rowSet->n);
-
-    for (i = 0; i < rowSet->n; i++) {
-        detMasterFrameRow *object = detMasterFrameObjectFromMetadata(rowSet->data[i]);
-        psArrayAdd(returnSet, 0, object);
-        psFree(object);
-    }
-
-    psFree(rowSet);
-
-    return returnSet;
-}
-bool detMasterFrameDeleteObject(psDB *dbh, const detMasterFrameRow *object)
-{
-    psMetadata *where = detMasterFrameMetadataFromObject(object);
-    long long count = psDBDeleteRows(dbh, DETMASTERFRAME_TABLE_NAME, where, 0);
-    psFree(where)
-    if (count < 0) {
-        psError(PS_ERR_UNKNOWN, true, "failed to delete row from detMasterFrame");
-        return false;
-    }
-    if (count > 1) {
-        // XXX should this be a psAbort() instead?  It is possible that
-        // having an object match multiple rows was by design.
-        psError(PS_ERR_UNKNOWN, true, "detMasterFrameRow object matched more then one row.  Check your database schema");
-        return false;
-    }
-
-    return true;
-}
-long long detMasterFrameDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
-{
-    long long       deleted = 0;
-
-    for (long long i = 0; i < objects->n; i++) {
-        detMasterFrameRow *object = objects->data[i];
-        psMetadata *where = detMasterFrameMetadataFromObject(object);
-        long long count = psDBDeleteRows(dbh, DETMASTERFRAME_TABLE_NAME, where, limit);
-        psFree(where)
-        if (count < 0) {
-            psError(PS_ERR_UNKNOWN, true, "failed to delete row from detMasterFrame");
-            return count;
-        }
-
-        deleted += count;
-    }
-
-    return deleted;
-}
-bool detMasterFramePrintObjects(FILE *stream, psArray *objects, bool mdcf)
-{
-    PS_ASSERT_PTR_NON_NULL(objects, false);
-
-    psMetadata *output = psMetadataAlloc();
-    for (long i = 0; i < psArrayLength(objects); i++) {
-        psMetadata *md = detMasterFrameMetadataFromObject(objects->data[i]);
-        if (!psMetadataAddMetadata(
-            output,
-            PS_LIST_TAIL,
-            DETMASTERFRAME_TABLE_NAME,
-            PS_META_DUPLICATE_OK,
-            NULL,
-            md
-        )) {
-            psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
-            psFree(md);
-            psFree(output);
-            return false;
-        }
-        psFree(md);
-    }
-
-    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
-        psFree(output);
-    }
-    psFree(output);
-
-    return true;
-}
-static void detMasterImfileRowFree(detMasterImfileRow *object);
-
-detMasterImfileRow *detMasterImfileRowAlloc(psS32 det_id, const char *class_id, const char *uri, const char *recipe)
-{
-    detMasterImfileRow *_object;
-
-    _object = psAlloc(sizeof(detMasterImfileRow));
-    psMemSetDeallocator(_object, (psFreeFunc)detMasterImfileRowFree);
-
-    _object->det_id = det_id;
-    _object->class_id = psStringCopy(class_id);
-    _object->uri = psStringCopy(uri);
-    _object->recipe = psStringCopy(recipe);
-
-    return _object;
-}
-
-static void detMasterImfileRowFree(detMasterImfileRow *object)
-{
-    psFree(object->class_id);
-    psFree(object->uri);
-    psFree(object->recipe);
-}
-
-bool detMasterImfileCreateTable(psDB *dbh)
-{
-    psMetadata *md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S32, "Primary Key", 0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, "Primary Key", "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, "255")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "recipe", PS_DATA_STRING, NULL, "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item recipe");
-        psFree(md);
-        return false;
-    }
-
-    bool status = psDBCreateTable(dbh, DETMASTERIMFILE_TABLE_NAME, md);
-
-    psFree(md);
-
-    return status;
-}
-
-bool detMasterImfileDropTable(psDB *dbh)
-{
-    return psDBDropTable(dbh, DETMASTERIMFILE_TABLE_NAME);
-}
-
-bool detMasterImfileInsert(psDB * dbh, psS32 det_id, const char *class_id, const char *uri, const char *recipe)
-{
-    psMetadata *md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S32, NULL, det_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, class_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "recipe", PS_DATA_STRING, NULL, recipe)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item recipe");
-        psFree(md);
-        return false;
-    }
-
-    bool status = psDBInsertOneRow(dbh, DETMASTERIMFILE_TABLE_NAME, md);
-    psFree(md);
-
-    return status;
-}
-
-long long detMasterImfileDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
-{
-    long long       deleted = 0;
-
-    long long count = psDBDeleteRows(dbh, DETMASTERIMFILE_TABLE_NAME, where, limit);
-    if (count < 0) {
-        psError(PS_ERR_UNKNOWN, true, "failed to delete row from detMasterImfile");
-        return count;
-
-        deleted += count;
-    }
-
-    return deleted;
-}
-bool detMasterImfileInsertObject(psDB *dbh, detMasterImfileRow *object)
-{
-    return detMasterImfileInsert(dbh, object->det_id, object->class_id, object->uri, object->recipe);
-}
-
-bool detMasterImfileInsertObjects(psDB *dbh, psArray *objects)
-{
-    for (long i = 0; i < psArrayLength(objects); i++) {
-        if (!detMasterImfileInsertObject(dbh, objects->data[i])) {
-            return false;
-        }
-    }
-
-    return true;
-}
-
-bool detMasterImfileInsertFits(psDB *dbh, const psFits *fits)
-{
-    psArray         *rowSet;
-
-    // move to (the first?) extension named  DETMASTERIMFILE_TABLE_NAME
-    if (!psFitsMoveExtName(fits, DETMASTERIMFILE_TABLE_NAME)) {
-        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", DETMASTERIMFILE_TABLE_NAME);
-        return false;
-    }
-
-    // check HDU type
-    if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
-        psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
-        return false;
-    }
-
-    // read fits table
-    rowSet = psFitsReadTable(fits);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
-        psFree(rowSet);
-        return false;
-    }
-
-    if (!psDBInsertRows(dbh, DETMASTERIMFILE_TABLE_NAME, rowSet)) {
-        psError(PS_ERR_UNKNOWN, false, "databse insert failed");
-        psFree(rowSet);
-        return false;
-    }
-
-    psFree(rowSet);
-
-    return true;
-}
-
-bool detMasterImfileSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
-{
-    psArray         *rowSet;
-
-    rowSet = psDBSelectRows(dbh, DETMASTERIMFILE_TABLE_NAME, where, limit);
-    if (!rowSet) {
-        return false;
-    }
-
-    // output to fits
-    if (!psFitsWriteTable(fits, NULL, rowSet, DETMASTERIMFILE_TABLE_NAME)) {
-        psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
-        psFree(rowSet);
-        return false;
-    }
-
-    psFree(rowSet);
-
-    return true;
-}
-
-psMetadata *detMasterImfileMetadataFromObject(const detMasterImfileRow *object)
-{
-    psMetadata *md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S32, NULL, object->det_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, object->class_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "recipe", PS_DATA_STRING, NULL, object->recipe)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item recipe");
-        psFree(md);
-        return false;
-    }
-
-
-    return md;
-}
-
-detMasterImfileRow *detMasterImfileObjectFromMetadata(psMetadata *md)
-{
-
-bool status = false;
-    psS32 det_id = psMetadataLookupS32(&status, md, "det_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
-        return false;
-    }
-    char* class_id = psMetadataLookupPtr(&status, md, "class_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class_id");
-        return false;
-    }
-    char* uri = psMetadataLookupPtr(&status, md, "uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
-        return false;
-    }
-    char* recipe = psMetadataLookupPtr(&status, md, "recipe");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item recipe");
-        return false;
-    }
-
-    return detMasterImfileRowAlloc(det_id, class_id, uri, recipe);
-}
-psArray *detMasterImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
-{
-    psArray         *rowSet;
-    psArray         *returnSet;
-    psU64           i;
-
-    rowSet = psDBSelectRows(dbh, DETMASTERIMFILE_TABLE_NAME, where, limit);
-    if (!rowSet) {
-        return NULL;
-    }
-
-    // convert psMetadata rows to row objects
-
-    returnSet = psArrayAllocEmpty(rowSet->n);
-
-    for (i = 0; i < rowSet->n; i++) {
-        detMasterImfileRow *object = detMasterImfileObjectFromMetadata(rowSet->data[i]);
-        psArrayAdd(returnSet, 0, object);
-        psFree(object);
-    }
-
-    psFree(rowSet);
-
-    return returnSet;
-}
-bool detMasterImfileDeleteObject(psDB *dbh, const detMasterImfileRow *object)
-{
-    psMetadata *where = detMasterImfileMetadataFromObject(object);
-    long long count = psDBDeleteRows(dbh, DETMASTERIMFILE_TABLE_NAME, where, 0);
-    psFree(where)
-    if (count < 0) {
-        psError(PS_ERR_UNKNOWN, true, "failed to delete row from detMasterImfile");
-        return false;
-    }
-    if (count > 1) {
-        // XXX should this be a psAbort() instead?  It is possible that
-        // having an object match multiple rows was by design.
-        psError(PS_ERR_UNKNOWN, true, "detMasterImfileRow object matched more then one row.  Check your database schema");
-        return false;
-    }
-
-    return true;
-}
-long long detMasterImfileDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
-{
-    long long       deleted = 0;
-
-    for (long long i = 0; i < objects->n; i++) {
-        detMasterImfileRow *object = objects->data[i];
-        psMetadata *where = detMasterImfileMetadataFromObject(object);
-        long long count = psDBDeleteRows(dbh, DETMASTERIMFILE_TABLE_NAME, where, limit);
-        psFree(where)
-        if (count < 0) {
-            psError(PS_ERR_UNKNOWN, true, "failed to delete row from detMasterImfile");
-            return count;
-        }
-
-        deleted += count;
-    }
-
-    return deleted;
-}
-bool detMasterImfilePrintObjects(FILE *stream, psArray *objects, bool mdcf)
-{
-    PS_ASSERT_PTR_NON_NULL(objects, false);
-
-    psMetadata *output = psMetadataAlloc();
-    for (long i = 0; i < psArrayLength(objects); i++) {
-        psMetadata *md = detMasterImfileMetadataFromObject(objects->data[i]);
-        if (!psMetadataAddMetadata(
-            output,
-            PS_LIST_TAIL,
-            DETMASTERIMFILE_TABLE_NAME,
-            PS_META_DUPLICATE_OK,
-            NULL,
-            md
-        )) {
-            psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
-            psFree(md);
-            psFree(output);
-            return false;
-        }
-        psFree(md);
-    }
-
-    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
-        psFree(output);
-    }
-    psFree(output);
-
-    return true;
-}
 static void detResidImfileRowFree(detResidImfileRow *object);
 
