IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 15420


Ignore:
Timestamp:
Oct 30, 2007, 4:42:05 PM (19 years ago)
Author:
jhoblitt
Message:

update

Location:
trunk/ippdb
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippdb/Makefile.am

    r15343 r15420  
    1010man_MANS = \
    1111    $(top_builddir)/docs/man/man3/ippdb.3 \
    12     $(top_builddir)/docs/man/man3/pzDataStoreRow.3 \
    1312    $(top_builddir)/docs/man/man3/summitExpRow.3 \
    1413    $(top_builddir)/docs/man/man3/summitImfileRow.3 \
     
    2322    $(top_builddir)/docs/man/man3/guidePendingExpRow.3 \
    2423    $(top_builddir)/docs/man/man3/chipRunRow.3 \
     24    $(top_builddir)/docs/man/man3/chipInputImfileRow.3 \
    2525    $(top_builddir)/docs/man/man3/chipProcessedImfileRow.3 \
    2626    $(top_builddir)/docs/man/man3/chipMaskRow.3 \
     
    4848    $(top_builddir)/docs/man/man3/detResidImfileRow.3 \
    4949    $(top_builddir)/docs/man/man3/detResidExpRow.3 \
    50     $(top_builddir)/docs/man/man3/detRunSummaryRow.3 \
    51     $(top_builddir)/docs/man/man3/detRegisteredImfileRow.3 \
    52     $(top_builddir)/docs/man/man3/detCorrectedExpRow.3 \
    53     $(top_builddir)/docs/man/man3/detCorrectedImfileRow.3 \
    54     $(top_builddir)/docs/man/man3/magicRunRow.3 \
    55     $(top_builddir)/docs/man/man3/magicInputSkyfileRow.3 \
    56     $(top_builddir)/docs/man/man3/magicTreeRow.3 \
    57     $(top_builddir)/docs/man/man3/magicNodeResultRow.3 \
    58     $(top_builddir)/docs/man/man3/magicMaskRow.3 \
    59     $(top_builddir)/docs/man/man3/magicSkyfileMaskRow.3
     50    $(top_builddir)/docs/man/man3/detRunSummaryRow.3
    6051
    6152
    62 docs/man/man3/ippdb.3 docs/man/man3/pzDataStoreRow.3 docs/man/man3/summitExpRow.3 docs/man/man3/summitImfileRow.3 docs/man/man3/pzPendingExpRow.3 docs/man/man3/pzPendingImfileRow.3 docs/man/man3/pzDoneExpRow.3 docs/man/man3/pzDoneImfileRow.3 docs/man/man3/newExpRow.3 docs/man/man3/newImfileRow.3 docs/man/man3/rawExpRow.3 docs/man/man3/rawImfileRow.3 docs/man/man3/guidePendingExpRow.3 docs/man/man3/chipRunRow.3 docs/man/man3/chipProcessedImfileRow.3 docs/man/man3/chipMaskRow.3 docs/man/man3/camRunRow.3 docs/man/man3/camProcessedExpRow.3 docs/man/man3/camMaskRow.3 docs/man/man3/warpRunRow.3 docs/man/man3/warpInputExpRow.3 docs/man/man3/warpSkyCellMapRow.3 docs/man/man3/warpSkyfileRow.3 docs/man/man3/diffRunRow.3 docs/man/man3/diffInputSkyfileRow.3 docs/man/man3/diffSkyfileRow.3 docs/man/man3/stackRunRow.3 docs/man/man3/stackInputSkyfileRow.3 docs/man/man3/stackSumSkyfileRow.3 docs/man/man3/detRunRow.3 docs/man/man3/detInputExpRow.3 docs/man/man3/detProcessedImfileRow.3 docs/man/man3/detProcessedExpRow.3 docs/man/man3/detStackedImfileRow.3 docs/man/man3/detNormalizedStatImfileRow.3 docs/man/man3/detNormalizedImfileRow.3 docs/man/man3/detNormalizedExpRow.3 docs/man/man3/detResidImfileRow.3 docs/man/man3/detResidExpRow.3 docs/man/man3/detRunSummaryRow.3 docs/man/man3/detRegisteredImfileRow.3 docs/man/man3/detCorrectedExpRow.3 docs/man/man3/detCorrectedImfileRow.3 docs/man/man3/magicRunRow.3 docs/man/man3/magicInputSkyfileRow.3 docs/man/man3/magicTreeRow.3 docs/man/man3/magicNodeResultRow.3 docs/man/man3/magicMaskRow.3 docs/man/man3/magicSkyfileMaskRow.3:
     53docs/man/man3/ippdb.3 docs/man/man3/summitExpRow.3 docs/man/man3/summitImfileRow.3 docs/man/man3/pzPendingExpRow.3 docs/man/man3/pzPendingImfileRow.3 docs/man/man3/pzDoneExpRow.3 docs/man/man3/pzDoneImfileRow.3 docs/man/man3/newExpRow.3 docs/man/man3/newImfileRow.3 docs/man/man3/rawExpRow.3 docs/man/man3/rawImfileRow.3 docs/man/man3/guidePendingExpRow.3 docs/man/man3/chipRunRow.3 docs/man/man3/chipInputImfileRow.3 docs/man/man3/chipProcessedImfileRow.3 docs/man/man3/chipMaskRow.3 docs/man/man3/camRunRow.3 docs/man/man3/camProcessedExpRow.3 docs/man/man3/camMaskRow.3 docs/man/man3/warpRunRow.3 docs/man/man3/warpInputExpRow.3 docs/man/man3/warpSkyCellMapRow.3 docs/man/man3/warpSkyfileRow.3 docs/man/man3/diffRunRow.3 docs/man/man3/diffInputSkyfileRow.3 docs/man/man3/diffSkyfileRow.3 docs/man/man3/stackRunRow.3 docs/man/man3/stackInputSkyfileRow.3 docs/man/man3/stackSumSkyfileRow.3 docs/man/man3/detRunRow.3 docs/man/man3/detInputExpRow.3 docs/man/man3/detProcessedImfileRow.3 docs/man/man3/detProcessedExpRow.3 docs/man/man3/detStackedImfileRow.3 docs/man/man3/detNormalizedStatImfileRow.3 docs/man/man3/detNormalizedImfileRow.3 docs/man/man3/detNormalizedExpRow.3 docs/man/man3/detResidImfileRow.3 docs/man/man3/detResidExpRow.3 docs/man/man3/detRunSummaryRow.3:
    6354        $(DOXYGEN)
    6455
  • trunk/ippdb/configure.ac

    r15344 r15420  
    11dnl
    2 dnl This file was generated by glueforge 1.01
     2dnl This file was generated by glueforge 1.03
    33dnl
    44dnl Do NOT directly edit this file.
     
    77AC_PREREQ(2.61)
    88
    9 AC_INIT([ippdb], [1.1.28], [pan-starrs.ifa.hawaii.edu])
     9AC_INIT([ippdb], [1.1.23], [pan-starrs.ifa.hawaii.edu])
    1010AC_CONFIG_SRCDIR([ippdb.pc.in])
    1111
  • trunk/ippdb/src/ippdb.c

    r15344 r15420  
    2020/*
    2121 *
    22  * This file was generated by glueforge 1.01
     22 * This file was generated by glueforge 1.03
    2323 *
    2424 * Do NOT directly edit this file.
     
    3131#include "ippdb.h"
    3232
    33 #define PZDATASTORE_TABLE_NAME "pzDataStore"
    3433#define SUMMITEXP_TABLE_NAME "summitExp"
    3534#define SUMMITIMFILE_TABLE_NAME "summitImfile"
     
    4443#define GUIDEPENDINGEXP_TABLE_NAME "guidePendingExp"
    4544#define CHIPRUN_TABLE_NAME "chipRun"
     45#define CHIPINPUTIMFILE_TABLE_NAME "chipInputImfile"
    4646#define CHIPPROCESSEDIMFILE_TABLE_NAME "chipProcessedImfile"
    4747#define CHIPMASK_TABLE_NAME "chipMask"
     
    7070#define DETRESIDEXP_TABLE_NAME "detResidExp"
    7171#define DETRUNSUMMARY_TABLE_NAME "detRunSummary"
    72 #define DETREGISTEREDIMFILE_TABLE_NAME "detRegisteredImfile"
    73 #define DETCORRECTEDEXP_TABLE_NAME "detCorrectedExp"
    74 #define DETCORRECTEDIMFILE_TABLE_NAME "detCorrectedImfile"
    75 #define MAGICRUN_TABLE_NAME "magicRun"
    76 #define MAGICINPUTSKYFILE_TABLE_NAME "magicInputSkyfile"
    77 #define MAGICTREE_TABLE_NAME "magicTree"
    78 #define MAGICNODERESULT_TABLE_NAME "magicNodeResult"
    79 #define MAGICMASK_TABLE_NAME "magicMask"
    80 #define MAGICSKYFILEMASK_TABLE_NAME "magicSkyfileMask"
    8172#define MAX_STRING_LENGTH 1024
    8273
     
    255246}
    256247
    257 static void pzDataStoreRowFree(pzDataStoreRow *object);
    258 
    259 pzDataStoreRow *pzDataStoreRowAlloc(const char *camera, const char *telescope, const char *uri)
    260 {
    261     pzDataStoreRow  *_object;
    262 
    263     _object = psAlloc(sizeof(pzDataStoreRow));
    264     psMemSetDeallocator(_object, (psFreeFunc)pzDataStoreRowFree);
    265 
    266     _object->camera = psStringCopy(camera);
    267     _object->telescope = psStringCopy(telescope);
    268     _object->uri = psStringCopy(uri);
    269 
    270     return _object;
    271 }
    272 
    273 static void pzDataStoreRowFree(pzDataStoreRow *object)
    274 {
    275     psFree(object->camera);
    276     psFree(object->telescope);
    277     psFree(object->uri);
    278 }
    279 
    280 bool pzDataStoreCreateTable(psDB *dbh)
    281 {
    282     psMetadata *md = psMetadataAlloc();
    283     if (!psMetadataAdd(md, PS_LIST_TAIL, "camera", PS_DATA_STRING, "Primary Key", "64")) {
    284         psError(PS_ERR_UNKNOWN, false, "failed to add item camera");
    285         psFree(md);
    286         return false;
    287     }
    288     if (!psMetadataAdd(md, PS_LIST_TAIL, "telescope", PS_DATA_STRING, "Primary Key", "64")) {
    289         psError(PS_ERR_UNKNOWN, false, "failed to add item telescope");
    290         psFree(md);
    291         return false;
    292     }
    293     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, "255")) {
    294         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    295         psFree(md);
    296         return false;
    297     }
    298 
    299     bool status = psDBCreateTable(dbh, PZDATASTORE_TABLE_NAME, md);
    300 
    301     psFree(md);
    302 
    303     return status;
    304 }
    305 
    306 bool pzDataStoreDropTable(psDB *dbh)
    307 {
    308     return psDBDropTable(dbh, PZDATASTORE_TABLE_NAME);
    309 }
    310 
    311 bool pzDataStoreInsert(psDB * dbh, const char *camera, const char *telescope, const char *uri)
    312 {
    313     psMetadata *md = psMetadataAlloc();
    314     if (!psMetadataAdd(md, PS_LIST_TAIL, "camera", PS_DATA_STRING, NULL, camera)) {
    315         psError(PS_ERR_UNKNOWN, false, "failed to add item camera");
    316         psFree(md);
    317         return false;
    318     }
    319     if (!psMetadataAdd(md, PS_LIST_TAIL, "telescope", PS_DATA_STRING, NULL, telescope)) {
    320         psError(PS_ERR_UNKNOWN, false, "failed to add item telescope");
    321         psFree(md);
    322         return false;
    323     }
    324     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) {
    325         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    326         psFree(md);
    327         return false;
    328     }
    329 
    330     bool status = psDBInsertOneRow(dbh, PZDATASTORE_TABLE_NAME, md);
    331     psFree(md);
    332 
    333     return status;
    334 }
    335 
    336 long long pzDataStoreDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
    337 {
    338     long long       deleted = 0;
    339 
    340     long long count = psDBDeleteRows(dbh, PZDATASTORE_TABLE_NAME, where, limit);
    341     if (count < 0) {
    342         psError(PS_ERR_UNKNOWN, true, "failed to delete row from pzDataStore");
    343         return count;
    344 
    345         deleted += count;
    346     }
    347 
    348     return deleted;
    349 }
    350 bool pzDataStoreInsertObject(psDB *dbh, pzDataStoreRow *object)
    351 {
    352     return pzDataStoreInsert(dbh, object->camera, object->telescope, object->uri);
    353 }
    354 
    355 bool pzDataStoreInsertObjects(psDB *dbh, psArray *objects)
    356 {
    357     for (long i = 0; i < psArrayLength(objects); i++) {
    358         if (!pzDataStoreInsertObject(dbh, objects->data[i])) {
    359             return false;
    360         }
    361     }
    362 
    363     return true;
    364 }
    365 
    366 bool pzDataStoreInsertFits(psDB *dbh, const psFits *fits)
    367 {
    368     psArray         *rowSet;
    369 
    370     // move to (the first?) extension named  PZDATASTORE_TABLE_NAME
    371     if (!psFitsMoveExtName(fits, PZDATASTORE_TABLE_NAME)) {
    372         psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", PZDATASTORE_TABLE_NAME);
    373         return false;
    374     }
    375 
    376     // check HDU type
    377     if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
    378         psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
    379         return false;
    380     }
    381 
    382     // read fits table
    383     rowSet = psFitsReadTable(fits);
    384     if (!rowSet) {
    385         psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
    386         psFree(rowSet);
    387         return false;
    388     }
    389 
    390     if (!psDBInsertRows(dbh, PZDATASTORE_TABLE_NAME, rowSet)) {
    391         psError(PS_ERR_UNKNOWN, false, "databse insert failed");
    392         psFree(rowSet);
    393         return false;
    394     }
    395 
    396     psFree(rowSet);
    397 
    398     return true;
    399 }
    400 
    401 bool pzDataStoreSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
    402 {
    403     psArray         *rowSet;
    404 
    405     rowSet = psDBSelectRows(dbh, PZDATASTORE_TABLE_NAME, where, limit);
    406     if (!rowSet) {
    407         return false;
    408     }
    409 
    410     // output to fits
    411     if (!psFitsWriteTable(fits, NULL, rowSet, PZDATASTORE_TABLE_NAME)) {
    412         psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
    413         psFree(rowSet);
    414         return false;
    415     }
    416 
    417     psFree(rowSet);
    418 
    419     return true;
    420 }
    421 
    422 psMetadata *pzDataStoreMetadataFromObject(const pzDataStoreRow *object)
    423 {
    424     psMetadata *md = psMetadataAlloc();
    425     if (!psMetadataAdd(md, PS_LIST_TAIL, "camera", PS_DATA_STRING, NULL, object->camera)) {
    426         psError(PS_ERR_UNKNOWN, false, "failed to add item camera");
    427         psFree(md);
    428         return false;
    429     }
    430     if (!psMetadataAdd(md, PS_LIST_TAIL, "telescope", PS_DATA_STRING, NULL, object->telescope)) {
    431         psError(PS_ERR_UNKNOWN, false, "failed to add item telescope");
    432         psFree(md);
    433         return false;
    434     }
    435     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) {
    436         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    437         psFree(md);
    438         return false;
    439     }
    440 
    441 
    442     return md;
    443 }
    444 
    445 pzDataStoreRow *pzDataStoreObjectFromMetadata(psMetadata *md)
    446 {
    447 
    448 bool status = false;
    449     char* camera = psMetadataLookupPtr(&status, md, "camera");
    450     if (!status) {
    451         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item camera");
    452         return false;
    453     }
    454     char* telescope = psMetadataLookupPtr(&status, md, "telescope");
    455     if (!status) {
    456         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item telescope");
    457         return false;
    458     }
    459     char* uri = psMetadataLookupPtr(&status, md, "uri");
    460     if (!status) {
    461         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
    462         return false;
    463     }
    464 
    465     return pzDataStoreRowAlloc(camera, telescope, uri);
    466 }
    467 psArray *pzDataStoreSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
    468 {
    469     psArray         *rowSet;
    470     psArray         *returnSet;
    471     psU64           i;
    472 
    473     rowSet = psDBSelectRows(dbh, PZDATASTORE_TABLE_NAME, where, limit);
    474     if (!rowSet) {
    475         return NULL;
    476     }
    477 
    478     // convert psMetadata rows to row objects
    479 
    480     returnSet = psArrayAllocEmpty(rowSet->n);
    481 
    482     for (i = 0; i < rowSet->n; i++) {
    483         pzDataStoreRow *object = pzDataStoreObjectFromMetadata(rowSet->data[i]);
    484         psArrayAdd(returnSet, 0, object);
    485         psFree(object);
    486     }
    487 
    488     psFree(rowSet);
    489 
    490     return returnSet;
    491 }
    492 bool pzDataStoreDeleteObject(psDB *dbh, const pzDataStoreRow *object)
    493 {
    494     psMetadata *where = pzDataStoreMetadataFromObject(object);
    495     long long count = psDBDeleteRows(dbh, PZDATASTORE_TABLE_NAME, where, 0);
    496     psFree(where);
    497     if (count < 0) {
    498         psError(PS_ERR_UNKNOWN, true, "failed to delete row from pzDataStore");
    499         return false;
    500     }
    501     if (count > 1) {
    502         // XXX should this be a psAbort() instead?  It is possible that
    503         // having an object match multiple rows was by design.
    504         psError(PS_ERR_UNKNOWN, true, "pzDataStoreRow object matched more then one row.  Check your database schema");
    505         return false;
    506     }
    507 
    508     return true;
    509 }
    510 long long pzDataStoreDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
    511 {
    512     long long       deleted = 0;
    513 
    514     for (long long i = 0; i < objects->n; i++) {
    515         pzDataStoreRow *object = objects->data[i];
    516         psMetadata *where = pzDataStoreMetadataFromObject(object);
    517         long long count = psDBDeleteRows(dbh, PZDATASTORE_TABLE_NAME, where, limit);
    518         psFree(where);
    519         if (count < 0) {
    520             psError(PS_ERR_UNKNOWN, true, "failed to delete row from pzDataStore");
    521             return count;
    522         }
    523 
    524         deleted += count;
    525     }
    526 
    527     return deleted;
    528 }
    529 bool pzDataStorePrintObjects(FILE *stream, psArray *objects, bool mdcf)
    530 {
    531     PS_ASSERT_PTR_NON_NULL(objects, false);
    532 
    533     psMetadata *output = psMetadataAlloc();
    534     for (long i = 0; i < psArrayLength(objects); i++) {
    535         psMetadata *md = pzDataStoreMetadataFromObject(objects->data[i]);
    536         if (!psMetadataAddMetadata(
    537             output,
    538             PS_LIST_TAIL,
    539             PZDATASTORE_TABLE_NAME,
    540             PS_META_DUPLICATE_OK,
    541             NULL,
    542             md
    543         )) {
    544             psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
    545             psFree(md);
    546             psFree(output);
    547             return false;
    548         }
    549         psFree(md);
    550     }
    551 
    552     if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
    553         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    554         psFree(output);
    555     }
    556     psFree(output);
    557 
    558     return true;
    559 }
    560 bool pzDataStorePrintObject(FILE *stream, pzDataStoreRow *object, bool mdcf)
    561 {
    562     PS_ASSERT_PTR_NON_NULL(object, false);
    563 
    564     psMetadata *md = pzDataStoreMetadataFromObject(object);
    565 
    566     if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
    567         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    568         psFree(md);
    569     }
    570 
    571     psFree(md);
    572 
    573     return true;
    574 }
    575248static void summitExpRowFree(summitExpRow *object);
    576249
     
    17471420static void pzPendingImfileRowFree(pzPendingImfileRow *object);
    17481421
    1749 pzPendingImfileRow *pzPendingImfileRowAlloc(const char *exp_name, const char *camera, const char *telescope, const char *class, const char *class_id)
     1422pzPendingImfileRow *pzPendingImfileRowAlloc(const char *exp_name, const char *camera, const char *telescope, const char *class, const char *class_id, psS64 exp_id)
    17501423{
    17511424    pzPendingImfileRow *_object;
     
    17591432    _object->class = psStringCopy(class);
    17601433    _object->class_id = psStringCopy(class_id);
     1434    _object->exp_id = exp_id;
    17611435
    17621436    return _object;
     
    18001474        return false;
    18011475    }
     1476    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Unique Key", 64)) {
     1477        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     1478        psFree(md);
     1479        return false;
     1480    }
    18021481
    18031482    bool status = psDBCreateTable(dbh, PZPENDINGIMFILE_TABLE_NAME, md);
     
    18131492}
    18141493
    1815 bool pzPendingImfileInsert(psDB * dbh, const char *exp_name, const char *camera, const char *telescope, const char *class, const char *class_id)
     1494bool pzPendingImfileInsert(psDB * dbh, const char *exp_name, const char *camera, const char *telescope, const char *class, const char *class_id, psS64 exp_id)
    18161495{
    18171496    psMetadata *md = psMetadataAlloc();
     
    18381517    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, class_id)) {
    18391518        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
     1519        psFree(md);
     1520        return false;
     1521    }
     1522    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, exp_id)) {
     1523        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    18401524        psFree(md);
    18411525        return false;
     
    18641548bool pzPendingImfileInsertObject(psDB *dbh, pzPendingImfileRow *object)
    18651549{
    1866     return pzPendingImfileInsert(dbh, object->exp_name, object->camera, object->telescope, object->class, object->class_id);
     1550    return pzPendingImfileInsert(dbh, object->exp_name, object->camera, object->telescope, object->class, object->class_id, object->exp_id);
    18671551}
    18681552
     
    19621646        return false;
    19631647    }
     1648    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, object->exp_id)) {
     1649        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     1650        psFree(md);
     1651        return false;
     1652    }
    19641653
    19651654
     
    19961685        return false;
    19971686    }
    1998 
    1999     return pzPendingImfileRowAlloc(exp_name, camera, telescope, class, class_id);
     1687    psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id");
     1688    if (!status) {
     1689        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
     1690        return false;
     1691    }
     1692
     1693    return pzPendingImfileRowAlloc(exp_name, camera, telescope, class, class_id, exp_id);
    20001694}
    20011695psArray *pzPendingImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    24272121static void pzDoneImfileRowFree(pzDoneImfileRow *object);
    24282122
    2429 pzDoneImfileRow *pzDoneImfileRowAlloc(const char *exp_name, const char *camera, const char *telescope, const char *class, const char *class_id, const char *uri)
     2123pzDoneImfileRow *pzDoneImfileRowAlloc(const char *exp_name, const char *camera, const char *telescope, const char *class, const char *class_id, psS64 exp_id, const char *uri)
    24302124{
    24312125    pzDoneImfileRow *_object;
     
    24392133    _object->class = psStringCopy(class);
    24402134    _object->class_id = psStringCopy(class_id);
     2135    _object->exp_id = exp_id;
    24412136    _object->uri = psStringCopy(uri);
    24422137
     
    24822177        return false;
    24832178    }
     2179    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Unique Key", 64)) {
     2180        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     2181        psFree(md);
     2182        return false;
     2183    }
    24842184    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, "255")) {
    24852185        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     
    25002200}
    25012201
    2502 bool pzDoneImfileInsert(psDB * dbh, const char *exp_name, const char *camera, const char *telescope, const char *class, const char *class_id, const char *uri)
     2202bool pzDoneImfileInsert(psDB * dbh, const char *exp_name, const char *camera, const char *telescope, const char *class, const char *class_id, psS64 exp_id, const char *uri)
    25032203{
    25042204    psMetadata *md = psMetadataAlloc();
     
    25252225    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, class_id)) {
    25262226        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
     2227        psFree(md);
     2228        return false;
     2229    }
     2230    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, exp_id)) {
     2231        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    25272232        psFree(md);
    25282233        return false;
     
    25562261bool pzDoneImfileInsertObject(psDB *dbh, pzDoneImfileRow *object)
    25572262{
    2558     return pzDoneImfileInsert(dbh, object->exp_name, object->camera, object->telescope, object->class, object->class_id, object->uri);
     2263    return pzDoneImfileInsert(dbh, object->exp_name, object->camera, object->telescope, object->class, object->class_id, object->exp_id, object->uri);
    25592264}
    25602265
     
    26542359        return false;
    26552360    }
     2361    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, object->exp_id)) {
     2362        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     2363        psFree(md);
     2364        return false;
     2365    }
    26562366    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) {
    26572367        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     
    26932403        return false;
    26942404    }
     2405    psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id");
     2406    if (!status) {
     2407        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
     2408        return false;
     2409    }
    26952410    char* uri = psMetadataLookupPtr(&status, md, "uri");
    26962411    if (!status) {
     
    26992414    }
    27002415
    2701     return pzDoneImfileRowAlloc(exp_name, camera, telescope, class, class_id, uri);
     2416    return pzDoneImfileRowAlloc(exp_name, camera, telescope, class, class_id, exp_id, uri);
    27022417}
    27032418psArray *pzDoneImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    28112526static void newExpRowFree(newExpRow *object);
    28122527
    2813 newExpRow *newExpRowAlloc(psS64 exp_id, const char *tmp_exp_name, const char *tmp_camera, const char *tmp_telescope, const char *state, const char *workdir, const char *workdir_state, const char *reduction)
     2528newExpRow *newExpRowAlloc(psS64 exp_id, const char *tmp_exp_name, const char *tmp_camera, const char *tmp_telescope, const char *state, psS32 imfiles, const char *workdir, const char *workdir_state)
    28142529{
    28152530    newExpRow       *_object;
     
    28232538    _object->tmp_telescope = psStringCopy(tmp_telescope);
    28242539    _object->state = psStringCopy(state);
     2540    _object->imfiles = imfiles;
    28252541    _object->workdir = psStringCopy(workdir);
    28262542    _object->workdir_state = psStringCopy(workdir_state);
    2827     _object->reduction = psStringCopy(reduction);
    28282543
    28292544    return _object;
     
    28382553    psFree(object->workdir);
    28392554    psFree(object->workdir_state);
    2840     psFree(object->reduction);
    28412555}
    28422556
     
    28692583        return false;
    28702584    }
     2585    if (!psMetadataAdd(md, PS_LIST_TAIL, "imfiles", PS_DATA_S32, NULL, 0)) {
     2586        psError(PS_ERR_UNKNOWN, false, "failed to add item imfiles");
     2587        psFree(md);
     2588        return false;
     2589    }
    28712590    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, "destination for output files", "255")) {
    28722591        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
     
    28792598        return false;
    28802599    }
    2881     if (!psMetadataAdd(md, PS_LIST_TAIL, "reduction", PS_DATA_STRING, "Reduction class", "64")) {
    2882         psError(PS_ERR_UNKNOWN, false, "failed to add item reduction");
    2883         psFree(md);
    2884         return false;
    2885     }
    28862600
    28872601    bool status = psDBCreateTable(dbh, NEWEXP_TABLE_NAME, md);
     
    28972611}
    28982612
    2899 bool newExpInsert(psDB * dbh, psS64 exp_id, const char *tmp_exp_name, const char *tmp_camera, const char *tmp_telescope, const char *state, const char *workdir, const char *workdir_state, const char *reduction)
     2613bool newExpInsert(psDB * dbh, psS64 exp_id, const char *tmp_exp_name, const char *tmp_camera, const char *tmp_telescope, const char *state, psS32 imfiles, const char *workdir, const char *workdir_state)
    29002614{
    29012615    psMetadata *md = psMetadataAlloc();
     
    29252639        return false;
    29262640    }
     2641    if (!psMetadataAdd(md, PS_LIST_TAIL, "imfiles", PS_DATA_S32, NULL, imfiles)) {
     2642        psError(PS_ERR_UNKNOWN, false, "failed to add item imfiles");
     2643        psFree(md);
     2644        return false;
     2645    }
    29272646    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, workdir)) {
    29282647        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
     
    29322651    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir_state", PS_DATA_STRING, NULL, workdir_state)) {
    29332652        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir_state");
    2934         psFree(md);
    2935         return false;
    2936     }
    2937     if (!psMetadataAdd(md, PS_LIST_TAIL, "reduction", PS_DATA_STRING, NULL, reduction)) {
    2938         psError(PS_ERR_UNKNOWN, false, "failed to add item reduction");
    29392653        psFree(md);
    29402654        return false;
     
    29632677bool newExpInsertObject(psDB *dbh, newExpRow *object)
    29642678{
    2965     return newExpInsert(dbh, object->exp_id, object->tmp_exp_name, object->tmp_camera, object->tmp_telescope, object->state, object->workdir, object->workdir_state, object->reduction);
     2679    return newExpInsert(dbh, object->exp_id, object->tmp_exp_name, object->tmp_camera, object->tmp_telescope, object->state, object->imfiles, object->workdir, object->workdir_state);
    29662680}
    29672681
     
    30612775        return false;
    30622776    }
     2777    if (!psMetadataAdd(md, PS_LIST_TAIL, "imfiles", PS_DATA_S32, NULL, object->imfiles)) {
     2778        psError(PS_ERR_UNKNOWN, false, "failed to add item imfiles");
     2779        psFree(md);
     2780        return false;
     2781    }
    30632782    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, object->workdir)) {
    30642783        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
     
    30712790        return false;
    30722791    }
    3073     if (!psMetadataAdd(md, PS_LIST_TAIL, "reduction", PS_DATA_STRING, NULL, object->reduction)) {
    3074         psError(PS_ERR_UNKNOWN, false, "failed to add item reduction");
    3075         psFree(md);
    3076         return false;
    3077     }
    30782792
    30792793
     
    31102824        return false;
    31112825    }
     2826    psS32 imfiles = psMetadataLookupS32(&status, md, "imfiles");
     2827    if (!status) {
     2828        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item imfiles");
     2829        return false;
     2830    }
    31122831    char* workdir = psMetadataLookupPtr(&status, md, "workdir");
    31132832    if (!status) {
     
    31202839        return false;
    31212840    }
    3122     char* reduction = psMetadataLookupPtr(&status, md, "reduction");
    3123     if (!status) {
    3124         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item reduction");
    3125         return false;
    3126     }
    3127 
    3128     return newExpRowAlloc(exp_id, tmp_exp_name, tmp_camera, tmp_telescope, state, workdir, workdir_state, reduction);
     2841
     2842    return newExpRowAlloc(exp_id, tmp_exp_name, tmp_camera, tmp_telescope, state, imfiles, workdir, workdir_state);
    31292843}
    31302844psArray *newExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    35553269static void rawExpRowFree(rawExpRow *object);
    35563270
    3557 rawExpRow *rawExpRowAlloc(psS64 exp_id, const char *exp_name, const char *camera, const char *telescope, psTime* dateobs, const char *exp_tag, const char *exp_type, const char *filelevel, const char *workdir, const char *reduction, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF32 sat_pixel_frac, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *object, psF32 solang, psS16 fault)
     3271rawExpRow *rawExpRowAlloc(psS64 exp_id, const char *exp_name, const char *camera, const char *telescope, psTime* dateobs, const char *exp_tag, const char *exp_type, psS32 imfiles, const char *filelevel, const char *workdir, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF32 sat_pixel_frac, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *object, psF32 solang, psS16 fault)
    35583272{
    35593273    rawExpRow       *_object;
     
    35693283    _object->exp_tag = psStringCopy(exp_tag);
    35703284    _object->exp_type = psStringCopy(exp_type);
     3285    _object->imfiles = imfiles;
    35713286    _object->filelevel = psStringCopy(filelevel);
    35723287    _object->workdir = psStringCopy(workdir);
    3573     _object->reduction = psStringCopy(reduction);
    35743288    _object->filter = psStringCopy(filter);
    35753289    _object->airmass = airmass;
     
    36073321    psFree(object->filelevel);
    36083322    psFree(object->workdir);
    3609     psFree(object->reduction);
    36103323    psFree(object->filter);
    36113324    psFree(object->object);
     
    36503363        return false;
    36513364    }
     3365    if (!psMetadataAdd(md, PS_LIST_TAIL, "imfiles", PS_DATA_S32, NULL, 0)) {
     3366        psError(PS_ERR_UNKNOWN, false, "failed to add item imfiles");
     3367        psFree(md);
     3368        return false;
     3369    }
    36523370    if (!psMetadataAdd(md, PS_LIST_TAIL, "filelevel", PS_DATA_STRING, NULL, "64")) {
    36533371        psError(PS_ERR_UNKNOWN, false, "failed to add item filelevel");
     
    36603378        return false;
    36613379    }
    3662     if (!psMetadataAdd(md, PS_LIST_TAIL, "reduction", PS_DATA_STRING, "Reduction class", "64")) {
    3663         psError(PS_ERR_UNKNOWN, false, "failed to add item reduction");
    3664         psFree(md);
    3665         return false;
    3666     }
    36673380    if (!psMetadataAdd(md, PS_LIST_TAIL, "filter", PS_DATA_STRING, NULL, "64")) {
    36683381        psError(PS_ERR_UNKNOWN, false, "failed to add item filter");
     
    37833496}
    37843497
    3785 bool rawExpInsert(psDB * dbh, psS64 exp_id, const char *exp_name, const char *camera, const char *telescope, psTime* dateobs, const char *exp_tag, const char *exp_type, const char *filelevel, const char *workdir, const char *reduction, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF32 sat_pixel_frac, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *object, psF32 solang, psS16 fault)
     3498bool rawExpInsert(psDB * dbh, psS64 exp_id, const char *exp_name, const char *camera, const char *telescope, psTime* dateobs, const char *exp_tag, const char *exp_type, psS32 imfiles, const char *filelevel, const char *workdir, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF32 sat_pixel_frac, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *object, psF32 solang, psS16 fault)
    37863499{
    37873500    psMetadata *md = psMetadataAlloc();
     
    38213534        return false;
    38223535    }
     3536    if (!psMetadataAdd(md, PS_LIST_TAIL, "imfiles", PS_DATA_S32, NULL, imfiles)) {
     3537        psError(PS_ERR_UNKNOWN, false, "failed to add item imfiles");
     3538        psFree(md);
     3539        return false;
     3540    }
    38233541    if (!psMetadataAdd(md, PS_LIST_TAIL, "filelevel", PS_DATA_STRING, NULL, filelevel)) {
    38243542        psError(PS_ERR_UNKNOWN, false, "failed to add item filelevel");
     
    38283546    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, workdir)) {
    38293547        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
    3830         psFree(md);
    3831         return false;
    3832     }
    3833     if (!psMetadataAdd(md, PS_LIST_TAIL, "reduction", PS_DATA_STRING, NULL, reduction)) {
    3834         psError(PS_ERR_UNKNOWN, false, "failed to add item reduction");
    38353548        psFree(md);
    38363549        return false;
     
    39643677bool rawExpInsertObject(psDB *dbh, rawExpRow *object)
    39653678{
    3966     return rawExpInsert(dbh, object->exp_id, object->exp_name, object->camera, object->telescope, object->dateobs, object->exp_tag, object->exp_type, object->filelevel, object->workdir, object->reduction, object->filter, object->airmass, object->ra, object->decl, object->exp_time, object->sat_pixel_frac, object->bg, object->bg_stdev, object->bg_mean_stdev, object->alt, object->az, object->ccd_temp, object->posang, object->user_1, object->user_2, object->user_3, object->user_4, object->user_5, object->object, object->solang, object->fault);
     3679    return rawExpInsert(dbh, object->exp_id, object->exp_name, object->camera, object->telescope, object->dateobs, object->exp_tag, object->exp_type, object->imfiles, object->filelevel, object->workdir, object->filter, object->airmass, object->ra, object->decl, object->exp_time, object->sat_pixel_frac, object->bg, object->bg_stdev, object->bg_mean_stdev, object->alt, object->az, object->ccd_temp, object->posang, object->user_1, object->user_2, object->user_3, object->user_4, object->user_5, object->object, object->solang, object->fault);
    39673680}
    39683681
     
    40723785        return false;
    40733786    }
     3787    if (!psMetadataAdd(md, PS_LIST_TAIL, "imfiles", PS_DATA_S32, NULL, object->imfiles)) {
     3788        psError(PS_ERR_UNKNOWN, false, "failed to add item imfiles");
     3789        psFree(md);
     3790        return false;
     3791    }
    40743792    if (!psMetadataAdd(md, PS_LIST_TAIL, "filelevel", PS_DATA_STRING, NULL, object->filelevel)) {
    40753793        psError(PS_ERR_UNKNOWN, false, "failed to add item filelevel");
     
    40823800        return false;
    40833801    }
    4084     if (!psMetadataAdd(md, PS_LIST_TAIL, "reduction", PS_DATA_STRING, NULL, object->reduction)) {
    4085         psError(PS_ERR_UNKNOWN, false, "failed to add item reduction");
    4086         psFree(md);
    4087         return false;
    4088     }
    40893802    if (!psMetadataAdd(md, PS_LIST_TAIL, "filter", PS_DATA_STRING, NULL, object->filter)) {
    40903803        psError(PS_ERR_UNKNOWN, false, "failed to add item filter");
     
    42363949        return false;
    42373950    }
     3951    psS32 imfiles = psMetadataLookupS32(&status, md, "imfiles");
     3952    if (!status) {
     3953        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item imfiles");
     3954        return false;
     3955    }
    42383956    char* filelevel = psMetadataLookupPtr(&status, md, "filelevel");
    42393957    if (!status) {
     
    42463964        return false;
    42473965    }
    4248     char* reduction = psMetadataLookupPtr(&status, md, "reduction");
    4249     if (!status) {
    4250         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item reduction");
    4251         return false;
    4252     }
    42533966    char* filter = psMetadataLookupPtr(&status, md, "filter");
    42543967    if (!status) {
     
    43574070    }
    43584071
    4359     return rawExpRowAlloc(exp_id, exp_name, camera, telescope, dateobs, exp_tag, exp_type, filelevel, workdir, reduction, filter, airmass, ra, decl, exp_time, sat_pixel_frac, bg, bg_stdev, bg_mean_stdev, alt, az, ccd_temp, posang, user_1, user_2, user_3, user_4, user_5, object, solang, fault);
     4072    return rawExpRowAlloc(exp_id, exp_name, camera, telescope, dateobs, exp_tag, exp_type, imfiles, filelevel, workdir, filter, airmass, ra, decl, exp_time, sat_pixel_frac, bg, bg_stdev, bg_mean_stdev, alt, az, ccd_temp, posang, user_1, user_2, user_3, user_4, user_5, object, solang, fault);
    43604073}
    43614074psArray *rawExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    56785391static void chipRunRowFree(chipRunRow *object);
    56795392
    5680 chipRunRow *chipRunRowAlloc(psS64 chip_id, psS64 exp_id, const char *state, const char *workdir, const char *workdir_state, const char *label, const char *reduction, const char *expgroup, const char *dvodb)
     5393chipRunRow *chipRunRowAlloc(psS64 chip_id, const char *state, const char *workdir, const char *workdir_state, const char *label, const char *reduction, const char *expgroup, const char *dvodb)
    56815394{
    56825395    chipRunRow      *_object;
     
    56865399
    56875400    _object->chip_id = chip_id;
    5688     _object->exp_id = exp_id;
    56895401    _object->state = psStringCopy(state);
    56905402    _object->workdir = psStringCopy(workdir);
     
    57175429        return false;
    57185430    }
    5719     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Key INDEX(chip_id, exp_id) fkey (exp_id) ref rawExp(exp_id)", 64)) {
    5720         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    5721         psFree(md);
    5722         return false;
    5723     }
    5724     if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, "Key", "64")) {
     5431    if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, "key", "64")) {
    57255432        psError(PS_ERR_UNKNOWN, false, "failed to add item state");
    57265433        psFree(md);
     
    57325439        return false;
    57335440    }
    5734     if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir_state", PS_DATA_STRING, "Key", "64")) {
     5441    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir_state", PS_DATA_STRING, "key", "64")) {
    57355442        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir_state");
    57365443        psFree(md);
    57375444        return false;
    57385445    }
    5739     if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, "Key", "64")) {
     5446    if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, "key", "64")) {
    57405447        psError(PS_ERR_UNKNOWN, false, "failed to add item label");
    57415448        psFree(md);
     
    57475454        return false;
    57485455    }
    5749     if (!psMetadataAdd(md, PS_LIST_TAIL, "expgroup", PS_DATA_STRING, "Key", "64")) {
     5456    if (!psMetadataAdd(md, PS_LIST_TAIL, "expgroup", PS_DATA_STRING, "key", "64")) {
    57505457        psError(PS_ERR_UNKNOWN, false, "failed to add item expgroup");
    57515458        psFree(md);
     
    57705477}
    57715478
    5772 bool chipRunInsert(psDB * dbh, psS64 chip_id, psS64 exp_id, const char *state, const char *workdir, const char *workdir_state, const char *label, const char *reduction, const char *expgroup, const char *dvodb)
     5479bool chipRunInsert(psDB * dbh, psS64 chip_id, const char *state, const char *workdir, const char *workdir_state, const char *label, const char *reduction, const char *expgroup, const char *dvodb)
    57735480{
    57745481    psMetadata *md = psMetadataAlloc();
    57755482    if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, NULL, chip_id)) {
    57765483        psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
    5777         psFree(md);
    5778         return false;
    5779     }
    5780     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, exp_id)) {
    5781         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    57825484        psFree(md);
    57835485        return false;
     
    58415543bool chipRunInsertObject(psDB *dbh, chipRunRow *object)
    58425544{
    5843     return chipRunInsert(dbh, object->chip_id, object->exp_id, object->state, object->workdir, object->workdir_state, object->label, object->reduction, object->expgroup, object->dvodb);
     5545    return chipRunInsert(dbh, object->chip_id, object->state, object->workdir, object->workdir_state, object->label, object->reduction, object->expgroup, object->dvodb);
    58445546}
    58455547
     
    59195621        return false;
    59205622    }
    5921     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, object->exp_id)) {
    5922         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    5923         psFree(md);
    5924         return false;
    5925     }
    59265623    if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, NULL, object->state)) {
    59275624        psError(PS_ERR_UNKNOWN, false, "failed to add item state");
     
    59735670        return false;
    59745671    }
    5975     psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id");
    5976     if (!status) {
    5977         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
    5978         return false;
    5979     }
    59805672    char* state = psMetadataLookupPtr(&status, md, "state");
    59815673    if (!status) {
     
    60145706    }
    60155707
    6016     return chipRunRowAlloc(chip_id, exp_id, state, workdir, workdir_state, label, reduction, expgroup, dvodb);
     5708    return chipRunRowAlloc(chip_id, state, workdir, workdir_state, label, reduction, expgroup, dvodb);
    60175709}
    60185710psArray *chipRunSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    61145806
    61155807    psMetadata *md = chipRunMetadataFromObject(object);
     5808
     5809    if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
     5810        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     5811        psFree(md);
     5812    }
     5813
     5814    psFree(md);
     5815
     5816    return true;
     5817}
     5818static void chipInputImfileRowFree(chipInputImfileRow *object);
     5819
     5820chipInputImfileRow *chipInputImfileRowAlloc(psS64 chip_id, psS64 exp_id, const char *class_id)
     5821{
     5822    chipInputImfileRow *_object;
     5823
     5824    _object = psAlloc(sizeof(chipInputImfileRow));
     5825    psMemSetDeallocator(_object, (psFreeFunc)chipInputImfileRowFree);
     5826
     5827    _object->chip_id = chip_id;
     5828    _object->exp_id = exp_id;
     5829    _object->class_id = psStringCopy(class_id);
     5830
     5831    return _object;
     5832}
     5833
     5834static void chipInputImfileRowFree(chipInputImfileRow *object)
     5835{
     5836    psFree(object->class_id);
     5837}
     5838
     5839bool chipInputImfileCreateTable(psDB *dbh)
     5840{
     5841    psMetadata *md = psMetadataAlloc();
     5842    if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, "Primary Key fkey (chip_id) ref chipRun(chip_id)", 0)) {
     5843        psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
     5844        psFree(md);
     5845        return false;
     5846    }
     5847    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key fkey (exp_id, class_id) ref rawImfile (exp_id, class_id)", 64)) {
     5848        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     5849        psFree(md);
     5850        return false;
     5851    }
     5852    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, "Primary Key", "64")) {
     5853        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
     5854        psFree(md);
     5855        return false;
     5856    }
     5857
     5858    bool status = psDBCreateTable(dbh, CHIPINPUTIMFILE_TABLE_NAME, md);
     5859
     5860    psFree(md);
     5861
     5862    return status;
     5863}
     5864
     5865bool chipInputImfileDropTable(psDB *dbh)
     5866{
     5867    return psDBDropTable(dbh, CHIPINPUTIMFILE_TABLE_NAME);
     5868}
     5869
     5870bool chipInputImfileInsert(psDB * dbh, psS64 chip_id, psS64 exp_id, const char *class_id)
     5871{
     5872    psMetadata *md = psMetadataAlloc();
     5873    if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, NULL, chip_id)) {
     5874        psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
     5875        psFree(md);
     5876        return false;
     5877    }
     5878    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, exp_id)) {
     5879        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     5880        psFree(md);
     5881        return false;
     5882    }
     5883    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, class_id)) {
     5884        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
     5885        psFree(md);
     5886        return false;
     5887    }
     5888
     5889    bool status = psDBInsertOneRow(dbh, CHIPINPUTIMFILE_TABLE_NAME, md);
     5890    psFree(md);
     5891
     5892    return status;
     5893}
     5894
     5895long long chipInputImfileDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
     5896{
     5897    long long       deleted = 0;
     5898
     5899    long long count = psDBDeleteRows(dbh, CHIPINPUTIMFILE_TABLE_NAME, where, limit);
     5900    if (count < 0) {
     5901        psError(PS_ERR_UNKNOWN, true, "failed to delete row from chipInputImfile");
     5902        return count;
     5903
     5904        deleted += count;
     5905    }
     5906
     5907    return deleted;
     5908}
     5909bool chipInputImfileInsertObject(psDB *dbh, chipInputImfileRow *object)
     5910{
     5911    return chipInputImfileInsert(dbh, object->chip_id, object->exp_id, object->class_id);
     5912}
     5913
     5914bool chipInputImfileInsertObjects(psDB *dbh, psArray *objects)
     5915{
     5916    for (long i = 0; i < psArrayLength(objects); i++) {
     5917        if (!chipInputImfileInsertObject(dbh, objects->data[i])) {
     5918            return false;
     5919        }
     5920    }
     5921
     5922    return true;
     5923}
     5924
     5925bool chipInputImfileInsertFits(psDB *dbh, const psFits *fits)
     5926{
     5927    psArray         *rowSet;
     5928
     5929    // move to (the first?) extension named  CHIPINPUTIMFILE_TABLE_NAME
     5930    if (!psFitsMoveExtName(fits, CHIPINPUTIMFILE_TABLE_NAME)) {
     5931        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", CHIPINPUTIMFILE_TABLE_NAME);
     5932        return false;
     5933    }
     5934
     5935    // check HDU type
     5936    if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
     5937        psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
     5938        return false;
     5939    }
     5940
     5941    // read fits table
     5942    rowSet = psFitsReadTable(fits);
     5943    if (!rowSet) {
     5944        psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
     5945        psFree(rowSet);
     5946        return false;
     5947    }
     5948
     5949    if (!psDBInsertRows(dbh, CHIPINPUTIMFILE_TABLE_NAME, rowSet)) {
     5950        psError(PS_ERR_UNKNOWN, false, "databse insert failed");
     5951        psFree(rowSet);
     5952        return false;
     5953    }
     5954
     5955    psFree(rowSet);
     5956
     5957    return true;
     5958}
     5959
     5960bool chipInputImfileSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
     5961{
     5962    psArray         *rowSet;
     5963
     5964    rowSet = psDBSelectRows(dbh, CHIPINPUTIMFILE_TABLE_NAME, where, limit);
     5965    if (!rowSet) {
     5966        return false;
     5967    }
     5968
     5969    // output to fits
     5970    if (!psFitsWriteTable(fits, NULL, rowSet, CHIPINPUTIMFILE_TABLE_NAME)) {
     5971        psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
     5972        psFree(rowSet);
     5973        return false;
     5974    }
     5975
     5976    psFree(rowSet);
     5977
     5978    return true;
     5979}
     5980
     5981psMetadata *chipInputImfileMetadataFromObject(const chipInputImfileRow *object)
     5982{
     5983    psMetadata *md = psMetadataAlloc();
     5984    if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, NULL, object->chip_id)) {
     5985        psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
     5986        psFree(md);
     5987        return false;
     5988    }
     5989    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, object->exp_id)) {
     5990        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     5991        psFree(md);
     5992        return false;
     5993    }
     5994    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, object->class_id)) {
     5995        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
     5996        psFree(md);
     5997        return false;
     5998    }
     5999
     6000
     6001    return md;
     6002}
     6003
     6004chipInputImfileRow *chipInputImfileObjectFromMetadata(psMetadata *md)
     6005{
     6006
     6007bool status = false;
     6008    psS64 chip_id = psMetadataLookupS64(&status, md, "chip_id");
     6009    if (!status) {
     6010        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item chip_id");
     6011        return false;
     6012    }
     6013    psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id");
     6014    if (!status) {
     6015        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
     6016        return false;
     6017    }
     6018    char* class_id = psMetadataLookupPtr(&status, md, "class_id");
     6019    if (!status) {
     6020        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class_id");
     6021        return false;
     6022    }
     6023
     6024    return chipInputImfileRowAlloc(chip_id, exp_id, class_id);
     6025}
     6026psArray *chipInputImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     6027{
     6028    psArray         *rowSet;
     6029    psArray         *returnSet;
     6030    psU64           i;
     6031
     6032    rowSet = psDBSelectRows(dbh, CHIPINPUTIMFILE_TABLE_NAME, where, limit);
     6033    if (!rowSet) {
     6034        return NULL;
     6035    }
     6036
     6037    // convert psMetadata rows to row objects
     6038
     6039    returnSet = psArrayAllocEmpty(rowSet->n);
     6040
     6041    for (i = 0; i < rowSet->n; i++) {
     6042        chipInputImfileRow *object = chipInputImfileObjectFromMetadata(rowSet->data[i]);
     6043        psArrayAdd(returnSet, 0, object);
     6044        psFree(object);
     6045    }
     6046
     6047    psFree(rowSet);
     6048
     6049    return returnSet;
     6050}
     6051bool chipInputImfileDeleteObject(psDB *dbh, const chipInputImfileRow *object)
     6052{
     6053    psMetadata *where = chipInputImfileMetadataFromObject(object);
     6054    long long count = psDBDeleteRows(dbh, CHIPINPUTIMFILE_TABLE_NAME, where, 0);
     6055    psFree(where);
     6056    if (count < 0) {
     6057        psError(PS_ERR_UNKNOWN, true, "failed to delete row from chipInputImfile");
     6058        return false;
     6059    }
     6060    if (count > 1) {
     6061        // XXX should this be a psAbort() instead?  It is possible that
     6062        // having an object match multiple rows was by design.
     6063        psError(PS_ERR_UNKNOWN, true, "chipInputImfileRow object matched more then one row.  Check your database schema");
     6064        return false;
     6065    }
     6066
     6067    return true;
     6068}
     6069long long chipInputImfileDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
     6070{
     6071    long long       deleted = 0;
     6072
     6073    for (long long i = 0; i < objects->n; i++) {
     6074        chipInputImfileRow *object = objects->data[i];
     6075        psMetadata *where = chipInputImfileMetadataFromObject(object);
     6076        long long count = psDBDeleteRows(dbh, CHIPINPUTIMFILE_TABLE_NAME, where, limit);
     6077        psFree(where);
     6078        if (count < 0) {
     6079            psError(PS_ERR_UNKNOWN, true, "failed to delete row from chipInputImfile");
     6080            return count;
     6081        }
     6082
     6083        deleted += count;
     6084    }
     6085
     6086    return deleted;
     6087}
     6088bool chipInputImfilePrintObjects(FILE *stream, psArray *objects, bool mdcf)
     6089{
     6090    PS_ASSERT_PTR_NON_NULL(objects, false);
     6091
     6092    psMetadata *output = psMetadataAlloc();
     6093    for (long i = 0; i < psArrayLength(objects); i++) {
     6094        psMetadata *md = chipInputImfileMetadataFromObject(objects->data[i]);
     6095        if (!psMetadataAddMetadata(
     6096            output,
     6097            PS_LIST_TAIL,
     6098            CHIPINPUTIMFILE_TABLE_NAME,
     6099            PS_META_DUPLICATE_OK,
     6100            NULL,
     6101            md
     6102        )) {
     6103            psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
     6104            psFree(md);
     6105            psFree(output);
     6106            return false;
     6107        }
     6108        psFree(md);
     6109    }
     6110
     6111    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
     6112        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     6113        psFree(output);
     6114    }
     6115    psFree(output);
     6116
     6117    return true;
     6118}
     6119bool chipInputImfilePrintObject(FILE *stream, chipInputImfileRow *object, bool mdcf)
     6120{
     6121    PS_ASSERT_PTR_NON_NULL(object, false);
     6122
     6123    psMetadata *md = chipInputImfileMetadataFromObject(object);
    61166124
    61176125    if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
     
    61716179{
    61726180    psMetadata *md = psMetadataAlloc();
    6173     if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, "Primary Key fkey (chip_id, exp_id) ref chipRun(chip_id, exp_id)", 0)) {
     6181    if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, "Primary Key fkey (chip_id, exp_id, class_id) ref chipInputImfile(chip_id, exp_id, class_id)", 0)) {
    61746182        psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
    61756183        psFree(md);
    61766184        return false;
    61776185    }
    6178     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key fkey (exp_id, class_id) ref rawImfile(exp_id, class_id)", 64)) {
     6186    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key", 64)) {
    61796187        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    61806188        psFree(md);
     
    62516259        return false;
    62526260    }
    6253     if (!psMetadataAdd(md, PS_LIST_TAIL, "fwhm", PS_DATA_F32, "# replace this with fwhm_major", 0.0)) {
     6261    if (!psMetadataAdd(md, PS_LIST_TAIL, "fwhm", PS_DATA_F32, NULL, 0.0)) {
    62546262        psError(PS_ERR_UNKNOWN, false, "failed to add item fwhm");
    62556263        psFree(md);
    62566264        return false;
    62576265    }
    6258     if (!psMetadataAdd(md, PS_LIST_TAIL, "fwhm_range", PS_DATA_F32, "# replace this with fwhm_minor", 0.0)) {
     6266    if (!psMetadataAdd(md, PS_LIST_TAIL, "fwhm_range", PS_DATA_F32, NULL, 0.0)) {
    62596267        psError(PS_ERR_UNKNOWN, false, "failed to add item fwhm_range");
    62606268        psFree(md);
     
    71987206        return false;
    71997207    }
    7200     if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, "Key INDEX(cam_id, chip_id) fkey(chip_id) ref chipRun(chip_id)", 0)) {
     7208    if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, "Primary Key fkey(chip_id) ref chipRun(chip_id)", 0)) {
    72017209        psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
    72027210        psFree(md);
     
    95929600static void warpSkyfileRowFree(warpSkyfileRow *object);
    95939601
    9594 warpSkyfileRow *warpSkyfileRowAlloc(psS64 warp_id, const char *skycell_id, const char *tess_id, const char *uri, const char *path_base, psF64 bg, psF64 bg_stdev, psF64 pixel_fill, psS16 fault)
     9602warpSkyfileRow *warpSkyfileRowAlloc(psS64 warp_id, const char *skycell_id, const char *tess_id, const char *uri, const char *path_base, psF64 bg, psF64 bg_stdev)
    95959603{
    95969604    warpSkyfileRow  *_object;
     
    96069614    _object->bg = bg;
    96079615    _object->bg_stdev = bg_stdev;
    9608     _object->pixel_fill = pixel_fill;
    9609     _object->fault = fault;
    96109616
    96119617    return _object;
     
    96589664        return false;
    96599665    }
    9660     if (!psMetadataAdd(md, PS_LIST_TAIL, "pixel_fill", PS_DATA_F64, "Key", 0.0)) {
    9661         psError(PS_ERR_UNKNOWN, false, "failed to add item pixel_fill");
    9662         psFree(md);
    9663         return false;
    9664     }
    9665     if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "Key", 0)) {
    9666         psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    9667         psFree(md);
    9668         return false;
    9669     }
    96709666
    96719667    bool status = psDBCreateTable(dbh, WARPSKYFILE_TABLE_NAME, md);
     
    96819677}
    96829678
    9683 bool warpSkyfileInsert(psDB * dbh, psS64 warp_id, const char *skycell_id, const char *tess_id, const char *uri, const char *path_base, psF64 bg, psF64 bg_stdev, psF64 pixel_fill, psS16 fault)
     9679bool warpSkyfileInsert(psDB * dbh, psS64 warp_id, const char *skycell_id, const char *tess_id, const char *uri, const char *path_base, psF64 bg, psF64 bg_stdev)
    96849680{
    96859681    psMetadata *md = psMetadataAlloc();
     
    97169712    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_stdev", PS_DATA_F64, NULL, bg_stdev)) {
    97179713        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_stdev");
    9718         psFree(md);
    9719         return false;
    9720     }
    9721     if (!psMetadataAdd(md, PS_LIST_TAIL, "pixel_fill", PS_DATA_F64, NULL, pixel_fill)) {
    9722         psError(PS_ERR_UNKNOWN, false, "failed to add item pixel_fill");
    9723         psFree(md);
    9724         return false;
    9725     }
    9726     if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, fault)) {
    9727         psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    97289714        psFree(md);
    97299715        return false;
     
    97529738bool warpSkyfileInsertObject(psDB *dbh, warpSkyfileRow *object)
    97539739{
    9754     return warpSkyfileInsert(dbh, object->warp_id, object->skycell_id, object->tess_id, object->uri, object->path_base, object->bg, object->bg_stdev, object->pixel_fill, object->fault);
     9740    return warpSkyfileInsert(dbh, object->warp_id, object->skycell_id, object->tess_id, object->uri, object->path_base, object->bg, object->bg_stdev);
    97559741}
    97569742
     
    98609846        return false;
    98619847    }
    9862     if (!psMetadataAdd(md, PS_LIST_TAIL, "pixel_fill", PS_DATA_F64, NULL, object->pixel_fill)) {
    9863         psError(PS_ERR_UNKNOWN, false, "failed to add item pixel_fill");
    9864         psFree(md);
    9865         return false;
    9866     }
    9867     if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) {
    9868         psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    9869         psFree(md);
    9870         return false;
    9871     }
    98729848
    98739849
     
    99149890        return false;
    99159891    }
    9916     psF64 pixel_fill = psMetadataLookupF64(&status, md, "pixel_fill");
    9917     if (!status) {
    9918         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item pixel_fill");
    9919         return false;
    9920     }
    9921     psS16 fault = psMetadataLookupS16(&status, md, "fault");
    9922     if (!status) {
    9923         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault");
    9924         return false;
    9925     }
    9926 
    9927     return warpSkyfileRowAlloc(warp_id, skycell_id, tess_id, uri, path_base, bg, bg_stdev, pixel_fill, fault);
     9892
     9893    return warpSkyfileRowAlloc(warp_id, skycell_id, tess_id, uri, path_base, bg, bg_stdev);
    99289894}
    99299895psArray *warpSkyfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    1044210408static void diffInputSkyfileRowFree(diffInputSkyfileRow *object);
    1044310409
    10444 diffInputSkyfileRow *diffInputSkyfileRowAlloc(psS64 diff_id, bool template, psS64 stack_id, psS64 warp_id, const char *skycell_id, const char *tess_id, const char *kind)
     10410diffInputSkyfileRow *diffInputSkyfileRowAlloc(psS64 diff_id, psS64 warp_id, const char *skycell_id, const char *tess_id, const char *kind, bool template)
    1044510411{
    1044610412    diffInputSkyfileRow *_object;
     
    1045010416
    1045110417    _object->diff_id = diff_id;
    10452     _object->template = template;
    10453     _object->stack_id = stack_id;
    1045410418    _object->warp_id = warp_id;
    1045510419    _object->skycell_id = psStringCopy(skycell_id);
    1045610420    _object->tess_id = psStringCopy(tess_id);
    1045710421    _object->kind = psStringCopy(kind);
     10422    _object->template = template;
    1045810423
    1045910424    return _object;
     
    1047510440        return false;
    1047610441    }
    10477     if (!psMetadataAdd(md, PS_LIST_TAIL, "template", PS_DATA_BOOL, "Primary Key", 0)) {
    10478         psError(PS_ERR_UNKNOWN, false, "failed to add item template");
    10479         psFree(md);
    10480         return false;
    10481     }
    10482     if (!psMetadataAdd(md, PS_LIST_TAIL, "stack_id", PS_DATA_S64, "fkey(stack_id) ref stackSumSkyfile(stack_id)", 0)) {
    10483         psError(PS_ERR_UNKNOWN, false, "failed to add item stack_id");
    10484         psFree(md);
    10485         return false;
    10486     }
    10487     if (!psMetadataAdd(md, PS_LIST_TAIL, "warp_id", PS_DATA_S64, "fkey(warp_id, skycell_id, tess_id) ref warpSkyfile(warp_id, skycell_id, tess_id)", 0)) {
     10442    if (!psMetadataAdd(md, PS_LIST_TAIL, "warp_id", PS_DATA_S64, "Primary Key fkey(warp_id, skycell_id, tess_id) ref warpSkyfile(warp_id, skycell_id, tess_id)", 0)) {
    1048810443        psError(PS_ERR_UNKNOWN, false, "failed to add item warp_id");
    1048910444        psFree(md);
    1049010445        return false;
    1049110446    }
    10492     if (!psMetadataAdd(md, PS_LIST_TAIL, "skycell_id", PS_DATA_STRING, "Key", "64")) {
     10447    if (!psMetadataAdd(md, PS_LIST_TAIL, "skycell_id", PS_DATA_STRING, "Primary Key", "64")) {
    1049310448        psError(PS_ERR_UNKNOWN, false, "failed to add item skycell_id");
    1049410449        psFree(md);
    1049510450        return false;
    1049610451    }
    10497     if (!psMetadataAdd(md, PS_LIST_TAIL, "tess_id", PS_DATA_STRING, "Key", "64")) {
     10452    if (!psMetadataAdd(md, PS_LIST_TAIL, "tess_id", PS_DATA_STRING, "Primary Key", "64")) {
    1049810453        psError(PS_ERR_UNKNOWN, false, "failed to add item tess_id");
    1049910454        psFree(md);
     
    1050510460        return false;
    1050610461    }
     10462    if (!psMetadataAdd(md, PS_LIST_TAIL, "template", PS_DATA_BOOL, NULL, 0)) {
     10463        psError(PS_ERR_UNKNOWN, false, "failed to add item template");
     10464        psFree(md);
     10465        return false;
     10466    }
    1050710467
    1050810468    bool status = psDBCreateTable(dbh, DIFFINPUTSKYFILE_TABLE_NAME, md);
     
    1051810478}
    1051910479
    10520 bool diffInputSkyfileInsert(psDB * dbh, psS64 diff_id, bool template, psS64 stack_id, psS64 warp_id, const char *skycell_id, const char *tess_id, const char *kind)
     10480bool diffInputSkyfileInsert(psDB * dbh, psS64 diff_id, psS64 warp_id, const char *skycell_id, const char *tess_id, const char *kind, bool template)
    1052110481{
    1052210482    psMetadata *md = psMetadataAlloc();
     
    1052610486        return false;
    1052710487    }
     10488    if (!psMetadataAdd(md, PS_LIST_TAIL, "warp_id", PS_DATA_S64, NULL, warp_id)) {
     10489        psError(PS_ERR_UNKNOWN, false, "failed to add item warp_id");
     10490        psFree(md);
     10491        return false;
     10492    }
     10493    if (!psMetadataAdd(md, PS_LIST_TAIL, "skycell_id", PS_DATA_STRING, NULL, skycell_id)) {
     10494        psError(PS_ERR_UNKNOWN, false, "failed to add item skycell_id");
     10495        psFree(md);
     10496        return false;
     10497    }
     10498    if (!psMetadataAdd(md, PS_LIST_TAIL, "tess_id", PS_DATA_STRING, NULL, tess_id)) {
     10499        psError(PS_ERR_UNKNOWN, false, "failed to add item tess_id");
     10500        psFree(md);
     10501        return false;
     10502    }
     10503    if (!psMetadataAdd(md, PS_LIST_TAIL, "kind", PS_DATA_STRING, NULL, kind)) {
     10504        psError(PS_ERR_UNKNOWN, false, "failed to add item kind");
     10505        psFree(md);
     10506        return false;
     10507    }
    1052810508    if (!psMetadataAdd(md, PS_LIST_TAIL, "template", PS_DATA_BOOL, NULL, template)) {
    1052910509        psError(PS_ERR_UNKNOWN, false, "failed to add item template");
    10530         psFree(md);
    10531         return false;
    10532     }
    10533     if (!psMetadataAdd(md, PS_LIST_TAIL, "stack_id", PS_DATA_S64, NULL, stack_id)) {
    10534         psError(PS_ERR_UNKNOWN, false, "failed to add item stack_id");
    10535         psFree(md);
    10536         return false;
    10537     }
    10538     if (!psMetadataAdd(md, PS_LIST_TAIL, "warp_id", PS_DATA_S64, NULL, warp_id)) {
    10539         psError(PS_ERR_UNKNOWN, false, "failed to add item warp_id");
    10540         psFree(md);
    10541         return false;
    10542     }
    10543     if (!psMetadataAdd(md, PS_LIST_TAIL, "skycell_id", PS_DATA_STRING, NULL, skycell_id)) {
    10544         psError(PS_ERR_UNKNOWN, false, "failed to add item skycell_id");
    10545         psFree(md);
    10546         return false;
    10547     }
    10548     if (!psMetadataAdd(md, PS_LIST_TAIL, "tess_id", PS_DATA_STRING, NULL, tess_id)) {
    10549         psError(PS_ERR_UNKNOWN, false, "failed to add item tess_id");
    10550         psFree(md);
    10551         return false;
    10552     }
    10553     if (!psMetadataAdd(md, PS_LIST_TAIL, "kind", PS_DATA_STRING, NULL, kind)) {
    10554         psError(PS_ERR_UNKNOWN, false, "failed to add item kind");
    1055510510        psFree(md);
    1055610511        return false;
     
    1057910534bool diffInputSkyfileInsertObject(psDB *dbh, diffInputSkyfileRow *object)
    1058010535{
    10581     return diffInputSkyfileInsert(dbh, object->diff_id, object->template, object->stack_id, object->warp_id, object->skycell_id, object->tess_id, object->kind);
     10536    return diffInputSkyfileInsert(dbh, object->diff_id, object->warp_id, object->skycell_id, object->tess_id, object->kind, object->template);
    1058210537}
    1058310538
     
    1065710612        return false;
    1065810613    }
     10614    if (!psMetadataAdd(md, PS_LIST_TAIL, "warp_id", PS_DATA_S64, NULL, object->warp_id)) {
     10615        psError(PS_ERR_UNKNOWN, false, "failed to add item warp_id");
     10616        psFree(md);
     10617        return false;
     10618    }
     10619    if (!psMetadataAdd(md, PS_LIST_TAIL, "skycell_id", PS_DATA_STRING, NULL, object->skycell_id)) {
     10620        psError(PS_ERR_UNKNOWN, false, "failed to add item skycell_id");
     10621        psFree(md);
     10622        return false;
     10623    }
     10624    if (!psMetadataAdd(md, PS_LIST_TAIL, "tess_id", PS_DATA_STRING, NULL, object->tess_id)) {
     10625        psError(PS_ERR_UNKNOWN, false, "failed to add item tess_id");
     10626        psFree(md);
     10627        return false;
     10628    }
     10629    if (!psMetadataAdd(md, PS_LIST_TAIL, "kind", PS_DATA_STRING, NULL, object->kind)) {
     10630        psError(PS_ERR_UNKNOWN, false, "failed to add item kind");
     10631        psFree(md);
     10632        return false;
     10633    }
    1065910634    if (!psMetadataAdd(md, PS_LIST_TAIL, "template", PS_DATA_BOOL, NULL, object->template)) {
    1066010635        psError(PS_ERR_UNKNOWN, false, "failed to add item template");
     
    1066210637        return false;
    1066310638    }
    10664     if (!psMetadataAdd(md, PS_LIST_TAIL, "stack_id", PS_DATA_S64, NULL, object->stack_id)) {
    10665         psError(PS_ERR_UNKNOWN, false, "failed to add item stack_id");
    10666         psFree(md);
    10667         return false;
    10668     }
    10669     if (!psMetadataAdd(md, PS_LIST_TAIL, "warp_id", PS_DATA_S64, NULL, object->warp_id)) {
    10670         psError(PS_ERR_UNKNOWN, false, "failed to add item warp_id");
    10671         psFree(md);
    10672         return false;
    10673     }
    10674     if (!psMetadataAdd(md, PS_LIST_TAIL, "skycell_id", PS_DATA_STRING, NULL, object->skycell_id)) {
    10675         psError(PS_ERR_UNKNOWN, false, "failed to add item skycell_id");
    10676         psFree(md);
    10677         return false;
    10678     }
    10679     if (!psMetadataAdd(md, PS_LIST_TAIL, "tess_id", PS_DATA_STRING, NULL, object->tess_id)) {
    10680         psError(PS_ERR_UNKNOWN, false, "failed to add item tess_id");
    10681         psFree(md);
    10682         return false;
    10683     }
    10684     if (!psMetadataAdd(md, PS_LIST_TAIL, "kind", PS_DATA_STRING, NULL, object->kind)) {
    10685         psError(PS_ERR_UNKNOWN, false, "failed to add item kind");
    10686         psFree(md);
    10687         return false;
    10688     }
    1068910639
    1069010640
     
    1070110651        return false;
    1070210652    }
     10653    psS64 warp_id = psMetadataLookupS64(&status, md, "warp_id");
     10654    if (!status) {
     10655        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item warp_id");
     10656        return false;
     10657    }
     10658    char* skycell_id = psMetadataLookupPtr(&status, md, "skycell_id");
     10659    if (!status) {
     10660        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item skycell_id");
     10661        return false;
     10662    }
     10663    char* tess_id = psMetadataLookupPtr(&status, md, "tess_id");
     10664    if (!status) {
     10665        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item tess_id");
     10666        return false;
     10667    }
     10668    char* kind = psMetadataLookupPtr(&status, md, "kind");
     10669    if (!status) {
     10670        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item kind");
     10671        return false;
     10672    }
    1070310673    bool template = psMetadataLookupBool(&status, md, "template");
    1070410674    if (!status) {
     
    1070610676        return false;
    1070710677    }
    10708     psS64 stack_id = psMetadataLookupS64(&status, md, "stack_id");
    10709     if (!status) {
    10710         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item stack_id");
    10711         return false;
    10712     }
    10713     psS64 warp_id = psMetadataLookupS64(&status, md, "warp_id");
    10714     if (!status) {
    10715         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item warp_id");
    10716         return false;
    10717     }
    10718     char* skycell_id = psMetadataLookupPtr(&status, md, "skycell_id");
    10719     if (!status) {
    10720         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item skycell_id");
    10721         return false;
    10722     }
    10723     char* tess_id = psMetadataLookupPtr(&status, md, "tess_id");
    10724     if (!status) {
    10725         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item tess_id");
    10726         return false;
    10727     }
    10728     char* kind = psMetadataLookupPtr(&status, md, "kind");
    10729     if (!status) {
    10730         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item kind");
    10731         return false;
    10732     }
    10733 
    10734     return diffInputSkyfileRowAlloc(diff_id, template, stack_id, warp_id, skycell_id, tess_id, kind);
     10678
     10679    return diffInputSkyfileRowAlloc(diff_id, warp_id, skycell_id, tess_id, kind, template);
    1073510680}
    1073610681psArray *diffInputSkyfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    1084410789static void diffSkyfileRowFree(diffSkyfileRow *object);
    1084510790
    10846 diffSkyfileRow *diffSkyfileRowAlloc(psS64 diff_id, const char *uri, const char *path_base, psF64 bg, psF64 bg_stdev, psS16 fault)
     10791diffSkyfileRow *diffSkyfileRowAlloc(psS64 diff_id, const char *uri, const char *path_base, psF64 bg, psF64 bg_stdev)
    1084710792{
    1084810793    diffSkyfileRow  *_object;
     
    1085610801    _object->bg = bg;
    1085710802    _object->bg_stdev = bg_stdev;
    10858     _object->fault = fault;
    1085910803
    1086010804    return _object;
     
    1089510839        return false;
    1089610840    }
    10897     if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "Key", 0)) {
    10898         psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    10899         psFree(md);
    10900         return false;
    10901     }
    1090210841
    1090310842    bool status = psDBCreateTable(dbh, DIFFSKYFILE_TABLE_NAME, md);
     
    1091310852}
    1091410853
    10915 bool diffSkyfileInsert(psDB * dbh, psS64 diff_id, const char *uri, const char *path_base, psF64 bg, psF64 bg_stdev, psS16 fault)
     10854bool diffSkyfileInsert(psDB * dbh, psS64 diff_id, const char *uri, const char *path_base, psF64 bg, psF64 bg_stdev)
    1091610855{
    1091710856    psMetadata *md = psMetadataAlloc();
     
    1093810877    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_stdev", PS_DATA_F64, NULL, bg_stdev)) {
    1093910878        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_stdev");
    10940         psFree(md);
    10941         return false;
    10942     }
    10943     if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, fault)) {
    10944         psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    1094510879        psFree(md);
    1094610880        return false;
     
    1096910903bool diffSkyfileInsertObject(psDB *dbh, diffSkyfileRow *object)
    1097010904{
    10971     return diffSkyfileInsert(dbh, object->diff_id, object->uri, object->path_base, object->bg, object->bg_stdev, object->fault);
     10905    return diffSkyfileInsert(dbh, object->diff_id, object->uri, object->path_base, object->bg, object->bg_stdev);
    1097210906}
    1097310907
     
    1106711001        return false;
    1106811002    }
    11069     if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) {
    11070         psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    11071         psFree(md);
    11072         return false;
    11073     }
    1107411003
    1107511004
     
    1110611035        return false;
    1110711036    }
    11108     psS16 fault = psMetadataLookupS16(&status, md, "fault");
    11109     if (!status) {
    11110         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault");
    11111         return false;
    11112     }
    11113 
    11114     return diffSkyfileRowAlloc(diff_id, uri, path_base, bg, bg_stdev, fault);
     11037
     11038    return diffSkyfileRowAlloc(diff_id, uri, path_base, bg, bg_stdev);
    1111511039}
    1111611040psArray *diffSkyfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    1192311847static void stackSumSkyfileRowFree(stackSumSkyfileRow *object);
    1192411848
    11925 stackSumSkyfileRow *stackSumSkyfileRowAlloc(psS64 stack_id, const char *uri, const char *path_base, psF64 bg, psF64 bg_stdev, psS16 fault)
     11849stackSumSkyfileRow *stackSumSkyfileRowAlloc(psS64 stack_id, const char *uri, const char *path_base, psF64 bg, psF64 bg_stdev)
    1192611850{
    1192711851    stackSumSkyfileRow *_object;
     
    1193511859    _object->bg = bg;
    1193611860    _object->bg_stdev = bg_stdev;
    11937     _object->fault = fault;
    1193811861
    1193911862    return _object;
     
    1197411897        return false;
    1197511898    }
    11976     if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "Key", 0)) {
    11977         psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    11978         psFree(md);
    11979         return false;
    11980     }
    1198111899
    1198211900    bool status = psDBCreateTable(dbh, STACKSUMSKYFILE_TABLE_NAME, md);
     
    1199211910}
    1199311911
    11994 bool stackSumSkyfileInsert(psDB * dbh, psS64 stack_id, const char *uri, const char *path_base, psF64 bg, psF64 bg_stdev, psS16 fault)
     11912bool stackSumSkyfileInsert(psDB * dbh, psS64 stack_id, const char *uri, const char *path_base, psF64 bg, psF64 bg_stdev)
    1199511913{
    1199611914    psMetadata *md = psMetadataAlloc();
     
    1201711935    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_stdev", PS_DATA_F64, NULL, bg_stdev)) {
    1201811936        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_stdev");
    12019         psFree(md);
    12020         return false;
    12021     }
    12022     if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, fault)) {
    12023         psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    1202411937        psFree(md);
    1202511938        return false;
     
    1204811961bool stackSumSkyfileInsertObject(psDB *dbh, stackSumSkyfileRow *object)
    1204911962{
    12050     return stackSumSkyfileInsert(dbh, object->stack_id, object->uri, object->path_base, object->bg, object->bg_stdev, object->fault);
     11963    return stackSumSkyfileInsert(dbh, object->stack_id, object->uri, object->path_base, object->bg, object->bg_stdev);
    1205111964}
    1205211965
     
    1214612059        return false;
    1214712060    }
    12148     if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) {
    12149         psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    12150         psFree(md);
    12151         return false;
    12152     }
    1215312061
    1215412062
     
    1218512093        return false;
    1218612094    }
    12187     psS16 fault = psMetadataLookupS16(&status, md, "fault");
    12188     if (!status) {
    12189         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault");
    12190         return false;
    12191     }
    12192 
    12193     return stackSumSkyfileRowAlloc(stack_id, uri, path_base, bg, bg_stdev, fault);
     12095
     12096    return stackSumSkyfileRowAlloc(stack_id, uri, path_base, bg, bg_stdev);
    1219412097}
    1219512098psArray *stackSumSkyfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    1237112274        return false;
    1237212275    }
    12373     if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Key INDEX(det_id, iteration)", 0)) {
     12276    if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Key", 0)) {
    1237412277        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
    1237512278        psFree(md);
     
    1320213105{
    1320313106    psMetadata *md = psMetadataAlloc();
    13204     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key fkey(det_id) ref detRun(det_id)", 0)) {
     13107    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key", 0)) {
    1320513108        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    1320613109        psFree(md);
    1320713110        return false;
    1320813111    }
    13209     if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key fkey(exp_id) ref rawExp(exp_id)", 0)) {
     13112    if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key", 0)) {
    1321013113        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
    1321113114        psFree(md);
    1321213115        return false;
    1321313116    }
    13214     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key INDEX(det_id, exp_id)", 64)) {
     13117    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key", 64)) {
    1321513118        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1321613119        psFree(md);
    1321713120        return false;
    1321813121    }
    13219     if (!psMetadataAdd(md, PS_LIST_TAIL, "include", PS_DATA_BOOL, "INDEX(det_id, iteration)", 0)) {
     13122    if (!psMetadataAdd(md, PS_LIST_TAIL, "include", PS_DATA_BOOL, NULL, 0)) {
    1322013123        psError(PS_ERR_UNKNOWN, false, "failed to add item include");
    1322113124        psFree(md);
     
    1355613459{
    1355713460    psMetadata *md = psMetadataAlloc();
    13558     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key fkey(det_id, exp_id) ref detInputExp(det_id, exp_id)", 0)) {
     13461    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key", 0)) {
    1355913462        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    1356013463        psFree(md);
    1356113464        return false;
    1356213465    }
    13563     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key fkey(exp_id, class_id) ref rawImfile(exp_id, class_id)", 64)) {
     13466    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key", 64)) {
    1356413467        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1356513468        psFree(md);
    1356613469        return false;
    1356713470    }
    13568     if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, "Primary Key INDEX(det_id, class_id)", "64")) {
     13471    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, "Primary Key", "64")) {
    1356913472        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
    1357013473        psFree(md);
    1357113474        return false;
    1357213475    }
    13573     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, "INDEX(det_id, exp_id)", "255")) {
     13476    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, "255")) {
    1357413477        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    1357513478        psFree(md);
     
    1418614089{
    1418714090    psMetadata *md = psMetadataAlloc();
    14188     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key fkey(det_id, exp_id) ref detInputExp(det_id, exp_id)", 0)) {
     14091    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key", 0)) {
    1418914092        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    1419014093        psFree(md);
    1419114094        return false;
    1419214095    }
    14193     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key fkey(det_id, exp_id) ref detProcessedImfile(det_id, exp_id)", 64)) {
     14096    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key", 64)) {
    1419414097        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1419514098        psFree(md);
     
    1477514678{
    1477614679    psMetadata *md = psMetadataAlloc();
    14777     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key fkey(det_id, iteration) ref detInputExp(det_id, iteration)", 0)) {
     14680    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key", 0)) {
    1477814681        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    1477914682        psFree(md);
    1478014683        return false;
    1478114684    }
    14782     if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key fkey(det_id, class_id) ref detProcessedImfile(det_id, class_id)", 0)) {
     14685    if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key", 0)) {
    1478314686        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
    1478414687        psFree(md);
     
    1531315216{
    1531415217    psMetadata *md = psMetadataAlloc();
    15315     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key fkey(det_id, iteration) ref detInputExp(det_id, iteration)", 0)) {
     15218    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key", 0)) {
    1531615219        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    1531715220        psFree(md);
    1531815221        return false;
    1531915222    }
    15320     if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key fkey(det_id, iteration, class_id) ref detStackedImfile(det_id, iteration, class_id)", 0)) {
     15223    if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key", 0)) {
    1532115224        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
    1532215225        psFree(md);
     
    1568215585{
    1568315586    psMetadata *md = psMetadataAlloc();
    15684     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key fkey(det_id) ref detInputExp(det_id)", 0)) {
     15587    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key", 0)) {
    1568515588        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    1568615589        psFree(md);
    1568715590        return false;
    1568815591    }
    15689     if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key fkey(det_id, iteration, class_id) ref detNormalizedStatImfile(det_id, iteration, class_id)", 0)) {
     15592    if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key", 0)) {
    1569015593        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
    1569115594        psFree(md);
    1569215595        return false;
    1569315596    }
    15694     if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, "Primary Key INDEX(det_id, iteration)", "64")) {
     15597    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, "Primary Key", "64")) {
    1569515598        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
    1569615599        psFree(md);
     
    1622916132{
    1623016133    psMetadata *md = psMetadataAlloc();
    16231     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key fkey(det_id, iteration) ref detInputExp(det_id, iteration)", 0)) {
     16134    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key", 0)) {
    1623216135        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    1623316136        psFree(md);
    1623416137        return false;
    1623516138    }
    16236     if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key fkey(det_id, iteration) ref detNormalizedImfile(det_id, iteration)", 0)) {
     16139    if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key", 0)) {
    1623716140        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
    1623816141        psFree(md);
     
    1672316626static void detResidImfileRowFree(detResidImfileRow *object);
    1672416627
    16725 detResidImfileRow *detResidImfileRowAlloc(psS64 det_id, psS32 iteration, psS64 exp_id, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 bg_skewness, psF64 bg_kurtosis, psF64 bin_stdev, psF64 fringe_0, psF64 fringe_1, psF64 fringe_2, psF64 fringe_resid_0, psF64 fringe_resid_1, psF64 fringe_resid_2, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *path_base, psS16 fault)
     16628detResidImfileRow *detResidImfileRowAlloc(psS64 det_id, psS32 iteration, psS64 exp_id, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 bin_stdev, psF64 fringe_0, psF64 fringe_1, psF64 fringe_2, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *path_base, psS16 fault)
    1672616629{
    1672716630    detResidImfileRow *_object;
     
    1673916642    _object->bg_stdev = bg_stdev;
    1674016643    _object->bg_mean_stdev = bg_mean_stdev;
    16741     _object->bg_skewness = bg_skewness;
    16742     _object->bg_kurtosis = bg_kurtosis;
    1674316644    _object->bin_stdev = bin_stdev;
    1674416645    _object->fringe_0 = fringe_0;
    1674516646    _object->fringe_1 = fringe_1;
    1674616647    _object->fringe_2 = fringe_2;
    16747     _object->fringe_resid_0 = fringe_resid_0;
    16748     _object->fringe_resid_1 = fringe_resid_1;
    16749     _object->fringe_resid_2 = fringe_resid_2;
    1675016648    _object->user_1 = user_1;
    1675116649    _object->user_2 = user_2;
     
    1677016668{
    1677116669    psMetadata *md = psMetadataAlloc();
    16772     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key fkey(det_id, iteration, exp_id) ref detInputExp(det_id, iteration, exp_id)", 0)) {
     16670    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key", 0)) {
    1677316671        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    1677416672        psFree(md);
    1677516673        return false;
    1677616674    }
    16777     if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key fkey(det_id, exp_id, class_id) ref detProcessedImfile(det_id, exp_id, class_id)", 0)) {
     16675    if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key", 0)) {
    1677816676        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
    1677916677        psFree(md);
    1678016678        return false;
    1678116679    }
    16782     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key fkey(det_id, iteration) ref detNormalizedExp(det_id, iteration)", 64)) {
     16680    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key", 64)) {
    1678316681        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1678416682        psFree(md);
    1678516683        return false;
    1678616684    }
    16787     if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, "Primary Key INDEX(det_id, iteration, exp_id)", "64")) {
     16685    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, "Primary Key", "64")) {
    1678816686        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
    1678916687        psFree(md);
     
    1681516713        return false;
    1681616714    }
    16817     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_skewness", PS_DATA_F64, NULL, 0.0)) {
    16818         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_skewness");
    16819         psFree(md);
    16820         return false;
    16821     }
    16822     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_kurtosis", PS_DATA_F64, NULL, 0.0)) {
    16823         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_kurtosis");
    16824         psFree(md);
    16825         return false;
    16826     }
    1682716715    if (!psMetadataAdd(md, PS_LIST_TAIL, "bin_stdev", PS_DATA_F64, NULL, 0.0)) {
    1682816716        psError(PS_ERR_UNKNOWN, false, "failed to add item bin_stdev");
     
    1684516733        return false;
    1684616734    }
    16847     if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_0", PS_DATA_F64, NULL, 0.0)) {
    16848         psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_0");
    16849         psFree(md);
    16850         return false;
    16851     }
    16852     if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_1", PS_DATA_F64, NULL, 0.0)) {
    16853         psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_1");
    16854         psFree(md);
    16855         return false;
    16856     }
    16857     if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_2", PS_DATA_F64, NULL, 0.0)) {
    16858         psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_2");
    16859         psFree(md);
    16860         return false;
    16861     }
    1686216735    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, 0.0)) {
    1686316736        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
     
    1690816781}
    1690916782
    16910 bool detResidImfileInsert(psDB * dbh, psS64 det_id, psS32 iteration, psS64 exp_id, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 bg_skewness, psF64 bg_kurtosis, psF64 bin_stdev, psF64 fringe_0, psF64 fringe_1, psF64 fringe_2, psF64 fringe_resid_0, psF64 fringe_resid_1, psF64 fringe_resid_2, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *path_base, psS16 fault)
     16783bool detResidImfileInsert(psDB * dbh, psS64 det_id, psS32 iteration, psS64 exp_id, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 bin_stdev, psF64 fringe_0, psF64 fringe_1, psF64 fringe_2, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *path_base, psS16 fault)
    1691116784{
    1691216785    psMetadata *md = psMetadataAlloc();
     
    1695616829        return false;
    1695716830    }
    16958     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_skewness", PS_DATA_F64, NULL, bg_skewness)) {
    16959         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_skewness");
    16960         psFree(md);
    16961         return false;
    16962     }
    16963     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_kurtosis", PS_DATA_F64, NULL, bg_kurtosis)) {
    16964         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_kurtosis");
    16965         psFree(md);
    16966         return false;
    16967     }
    1696816831    if (!psMetadataAdd(md, PS_LIST_TAIL, "bin_stdev", PS_DATA_F64, NULL, bin_stdev)) {
    1696916832        psError(PS_ERR_UNKNOWN, false, "failed to add item bin_stdev");
     
    1698316846    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_2", PS_DATA_F64, NULL, fringe_2)) {
    1698416847        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_2");
    16985         psFree(md);
    16986         return false;
    16987     }
    16988     if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_0", PS_DATA_F64, NULL, fringe_resid_0)) {
    16989         psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_0");
    16990         psFree(md);
    16991         return false;
    16992     }
    16993     if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_1", PS_DATA_F64, NULL, fringe_resid_1)) {
    16994         psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_1");
    16995         psFree(md);
    16996         return false;
    16997     }
    16998     if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_2", PS_DATA_F64, NULL, fringe_resid_2)) {
    16999         psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_2");
    1700016848        psFree(md);
    1700116849        return false;
     
    1705916907bool detResidImfileInsertObject(psDB *dbh, detResidImfileRow *object)
    1706016908{
    17061     return detResidImfileInsert(dbh, object->det_id, object->iteration, object->exp_id, object->class_id, object->uri, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->bg_skewness, object->bg_kurtosis, object->bin_stdev, object->fringe_0, object->fringe_1, object->fringe_2, object->fringe_resid_0, object->fringe_resid_1, object->fringe_resid_2, object->user_1, object->user_2, object->user_3, object->user_4, object->user_5, object->path_base, object->fault);
     16909    return detResidImfileInsert(dbh, object->det_id, object->iteration, object->exp_id, object->class_id, object->uri, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->bin_stdev, object->fringe_0, object->fringe_1, object->fringe_2, object->user_1, object->user_2, object->user_3, object->user_4, object->user_5, object->path_base, object->fault);
    1706216910}
    1706316911
     
    1717717025        return false;
    1717817026    }
    17179     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_skewness", PS_DATA_F64, NULL, object->bg_skewness)) {
    17180         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_skewness");
    17181         psFree(md);
    17182         return false;
    17183     }
    17184     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_kurtosis", PS_DATA_F64, NULL, object->bg_kurtosis)) {
    17185         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_kurtosis");
    17186         psFree(md);
    17187         return false;
    17188     }
    1718917027    if (!psMetadataAdd(md, PS_LIST_TAIL, "bin_stdev", PS_DATA_F64, NULL, object->bin_stdev)) {
    1719017028        psError(PS_ERR_UNKNOWN, false, "failed to add item bin_stdev");
     
    1720717045        return false;
    1720817046    }
    17209     if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_0", PS_DATA_F64, NULL, object->fringe_resid_0)) {
    17210         psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_0");
    17211         psFree(md);
    17212         return false;
    17213     }
    17214     if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_1", PS_DATA_F64, NULL, object->fringe_resid_1)) {
    17215         psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_1");
    17216         psFree(md);
    17217         return false;
    17218     }
    17219     if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_2", PS_DATA_F64, NULL, object->fringe_resid_2)) {
    17220         psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_2");
    17221         psFree(md);
    17222         return false;
    17223     }
    1722417047    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, object->user_1)) {
    1722517048        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
     
    1731117134        return false;
    1731217135    }
    17313     psF64 bg_skewness = psMetadataLookupF64(&status, md, "bg_skewness");
    17314     if (!status) {
    17315         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_skewness");
    17316         return false;
    17317     }
    17318     psF64 bg_kurtosis = psMetadataLookupF64(&status, md, "bg_kurtosis");
    17319     if (!status) {
    17320         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_kurtosis");
    17321         return false;
    17322     }
    1732317136    psF64 bin_stdev = psMetadataLookupF64(&status, md, "bin_stdev");
    1732417137    if (!status) {
     
    1734117154        return false;
    1734217155    }
    17343     psF64 fringe_resid_0 = psMetadataLookupF64(&status, md, "fringe_resid_0");
    17344     if (!status) {
    17345         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fringe_resid_0");
    17346         return false;
    17347     }
    17348     psF64 fringe_resid_1 = psMetadataLookupF64(&status, md, "fringe_resid_1");
    17349     if (!status) {
    17350         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fringe_resid_1");
    17351         return false;
    17352     }
    17353     psF64 fringe_resid_2 = psMetadataLookupF64(&status, md, "fringe_resid_2");
    17354     if (!status) {
    17355         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fringe_resid_2");
    17356         return false;
    17357     }
    1735817156    psF64 user_1 = psMetadataLookupF64(&status, md, "user_1");
    1735917157    if (!status) {
     
    1739217190    }
    1739317191
    17394     return detResidImfileRowAlloc(det_id, iteration, exp_id, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, bg_skewness, bg_kurtosis, bin_stdev, fringe_0, fringe_1, fringe_2, fringe_resid_0, fringe_resid_1, fringe_resid_2, user_1, user_2, user_3, user_4, user_5, path_base, fault);
     17192    return detResidImfileRowAlloc(det_id, iteration, exp_id, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, bin_stdev, fringe_0, fringe_1, fringe_2, user_1, user_2, user_3, user_4, user_5, path_base, fault);
    1739517193}
    1739617194psArray *detResidImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    1750417302static void detResidExpRowFree(detResidExpRow *object);
    1750517303
    17506 detResidExpRow *detResidExpRowAlloc(psS64 det_id, psS32 iteration, psS64 exp_id, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 bg_skewness, psF64 bg_kurtosis, psF64 bin_stdev, psF64 fringe_0, psF64 fringe_1, psF64 fringe_2, psF64 fringe_resid_0, psF64 fringe_resid_1, psF64 fringe_resid_2, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *path_base, bool accept, psS16 fault)
     17304detResidExpRow *detResidExpRowAlloc(psS64 det_id, psS32 iteration, psS64 exp_id, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 bin_stdev, psF64 fringe_0, psF64 fringe_1, psF64 fringe_2, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *path_base, bool accept, psS16 fault)
    1750717305{
    1750817306    detResidExpRow  *_object;
     
    1751817316    _object->bg_stdev = bg_stdev;
    1751917317    _object->bg_mean_stdev = bg_mean_stdev;
    17520     _object->bg_skewness = bg_skewness;
    17521     _object->bg_kurtosis = bg_kurtosis;
    1752217318    _object->bin_stdev = bin_stdev;
    1752317319    _object->fringe_0 = fringe_0;
    1752417320    _object->fringe_1 = fringe_1;
    1752517321    _object->fringe_2 = fringe_2;
    17526     _object->fringe_resid_0 = fringe_resid_0;
    17527     _object->fringe_resid_1 = fringe_resid_1;
    17528     _object->fringe_resid_2 = fringe_resid_2;
    1752917322    _object->user_1 = user_1;
    1753017323    _object->user_2 = user_2;
     
    1754817341{
    1754917342    psMetadata *md = psMetadataAlloc();
    17550     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key fkey(det_id, iteration, exp_id) ref detInputExp(det_id, iteration, exp_id)", 0)) {
     17343    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key", 0)) {
    1755117344        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    1755217345        psFree(md);
    1755317346        return false;
    1755417347    }
    17555     if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key fkey(det_id, iteration, exp_id) ref detResidImfile(det_id, iteration, exp_id)", 0)) {
     17348    if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key", 0)) {
    1755617349        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
    1755717350        psFree(md);
    1755817351        return false;
    1755917352    }
    17560     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key INDEX(det_id, iteration)", 64)) {
     17353    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key", 64)) {
    1756117354        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1756217355        psFree(md);
     
    1758317376        return false;
    1758417377    }
    17585     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_skewness", PS_DATA_F64, NULL, 0.0)) {
    17586         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_skewness");
    17587         psFree(md);
    17588         return false;
    17589     }
    17590     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_kurtosis", PS_DATA_F64, NULL, 0.0)) {
    17591         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_kurtosis");
    17592         psFree(md);
    17593         return false;
    17594     }
    1759517378    if (!psMetadataAdd(md, PS_LIST_TAIL, "bin_stdev", PS_DATA_F64, NULL, 0.0)) {
    1759617379        psError(PS_ERR_UNKNOWN, false, "failed to add item bin_stdev");
     
    1761317396        return false;
    1761417397    }
    17615     if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_0", PS_DATA_F64, NULL, 0.0)) {
    17616         psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_0");
    17617         psFree(md);
    17618         return false;
    17619     }
    17620     if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_1", PS_DATA_F64, NULL, 0.0)) {
    17621         psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_1");
    17622         psFree(md);
    17623         return false;
    17624     }
    17625     if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_2", PS_DATA_F64, NULL, 0.0)) {
    17626         psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_2");
    17627         psFree(md);
    17628         return false;
    17629     }
    1763017398    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, 0.0)) {
    1763117399        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
     
    1768117449}
    1768217450
    17683 bool detResidExpInsert(psDB * dbh, psS64 det_id, psS32 iteration, psS64 exp_id, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 bg_skewness, psF64 bg_kurtosis, psF64 bin_stdev, psF64 fringe_0, psF64 fringe_1, psF64 fringe_2, psF64 fringe_resid_0, psF64 fringe_resid_1, psF64 fringe_resid_2, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *path_base, bool accept, psS16 fault)
     17451bool detResidExpInsert(psDB * dbh, psS64 det_id, psS32 iteration, psS64 exp_id, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 bin_stdev, psF64 fringe_0, psF64 fringe_1, psF64 fringe_2, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *path_base, bool accept, psS16 fault)
    1768417452{
    1768517453    psMetadata *md = psMetadataAlloc();
     
    1771917487        return false;
    1772017488    }
    17721     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_skewness", PS_DATA_F64, NULL, bg_skewness)) {
    17722         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_skewness");
    17723         psFree(md);
    17724         return false;
    17725     }
    17726     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_kurtosis", PS_DATA_F64, NULL, bg_kurtosis)) {
    17727         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_kurtosis");
    17728         psFree(md);
    17729         return false;
    17730     }
    1773117489    if (!psMetadataAdd(md, PS_LIST_TAIL, "bin_stdev", PS_DATA_F64, NULL, bin_stdev)) {
    1773217490        psError(PS_ERR_UNKNOWN, false, "failed to add item bin_stdev");
     
    1774617504    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_2", PS_DATA_F64, NULL, fringe_2)) {
    1774717505        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_2");
    17748         psFree(md);
    17749         return false;
    17750     }
    17751     if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_0", PS_DATA_F64, NULL, fringe_resid_0)) {
    17752         psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_0");
    17753         psFree(md);
    17754         return false;
    17755     }
    17756     if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_1", PS_DATA_F64, NULL, fringe_resid_1)) {
    17757         psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_1");
    17758         psFree(md);
    17759         return false;
    17760     }
    17761     if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_2", PS_DATA_F64, NULL, fringe_resid_2)) {
    17762         psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_2");
    1776317506        psFree(md);
    1776417507        return false;
     
    1782717570bool detResidExpInsertObject(psDB *dbh, detResidExpRow *object)
    1782817571{
    17829     return detResidExpInsert(dbh, object->det_id, object->iteration, object->exp_id, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->bg_skewness, object->bg_kurtosis, object->bin_stdev, object->fringe_0, object->fringe_1, object->fringe_2, object->fringe_resid_0, object->fringe_resid_1, object->fringe_resid_2, object->user_1, object->user_2, object->user_3, object->user_4, object->user_5, object->path_base, object->accept, object->fault);
     17572    return detResidExpInsert(dbh, object->det_id, object->iteration, object->exp_id, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->bin_stdev, object->fringe_0, object->fringe_1, object->fringe_2, object->user_1, object->user_2, object->user_3, object->user_4, object->user_5, object->path_base, object->accept, object->fault);
    1783017573}
    1783117574
     
    1793517678        return false;
    1793617679    }
    17937     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_skewness", PS_DATA_F64, NULL, object->bg_skewness)) {
    17938         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_skewness");
    17939         psFree(md);
    17940         return false;
    17941     }
    17942     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_kurtosis", PS_DATA_F64, NULL, object->bg_kurtosis)) {
    17943         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_kurtosis");
    17944         psFree(md);
    17945         return false;
    17946     }
    1794717680    if (!psMetadataAdd(md, PS_LIST_TAIL, "bin_stdev", PS_DATA_F64, NULL, object->bin_stdev)) {
    1794817681        psError(PS_ERR_UNKNOWN, false, "failed to add item bin_stdev");
     
    1796517698        return false;
    1796617699    }
    17967     if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_0", PS_DATA_F64, NULL, object->fringe_resid_0)) {
    17968         psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_0");
    17969         psFree(md);
    17970         return false;
    17971     }
    17972     if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_1", PS_DATA_F64, NULL, object->fringe_resid_1)) {
    17973         psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_1");
    17974         psFree(md);
    17975         return false;
    17976     }
    17977     if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_2", PS_DATA_F64, NULL, object->fringe_resid_2)) {
    17978         psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_2");
    17979         psFree(md);
    17980         return false;
    17981     }
    1798217700    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, object->user_1)) {
    1798317701        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
     
    1806417782        return false;
    1806517783    }
    18066     psF64 bg_skewness = psMetadataLookupF64(&status, md, "bg_skewness");
    18067     if (!status) {
    18068         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_skewness");
    18069         return false;
    18070     }
    18071     psF64 bg_kurtosis = psMetadataLookupF64(&status, md, "bg_kurtosis");
    18072     if (!status) {
    18073         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_kurtosis");
    18074         return false;
    18075     }
    1807617784    psF64 bin_stdev = psMetadataLookupF64(&status, md, "bin_stdev");
    1807717785    if (!status) {
     
    1809417802        return false;
    1809517803    }
    18096     psF64 fringe_resid_0 = psMetadataLookupF64(&status, md, "fringe_resid_0");
    18097     if (!status) {
    18098         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fringe_resid_0");
    18099         return false;
    18100     }
    18101     psF64 fringe_resid_1 = psMetadataLookupF64(&status, md, "fringe_resid_1");
    18102     if (!status) {
    18103         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fringe_resid_1");
    18104         return false;
    18105     }
    18106     psF64 fringe_resid_2 = psMetadataLookupF64(&status, md, "fringe_resid_2");
    18107     if (!status) {
    18108         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fringe_resid_2");
    18109         return false;
    18110     }
    1811117804    psF64 user_1 = psMetadataLookupF64(&status, md, "user_1");
    1811217805    if (!status) {
     
    1815017843    }
    1815117844
    18152     return detResidExpRowAlloc(det_id, iteration, exp_id, recipe, bg, bg_stdev, bg_mean_stdev, bg_skewness, bg_kurtosis, bin_stdev, fringe_0, fringe_1, fringe_2, fringe_resid_0, fringe_resid_1, fringe_resid_2, user_1, user_2, user_3, user_4, user_5, path_base, accept, fault);
     17845    return detResidExpRowAlloc(det_id, iteration, exp_id, recipe, bg, bg_stdev, bg_mean_stdev, bin_stdev, fringe_0, fringe_1, fringe_2, user_1, user_2, user_3, user_4, user_5, path_base, accept, fault);
    1815317846}
    1815417847psArray *detResidExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    1828717980{
    1828817981    psMetadata *md = psMetadataAlloc();
    18289     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key fkey(det_id, iteration) ref detInputExp(det_id, iteration)", 0)) {
     17982    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key", 0)) {
    1829017983        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    1829117984        psFree(md);
    1829217985        return false;
    1829317986    }
    18294     if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key fkey(det_id, iteration) ref detResidExp(det_id, iteration)", 0)) {
     17987    if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key", 0)) {
    1829517988        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
    1829617989        psFree(md);
     
    1865918352    return true;
    1866018353}
    18661 static void detRegisteredImfileRowFree(detRegisteredImfileRow *object);
    18662 
    18663 detRegisteredImfileRow *detRegisteredImfileRowAlloc(psS64 det_id, psS32 iteration, const char *class_id, const char *uri, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *path_base, psS16 fault)
    18664 {
    18665     detRegisteredImfileRow *_object;
    18666 
    18667     _object = psAlloc(sizeof(detRegisteredImfileRow));
    18668     psMemSetDeallocator(_object, (psFreeFunc)detRegisteredImfileRowFree);
    18669 
    18670     _object->det_id = det_id;
    18671     _object->iteration = iteration;
    18672     _object->class_id = psStringCopy(class_id);
    18673     _object->uri = psStringCopy(uri);
    18674     _object->bg = bg;
    18675     _object->bg_stdev = bg_stdev;
    18676     _object->bg_mean_stdev = bg_mean_stdev;
    18677     _object->user_1 = user_1;
    18678     _object->user_2 = user_2;
    18679     _object->user_3 = user_3;
    18680     _object->user_4 = user_4;
    18681     _object->user_5 = user_5;
    18682     _object->path_base = psStringCopy(path_base);
    18683     _object->fault = fault;
    18684 
    18685     return _object;
    18686 }
    18687 
    18688 static void detRegisteredImfileRowFree(detRegisteredImfileRow *object)
    18689 {
    18690     psFree(object->class_id);
    18691     psFree(object->uri);
    18692     psFree(object->path_base);
    18693 }
    18694 
    18695 bool detRegisteredImfileCreateTable(psDB *dbh)
    18696 {
    18697     psMetadata *md = psMetadataAlloc();
    18698     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key fkey(det_id, iteration) ref detRun(det_id, iteration)", 0)) {
    18699         psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    18700         psFree(md);
    18701         return false;
    18702     }
    18703     if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key", 0)) {
    18704         psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
    18705         psFree(md);
    18706         return false;
    18707     }
    18708     if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, "Primary Key", "64")) {
    18709         psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
    18710         psFree(md);
    18711         return false;
    18712     }
    18713     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, "255")) {
    18714         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    18715         psFree(md);
    18716         return false;
    18717     }
    18718     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg", PS_DATA_F64, NULL, 0.0)) {
    18719         psError(PS_ERR_UNKNOWN, false, "failed to add item bg");
    18720         psFree(md);
    18721         return false;
    18722     }
    18723     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_stdev", PS_DATA_F64, NULL, 0.0)) {
    18724         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_stdev");
    18725         psFree(md);
    18726         return false;
    18727     }
    18728     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_mean_stdev", PS_DATA_F64, NULL, 0.0)) {
    18729         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev");
    18730         psFree(md);
    18731         return false;
    18732     }
    18733     if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, 0.0)) {
    18734         psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
    18735         psFree(md);
    18736         return false;
    18737     }
    18738     if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, 0.0)) {
    18739         psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
    18740         psFree(md);
    18741         return false;
    18742     }
    18743     if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, 0.0)) {
    18744         psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
    18745         psFree(md);
    18746         return false;
    18747     }
    18748     if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, 0.0)) {
    18749         psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
    18750         psFree(md);
    18751         return false;
    18752     }
    18753     if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, 0.0)) {
    18754         psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
    18755         psFree(md);
    18756         return false;
    18757     }
    18758     if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, "255")) {
    18759         psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
    18760         psFree(md);
    18761         return false;
    18762     }
    18763     if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "Key NOT NULL", 0)) {
    18764         psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    18765         psFree(md);
    18766         return false;
    18767     }
    18768 
    18769     bool status = psDBCreateTable(dbh, DETREGISTEREDIMFILE_TABLE_NAME, md);
    18770 
    18771     psFree(md);
    18772 
    18773     return status;
    18774 }
    18775 
    18776 bool detRegisteredImfileDropTable(psDB *dbh)
    18777 {
    18778     return psDBDropTable(dbh, DETREGISTEREDIMFILE_TABLE_NAME);
    18779 }
    18780 
    18781 bool detRegisteredImfileInsert(psDB * dbh, psS64 det_id, psS32 iteration, const char *class_id, const char *uri, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *path_base, psS16 fault)
    18782 {
    18783     psMetadata *md = psMetadataAlloc();
    18784     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, NULL, det_id)) {
    18785         psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    18786         psFree(md);
    18787         return false;
    18788     }
    18789     if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, NULL, iteration)) {
    18790         psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
    18791         psFree(md);
    18792         return false;
    18793     }
    18794     if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, class_id)) {
    18795         psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
    18796         psFree(md);
    18797         return false;
    18798     }
    18799     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) {
    18800         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    18801         psFree(md);
    18802         return false;
    18803     }
    18804     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg", PS_DATA_F64, NULL, bg)) {
    18805         psError(PS_ERR_UNKNOWN, false, "failed to add item bg");
    18806         psFree(md);
    18807         return false;
    18808     }
    18809     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_stdev", PS_DATA_F64, NULL, bg_stdev)) {
    18810         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_stdev");
    18811         psFree(md);
    18812         return false;
    18813     }
    18814     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_mean_stdev", PS_DATA_F64, NULL, bg_mean_stdev)) {
    18815         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev");
    18816         psFree(md);
    18817         return false;
    18818     }
    18819     if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, user_1)) {
    18820         psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
    18821         psFree(md);
    18822         return false;
    18823     }
    18824     if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, user_2)) {
    18825         psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
    18826         psFree(md);
    18827         return false;
    18828     }
    18829     if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, user_3)) {
    18830         psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
    18831         psFree(md);
    18832         return false;
    18833     }
    18834     if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, user_4)) {
    18835         psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
    18836         psFree(md);
    18837         return false;
    18838     }
    18839     if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, user_5)) {
    18840         psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
    18841         psFree(md);
    18842         return false;
    18843     }
    18844     if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, path_base)) {
    18845         psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
    18846         psFree(md);
    18847         return false;
    18848     }
    18849     if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, fault)) {
    18850         psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    18851         psFree(md);
    18852         return false;
    18853     }
    18854 
    18855     bool status = psDBInsertOneRow(dbh, DETREGISTEREDIMFILE_TABLE_NAME, md);
    18856     psFree(md);
    18857 
    18858     return status;
    18859 }
    18860 
    18861 long long detRegisteredImfileDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
    18862 {
    18863     long long       deleted = 0;
    18864 
    18865     long long count = psDBDeleteRows(dbh, DETREGISTEREDIMFILE_TABLE_NAME, where, limit);
    18866     if (count < 0) {
    18867         psError(PS_ERR_UNKNOWN, true, "failed to delete row from detRegisteredImfile");
    18868         return count;
    18869 
    18870         deleted += count;
    18871     }
    18872 
    18873     return deleted;
    18874 }
    18875 bool detRegisteredImfileInsertObject(psDB *dbh, detRegisteredImfileRow *object)
    18876 {
    18877     return detRegisteredImfileInsert(dbh, object->det_id, object->iteration, object->class_id, object->uri, object->bg, object->bg_stdev, object->bg_mean_stdev, object->user_1, object->user_2, object->user_3, object->user_4, object->user_5, object->path_base, object->fault);
    18878 }
    18879 
    18880 bool detRegisteredImfileInsertObjects(psDB *dbh, psArray *objects)
    18881 {
    18882     for (long i = 0; i < psArrayLength(objects); i++) {
    18883         if (!detRegisteredImfileInsertObject(dbh, objects->data[i])) {
    18884             return false;
    18885         }
    18886     }
    18887 
    18888     return true;
    18889 }
    18890 
    18891 bool detRegisteredImfileInsertFits(psDB *dbh, const psFits *fits)
    18892 {
    18893     psArray         *rowSet;
    18894 
    18895     // move to (the first?) extension named  DETREGISTEREDIMFILE_TABLE_NAME
    18896     if (!psFitsMoveExtName(fits, DETREGISTEREDIMFILE_TABLE_NAME)) {
    18897         psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", DETREGISTEREDIMFILE_TABLE_NAME);
    18898         return false;
    18899     }
    18900 
    18901     // check HDU type
    18902     if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
    18903         psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
    18904         return false;
    18905     }
    18906 
    18907     // read fits table
    18908     rowSet = psFitsReadTable(fits);
    18909     if (!rowSet) {
    18910         psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
    18911         psFree(rowSet);
    18912         return false;
    18913     }
    18914 
    18915     if (!psDBInsertRows(dbh, DETREGISTEREDIMFILE_TABLE_NAME, rowSet)) {
    18916         psError(PS_ERR_UNKNOWN, false, "databse insert failed");
    18917         psFree(rowSet);
    18918         return false;
    18919     }
    18920 
    18921     psFree(rowSet);
    18922 
    18923     return true;
    18924 }
    18925 
    18926 bool detRegisteredImfileSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
    18927 {
    18928     psArray         *rowSet;
    18929 
    18930     rowSet = psDBSelectRows(dbh, DETREGISTEREDIMFILE_TABLE_NAME, where, limit);
    18931     if (!rowSet) {
    18932         return false;
    18933     }
    18934 
    18935     // output to fits
    18936     if (!psFitsWriteTable(fits, NULL, rowSet, DETREGISTEREDIMFILE_TABLE_NAME)) {
    18937         psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
    18938         psFree(rowSet);
    18939         return false;
    18940     }
    18941 
    18942     psFree(rowSet);
    18943 
    18944     return true;
    18945 }
    18946 
    18947 psMetadata *detRegisteredImfileMetadataFromObject(const detRegisteredImfileRow *object)
    18948 {
    18949     psMetadata *md = psMetadataAlloc();
    18950     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, NULL, object->det_id)) {
    18951         psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    18952         psFree(md);
    18953         return false;
    18954     }
    18955     if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, NULL, object->iteration)) {
    18956         psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
    18957         psFree(md);
    18958         return false;
    18959     }
    18960     if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, object->class_id)) {
    18961         psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
    18962         psFree(md);
    18963         return false;
    18964     }
    18965     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) {
    18966         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    18967         psFree(md);
    18968         return false;
    18969     }
    18970     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg", PS_DATA_F64, NULL, object->bg)) {
    18971         psError(PS_ERR_UNKNOWN, false, "failed to add item bg");
    18972         psFree(md);
    18973         return false;
    18974     }
    18975     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_stdev", PS_DATA_F64, NULL, object->bg_stdev)) {
    18976         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_stdev");
    18977         psFree(md);
    18978         return false;
    18979     }
    18980     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_mean_stdev", PS_DATA_F64, NULL, object->bg_mean_stdev)) {
    18981         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev");
    18982         psFree(md);
    18983         return false;
    18984     }
    18985     if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, object->user_1)) {
    18986         psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
    18987         psFree(md);
    18988         return false;
    18989     }
    18990     if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, object->user_2)) {
    18991         psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
    18992         psFree(md);
    18993         return false;
    18994     }
    18995     if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, object->user_3)) {
    18996         psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
    18997         psFree(md);
    18998         return false;
    18999     }
    19000     if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, object->user_4)) {
    19001         psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
    19002         psFree(md);
    19003         return false;
    19004     }
    19005     if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, object->user_5)) {
    19006         psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
    19007         psFree(md);
    19008         return false;
    19009     }
    19010     if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, object->path_base)) {
    19011         psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
    19012         psFree(md);
    19013         return false;
    19014     }
    19015     if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) {
    19016         psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    19017         psFree(md);
    19018         return false;
    19019     }
    19020 
    19021 
    19022     return md;
    19023 }
    19024 
    19025 detRegisteredImfileRow *detRegisteredImfileObjectFromMetadata(psMetadata *md)
    19026 {
    19027 
    19028 bool status = false;
    19029     psS64 det_id = psMetadataLookupS64(&status, md, "det_id");
    19030     if (!status) {
    19031         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
    19032         return false;
    19033     }
    19034     psS32 iteration = psMetadataLookupS32(&status, md, "iteration");
    19035     if (!status) {
    19036         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item iteration");
    19037         return false;
    19038     }
    19039     char* class_id = psMetadataLookupPtr(&status, md, "class_id");
    19040     if (!status) {
    19041         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class_id");
    19042         return false;
    19043     }
    19044     char* uri = psMetadataLookupPtr(&status, md, "uri");
    19045     if (!status) {
    19046         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
    19047         return false;
    19048     }
    19049     psF64 bg = psMetadataLookupF64(&status, md, "bg");
    19050     if (!status) {
    19051         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg");
    19052         return false;
    19053     }
    19054     psF64 bg_stdev = psMetadataLookupF64(&status, md, "bg_stdev");
    19055     if (!status) {
    19056         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_stdev");
    19057         return false;
    19058     }
    19059     psF64 bg_mean_stdev = psMetadataLookupF64(&status, md, "bg_mean_stdev");
    19060     if (!status) {
    19061         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_mean_stdev");
    19062         return false;
    19063     }
    19064     psF64 user_1 = psMetadataLookupF64(&status, md, "user_1");
    19065     if (!status) {
    19066         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_1");
    19067         return false;
    19068     }
    19069     psF64 user_2 = psMetadataLookupF64(&status, md, "user_2");
    19070     if (!status) {
    19071         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_2");
    19072         return false;
    19073     }
    19074     psF64 user_3 = psMetadataLookupF64(&status, md, "user_3");
    19075     if (!status) {
    19076         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_3");
    19077         return false;
    19078     }
    19079     psF64 user_4 = psMetadataLookupF64(&status, md, "user_4");
    19080     if (!status) {
    19081         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_4");
    19082         return false;
    19083     }
    19084     psF64 user_5 = psMetadataLookupF64(&status, md, "user_5");
    19085     if (!status) {
    19086         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_5");
    19087         return false;
    19088     }
    19089     char* path_base = psMetadataLookupPtr(&status, md, "path_base");
    19090     if (!status) {
    19091         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item path_base");
    19092         return false;
    19093     }
    19094     psS16 fault = psMetadataLookupS16(&status, md, "fault");
    19095     if (!status) {
    19096         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault");
    19097         return false;
    19098     }
    19099 
    19100     return detRegisteredImfileRowAlloc(det_id, iteration, class_id, uri, bg, bg_stdev, bg_mean_stdev, user_1, user_2, user_3, user_4, user_5, path_base, fault);
    19101 }
    19102 psArray *detRegisteredImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
    19103 {
    19104     psArray         *rowSet;
    19105     psArray         *returnSet;
    19106     psU64           i;
    19107 
    19108     rowSet = psDBSelectRows(dbh, DETREGISTEREDIMFILE_TABLE_NAME, where, limit);
    19109     if (!rowSet) {
    19110         return NULL;
    19111     }
    19112 
    19113     // convert psMetadata rows to row objects
    19114 
    19115     returnSet = psArrayAllocEmpty(rowSet->n);
    19116 
    19117     for (i = 0; i < rowSet->n; i++) {
    19118         detRegisteredImfileRow *object = detRegisteredImfileObjectFromMetadata(rowSet->data[i]);
    19119         psArrayAdd(returnSet, 0, object);
    19120         psFree(object);
    19121     }
    19122 
    19123     psFree(rowSet);
    19124 
    19125     return returnSet;
    19126 }
    19127 bool detRegisteredImfileDeleteObject(psDB *dbh, const detRegisteredImfileRow *object)
    19128 {
    19129     psMetadata *where = detRegisteredImfileMetadataFromObject(object);
    19130     long long count = psDBDeleteRows(dbh, DETREGISTEREDIMFILE_TABLE_NAME, where, 0);
    19131     psFree(where);
    19132     if (count < 0) {
    19133         psError(PS_ERR_UNKNOWN, true, "failed to delete row from detRegisteredImfile");
    19134         return false;
    19135     }
    19136     if (count > 1) {
    19137         // XXX should this be a psAbort() instead?  It is possible that
    19138         // having an object match multiple rows was by design.
    19139         psError(PS_ERR_UNKNOWN, true, "detRegisteredImfileRow object matched more then one row.  Check your database schema");
    19140         return false;
    19141     }
    19142 
    19143     return true;
    19144 }
    19145 long long detRegisteredImfileDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
    19146 {
    19147     long long       deleted = 0;
    19148 
    19149     for (long long i = 0; i < objects->n; i++) {
    19150         detRegisteredImfileRow *object = objects->data[i];
    19151         psMetadata *where = detRegisteredImfileMetadataFromObject(object);
    19152         long long count = psDBDeleteRows(dbh, DETREGISTEREDIMFILE_TABLE_NAME, where, limit);
    19153         psFree(where);
    19154         if (count < 0) {
    19155             psError(PS_ERR_UNKNOWN, true, "failed to delete row from detRegisteredImfile");
    19156             return count;
    19157         }
    19158 
    19159         deleted += count;
    19160     }
    19161 
    19162     return deleted;
    19163 }
    19164 bool detRegisteredImfilePrintObjects(FILE *stream, psArray *objects, bool mdcf)
    19165 {
    19166     PS_ASSERT_PTR_NON_NULL(objects, false);
    19167 
    19168     psMetadata *output = psMetadataAlloc();
    19169     for (long i = 0; i < psArrayLength(objects); i++) {
    19170         psMetadata *md = detRegisteredImfileMetadataFromObject(objects->data[i]);
    19171         if (!psMetadataAddMetadata(
    19172             output,
    19173             PS_LIST_TAIL,
    19174             DETREGISTEREDIMFILE_TABLE_NAME,
    19175             PS_META_DUPLICATE_OK,
    19176             NULL,
    19177             md
    19178         )) {
    19179             psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
    19180             psFree(md);
    19181             psFree(output);
    19182             return false;
    19183         }
    19184         psFree(md);
    19185     }
    19186 
    19187     if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
    19188         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    19189         psFree(output);
    19190     }
    19191     psFree(output);
    19192 
    19193     return true;
    19194 }
    19195 bool detRegisteredImfilePrintObject(FILE *stream, detRegisteredImfileRow *object, bool mdcf)
    19196 {
    19197     PS_ASSERT_PTR_NON_NULL(object, false);
    19198 
    19199     psMetadata *md = detRegisteredImfileMetadataFromObject(object);
    19200 
    19201     if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
    19202         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    19203         psFree(md);
    19204     }
    19205 
    19206     psFree(md);
    19207 
    19208     return true;
    19209 }
    19210 static void detCorrectedExpRowFree(detCorrectedExpRow *object);
    19211 
    19212 detCorrectedExpRow *detCorrectedExpRowAlloc(psS64 det_id, psS64 exp_id, const char *uri, psS64 corr_id, const char *corr_type, const char *recipe, const char *path_base, psS16 fault)
    19213 {
    19214     detCorrectedExpRow *_object;
    19215 
    19216     _object = psAlloc(sizeof(detCorrectedExpRow));
    19217     psMemSetDeallocator(_object, (psFreeFunc)detCorrectedExpRowFree);
    19218 
    19219     _object->det_id = det_id;
    19220     _object->exp_id = exp_id;
    19221     _object->uri = psStringCopy(uri);
    19222     _object->corr_id = corr_id;
    19223     _object->corr_type = psStringCopy(corr_type);
    19224     _object->recipe = psStringCopy(recipe);
    19225     _object->path_base = psStringCopy(path_base);
    19226     _object->fault = fault;
    19227 
    19228     return _object;
    19229 }
    19230 
    19231 static void detCorrectedExpRowFree(detCorrectedExpRow *object)
    19232 {
    19233     psFree(object->uri);
    19234     psFree(object->corr_type);
    19235     psFree(object->recipe);
    19236     psFree(object->path_base);
    19237 }
    19238 
    19239 bool detCorrectedExpCreateTable(psDB *dbh)
    19240 {
    19241     psMetadata *md = psMetadataAlloc();
    19242     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key fkey(det_id, exp_id) ref detInputExp(det_id, exp_id)", 0)) {
    19243         psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    19244         psFree(md);
    19245         return false;
    19246     }
    19247     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key fkey(exp_id, class_id) ref rawImfile(exp_id, class_id)", 64)) {
    19248         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    19249         psFree(md);
    19250         return false;
    19251     }
    19252     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, "INDEX(det_id, exp_id)", "255")) {
    19253         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    19254         psFree(md);
    19255         return false;
    19256     }
    19257     if (!psMetadataAdd(md, PS_LIST_TAIL, "corr_id", PS_DATA_S64, NULL, 0)) {
    19258         psError(PS_ERR_UNKNOWN, false, "failed to add item corr_id");
    19259         psFree(md);
    19260         return false;
    19261     }
    19262     if (!psMetadataAdd(md, PS_LIST_TAIL, "corr_type", PS_DATA_STRING, NULL, "64")) {
    19263         psError(PS_ERR_UNKNOWN, false, "failed to add item corr_type");
    19264         psFree(md);
    19265         return false;
    19266     }
    19267     if (!psMetadataAdd(md, PS_LIST_TAIL, "recipe", PS_DATA_STRING, NULL, "64")) {
    19268         psError(PS_ERR_UNKNOWN, false, "failed to add item recipe");
    19269         psFree(md);
    19270         return false;
    19271     }
    19272     if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, "255")) {
    19273         psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
    19274         psFree(md);
    19275         return false;
    19276     }
    19277     if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "Key NOT NULL", 0)) {
    19278         psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    19279         psFree(md);
    19280         return false;
    19281     }
    19282 
    19283     bool status = psDBCreateTable(dbh, DETCORRECTEDEXP_TABLE_NAME, md);
    19284 
    19285     psFree(md);
    19286 
    19287     return status;
    19288 }
    19289 
    19290 bool detCorrectedExpDropTable(psDB *dbh)
    19291 {
    19292     return psDBDropTable(dbh, DETCORRECTEDEXP_TABLE_NAME);
    19293 }
    19294 
    19295 bool detCorrectedExpInsert(psDB * dbh, psS64 det_id, psS64 exp_id, const char *uri, psS64 corr_id, const char *corr_type, const char *recipe, const char *path_base, psS16 fault)
    19296 {
    19297     psMetadata *md = psMetadataAlloc();
    19298     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, NULL, det_id)) {
    19299         psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    19300         psFree(md);
    19301         return false;
    19302     }
    19303     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, exp_id)) {
    19304         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    19305         psFree(md);
    19306         return false;
    19307     }
    19308     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) {
    19309         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    19310         psFree(md);
    19311         return false;
    19312     }
    19313     if (!psMetadataAdd(md, PS_LIST_TAIL, "corr_id", PS_DATA_S64, NULL, corr_id)) {
    19314         psError(PS_ERR_UNKNOWN, false, "failed to add item corr_id");
    19315         psFree(md);
    19316         return false;
    19317     }
    19318     if (!psMetadataAdd(md, PS_LIST_TAIL, "corr_type", PS_DATA_STRING, NULL, corr_type)) {
    19319         psError(PS_ERR_UNKNOWN, false, "failed to add item corr_type");
    19320         psFree(md);
    19321         return false;
    19322     }
    19323     if (!psMetadataAdd(md, PS_LIST_TAIL, "recipe", PS_DATA_STRING, NULL, recipe)) {
    19324         psError(PS_ERR_UNKNOWN, false, "failed to add item recipe");
    19325         psFree(md);
    19326         return false;
    19327     }
    19328     if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, path_base)) {
    19329         psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
    19330         psFree(md);
    19331         return false;
    19332     }
    19333     if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, fault)) {
    19334         psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    19335         psFree(md);
    19336         return false;
    19337     }
    19338 
    19339     bool status = psDBInsertOneRow(dbh, DETCORRECTEDEXP_TABLE_NAME, md);
    19340     psFree(md);
    19341 
    19342     return status;
    19343 }
    19344 
    19345 long long detCorrectedExpDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
    19346 {
    19347     long long       deleted = 0;
    19348 
    19349     long long count = psDBDeleteRows(dbh, DETCORRECTEDEXP_TABLE_NAME, where, limit);
    19350     if (count < 0) {
    19351         psError(PS_ERR_UNKNOWN, true, "failed to delete row from detCorrectedExp");
    19352         return count;
    19353 
    19354         deleted += count;
    19355     }
    19356 
    19357     return deleted;
    19358 }
    19359 bool detCorrectedExpInsertObject(psDB *dbh, detCorrectedExpRow *object)
    19360 {
    19361     return detCorrectedExpInsert(dbh, object->det_id, object->exp_id, object->uri, object->corr_id, object->corr_type, object->recipe, object->path_base, object->fault);
    19362 }
    19363 
    19364 bool detCorrectedExpInsertObjects(psDB *dbh, psArray *objects)
    19365 {
    19366     for (long i = 0; i < psArrayLength(objects); i++) {
    19367         if (!detCorrectedExpInsertObject(dbh, objects->data[i])) {
    19368             return false;
    19369         }
    19370     }
    19371 
    19372     return true;
    19373 }
    19374 
    19375 bool detCorrectedExpInsertFits(psDB *dbh, const psFits *fits)
    19376 {
    19377     psArray         *rowSet;
    19378 
    19379     // move to (the first?) extension named  DETCORRECTEDEXP_TABLE_NAME
    19380     if (!psFitsMoveExtName(fits, DETCORRECTEDEXP_TABLE_NAME)) {
    19381         psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", DETCORRECTEDEXP_TABLE_NAME);
    19382         return false;
    19383     }
    19384 
    19385     // check HDU type
    19386     if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
    19387         psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
    19388         return false;
    19389     }
    19390 
    19391     // read fits table
    19392     rowSet = psFitsReadTable(fits);
    19393     if (!rowSet) {
    19394         psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
    19395         psFree(rowSet);
    19396         return false;
    19397     }
    19398 
    19399     if (!psDBInsertRows(dbh, DETCORRECTEDEXP_TABLE_NAME, rowSet)) {
    19400         psError(PS_ERR_UNKNOWN, false, "databse insert failed");
    19401         psFree(rowSet);
    19402         return false;
    19403     }
    19404 
    19405     psFree(rowSet);
    19406 
    19407     return true;
    19408 }
    19409 
    19410 bool detCorrectedExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
    19411 {
    19412     psArray         *rowSet;
    19413 
    19414     rowSet = psDBSelectRows(dbh, DETCORRECTEDEXP_TABLE_NAME, where, limit);
    19415     if (!rowSet) {
    19416         return false;
    19417     }
    19418 
    19419     // output to fits
    19420     if (!psFitsWriteTable(fits, NULL, rowSet, DETCORRECTEDEXP_TABLE_NAME)) {
    19421         psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
    19422         psFree(rowSet);
    19423         return false;
    19424     }
    19425 
    19426     psFree(rowSet);
    19427 
    19428     return true;
    19429 }
    19430 
    19431 psMetadata *detCorrectedExpMetadataFromObject(const detCorrectedExpRow *object)
    19432 {
    19433     psMetadata *md = psMetadataAlloc();
    19434     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, NULL, object->det_id)) {
    19435         psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    19436         psFree(md);
    19437         return false;
    19438     }
    19439     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, object->exp_id)) {
    19440         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    19441         psFree(md);
    19442         return false;
    19443     }
    19444     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) {
    19445         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    19446         psFree(md);
    19447         return false;
    19448     }
    19449     if (!psMetadataAdd(md, PS_LIST_TAIL, "corr_id", PS_DATA_S64, NULL, object->corr_id)) {
    19450         psError(PS_ERR_UNKNOWN, false, "failed to add item corr_id");
    19451         psFree(md);
    19452         return false;
    19453     }
    19454     if (!psMetadataAdd(md, PS_LIST_TAIL, "corr_type", PS_DATA_STRING, NULL, object->corr_type)) {
    19455         psError(PS_ERR_UNKNOWN, false, "failed to add item corr_type");
    19456         psFree(md);
    19457         return false;
    19458     }
    19459     if (!psMetadataAdd(md, PS_LIST_TAIL, "recipe", PS_DATA_STRING, NULL, object->recipe)) {
    19460         psError(PS_ERR_UNKNOWN, false, "failed to add item recipe");
    19461         psFree(md);
    19462         return false;
    19463     }
    19464     if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, object->path_base)) {
    19465         psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
    19466         psFree(md);
    19467         return false;
    19468     }
    19469     if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) {
    19470         psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    19471         psFree(md);
    19472         return false;
    19473     }
    19474 
    19475 
    19476     return md;
    19477 }
    19478 
    19479 detCorrectedExpRow *detCorrectedExpObjectFromMetadata(psMetadata *md)
    19480 {
    19481 
    19482 bool status = false;
    19483     psS64 det_id = psMetadataLookupS64(&status, md, "det_id");
    19484     if (!status) {
    19485         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
    19486         return false;
    19487     }
    19488     psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id");
    19489     if (!status) {
    19490         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
    19491         return false;
    19492     }
    19493     char* uri = psMetadataLookupPtr(&status, md, "uri");
    19494     if (!status) {
    19495         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
    19496         return false;
    19497     }
    19498     psS64 corr_id = psMetadataLookupS64(&status, md, "corr_id");
    19499     if (!status) {
    19500         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item corr_id");
    19501         return false;
    19502     }
    19503     char* corr_type = psMetadataLookupPtr(&status, md, "corr_type");
    19504     if (!status) {
    19505         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item corr_type");
    19506         return false;
    19507     }
    19508     char* recipe = psMetadataLookupPtr(&status, md, "recipe");
    19509     if (!status) {
    19510         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item recipe");
    19511         return false;
    19512     }
    19513     char* path_base = psMetadataLookupPtr(&status, md, "path_base");
    19514     if (!status) {
    19515         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item path_base");
    19516         return false;
    19517     }
    19518     psS16 fault = psMetadataLookupS16(&status, md, "fault");
    19519     if (!status) {
    19520         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault");
    19521         return false;
    19522     }
    19523 
    19524     return detCorrectedExpRowAlloc(det_id, exp_id, uri, corr_id, corr_type, recipe, path_base, fault);
    19525 }
    19526 psArray *detCorrectedExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
    19527 {
    19528     psArray         *rowSet;
    19529     psArray         *returnSet;
    19530     psU64           i;
    19531 
    19532     rowSet = psDBSelectRows(dbh, DETCORRECTEDEXP_TABLE_NAME, where, limit);
    19533     if (!rowSet) {
    19534         return NULL;
    19535     }
    19536 
    19537     // convert psMetadata rows to row objects
    19538 
    19539     returnSet = psArrayAllocEmpty(rowSet->n);
    19540 
    19541     for (i = 0; i < rowSet->n; i++) {
    19542         detCorrectedExpRow *object = detCorrectedExpObjectFromMetadata(rowSet->data[i]);
    19543         psArrayAdd(returnSet, 0, object);
    19544         psFree(object);
    19545     }
    19546 
    19547     psFree(rowSet);
    19548 
    19549     return returnSet;
    19550 }
    19551 bool detCorrectedExpDeleteObject(psDB *dbh, const detCorrectedExpRow *object)
    19552 {
    19553     psMetadata *where = detCorrectedExpMetadataFromObject(object);
    19554     long long count = psDBDeleteRows(dbh, DETCORRECTEDEXP_TABLE_NAME, where, 0);
    19555     psFree(where);
    19556     if (count < 0) {
    19557         psError(PS_ERR_UNKNOWN, true, "failed to delete row from detCorrectedExp");
    19558         return false;
    19559     }
    19560     if (count > 1) {
    19561         // XXX should this be a psAbort() instead?  It is possible that
    19562         // having an object match multiple rows was by design.
    19563         psError(PS_ERR_UNKNOWN, true, "detCorrectedExpRow object matched more then one row.  Check your database schema");
    19564         return false;
    19565     }
    19566 
    19567     return true;
    19568 }
    19569 long long detCorrectedExpDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
    19570 {
    19571     long long       deleted = 0;
    19572 
    19573     for (long long i = 0; i < objects->n; i++) {
    19574         detCorrectedExpRow *object = objects->data[i];
    19575         psMetadata *where = detCorrectedExpMetadataFromObject(object);
    19576         long long count = psDBDeleteRows(dbh, DETCORRECTEDEXP_TABLE_NAME, where, limit);
    19577         psFree(where);
    19578         if (count < 0) {
    19579             psError(PS_ERR_UNKNOWN, true, "failed to delete row from detCorrectedExp");
    19580             return count;
    19581         }
    19582 
    19583         deleted += count;
    19584     }
    19585 
    19586     return deleted;
    19587 }
    19588 bool detCorrectedExpPrintObjects(FILE *stream, psArray *objects, bool mdcf)
    19589 {
    19590     PS_ASSERT_PTR_NON_NULL(objects, false);
    19591 
    19592     psMetadata *output = psMetadataAlloc();
    19593     for (long i = 0; i < psArrayLength(objects); i++) {
    19594         psMetadata *md = detCorrectedExpMetadataFromObject(objects->data[i]);
    19595         if (!psMetadataAddMetadata(
    19596             output,
    19597             PS_LIST_TAIL,
    19598             DETCORRECTEDEXP_TABLE_NAME,
    19599             PS_META_DUPLICATE_OK,
    19600             NULL,
    19601             md
    19602         )) {
    19603             psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
    19604             psFree(md);
    19605             psFree(output);
    19606             return false;
    19607         }
    19608         psFree(md);
    19609     }
    19610 
    19611     if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
    19612         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    19613         psFree(output);
    19614     }
    19615     psFree(output);
    19616 
    19617     return true;
    19618 }
    19619 bool detCorrectedExpPrintObject(FILE *stream, detCorrectedExpRow *object, bool mdcf)
    19620 {
    19621     PS_ASSERT_PTR_NON_NULL(object, false);
    19622 
    19623     psMetadata *md = detCorrectedExpMetadataFromObject(object);
    19624 
    19625     if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
    19626         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    19627         psFree(md);
    19628     }
    19629 
    19630     psFree(md);
    19631 
    19632     return true;
    19633 }
    19634 static void detCorrectedImfileRowFree(detCorrectedImfileRow *object);
    19635 
    19636 detCorrectedImfileRow *detCorrectedImfileRowAlloc(psS64 det_id, psS64 exp_id, const char *class_id, const char *uri, const char *path_base, psS16 fault)
    19637 {
    19638     detCorrectedImfileRow *_object;
    19639 
    19640     _object = psAlloc(sizeof(detCorrectedImfileRow));
    19641     psMemSetDeallocator(_object, (psFreeFunc)detCorrectedImfileRowFree);
    19642 
    19643     _object->det_id = det_id;
    19644     _object->exp_id = exp_id;
    19645     _object->class_id = psStringCopy(class_id);
    19646     _object->uri = psStringCopy(uri);
    19647     _object->path_base = psStringCopy(path_base);
    19648     _object->fault = fault;
    19649 
    19650     return _object;
    19651 }
    19652 
    19653 static void detCorrectedImfileRowFree(detCorrectedImfileRow *object)
    19654 {
    19655     psFree(object->class_id);
    19656     psFree(object->uri);
    19657     psFree(object->path_base);
    19658 }
    19659 
    19660 bool detCorrectedImfileCreateTable(psDB *dbh)
    19661 {
    19662     psMetadata *md = psMetadataAlloc();
    19663     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key fkey(det_id, exp_id) ref detInputExp(det_id, exp_id)", 0)) {
    19664         psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    19665         psFree(md);
    19666         return false;
    19667     }
    19668     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key fkey(exp_id, class_id) ref rawImfile(exp_id, class_id)", 64)) {
    19669         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    19670         psFree(md);
    19671         return false;
    19672     }
    19673     if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, "Primary Key INDEX(det_id, class_id)", "64")) {
    19674         psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
    19675         psFree(md);
    19676         return false;
    19677     }
    19678     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, "INDEX(det_id, exp_id)", "255")) {
    19679         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    19680         psFree(md);
    19681         return false;
    19682     }
    19683     if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, "255")) {
    19684         psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
    19685         psFree(md);
    19686         return false;
    19687     }
    19688     if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "Key NOT NULL", 0)) {
    19689         psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    19690         psFree(md);
    19691         return false;
    19692     }
    19693 
    19694     bool status = psDBCreateTable(dbh, DETCORRECTEDIMFILE_TABLE_NAME, md);
    19695 
    19696     psFree(md);
    19697 
    19698     return status;
    19699 }
    19700 
    19701 bool detCorrectedImfileDropTable(psDB *dbh)
    19702 {
    19703     return psDBDropTable(dbh, DETCORRECTEDIMFILE_TABLE_NAME);
    19704 }
    19705 
    19706 bool detCorrectedImfileInsert(psDB * dbh, psS64 det_id, psS64 exp_id, const char *class_id, const char *uri, const char *path_base, psS16 fault)
    19707 {
    19708     psMetadata *md = psMetadataAlloc();
    19709     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, NULL, det_id)) {
    19710         psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    19711         psFree(md);
    19712         return false;
    19713     }
    19714     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, exp_id)) {
    19715         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    19716         psFree(md);
    19717         return false;
    19718     }
    19719     if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, class_id)) {
    19720         psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
    19721         psFree(md);
    19722         return false;
    19723     }
    19724     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) {
    19725         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    19726         psFree(md);
    19727         return false;
    19728     }
    19729     if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, path_base)) {
    19730         psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
    19731         psFree(md);
    19732         return false;
    19733     }
    19734     if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, fault)) {
    19735         psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    19736         psFree(md);
    19737         return false;
    19738     }
    19739 
    19740     bool status = psDBInsertOneRow(dbh, DETCORRECTEDIMFILE_TABLE_NAME, md);
    19741     psFree(md);
    19742 
    19743     return status;
    19744 }
    19745 
    19746 long long detCorrectedImfileDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
    19747 {
    19748     long long       deleted = 0;
    19749 
    19750     long long count = psDBDeleteRows(dbh, DETCORRECTEDIMFILE_TABLE_NAME, where, limit);
    19751     if (count < 0) {
    19752         psError(PS_ERR_UNKNOWN, true, "failed to delete row from detCorrectedImfile");
    19753         return count;
    19754 
    19755         deleted += count;
    19756     }
    19757 
    19758     return deleted;
    19759 }
    19760 bool detCorrectedImfileInsertObject(psDB *dbh, detCorrectedImfileRow *object)
    19761 {
    19762     return detCorrectedImfileInsert(dbh, object->det_id, object->exp_id, object->class_id, object->uri, object->path_base, object->fault);
    19763 }
    19764 
    19765 bool detCorrectedImfileInsertObjects(psDB *dbh, psArray *objects)
    19766 {
    19767     for (long i = 0; i < psArrayLength(objects); i++) {
    19768         if (!detCorrectedImfileInsertObject(dbh, objects->data[i])) {
    19769             return false;
    19770         }
    19771     }
    19772 
    19773     return true;
    19774 }
    19775 
    19776 bool detCorrectedImfileInsertFits(psDB *dbh, const psFits *fits)
    19777 {
    19778     psArray         *rowSet;
    19779 
    19780     // move to (the first?) extension named  DETCORRECTEDIMFILE_TABLE_NAME
    19781     if (!psFitsMoveExtName(fits, DETCORRECTEDIMFILE_TABLE_NAME)) {
    19782         psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", DETCORRECTEDIMFILE_TABLE_NAME);
    19783         return false;
    19784     }
    19785 
    19786     // check HDU type
    19787     if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
    19788         psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
    19789         return false;
    19790     }
    19791 
    19792     // read fits table
    19793     rowSet = psFitsReadTable(fits);
    19794     if (!rowSet) {
    19795         psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
    19796         psFree(rowSet);
    19797         return false;
    19798     }
    19799 
    19800     if (!psDBInsertRows(dbh, DETCORRECTEDIMFILE_TABLE_NAME, rowSet)) {
    19801         psError(PS_ERR_UNKNOWN, false, "databse insert failed");
    19802         psFree(rowSet);
    19803         return false;
    19804     }
    19805 
    19806     psFree(rowSet);
    19807 
    19808     return true;
    19809 }
    19810 
    19811 bool detCorrectedImfileSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
    19812 {
    19813     psArray         *rowSet;
    19814 
    19815     rowSet = psDBSelectRows(dbh, DETCORRECTEDIMFILE_TABLE_NAME, where, limit);
    19816     if (!rowSet) {
    19817         return false;
    19818     }
    19819 
    19820     // output to fits
    19821     if (!psFitsWriteTable(fits, NULL, rowSet, DETCORRECTEDIMFILE_TABLE_NAME)) {
    19822         psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
    19823         psFree(rowSet);
    19824         return false;
    19825     }
    19826 
    19827     psFree(rowSet);
    19828 
    19829     return true;
    19830 }
    19831 
    19832 psMetadata *detCorrectedImfileMetadataFromObject(const detCorrectedImfileRow *object)
    19833 {
    19834     psMetadata *md = psMetadataAlloc();
    19835     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, NULL, object->det_id)) {
    19836         psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    19837         psFree(md);
    19838         return false;
    19839     }
    19840     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, object->exp_id)) {
    19841         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    19842         psFree(md);
    19843         return false;
    19844     }
    19845     if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, object->class_id)) {
    19846         psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
    19847         psFree(md);
    19848         return false;
    19849     }
    19850     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) {
    19851         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    19852         psFree(md);
    19853         return false;
    19854     }
    19855     if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, object->path_base)) {
    19856         psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
    19857         psFree(md);
    19858         return false;
    19859     }
    19860     if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) {
    19861         psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    19862         psFree(md);
    19863         return false;
    19864     }
    19865 
    19866 
    19867     return md;
    19868 }
    19869 
    19870 detCorrectedImfileRow *detCorrectedImfileObjectFromMetadata(psMetadata *md)
    19871 {
    19872 
    19873 bool status = false;
    19874     psS64 det_id = psMetadataLookupS64(&status, md, "det_id");
    19875     if (!status) {
    19876         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
    19877         return false;
    19878     }
    19879     psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id");
    19880     if (!status) {
    19881         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
    19882         return false;
    19883     }
    19884     char* class_id = psMetadataLookupPtr(&status, md, "class_id");
    19885     if (!status) {
    19886         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class_id");
    19887         return false;
    19888     }
    19889     char* uri = psMetadataLookupPtr(&status, md, "uri");
    19890     if (!status) {
    19891         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
    19892         return false;
    19893     }
    19894     char* path_base = psMetadataLookupPtr(&status, md, "path_base");
    19895     if (!status) {
    19896         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item path_base");
    19897         return false;
    19898     }
    19899     psS16 fault = psMetadataLookupS16(&status, md, "fault");
    19900     if (!status) {
    19901         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault");
    19902         return false;
    19903     }
    19904 
    19905     return detCorrectedImfileRowAlloc(det_id, exp_id, class_id, uri, path_base, fault);
    19906 }
    19907 psArray *detCorrectedImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
    19908 {
    19909     psArray         *rowSet;
    19910     psArray         *returnSet;
    19911     psU64           i;
    19912 
    19913     rowSet = psDBSelectRows(dbh, DETCORRECTEDIMFILE_TABLE_NAME, where, limit);
    19914     if (!rowSet) {
    19915         return NULL;
    19916     }
    19917 
    19918     // convert psMetadata rows to row objects
    19919 
    19920     returnSet = psArrayAllocEmpty(rowSet->n);
    19921 
    19922     for (i = 0; i < rowSet->n; i++) {
    19923         detCorrectedImfileRow *object = detCorrectedImfileObjectFromMetadata(rowSet->data[i]);
    19924         psArrayAdd(returnSet, 0, object);
    19925         psFree(object);
    19926     }
    19927 
    19928     psFree(rowSet);
    19929 
    19930     return returnSet;
    19931 }
    19932 bool detCorrectedImfileDeleteObject(psDB *dbh, const detCorrectedImfileRow *object)
    19933 {
    19934     psMetadata *where = detCorrectedImfileMetadataFromObject(object);
    19935     long long count = psDBDeleteRows(dbh, DETCORRECTEDIMFILE_TABLE_NAME, where, 0);
    19936     psFree(where);
    19937     if (count < 0) {
    19938         psError(PS_ERR_UNKNOWN, true, "failed to delete row from detCorrectedImfile");
    19939         return false;
    19940     }
    19941     if (count > 1) {
    19942         // XXX should this be a psAbort() instead?  It is possible that
    19943         // having an object match multiple rows was by design.
    19944         psError(PS_ERR_UNKNOWN, true, "detCorrectedImfileRow object matched more then one row.  Check your database schema");
    19945         return false;
    19946     }
    19947 
    19948     return true;
    19949 }
    19950 long long detCorrectedImfileDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
    19951 {
    19952     long long       deleted = 0;
    19953 
    19954     for (long long i = 0; i < objects->n; i++) {
    19955         detCorrectedImfileRow *object = objects->data[i];
    19956         psMetadata *where = detCorrectedImfileMetadataFromObject(object);
    19957         long long count = psDBDeleteRows(dbh, DETCORRECTEDIMFILE_TABLE_NAME, where, limit);
    19958         psFree(where);
    19959         if (count < 0) {
    19960             psError(PS_ERR_UNKNOWN, true, "failed to delete row from detCorrectedImfile");
    19961             return count;
    19962         }
    19963 
    19964         deleted += count;
    19965     }
    19966 
    19967     return deleted;
    19968 }
    19969 bool detCorrectedImfilePrintObjects(FILE *stream, psArray *objects, bool mdcf)
    19970 {
    19971     PS_ASSERT_PTR_NON_NULL(objects, false);
    19972 
    19973     psMetadata *output = psMetadataAlloc();
    19974     for (long i = 0; i < psArrayLength(objects); i++) {
    19975         psMetadata *md = detCorrectedImfileMetadataFromObject(objects->data[i]);
    19976         if (!psMetadataAddMetadata(
    19977             output,
    19978             PS_LIST_TAIL,
    19979             DETCORRECTEDIMFILE_TABLE_NAME,
    19980             PS_META_DUPLICATE_OK,
    19981             NULL,
    19982             md
    19983         )) {
    19984             psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
    19985             psFree(md);
    19986             psFree(output);
    19987             return false;
    19988         }
    19989         psFree(md);
    19990     }
    19991 
    19992     if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
    19993         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    19994         psFree(output);
    19995     }
    19996     psFree(output);
    19997 
    19998     return true;
    19999 }
    20000 bool detCorrectedImfilePrintObject(FILE *stream, detCorrectedImfileRow *object, bool mdcf)
    20001 {
    20002     PS_ASSERT_PTR_NON_NULL(object, false);
    20003 
    20004     psMetadata *md = detCorrectedImfileMetadataFromObject(object);
    20005 
    20006     if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
    20007         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    20008         psFree(md);
    20009     }
    20010 
    20011     psFree(md);
    20012 
    20013     return true;
    20014 }
    20015 static void magicRunRowFree(magicRunRow *object);
    20016 
    20017 magicRunRow *magicRunRowAlloc(psS64 magic_id, const char *state, const char *workdir, const char *workdir_state, const char *label, const char *dvodb, psTime* registered)
    20018 {
    20019     magicRunRow     *_object;
    20020 
    20021     _object = psAlloc(sizeof(magicRunRow));
    20022     psMemSetDeallocator(_object, (psFreeFunc)magicRunRowFree);
    20023 
    20024     _object->magic_id = magic_id;
    20025     _object->state = psStringCopy(state);
    20026     _object->workdir = psStringCopy(workdir);
    20027     _object->workdir_state = psStringCopy(workdir_state);
    20028     _object->label = psStringCopy(label);
    20029     _object->dvodb = psStringCopy(dvodb);
    20030     _object->registered = psTimeCopy(registered);
    20031 
    20032     return _object;
    20033 }
    20034 
    20035 static void magicRunRowFree(magicRunRow *object)
    20036 {
    20037     psFree(object->state);
    20038     psFree(object->workdir);
    20039     psFree(object->workdir_state);
    20040     psFree(object->label);
    20041     psFree(object->dvodb);
    20042     psFree(object->registered);
    20043 }
    20044 
    20045 bool magicRunCreateTable(psDB *dbh)
    20046 {
    20047     psMetadata *md = psMetadataAlloc();
    20048     if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, "Primary Key AUTO_INCREMENT", 0)) {
    20049         psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
    20050         psFree(md);
    20051         return false;
    20052     }
    20053     if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, "Key", "64")) {
    20054         psError(PS_ERR_UNKNOWN, false, "failed to add item state");
    20055         psFree(md);
    20056         return false;
    20057     }
    20058     if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, "255")) {
    20059         psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
    20060         psFree(md);
    20061         return false;
    20062     }
    20063     if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir_state", PS_DATA_STRING, "Key", "255")) {
    20064         psError(PS_ERR_UNKNOWN, false, "failed to add item workdir_state");
    20065         psFree(md);
    20066         return false;
    20067     }
    20068     if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, "key", "64")) {
    20069         psError(PS_ERR_UNKNOWN, false, "failed to add item label");
    20070         psFree(md);
    20071         return false;
    20072     }
    20073     if (!psMetadataAdd(md, PS_LIST_TAIL, "dvodb", PS_DATA_STRING, NULL, "255")) {
    20074         psError(PS_ERR_UNKNOWN, false, "failed to add item dvodb");
    20075         psFree(md);
    20076         return false;
    20077     }
    20078     if (!psMetadataAdd(md, PS_LIST_TAIL, "registered", PS_DATA_TIME, NULL, NULL)) {
    20079         psError(PS_ERR_UNKNOWN, false, "failed to add item registered");
    20080         psFree(md);
    20081         return false;
    20082     }
    20083 
    20084     bool status = psDBCreateTable(dbh, MAGICRUN_TABLE_NAME, md);
    20085 
    20086     psFree(md);
    20087 
    20088     return status;
    20089 }
    20090 
    20091 bool magicRunDropTable(psDB *dbh)
    20092 {
    20093     return psDBDropTable(dbh, MAGICRUN_TABLE_NAME);
    20094 }
    20095 
    20096 bool magicRunInsert(psDB * dbh, psS64 magic_id, const char *state, const char *workdir, const char *workdir_state, const char *label, const char *dvodb, psTime* registered)
    20097 {
    20098     psMetadata *md = psMetadataAlloc();
    20099     if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, magic_id)) {
    20100         psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
    20101         psFree(md);
    20102         return false;
    20103     }
    20104     if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, NULL, state)) {
    20105         psError(PS_ERR_UNKNOWN, false, "failed to add item state");
    20106         psFree(md);
    20107         return false;
    20108     }
    20109     if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, workdir)) {
    20110         psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
    20111         psFree(md);
    20112         return false;
    20113     }
    20114     if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir_state", PS_DATA_STRING, NULL, workdir_state)) {
    20115         psError(PS_ERR_UNKNOWN, false, "failed to add item workdir_state");
    20116         psFree(md);
    20117         return false;
    20118     }
    20119     if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, label)) {
    20120         psError(PS_ERR_UNKNOWN, false, "failed to add item label");
    20121         psFree(md);
    20122         return false;
    20123     }
    20124     if (!psMetadataAdd(md, PS_LIST_TAIL, "dvodb", PS_DATA_STRING, NULL, dvodb)) {
    20125         psError(PS_ERR_UNKNOWN, false, "failed to add item dvodb");
    20126         psFree(md);
    20127         return false;
    20128     }
    20129     if (!psMetadataAdd(md, PS_LIST_TAIL, "registered", PS_DATA_TIME, NULL, registered)) {
    20130         psError(PS_ERR_UNKNOWN, false, "failed to add item registered");
    20131         psFree(md);
    20132         return false;
    20133     }
    20134 
    20135     bool status = psDBInsertOneRow(dbh, MAGICRUN_TABLE_NAME, md);
    20136     psFree(md);
    20137 
    20138     return status;
    20139 }
    20140 
    20141 long long magicRunDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
    20142 {
    20143     long long       deleted = 0;
    20144 
    20145     long long count = psDBDeleteRows(dbh, MAGICRUN_TABLE_NAME, where, limit);
    20146     if (count < 0) {
    20147         psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicRun");
    20148         return count;
    20149 
    20150         deleted += count;
    20151     }
    20152 
    20153     return deleted;
    20154 }
    20155 bool magicRunInsertObject(psDB *dbh, magicRunRow *object)
    20156 {
    20157     return magicRunInsert(dbh, object->magic_id, object->state, object->workdir, object->workdir_state, object->label, object->dvodb, object->registered);
    20158 }
    20159 
    20160 bool magicRunInsertObjects(psDB *dbh, psArray *objects)
    20161 {
    20162     for (long i = 0; i < psArrayLength(objects); i++) {
    20163         if (!magicRunInsertObject(dbh, objects->data[i])) {
    20164             return false;
    20165         }
    20166     }
    20167 
    20168     return true;
    20169 }
    20170 
    20171 bool magicRunInsertFits(psDB *dbh, const psFits *fits)
    20172 {
    20173     psArray         *rowSet;
    20174 
    20175     // move to (the first?) extension named  MAGICRUN_TABLE_NAME
    20176     if (!psFitsMoveExtName(fits, MAGICRUN_TABLE_NAME)) {
    20177         psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", MAGICRUN_TABLE_NAME);
    20178         return false;
    20179     }
    20180 
    20181     // check HDU type
    20182     if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
    20183         psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
    20184         return false;
    20185     }
    20186 
    20187     // read fits table
    20188     rowSet = psFitsReadTable(fits);
    20189     if (!rowSet) {
    20190         psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
    20191         psFree(rowSet);
    20192         return false;
    20193     }
    20194 
    20195     if (!psDBInsertRows(dbh, MAGICRUN_TABLE_NAME, rowSet)) {
    20196         psError(PS_ERR_UNKNOWN, false, "databse insert failed");
    20197         psFree(rowSet);
    20198         return false;
    20199     }
    20200 
    20201     psFree(rowSet);
    20202 
    20203     return true;
    20204 }
    20205 
    20206 bool magicRunSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
    20207 {
    20208     psArray         *rowSet;
    20209 
    20210     rowSet = psDBSelectRows(dbh, MAGICRUN_TABLE_NAME, where, limit);
    20211     if (!rowSet) {
    20212         return false;
    20213     }
    20214 
    20215     // output to fits
    20216     if (!psFitsWriteTable(fits, NULL, rowSet, MAGICRUN_TABLE_NAME)) {
    20217         psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
    20218         psFree(rowSet);
    20219         return false;
    20220     }
    20221 
    20222     psFree(rowSet);
    20223 
    20224     return true;
    20225 }
    20226 
    20227 psMetadata *magicRunMetadataFromObject(const magicRunRow *object)
    20228 {
    20229     psMetadata *md = psMetadataAlloc();
    20230     if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, object->magic_id)) {
    20231         psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
    20232         psFree(md);
    20233         return false;
    20234     }
    20235     if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, NULL, object->state)) {
    20236         psError(PS_ERR_UNKNOWN, false, "failed to add item state");
    20237         psFree(md);
    20238         return false;
    20239     }
    20240     if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, object->workdir)) {
    20241         psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
    20242         psFree(md);
    20243         return false;
    20244     }
    20245     if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir_state", PS_DATA_STRING, NULL, object->workdir_state)) {
    20246         psError(PS_ERR_UNKNOWN, false, "failed to add item workdir_state");
    20247         psFree(md);
    20248         return false;
    20249     }
    20250     if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, object->label)) {
    20251         psError(PS_ERR_UNKNOWN, false, "failed to add item label");
    20252         psFree(md);
    20253         return false;
    20254     }
    20255     if (!psMetadataAdd(md, PS_LIST_TAIL, "dvodb", PS_DATA_STRING, NULL, object->dvodb)) {
    20256         psError(PS_ERR_UNKNOWN, false, "failed to add item dvodb");
    20257         psFree(md);
    20258         return false;
    20259     }
    20260     if (!psMetadataAdd(md, PS_LIST_TAIL, "registered", PS_DATA_TIME, NULL, object->registered)) {
    20261         psError(PS_ERR_UNKNOWN, false, "failed to add item registered");
    20262         psFree(md);
    20263         return false;
    20264     }
    20265 
    20266 
    20267     return md;
    20268 }
    20269 
    20270 magicRunRow *magicRunObjectFromMetadata(psMetadata *md)
    20271 {
    20272 
    20273 bool status = false;
    20274     psS64 magic_id = psMetadataLookupS64(&status, md, "magic_id");
    20275     if (!status) {
    20276         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item magic_id");
    20277         return false;
    20278     }
    20279     char* state = psMetadataLookupPtr(&status, md, "state");
    20280     if (!status) {
    20281         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item state");
    20282         return false;
    20283     }
    20284     char* workdir = psMetadataLookupPtr(&status, md, "workdir");
    20285     if (!status) {
    20286         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item workdir");
    20287         return false;
    20288     }
    20289     char* workdir_state = psMetadataLookupPtr(&status, md, "workdir_state");
    20290     if (!status) {
    20291         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item workdir_state");
    20292         return false;
    20293     }
    20294     char* label = psMetadataLookupPtr(&status, md, "label");
    20295     if (!status) {
    20296         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item label");
    20297         return false;
    20298     }
    20299     char* dvodb = psMetadataLookupPtr(&status, md, "dvodb");
    20300     if (!status) {
    20301         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dvodb");
    20302         return false;
    20303     }
    20304     psTime* registered = psMetadataLookupPtr(&status, md, "registered");
    20305     if (!status) {
    20306         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item registered");
    20307         return false;
    20308     }
    20309 
    20310     return magicRunRowAlloc(magic_id, state, workdir, workdir_state, label, dvodb, registered);
    20311 }
    20312 psArray *magicRunSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
    20313 {
    20314     psArray         *rowSet;
    20315     psArray         *returnSet;
    20316     psU64           i;
    20317 
    20318     rowSet = psDBSelectRows(dbh, MAGICRUN_TABLE_NAME, where, limit);
    20319     if (!rowSet) {
    20320         return NULL;
    20321     }
    20322 
    20323     // convert psMetadata rows to row objects
    20324 
    20325     returnSet = psArrayAllocEmpty(rowSet->n);
    20326 
    20327     for (i = 0; i < rowSet->n; i++) {
    20328         magicRunRow *object = magicRunObjectFromMetadata(rowSet->data[i]);
    20329         psArrayAdd(returnSet, 0, object);
    20330         psFree(object);
    20331     }
    20332 
    20333     psFree(rowSet);
    20334 
    20335     return returnSet;
    20336 }
    20337 bool magicRunDeleteObject(psDB *dbh, const magicRunRow *object)
    20338 {
    20339     psMetadata *where = magicRunMetadataFromObject(object);
    20340     long long count = psDBDeleteRows(dbh, MAGICRUN_TABLE_NAME, where, 0);
    20341     psFree(where);
    20342     if (count < 0) {
    20343         psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicRun");
    20344         return false;
    20345     }
    20346     if (count > 1) {
    20347         // XXX should this be a psAbort() instead?  It is possible that
    20348         // having an object match multiple rows was by design.
    20349         psError(PS_ERR_UNKNOWN, true, "magicRunRow object matched more then one row.  Check your database schema");
    20350         return false;
    20351     }
    20352 
    20353     return true;
    20354 }
    20355 long long magicRunDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
    20356 {
    20357     long long       deleted = 0;
    20358 
    20359     for (long long i = 0; i < objects->n; i++) {
    20360         magicRunRow *object = objects->data[i];
    20361         psMetadata *where = magicRunMetadataFromObject(object);
    20362         long long count = psDBDeleteRows(dbh, MAGICRUN_TABLE_NAME, where, limit);
    20363         psFree(where);
    20364         if (count < 0) {
    20365             psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicRun");
    20366             return count;
    20367         }
    20368 
    20369         deleted += count;
    20370     }
    20371 
    20372     return deleted;
    20373 }
    20374 bool magicRunPrintObjects(FILE *stream, psArray *objects, bool mdcf)
    20375 {
    20376     PS_ASSERT_PTR_NON_NULL(objects, false);
    20377 
    20378     psMetadata *output = psMetadataAlloc();
    20379     for (long i = 0; i < psArrayLength(objects); i++) {
    20380         psMetadata *md = magicRunMetadataFromObject(objects->data[i]);
    20381         if (!psMetadataAddMetadata(
    20382             output,
    20383             PS_LIST_TAIL,
    20384             MAGICRUN_TABLE_NAME,
    20385             PS_META_DUPLICATE_OK,
    20386             NULL,
    20387             md
    20388         )) {
    20389             psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
    20390             psFree(md);
    20391             psFree(output);
    20392             return false;
    20393         }
    20394         psFree(md);
    20395     }
    20396 
    20397     if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
    20398         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    20399         psFree(output);
    20400     }
    20401     psFree(output);
    20402 
    20403     return true;
    20404 }
    20405 bool magicRunPrintObject(FILE *stream, magicRunRow *object, bool mdcf)
    20406 {
    20407     PS_ASSERT_PTR_NON_NULL(object, false);
    20408 
    20409     psMetadata *md = magicRunMetadataFromObject(object);
    20410 
    20411     if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
    20412         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    20413         psFree(md);
    20414     }
    20415 
    20416     psFree(md);
    20417 
    20418     return true;
    20419 }
    20420 static void magicInputSkyfileRowFree(magicInputSkyfileRow *object);
    20421 
    20422 magicInputSkyfileRow *magicInputSkyfileRowAlloc(psS64 magic_id, psS64 diff_id, const char *node)
    20423 {
    20424     magicInputSkyfileRow *_object;
    20425 
    20426     _object = psAlloc(sizeof(magicInputSkyfileRow));
    20427     psMemSetDeallocator(_object, (psFreeFunc)magicInputSkyfileRowFree);
    20428 
    20429     _object->magic_id = magic_id;
    20430     _object->diff_id = diff_id;
    20431     _object->node = psStringCopy(node);
    20432 
    20433     return _object;
    20434 }
    20435 
    20436 static void magicInputSkyfileRowFree(magicInputSkyfileRow *object)
    20437 {
    20438     psFree(object->node);
    20439 }
    20440 
    20441 bool magicInputSkyfileCreateTable(psDB *dbh)
    20442 {
    20443     psMetadata *md = psMetadataAlloc();
    20444     if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, "Primary Key fkey(magic_id) ref magicRun(magic_id)", 0)) {
    20445         psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
    20446         psFree(md);
    20447         return false;
    20448     }
    20449     if (!psMetadataAdd(md, PS_LIST_TAIL, "diff_id", PS_DATA_S64, "Primary Key fkey(diff_id) ref diffRun(diff_id)", 0)) {
    20450         psError(PS_ERR_UNKNOWN, false, "failed to add item diff_id");
    20451         psFree(md);
    20452         return false;
    20453     }
    20454     if (!psMetadataAdd(md, PS_LIST_TAIL, "node", PS_DATA_STRING, NULL, "64")) {
    20455         psError(PS_ERR_UNKNOWN, false, "failed to add item node");
    20456         psFree(md);
    20457         return false;
    20458     }
    20459 
    20460     bool status = psDBCreateTable(dbh, MAGICINPUTSKYFILE_TABLE_NAME, md);
    20461 
    20462     psFree(md);
    20463 
    20464     return status;
    20465 }
    20466 
    20467 bool magicInputSkyfileDropTable(psDB *dbh)
    20468 {
    20469     return psDBDropTable(dbh, MAGICINPUTSKYFILE_TABLE_NAME);
    20470 }
    20471 
    20472 bool magicInputSkyfileInsert(psDB * dbh, psS64 magic_id, psS64 diff_id, const char *node)
    20473 {
    20474     psMetadata *md = psMetadataAlloc();
    20475     if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, magic_id)) {
    20476         psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
    20477         psFree(md);
    20478         return false;
    20479     }
    20480     if (!psMetadataAdd(md, PS_LIST_TAIL, "diff_id", PS_DATA_S64, NULL, diff_id)) {
    20481         psError(PS_ERR_UNKNOWN, false, "failed to add item diff_id");
    20482         psFree(md);
    20483         return false;
    20484     }
    20485     if (!psMetadataAdd(md, PS_LIST_TAIL, "node", PS_DATA_STRING, NULL, node)) {
    20486         psError(PS_ERR_UNKNOWN, false, "failed to add item node");
    20487         psFree(md);
    20488         return false;
    20489     }
    20490 
    20491     bool status = psDBInsertOneRow(dbh, MAGICINPUTSKYFILE_TABLE_NAME, md);
    20492     psFree(md);
    20493 
    20494     return status;
    20495 }
    20496 
    20497 long long magicInputSkyfileDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
    20498 {
    20499     long long       deleted = 0;
    20500 
    20501     long long count = psDBDeleteRows(dbh, MAGICINPUTSKYFILE_TABLE_NAME, where, limit);
    20502     if (count < 0) {
    20503         psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicInputSkyfile");
    20504         return count;
    20505 
    20506         deleted += count;
    20507     }
    20508 
    20509     return deleted;
    20510 }
    20511 bool magicInputSkyfileInsertObject(psDB *dbh, magicInputSkyfileRow *object)
    20512 {
    20513     return magicInputSkyfileInsert(dbh, object->magic_id, object->diff_id, object->node);
    20514 }
    20515 
    20516 bool magicInputSkyfileInsertObjects(psDB *dbh, psArray *objects)
    20517 {
    20518     for (long i = 0; i < psArrayLength(objects); i++) {
    20519         if (!magicInputSkyfileInsertObject(dbh, objects->data[i])) {
    20520             return false;
    20521         }
    20522     }
    20523 
    20524     return true;
    20525 }
    20526 
    20527 bool magicInputSkyfileInsertFits(psDB *dbh, const psFits *fits)
    20528 {
    20529     psArray         *rowSet;
    20530 
    20531     // move to (the first?) extension named  MAGICINPUTSKYFILE_TABLE_NAME
    20532     if (!psFitsMoveExtName(fits, MAGICINPUTSKYFILE_TABLE_NAME)) {
    20533         psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", MAGICINPUTSKYFILE_TABLE_NAME);
    20534         return false;
    20535     }
    20536 
    20537     // check HDU type
    20538     if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
    20539         psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
    20540         return false;
    20541     }
    20542 
    20543     // read fits table
    20544     rowSet = psFitsReadTable(fits);
    20545     if (!rowSet) {
    20546         psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
    20547         psFree(rowSet);
    20548         return false;
    20549     }
    20550 
    20551     if (!psDBInsertRows(dbh, MAGICINPUTSKYFILE_TABLE_NAME, rowSet)) {
    20552         psError(PS_ERR_UNKNOWN, false, "databse insert failed");
    20553         psFree(rowSet);
    20554         return false;
    20555     }
    20556 
    20557     psFree(rowSet);
    20558 
    20559     return true;
    20560 }
    20561 
    20562 bool magicInputSkyfileSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
    20563 {
    20564     psArray         *rowSet;
    20565 
    20566     rowSet = psDBSelectRows(dbh, MAGICINPUTSKYFILE_TABLE_NAME, where, limit);
    20567     if (!rowSet) {
    20568         return false;
    20569     }
    20570 
    20571     // output to fits
    20572     if (!psFitsWriteTable(fits, NULL, rowSet, MAGICINPUTSKYFILE_TABLE_NAME)) {
    20573         psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
    20574         psFree(rowSet);
    20575         return false;
    20576     }
    20577 
    20578     psFree(rowSet);
    20579 
    20580     return true;
    20581 }
    20582 
    20583 psMetadata *magicInputSkyfileMetadataFromObject(const magicInputSkyfileRow *object)
    20584 {
    20585     psMetadata *md = psMetadataAlloc();
    20586     if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, object->magic_id)) {
    20587         psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
    20588         psFree(md);
    20589         return false;
    20590     }
    20591     if (!psMetadataAdd(md, PS_LIST_TAIL, "diff_id", PS_DATA_S64, NULL, object->diff_id)) {
    20592         psError(PS_ERR_UNKNOWN, false, "failed to add item diff_id");
    20593         psFree(md);
    20594         return false;
    20595     }
    20596     if (!psMetadataAdd(md, PS_LIST_TAIL, "node", PS_DATA_STRING, NULL, object->node)) {
    20597         psError(PS_ERR_UNKNOWN, false, "failed to add item node");
    20598         psFree(md);
    20599         return false;
    20600     }
    20601 
    20602 
    20603     return md;
    20604 }
    20605 
    20606 magicInputSkyfileRow *magicInputSkyfileObjectFromMetadata(psMetadata *md)
    20607 {
    20608 
    20609 bool status = false;
    20610     psS64 magic_id = psMetadataLookupS64(&status, md, "magic_id");
    20611     if (!status) {
    20612         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item magic_id");
    20613         return false;
    20614     }
    20615     psS64 diff_id = psMetadataLookupS64(&status, md, "diff_id");
    20616     if (!status) {
    20617         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item diff_id");
    20618         return false;
    20619     }
    20620     char* node = psMetadataLookupPtr(&status, md, "node");
    20621     if (!status) {
    20622         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item node");
    20623         return false;
    20624     }
    20625 
    20626     return magicInputSkyfileRowAlloc(magic_id, diff_id, node);
    20627 }
    20628 psArray *magicInputSkyfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
    20629 {
    20630     psArray         *rowSet;
    20631     psArray         *returnSet;
    20632     psU64           i;
    20633 
    20634     rowSet = psDBSelectRows(dbh, MAGICINPUTSKYFILE_TABLE_NAME, where, limit);
    20635     if (!rowSet) {
    20636         return NULL;
    20637     }
    20638 
    20639     // convert psMetadata rows to row objects
    20640 
    20641     returnSet = psArrayAllocEmpty(rowSet->n);
    20642 
    20643     for (i = 0; i < rowSet->n; i++) {
    20644         magicInputSkyfileRow *object = magicInputSkyfileObjectFromMetadata(rowSet->data[i]);
    20645         psArrayAdd(returnSet, 0, object);
    20646         psFree(object);
    20647     }
    20648 
    20649     psFree(rowSet);
    20650 
    20651     return returnSet;
    20652 }
    20653 bool magicInputSkyfileDeleteObject(psDB *dbh, const magicInputSkyfileRow *object)
    20654 {
    20655     psMetadata *where = magicInputSkyfileMetadataFromObject(object);
    20656     long long count = psDBDeleteRows(dbh, MAGICINPUTSKYFILE_TABLE_NAME, where, 0);
    20657     psFree(where);
    20658     if (count < 0) {
    20659         psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicInputSkyfile");
    20660         return false;
    20661     }
    20662     if (count > 1) {
    20663         // XXX should this be a psAbort() instead?  It is possible that
    20664         // having an object match multiple rows was by design.
    20665         psError(PS_ERR_UNKNOWN, true, "magicInputSkyfileRow object matched more then one row.  Check your database schema");
    20666         return false;
    20667     }
    20668 
    20669     return true;
    20670 }
    20671 long long magicInputSkyfileDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
    20672 {
    20673     long long       deleted = 0;
    20674 
    20675     for (long long i = 0; i < objects->n; i++) {
    20676         magicInputSkyfileRow *object = objects->data[i];
    20677         psMetadata *where = magicInputSkyfileMetadataFromObject(object);
    20678         long long count = psDBDeleteRows(dbh, MAGICINPUTSKYFILE_TABLE_NAME, where, limit);
    20679         psFree(where);
    20680         if (count < 0) {
    20681             psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicInputSkyfile");
    20682             return count;
    20683         }
    20684 
    20685         deleted += count;
    20686     }
    20687 
    20688     return deleted;
    20689 }
    20690 bool magicInputSkyfilePrintObjects(FILE *stream, psArray *objects, bool mdcf)
    20691 {
    20692     PS_ASSERT_PTR_NON_NULL(objects, false);
    20693 
    20694     psMetadata *output = psMetadataAlloc();
    20695     for (long i = 0; i < psArrayLength(objects); i++) {
    20696         psMetadata *md = magicInputSkyfileMetadataFromObject(objects->data[i]);
    20697         if (!psMetadataAddMetadata(
    20698             output,
    20699             PS_LIST_TAIL,
    20700             MAGICINPUTSKYFILE_TABLE_NAME,
    20701             PS_META_DUPLICATE_OK,
    20702             NULL,
    20703             md
    20704         )) {
    20705             psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
    20706             psFree(md);
    20707             psFree(output);
    20708             return false;
    20709         }
    20710         psFree(md);
    20711     }
    20712 
    20713     if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
    20714         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    20715         psFree(output);
    20716     }
    20717     psFree(output);
    20718 
    20719     return true;
    20720 }
    20721 bool magicInputSkyfilePrintObject(FILE *stream, magicInputSkyfileRow *object, bool mdcf)
    20722 {
    20723     PS_ASSERT_PTR_NON_NULL(object, false);
    20724 
    20725     psMetadata *md = magicInputSkyfileMetadataFromObject(object);
    20726 
    20727     if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
    20728         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    20729         psFree(md);
    20730     }
    20731 
    20732     psFree(md);
    20733 
    20734     return true;
    20735 }
    20736 static void magicTreeRowFree(magicTreeRow *object);
    20737 
    20738 magicTreeRow *magicTreeRowAlloc(psS64 magic_id, const char *node, const char *dep)
    20739 {
    20740     magicTreeRow    *_object;
    20741 
    20742     _object = psAlloc(sizeof(magicTreeRow));
    20743     psMemSetDeallocator(_object, (psFreeFunc)magicTreeRowFree);
    20744 
    20745     _object->magic_id = magic_id;
    20746     _object->node = psStringCopy(node);
    20747     _object->dep = psStringCopy(dep);
    20748 
    20749     return _object;
    20750 }
    20751 
    20752 static void magicTreeRowFree(magicTreeRow *object)
    20753 {
    20754     psFree(object->node);
    20755     psFree(object->dep);
    20756 }
    20757 
    20758 bool magicTreeCreateTable(psDB *dbh)
    20759 {
    20760     psMetadata *md = psMetadataAlloc();
    20761     if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, "Key fkey(magic_id) ref magicRun(magic_id)", 0)) {
    20762         psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
    20763         psFree(md);
    20764         return false;
    20765     }
    20766     if (!psMetadataAdd(md, PS_LIST_TAIL, "node", PS_DATA_STRING, "Key INDEX(magic_id, node)", "64")) {
    20767         psError(PS_ERR_UNKNOWN, false, "failed to add item node");
    20768         psFree(md);
    20769         return false;
    20770     }
    20771     if (!psMetadataAdd(md, PS_LIST_TAIL, "dep", PS_DATA_STRING, "Key", "64")) {
    20772         psError(PS_ERR_UNKNOWN, false, "failed to add item dep");
    20773         psFree(md);
    20774         return false;
    20775     }
    20776 
    20777     bool status = psDBCreateTable(dbh, MAGICTREE_TABLE_NAME, md);
    20778 
    20779     psFree(md);
    20780 
    20781     return status;
    20782 }
    20783 
    20784 bool magicTreeDropTable(psDB *dbh)
    20785 {
    20786     return psDBDropTable(dbh, MAGICTREE_TABLE_NAME);
    20787 }
    20788 
    20789 bool magicTreeInsert(psDB * dbh, psS64 magic_id, const char *node, const char *dep)
    20790 {
    20791     psMetadata *md = psMetadataAlloc();
    20792     if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, magic_id)) {
    20793         psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
    20794         psFree(md);
    20795         return false;
    20796     }
    20797     if (!psMetadataAdd(md, PS_LIST_TAIL, "node", PS_DATA_STRING, NULL, node)) {
    20798         psError(PS_ERR_UNKNOWN, false, "failed to add item node");
    20799         psFree(md);
    20800         return false;
    20801     }
    20802     if (!psMetadataAdd(md, PS_LIST_TAIL, "dep", PS_DATA_STRING, NULL, dep)) {
    20803         psError(PS_ERR_UNKNOWN, false, "failed to add item dep");
    20804         psFree(md);
    20805         return false;
    20806     }
    20807 
    20808     bool status = psDBInsertOneRow(dbh, MAGICTREE_TABLE_NAME, md);
    20809     psFree(md);
    20810 
    20811     return status;
    20812 }
    20813 
    20814 long long magicTreeDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
    20815 {
    20816     long long       deleted = 0;
    20817 
    20818     long long count = psDBDeleteRows(dbh, MAGICTREE_TABLE_NAME, where, limit);
    20819     if (count < 0) {
    20820         psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicTree");
    20821         return count;
    20822 
    20823         deleted += count;
    20824     }
    20825 
    20826     return deleted;
    20827 }
    20828 bool magicTreeInsertObject(psDB *dbh, magicTreeRow *object)
    20829 {
    20830     return magicTreeInsert(dbh, object->magic_id, object->node, object->dep);
    20831 }
    20832 
    20833 bool magicTreeInsertObjects(psDB *dbh, psArray *objects)
    20834 {
    20835     for (long i = 0; i < psArrayLength(objects); i++) {
    20836         if (!magicTreeInsertObject(dbh, objects->data[i])) {
    20837             return false;
    20838         }
    20839     }
    20840 
    20841     return true;
    20842 }
    20843 
    20844 bool magicTreeInsertFits(psDB *dbh, const psFits *fits)
    20845 {
    20846     psArray         *rowSet;
    20847 
    20848     // move to (the first?) extension named  MAGICTREE_TABLE_NAME
    20849     if (!psFitsMoveExtName(fits, MAGICTREE_TABLE_NAME)) {
    20850         psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", MAGICTREE_TABLE_NAME);
    20851         return false;
    20852     }
    20853 
    20854     // check HDU type
    20855     if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
    20856         psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
    20857         return false;
    20858     }
    20859 
    20860     // read fits table
    20861     rowSet = psFitsReadTable(fits);
    20862     if (!rowSet) {
    20863         psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
    20864         psFree(rowSet);
    20865         return false;
    20866     }
    20867 
    20868     if (!psDBInsertRows(dbh, MAGICTREE_TABLE_NAME, rowSet)) {
    20869         psError(PS_ERR_UNKNOWN, false, "databse insert failed");
    20870         psFree(rowSet);
    20871         return false;
    20872     }
    20873 
    20874     psFree(rowSet);
    20875 
    20876     return true;
    20877 }
    20878 
    20879 bool magicTreeSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
    20880 {
    20881     psArray         *rowSet;
    20882 
    20883     rowSet = psDBSelectRows(dbh, MAGICTREE_TABLE_NAME, where, limit);
    20884     if (!rowSet) {
    20885         return false;
    20886     }
    20887 
    20888     // output to fits
    20889     if (!psFitsWriteTable(fits, NULL, rowSet, MAGICTREE_TABLE_NAME)) {
    20890         psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
    20891         psFree(rowSet);
    20892         return false;
    20893     }
    20894 
    20895     psFree(rowSet);
    20896 
    20897     return true;
    20898 }
    20899 
    20900 psMetadata *magicTreeMetadataFromObject(const magicTreeRow *object)
    20901 {
    20902     psMetadata *md = psMetadataAlloc();
    20903     if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, object->magic_id)) {
    20904         psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
    20905         psFree(md);
    20906         return false;
    20907     }
    20908     if (!psMetadataAdd(md, PS_LIST_TAIL, "node", PS_DATA_STRING, NULL, object->node)) {
    20909         psError(PS_ERR_UNKNOWN, false, "failed to add item node");
    20910         psFree(md);
    20911         return false;
    20912     }
    20913     if (!psMetadataAdd(md, PS_LIST_TAIL, "dep", PS_DATA_STRING, NULL, object->dep)) {
    20914         psError(PS_ERR_UNKNOWN, false, "failed to add item dep");
    20915         psFree(md);
    20916         return false;
    20917     }
    20918 
    20919 
    20920     return md;
    20921 }
    20922 
    20923 magicTreeRow *magicTreeObjectFromMetadata(psMetadata *md)
    20924 {
    20925 
    20926 bool status = false;
    20927     psS64 magic_id = psMetadataLookupS64(&status, md, "magic_id");
    20928     if (!status) {
    20929         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item magic_id");
    20930         return false;
    20931     }
    20932     char* node = psMetadataLookupPtr(&status, md, "node");
    20933     if (!status) {
    20934         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item node");
    20935         return false;
    20936     }
    20937     char* dep = psMetadataLookupPtr(&status, md, "dep");
    20938     if (!status) {
    20939         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dep");
    20940         return false;
    20941     }
    20942 
    20943     return magicTreeRowAlloc(magic_id, node, dep);
    20944 }
    20945 psArray *magicTreeSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
    20946 {
    20947     psArray         *rowSet;
    20948     psArray         *returnSet;
    20949     psU64           i;
    20950 
    20951     rowSet = psDBSelectRows(dbh, MAGICTREE_TABLE_NAME, where, limit);
    20952     if (!rowSet) {
    20953         return NULL;
    20954     }
    20955 
    20956     // convert psMetadata rows to row objects
    20957 
    20958     returnSet = psArrayAllocEmpty(rowSet->n);
    20959 
    20960     for (i = 0; i < rowSet->n; i++) {
    20961         magicTreeRow *object = magicTreeObjectFromMetadata(rowSet->data[i]);
    20962         psArrayAdd(returnSet, 0, object);
    20963         psFree(object);
    20964     }
    20965 
    20966     psFree(rowSet);
    20967 
    20968     return returnSet;
    20969 }
    20970 bool magicTreeDeleteObject(psDB *dbh, const magicTreeRow *object)
    20971 {
    20972     psMetadata *where = magicTreeMetadataFromObject(object);
    20973     long long count = psDBDeleteRows(dbh, MAGICTREE_TABLE_NAME, where, 0);
    20974     psFree(where);
    20975     if (count < 0) {
    20976         psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicTree");
    20977         return false;
    20978     }
    20979     if (count > 1) {
    20980         // XXX should this be a psAbort() instead?  It is possible that
    20981         // having an object match multiple rows was by design.
    20982         psError(PS_ERR_UNKNOWN, true, "magicTreeRow object matched more then one row.  Check your database schema");
    20983         return false;
    20984     }
    20985 
    20986     return true;
    20987 }
    20988 long long magicTreeDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
    20989 {
    20990     long long       deleted = 0;
    20991 
    20992     for (long long i = 0; i < objects->n; i++) {
    20993         magicTreeRow *object = objects->data[i];
    20994         psMetadata *where = magicTreeMetadataFromObject(object);
    20995         long long count = psDBDeleteRows(dbh, MAGICTREE_TABLE_NAME, where, limit);
    20996         psFree(where);
    20997         if (count < 0) {
    20998             psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicTree");
    20999             return count;
    21000         }
    21001 
    21002         deleted += count;
    21003     }
    21004 
    21005     return deleted;
    21006 }
    21007 bool magicTreePrintObjects(FILE *stream, psArray *objects, bool mdcf)
    21008 {
    21009     PS_ASSERT_PTR_NON_NULL(objects, false);
    21010 
    21011     psMetadata *output = psMetadataAlloc();
    21012     for (long i = 0; i < psArrayLength(objects); i++) {
    21013         psMetadata *md = magicTreeMetadataFromObject(objects->data[i]);
    21014         if (!psMetadataAddMetadata(
    21015             output,
    21016             PS_LIST_TAIL,
    21017             MAGICTREE_TABLE_NAME,
    21018             PS_META_DUPLICATE_OK,
    21019             NULL,
    21020             md
    21021         )) {
    21022             psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
    21023             psFree(md);
    21024             psFree(output);
    21025             return false;
    21026         }
    21027         psFree(md);
    21028     }
    21029 
    21030     if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
    21031         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    21032         psFree(output);
    21033     }
    21034     psFree(output);
    21035 
    21036     return true;
    21037 }
    21038 bool magicTreePrintObject(FILE *stream, magicTreeRow *object, bool mdcf)
    21039 {
    21040     PS_ASSERT_PTR_NON_NULL(object, false);
    21041 
    21042     psMetadata *md = magicTreeMetadataFromObject(object);
    21043 
    21044     if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
    21045         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    21046         psFree(md);
    21047     }
    21048 
    21049     psFree(md);
    21050 
    21051     return true;
    21052 }
    21053 static void magicNodeResultRowFree(magicNodeResultRow *object);
    21054 
    21055 magicNodeResultRow *magicNodeResultRowAlloc(psS64 magic_id, const char *node, const char *uri)
    21056 {
    21057     magicNodeResultRow *_object;
    21058 
    21059     _object = psAlloc(sizeof(magicNodeResultRow));
    21060     psMemSetDeallocator(_object, (psFreeFunc)magicNodeResultRowFree);
    21061 
    21062     _object->magic_id = magic_id;
    21063     _object->node = psStringCopy(node);
    21064     _object->uri = psStringCopy(uri);
    21065 
    21066     return _object;
    21067 }
    21068 
    21069 static void magicNodeResultRowFree(magicNodeResultRow *object)
    21070 {
    21071     psFree(object->node);
    21072     psFree(object->uri);
    21073 }
    21074 
    21075 bool magicNodeResultCreateTable(psDB *dbh)
    21076 {
    21077     psMetadata *md = psMetadataAlloc();
    21078     if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, "Primary Key fkey(magic_id) ref magicRun(magic_id)", 0)) {
    21079         psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
    21080         psFree(md);
    21081         return false;
    21082     }
    21083     if (!psMetadataAdd(md, PS_LIST_TAIL, "node", PS_DATA_STRING, "Primary Key fkey(magic_id, node) ref magicTree(magic_id, node)", "64")) {
    21084         psError(PS_ERR_UNKNOWN, false, "failed to add item node");
    21085         psFree(md);
    21086         return false;
    21087     }
    21088     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, "255")) {
    21089         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    21090         psFree(md);
    21091         return false;
    21092     }
    21093 
    21094     bool status = psDBCreateTable(dbh, MAGICNODERESULT_TABLE_NAME, md);
    21095 
    21096     psFree(md);
    21097 
    21098     return status;
    21099 }
    21100 
    21101 bool magicNodeResultDropTable(psDB *dbh)
    21102 {
    21103     return psDBDropTable(dbh, MAGICNODERESULT_TABLE_NAME);
    21104 }
    21105 
    21106 bool magicNodeResultInsert(psDB * dbh, psS64 magic_id, const char *node, const char *uri)
    21107 {
    21108     psMetadata *md = psMetadataAlloc();
    21109     if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, magic_id)) {
    21110         psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
    21111         psFree(md);
    21112         return false;
    21113     }
    21114     if (!psMetadataAdd(md, PS_LIST_TAIL, "node", PS_DATA_STRING, NULL, node)) {
    21115         psError(PS_ERR_UNKNOWN, false, "failed to add item node");
    21116         psFree(md);
    21117         return false;
    21118     }
    21119     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) {
    21120         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    21121         psFree(md);
    21122         return false;
    21123     }
    21124 
    21125     bool status = psDBInsertOneRow(dbh, MAGICNODERESULT_TABLE_NAME, md);
    21126     psFree(md);
    21127 
    21128     return status;
    21129 }
    21130 
    21131 long long magicNodeResultDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
    21132 {
    21133     long long       deleted = 0;
    21134 
    21135     long long count = psDBDeleteRows(dbh, MAGICNODERESULT_TABLE_NAME, where, limit);
    21136     if (count < 0) {
    21137         psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicNodeResult");
    21138         return count;
    21139 
    21140         deleted += count;
    21141     }
    21142 
    21143     return deleted;
    21144 }
    21145 bool magicNodeResultInsertObject(psDB *dbh, magicNodeResultRow *object)
    21146 {
    21147     return magicNodeResultInsert(dbh, object->magic_id, object->node, object->uri);
    21148 }
    21149 
    21150 bool magicNodeResultInsertObjects(psDB *dbh, psArray *objects)
    21151 {
    21152     for (long i = 0; i < psArrayLength(objects); i++) {
    21153         if (!magicNodeResultInsertObject(dbh, objects->data[i])) {
    21154             return false;
    21155         }
    21156     }
    21157 
    21158     return true;
    21159 }
    21160 
    21161 bool magicNodeResultInsertFits(psDB *dbh, const psFits *fits)
    21162 {
    21163     psArray         *rowSet;
    21164 
    21165     // move to (the first?) extension named  MAGICNODERESULT_TABLE_NAME
    21166     if (!psFitsMoveExtName(fits, MAGICNODERESULT_TABLE_NAME)) {
    21167         psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", MAGICNODERESULT_TABLE_NAME);
    21168         return false;
    21169     }
    21170 
    21171     // check HDU type
    21172     if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
    21173         psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
    21174         return false;
    21175     }
    21176 
    21177     // read fits table
    21178     rowSet = psFitsReadTable(fits);
    21179     if (!rowSet) {
    21180         psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
    21181         psFree(rowSet);
    21182         return false;
    21183     }
    21184 
    21185     if (!psDBInsertRows(dbh, MAGICNODERESULT_TABLE_NAME, rowSet)) {
    21186         psError(PS_ERR_UNKNOWN, false, "databse insert failed");
    21187         psFree(rowSet);
    21188         return false;
    21189     }
    21190 
    21191     psFree(rowSet);
    21192 
    21193     return true;
    21194 }
    21195 
    21196 bool magicNodeResultSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
    21197 {
    21198     psArray         *rowSet;
    21199 
    21200     rowSet = psDBSelectRows(dbh, MAGICNODERESULT_TABLE_NAME, where, limit);
    21201     if (!rowSet) {
    21202         return false;
    21203     }
    21204 
    21205     // output to fits
    21206     if (!psFitsWriteTable(fits, NULL, rowSet, MAGICNODERESULT_TABLE_NAME)) {
    21207         psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
    21208         psFree(rowSet);
    21209         return false;
    21210     }
    21211 
    21212     psFree(rowSet);
    21213 
    21214     return true;
    21215 }
    21216 
    21217 psMetadata *magicNodeResultMetadataFromObject(const magicNodeResultRow *object)
    21218 {
    21219     psMetadata *md = psMetadataAlloc();
    21220     if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, object->magic_id)) {
    21221         psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
    21222         psFree(md);
    21223         return false;
    21224     }
    21225     if (!psMetadataAdd(md, PS_LIST_TAIL, "node", PS_DATA_STRING, NULL, object->node)) {
    21226         psError(PS_ERR_UNKNOWN, false, "failed to add item node");
    21227         psFree(md);
    21228         return false;
    21229     }
    21230     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) {
    21231         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    21232         psFree(md);
    21233         return false;
    21234     }
    21235 
    21236 
    21237     return md;
    21238 }
    21239 
    21240 magicNodeResultRow *magicNodeResultObjectFromMetadata(psMetadata *md)
    21241 {
    21242 
    21243 bool status = false;
    21244     psS64 magic_id = psMetadataLookupS64(&status, md, "magic_id");
    21245     if (!status) {
    21246         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item magic_id");
    21247         return false;
    21248     }
    21249     char* node = psMetadataLookupPtr(&status, md, "node");
    21250     if (!status) {
    21251         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item node");
    21252         return false;
    21253     }
    21254     char* uri = psMetadataLookupPtr(&status, md, "uri");
    21255     if (!status) {
    21256         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
    21257         return false;
    21258     }
    21259 
    21260     return magicNodeResultRowAlloc(magic_id, node, uri);
    21261 }
    21262 psArray *magicNodeResultSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
    21263 {
    21264     psArray         *rowSet;
    21265     psArray         *returnSet;
    21266     psU64           i;
    21267 
    21268     rowSet = psDBSelectRows(dbh, MAGICNODERESULT_TABLE_NAME, where, limit);
    21269     if (!rowSet) {
    21270         return NULL;
    21271     }
    21272 
    21273     // convert psMetadata rows to row objects
    21274 
    21275     returnSet = psArrayAllocEmpty(rowSet->n);
    21276 
    21277     for (i = 0; i < rowSet->n; i++) {
    21278         magicNodeResultRow *object = magicNodeResultObjectFromMetadata(rowSet->data[i]);
    21279         psArrayAdd(returnSet, 0, object);
    21280         psFree(object);
    21281     }
    21282 
    21283     psFree(rowSet);
    21284 
    21285     return returnSet;
    21286 }
    21287 bool magicNodeResultDeleteObject(psDB *dbh, const magicNodeResultRow *object)
    21288 {
    21289     psMetadata *where = magicNodeResultMetadataFromObject(object);
    21290     long long count = psDBDeleteRows(dbh, MAGICNODERESULT_TABLE_NAME, where, 0);
    21291     psFree(where);
    21292     if (count < 0) {
    21293         psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicNodeResult");
    21294         return false;
    21295     }
    21296     if (count > 1) {
    21297         // XXX should this be a psAbort() instead?  It is possible that
    21298         // having an object match multiple rows was by design.
    21299         psError(PS_ERR_UNKNOWN, true, "magicNodeResultRow object matched more then one row.  Check your database schema");
    21300         return false;
    21301     }
    21302 
    21303     return true;
    21304 }
    21305 long long magicNodeResultDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
    21306 {
    21307     long long       deleted = 0;
    21308 
    21309     for (long long i = 0; i < objects->n; i++) {
    21310         magicNodeResultRow *object = objects->data[i];
    21311         psMetadata *where = magicNodeResultMetadataFromObject(object);
    21312         long long count = psDBDeleteRows(dbh, MAGICNODERESULT_TABLE_NAME, where, limit);
    21313         psFree(where);
    21314         if (count < 0) {
    21315             psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicNodeResult");
    21316             return count;
    21317         }
    21318 
    21319         deleted += count;
    21320     }
    21321 
    21322     return deleted;
    21323 }
    21324 bool magicNodeResultPrintObjects(FILE *stream, psArray *objects, bool mdcf)
    21325 {
    21326     PS_ASSERT_PTR_NON_NULL(objects, false);
    21327 
    21328     psMetadata *output = psMetadataAlloc();
    21329     for (long i = 0; i < psArrayLength(objects); i++) {
    21330         psMetadata *md = magicNodeResultMetadataFromObject(objects->data[i]);
    21331         if (!psMetadataAddMetadata(
    21332             output,
    21333             PS_LIST_TAIL,
    21334             MAGICNODERESULT_TABLE_NAME,
    21335             PS_META_DUPLICATE_OK,
    21336             NULL,
    21337             md
    21338         )) {
    21339             psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
    21340             psFree(md);
    21341             psFree(output);
    21342             return false;
    21343         }
    21344         psFree(md);
    21345     }
    21346 
    21347     if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
    21348         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    21349         psFree(output);
    21350     }
    21351     psFree(output);
    21352 
    21353     return true;
    21354 }
    21355 bool magicNodeResultPrintObject(FILE *stream, magicNodeResultRow *object, bool mdcf)
    21356 {
    21357     PS_ASSERT_PTR_NON_NULL(object, false);
    21358 
    21359     psMetadata *md = magicNodeResultMetadataFromObject(object);
    21360 
    21361     if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
    21362         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    21363         psFree(md);
    21364     }
    21365 
    21366     psFree(md);
    21367 
    21368     return true;
    21369 }
    21370 static void magicMaskRowFree(magicMaskRow *object);
    21371 
    21372 magicMaskRow *magicMaskRowAlloc(psS64 magic_id, const char *uri)
    21373 {
    21374     magicMaskRow    *_object;
    21375 
    21376     _object = psAlloc(sizeof(magicMaskRow));
    21377     psMemSetDeallocator(_object, (psFreeFunc)magicMaskRowFree);
    21378 
    21379     _object->magic_id = magic_id;
    21380     _object->uri = psStringCopy(uri);
    21381 
    21382     return _object;
    21383 }
    21384 
    21385 static void magicMaskRowFree(magicMaskRow *object)
    21386 {
    21387     psFree(object->uri);
    21388 }
    21389 
    21390 bool magicMaskCreateTable(psDB *dbh)
    21391 {
    21392     psMetadata *md = psMetadataAlloc();
    21393     if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, "Primary Key fkey(magic_id) ref magicRun(magic_id)", 0)) {
    21394         psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
    21395         psFree(md);
    21396         return false;
    21397     }
    21398     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, "255")) {
    21399         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    21400         psFree(md);
    21401         return false;
    21402     }
    21403 
    21404     bool status = psDBCreateTable(dbh, MAGICMASK_TABLE_NAME, md);
    21405 
    21406     psFree(md);
    21407 
    21408     return status;
    21409 }
    21410 
    21411 bool magicMaskDropTable(psDB *dbh)
    21412 {
    21413     return psDBDropTable(dbh, MAGICMASK_TABLE_NAME);
    21414 }
    21415 
    21416 bool magicMaskInsert(psDB * dbh, psS64 magic_id, const char *uri)
    21417 {
    21418     psMetadata *md = psMetadataAlloc();
    21419     if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, magic_id)) {
    21420         psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
    21421         psFree(md);
    21422         return false;
    21423     }
    21424     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) {
    21425         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    21426         psFree(md);
    21427         return false;
    21428     }
    21429 
    21430     bool status = psDBInsertOneRow(dbh, MAGICMASK_TABLE_NAME, md);
    21431     psFree(md);
    21432 
    21433     return status;
    21434 }
    21435 
    21436 long long magicMaskDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
    21437 {
    21438     long long       deleted = 0;
    21439 
    21440     long long count = psDBDeleteRows(dbh, MAGICMASK_TABLE_NAME, where, limit);
    21441     if (count < 0) {
    21442         psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicMask");
    21443         return count;
    21444 
    21445         deleted += count;
    21446     }
    21447 
    21448     return deleted;
    21449 }
    21450 bool magicMaskInsertObject(psDB *dbh, magicMaskRow *object)
    21451 {
    21452     return magicMaskInsert(dbh, object->magic_id, object->uri);
    21453 }
    21454 
    21455 bool magicMaskInsertObjects(psDB *dbh, psArray *objects)
    21456 {
    21457     for (long i = 0; i < psArrayLength(objects); i++) {
    21458         if (!magicMaskInsertObject(dbh, objects->data[i])) {
    21459             return false;
    21460         }
    21461     }
    21462 
    21463     return true;
    21464 }
    21465 
    21466 bool magicMaskInsertFits(psDB *dbh, const psFits *fits)
    21467 {
    21468     psArray         *rowSet;
    21469 
    21470     // move to (the first?) extension named  MAGICMASK_TABLE_NAME
    21471     if (!psFitsMoveExtName(fits, MAGICMASK_TABLE_NAME)) {
    21472         psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", MAGICMASK_TABLE_NAME);
    21473         return false;
    21474     }
    21475 
    21476     // check HDU type
    21477     if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
    21478         psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
    21479         return false;
    21480     }
    21481 
    21482     // read fits table
    21483     rowSet = psFitsReadTable(fits);
    21484     if (!rowSet) {
    21485         psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
    21486         psFree(rowSet);
    21487         return false;
    21488     }
    21489 
    21490     if (!psDBInsertRows(dbh, MAGICMASK_TABLE_NAME, rowSet)) {
    21491         psError(PS_ERR_UNKNOWN, false, "databse insert failed");
    21492         psFree(rowSet);
    21493         return false;
    21494     }
    21495 
    21496     psFree(rowSet);
    21497 
    21498     return true;
    21499 }
    21500 
    21501 bool magicMaskSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
    21502 {
    21503     psArray         *rowSet;
    21504 
    21505     rowSet = psDBSelectRows(dbh, MAGICMASK_TABLE_NAME, where, limit);
    21506     if (!rowSet) {
    21507         return false;
    21508     }
    21509 
    21510     // output to fits
    21511     if (!psFitsWriteTable(fits, NULL, rowSet, MAGICMASK_TABLE_NAME)) {
    21512         psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
    21513         psFree(rowSet);
    21514         return false;
    21515     }
    21516 
    21517     psFree(rowSet);
    21518 
    21519     return true;
    21520 }
    21521 
    21522 psMetadata *magicMaskMetadataFromObject(const magicMaskRow *object)
    21523 {
    21524     psMetadata *md = psMetadataAlloc();
    21525     if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, object->magic_id)) {
    21526         psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
    21527         psFree(md);
    21528         return false;
    21529     }
    21530     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) {
    21531         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    21532         psFree(md);
    21533         return false;
    21534     }
    21535 
    21536 
    21537     return md;
    21538 }
    21539 
    21540 magicMaskRow *magicMaskObjectFromMetadata(psMetadata *md)
    21541 {
    21542 
    21543 bool status = false;
    21544     psS64 magic_id = psMetadataLookupS64(&status, md, "magic_id");
    21545     if (!status) {
    21546         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item magic_id");
    21547         return false;
    21548     }
    21549     char* uri = psMetadataLookupPtr(&status, md, "uri");
    21550     if (!status) {
    21551         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
    21552         return false;
    21553     }
    21554 
    21555     return magicMaskRowAlloc(magic_id, uri);
    21556 }
    21557 psArray *magicMaskSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
    21558 {
    21559     psArray         *rowSet;
    21560     psArray         *returnSet;
    21561     psU64           i;
    21562 
    21563     rowSet = psDBSelectRows(dbh, MAGICMASK_TABLE_NAME, where, limit);
    21564     if (!rowSet) {
    21565         return NULL;
    21566     }
    21567 
    21568     // convert psMetadata rows to row objects
    21569 
    21570     returnSet = psArrayAllocEmpty(rowSet->n);
    21571 
    21572     for (i = 0; i < rowSet->n; i++) {
    21573         magicMaskRow *object = magicMaskObjectFromMetadata(rowSet->data[i]);
    21574         psArrayAdd(returnSet, 0, object);
    21575         psFree(object);
    21576     }
    21577 
    21578     psFree(rowSet);
    21579 
    21580     return returnSet;
    21581 }
    21582 bool magicMaskDeleteObject(psDB *dbh, const magicMaskRow *object)
    21583 {
    21584     psMetadata *where = magicMaskMetadataFromObject(object);
    21585     long long count = psDBDeleteRows(dbh, MAGICMASK_TABLE_NAME, where, 0);
    21586     psFree(where);
    21587     if (count < 0) {
    21588         psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicMask");
    21589         return false;
    21590     }
    21591     if (count > 1) {
    21592         // XXX should this be a psAbort() instead?  It is possible that
    21593         // having an object match multiple rows was by design.
    21594         psError(PS_ERR_UNKNOWN, true, "magicMaskRow object matched more then one row.  Check your database schema");
    21595         return false;
    21596     }
    21597 
    21598     return true;
    21599 }
    21600 long long magicMaskDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
    21601 {
    21602     long long       deleted = 0;
    21603 
    21604     for (long long i = 0; i < objects->n; i++) {
    21605         magicMaskRow *object = objects->data[i];
    21606         psMetadata *where = magicMaskMetadataFromObject(object);
    21607         long long count = psDBDeleteRows(dbh, MAGICMASK_TABLE_NAME, where, limit);
    21608         psFree(where);
    21609         if (count < 0) {
    21610             psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicMask");
    21611             return count;
    21612         }
    21613 
    21614         deleted += count;
    21615     }
    21616 
    21617     return deleted;
    21618 }
    21619 bool magicMaskPrintObjects(FILE *stream, psArray *objects, bool mdcf)
    21620 {
    21621     PS_ASSERT_PTR_NON_NULL(objects, false);
    21622 
    21623     psMetadata *output = psMetadataAlloc();
    21624     for (long i = 0; i < psArrayLength(objects); i++) {
    21625         psMetadata *md = magicMaskMetadataFromObject(objects->data[i]);
    21626         if (!psMetadataAddMetadata(
    21627             output,
    21628             PS_LIST_TAIL,
    21629             MAGICMASK_TABLE_NAME,
    21630             PS_META_DUPLICATE_OK,
    21631             NULL,
    21632             md
    21633         )) {
    21634             psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
    21635             psFree(md);
    21636             psFree(output);
    21637             return false;
    21638         }
    21639         psFree(md);
    21640     }
    21641 
    21642     if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
    21643         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    21644         psFree(output);
    21645     }
    21646     psFree(output);
    21647 
    21648     return true;
    21649 }
    21650 bool magicMaskPrintObject(FILE *stream, magicMaskRow *object, bool mdcf)
    21651 {
    21652     PS_ASSERT_PTR_NON_NULL(object, false);
    21653 
    21654     psMetadata *md = magicMaskMetadataFromObject(object);
    21655 
    21656     if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
    21657         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    21658         psFree(md);
    21659     }
    21660 
    21661     psFree(md);
    21662 
    21663     return true;
    21664 }
    21665 static void magicSkyfileMaskRowFree(magicSkyfileMaskRow *object);
    21666 
    21667 magicSkyfileMaskRow *magicSkyfileMaskRowAlloc(psS64 magic_id, psS64 diff_id, const char *uri)
    21668 {
    21669     magicSkyfileMaskRow *_object;
    21670 
    21671     _object = psAlloc(sizeof(magicSkyfileMaskRow));
    21672     psMemSetDeallocator(_object, (psFreeFunc)magicSkyfileMaskRowFree);
    21673 
    21674     _object->magic_id = magic_id;
    21675     _object->diff_id = diff_id;
    21676     _object->uri = psStringCopy(uri);
    21677 
    21678     return _object;
    21679 }
    21680 
    21681 static void magicSkyfileMaskRowFree(magicSkyfileMaskRow *object)
    21682 {
    21683     psFree(object->uri);
    21684 }
    21685 
    21686 bool magicSkyfileMaskCreateTable(psDB *dbh)
    21687 {
    21688     psMetadata *md = psMetadataAlloc();
    21689     if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, "Primary Key fkey(magic_id) ref magicRun(magic_id)", 0)) {
    21690         psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
    21691         psFree(md);
    21692         return false;
    21693     }
    21694     if (!psMetadataAdd(md, PS_LIST_TAIL, "diff_id", PS_DATA_S64, "Primary Key fkey(magic_id, diff_id) ref magicInputSkyfile(magic_id, diff_id)", 0)) {
    21695         psError(PS_ERR_UNKNOWN, false, "failed to add item diff_id");
    21696         psFree(md);
    21697         return false;
    21698     }
    21699     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, "fkey(magic_id) ref magicMask(magic_id)", "255")) {
    21700         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    21701         psFree(md);
    21702         return false;
    21703     }
    21704 
    21705     bool status = psDBCreateTable(dbh, MAGICSKYFILEMASK_TABLE_NAME, md);
    21706 
    21707     psFree(md);
    21708 
    21709     return status;
    21710 }
    21711 
    21712 bool magicSkyfileMaskDropTable(psDB *dbh)
    21713 {
    21714     return psDBDropTable(dbh, MAGICSKYFILEMASK_TABLE_NAME);
    21715 }
    21716 
    21717 bool magicSkyfileMaskInsert(psDB * dbh, psS64 magic_id, psS64 diff_id, const char *uri)
    21718 {
    21719     psMetadata *md = psMetadataAlloc();
    21720     if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, magic_id)) {
    21721         psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
    21722         psFree(md);
    21723         return false;
    21724     }
    21725     if (!psMetadataAdd(md, PS_LIST_TAIL, "diff_id", PS_DATA_S64, NULL, diff_id)) {
    21726         psError(PS_ERR_UNKNOWN, false, "failed to add item diff_id");
    21727         psFree(md);
    21728         return false;
    21729     }
    21730     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) {
    21731         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    21732         psFree(md);
    21733         return false;
    21734     }
    21735 
    21736     bool status = psDBInsertOneRow(dbh, MAGICSKYFILEMASK_TABLE_NAME, md);
    21737     psFree(md);
    21738 
    21739     return status;
    21740 }
    21741 
    21742 long long magicSkyfileMaskDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
    21743 {
    21744     long long       deleted = 0;
    21745 
    21746     long long count = psDBDeleteRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, limit);
    21747     if (count < 0) {
    21748         psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicSkyfileMask");
    21749         return count;
    21750 
    21751         deleted += count;
    21752     }
    21753 
    21754     return deleted;
    21755 }
    21756 bool magicSkyfileMaskInsertObject(psDB *dbh, magicSkyfileMaskRow *object)
    21757 {
    21758     return magicSkyfileMaskInsert(dbh, object->magic_id, object->diff_id, object->uri);
    21759 }
    21760 
    21761 bool magicSkyfileMaskInsertObjects(psDB *dbh, psArray *objects)
    21762 {
    21763     for (long i = 0; i < psArrayLength(objects); i++) {
    21764         if (!magicSkyfileMaskInsertObject(dbh, objects->data[i])) {
    21765             return false;
    21766         }
    21767     }
    21768 
    21769     return true;
    21770 }
    21771 
    21772 bool magicSkyfileMaskInsertFits(psDB *dbh, const psFits *fits)
    21773 {
    21774     psArray         *rowSet;
    21775 
    21776     // move to (the first?) extension named  MAGICSKYFILEMASK_TABLE_NAME
    21777     if (!psFitsMoveExtName(fits, MAGICSKYFILEMASK_TABLE_NAME)) {
    21778         psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", MAGICSKYFILEMASK_TABLE_NAME);
    21779         return false;
    21780     }
    21781 
    21782     // check HDU type
    21783     if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
    21784         psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
    21785         return false;
    21786     }
    21787 
    21788     // read fits table
    21789     rowSet = psFitsReadTable(fits);
    21790     if (!rowSet) {
    21791         psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
    21792         psFree(rowSet);
    21793         return false;
    21794     }
    21795 
    21796     if (!psDBInsertRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, rowSet)) {
    21797         psError(PS_ERR_UNKNOWN, false, "databse insert failed");
    21798         psFree(rowSet);
    21799         return false;
    21800     }
    21801 
    21802     psFree(rowSet);
    21803 
    21804     return true;
    21805 }
    21806 
    21807 bool magicSkyfileMaskSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
    21808 {
    21809     psArray         *rowSet;
    21810 
    21811     rowSet = psDBSelectRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, limit);
    21812     if (!rowSet) {
    21813         return false;
    21814     }
    21815 
    21816     // output to fits
    21817     if (!psFitsWriteTable(fits, NULL, rowSet, MAGICSKYFILEMASK_TABLE_NAME)) {
    21818         psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
    21819         psFree(rowSet);
    21820         return false;
    21821     }
    21822 
    21823     psFree(rowSet);
    21824 
    21825     return true;
    21826 }
    21827 
    21828 psMetadata *magicSkyfileMaskMetadataFromObject(const magicSkyfileMaskRow *object)
    21829 {
    21830     psMetadata *md = psMetadataAlloc();
    21831     if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, object->magic_id)) {
    21832         psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
    21833         psFree(md);
    21834         return false;
    21835     }
    21836     if (!psMetadataAdd(md, PS_LIST_TAIL, "diff_id", PS_DATA_S64, NULL, object->diff_id)) {
    21837         psError(PS_ERR_UNKNOWN, false, "failed to add item diff_id");
    21838         psFree(md);
    21839         return false;
    21840     }
    21841     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) {
    21842         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    21843         psFree(md);
    21844         return false;
    21845     }
    21846 
    21847 
    21848     return md;
    21849 }
    21850 
    21851 magicSkyfileMaskRow *magicSkyfileMaskObjectFromMetadata(psMetadata *md)
    21852 {
    21853 
    21854 bool status = false;
    21855     psS64 magic_id = psMetadataLookupS64(&status, md, "magic_id");
    21856     if (!status) {
    21857         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item magic_id");
    21858         return false;
    21859     }
    21860     psS64 diff_id = psMetadataLookupS64(&status, md, "diff_id");
    21861     if (!status) {
    21862         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item diff_id");
    21863         return false;
    21864     }
    21865     char* uri = psMetadataLookupPtr(&status, md, "uri");
    21866     if (!status) {
    21867         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
    21868         return false;
    21869     }
    21870 
    21871     return magicSkyfileMaskRowAlloc(magic_id, diff_id, uri);
    21872 }
    21873 psArray *magicSkyfileMaskSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
    21874 {
    21875     psArray         *rowSet;
    21876     psArray         *returnSet;
    21877     psU64           i;
    21878 
    21879     rowSet = psDBSelectRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, limit);
    21880     if (!rowSet) {
    21881         return NULL;
    21882     }
    21883 
    21884     // convert psMetadata rows to row objects
    21885 
    21886     returnSet = psArrayAllocEmpty(rowSet->n);
    21887 
    21888     for (i = 0; i < rowSet->n; i++) {
    21889         magicSkyfileMaskRow *object = magicSkyfileMaskObjectFromMetadata(rowSet->data[i]);
    21890         psArrayAdd(returnSet, 0, object);
    21891         psFree(object);
    21892     }
    21893 
    21894     psFree(rowSet);
    21895 
    21896     return returnSet;
    21897 }
    21898 bool magicSkyfileMaskDeleteObject(psDB *dbh, const magicSkyfileMaskRow *object)
    21899 {
    21900     psMetadata *where = magicSkyfileMaskMetadataFromObject(object);
    21901     long long count = psDBDeleteRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, 0);
    21902     psFree(where);
    21903     if (count < 0) {
    21904         psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicSkyfileMask");
    21905         return false;
    21906     }
    21907     if (count > 1) {
    21908         // XXX should this be a psAbort() instead?  It is possible that
    21909         // having an object match multiple rows was by design.
    21910         psError(PS_ERR_UNKNOWN, true, "magicSkyfileMaskRow object matched more then one row.  Check your database schema");
    21911         return false;
    21912     }
    21913 
    21914     return true;
    21915 }
    21916 long long magicSkyfileMaskDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
    21917 {
    21918     long long       deleted = 0;
    21919 
    21920     for (long long i = 0; i < objects->n; i++) {
    21921         magicSkyfileMaskRow *object = objects->data[i];
    21922         psMetadata *where = magicSkyfileMaskMetadataFromObject(object);
    21923         long long count = psDBDeleteRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, limit);
    21924         psFree(where);
    21925         if (count < 0) {
    21926             psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicSkyfileMask");
    21927             return count;
    21928         }
    21929 
    21930         deleted += count;
    21931     }
    21932 
    21933     return deleted;
    21934 }
    21935 bool magicSkyfileMaskPrintObjects(FILE *stream, psArray *objects, bool mdcf)
    21936 {
    21937     PS_ASSERT_PTR_NON_NULL(objects, false);
    21938 
    21939     psMetadata *output = psMetadataAlloc();
    21940     for (long i = 0; i < psArrayLength(objects); i++) {
    21941         psMetadata *md = magicSkyfileMaskMetadataFromObject(objects->data[i]);
    21942         if (!psMetadataAddMetadata(
    21943             output,
    21944             PS_LIST_TAIL,
    21945             MAGICSKYFILEMASK_TABLE_NAME,
    21946             PS_META_DUPLICATE_OK,
    21947             NULL,
    21948             md
    21949         )) {
    21950             psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
    21951             psFree(md);
    21952             psFree(output);
    21953             return false;
    21954         }
    21955         psFree(md);
    21956     }
    21957 
    21958     if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
    21959         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    21960         psFree(output);
    21961     }
    21962     psFree(output);
    21963 
    21964     return true;
    21965 }
    21966 bool magicSkyfileMaskPrintObject(FILE *stream, magicSkyfileMaskRow *object, bool mdcf)
    21967 {
    21968     PS_ASSERT_PTR_NON_NULL(object, false);
    21969 
    21970     psMetadata *md = magicSkyfileMaskMetadataFromObject(object);
    21971 
    21972     if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
    21973         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    21974         psFree(md);
    21975     }
    21976 
    21977     psFree(md);
    21978 
    21979     return true;
    21980 }
  • trunk/ippdb/src/ippdb.h

    r15343 r15420  
    2020/*
    2121 *
    22  * This file was generated by glueforge 1.01
     22 * This file was generated by glueforge 1.03
    2323 *
    2424 * Do NOT directly edit this file.
     
    125125);
    126126
    127 /** pzDataStoreRow data structure
    128  *
    129  * Structure for representing a single row of pzDataStore table data.
    130  */
    131 
    132 typedef struct {
    133     char            *camera;
    134     char            *telescope;
    135     char            *uri;
    136 } pzDataStoreRow;
    137 
    138 /** Creates a new pzDataStoreRow object
    139  *
    140  *  @return A new pzDataStoreRow object or NULL on failure.
    141  */
    142 
    143 pzDataStoreRow *pzDataStoreRowAlloc(
    144     const char      *camera,
    145     const char      *telescope,
    146     const char      *uri
    147 );
    148 
    149 /** Creates a new pzDataStore table
    150  *
    151  * @return true on success
    152  */
    153 
    154 bool pzDataStoreCreateTable(
    155     psDB            *dbh                ///< Database handle
    156 );
    157 
    158 /** Deletes a pzDataStore table
    159  *
    160  * @return true on success
    161  */
    162 
    163 bool pzDataStoreDropTable(
    164     psDB            *dbh                ///< Database handle
    165 );
    166 
    167 /** Insert a single row into a table
    168  *
    169  * This function constructs and inserts a single row based on it's parameters.
    170  *
    171  * @return true on success
    172  */
    173 
    174 bool pzDataStoreInsert(
    175     psDB            *dbh,               ///< Database handle
    176     const char      *camera,
    177     const char      *telescope,
    178     const char      *uri
    179 );
    180 
    181 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    182  *
    183  * @return A The number of rows removed or a negative value on error
    184  */
    185 
    186 long long pzDataStoreDelete(
    187     psDB            *dbh,               ///< Database handle
    188     const psMetadata *where,            ///< Row match criteria
    189     unsigned long long limit            ///< Maximum number of elements to delete
    190 );
    191 
    192 /** Insert a single pzDataStoreRow object into a table
    193  *
    194  * This function constructs and inserts a single row based on it's parameters.
    195  *
    196  * @return true on success
    197  */
    198 
    199 bool pzDataStoreInsertObject(
    200     psDB            *dbh,               ///< Database handle
    201     pzDataStoreRow  *object             ///< pzDataStoreRow object
    202 );
    203 
    204 /** Insert an array of pzDataStoreRow object into a table
    205  *
    206  * This function constructs and inserts multiple rows based on it's parameters.
    207  *
    208  * @return true on success
    209  */
    210 
    211 bool pzDataStoreInsertObjects(
    212     psDB            *dbh,               ///< Database handle
    213     psArray         *objects            ///< array of pzDataStoreRow objects
    214 );
    215 
    216 /** Insert data from a binary FITS table pzDataStoreRow into the database
    217  *
    218  * This function expects a psFits object with a FITS table as the first
    219  * extension.  The table must have at least one row of data in it, that is of
    220  * the appropriate format (number of columns and their type).  All other
    221  * extensions are ignored.
    222  *
    223  * @return true on success
    224  */
    225 
    226 bool pzDataStoreInsertFits(
    227     psDB            *dbh,               ///< Database handle
    228     const psFits    *fits               ///< psFits object
    229 );
    230 
    231 /** Selects up to limit from the database and returns them in a binary FITS table
    232  *
    233  * This function assumes an empty psFits object and will create a FITS table
    234  * as the first extension.
    235  *
    236  *  See psDBSelectRows() for documentation on the format of where.
    237  *
    238  * @return true on success
    239  */
    240 
    241 bool pzDataStoreSelectRowsFits(
    242     psDB            *dbh,               ///< Database handle
    243     psFits          *fits,              ///< psFits object
    244     const psMetadata *where,            ///< Row match criteria
    245     unsigned long long limit            ///< Maximum number of elements to return
    246 );
    247 
    248 /** Convert a pzDataStoreRow into an equivalent psMetadata
    249  *
    250  * @return A psMetadata pointer or NULL on error
    251  */
    252 
    253 psMetadata *pzDataStoreMetadataFromObject(
    254     const pzDataStoreRow *object             ///< fooRow to convert into a psMetadata
    255 );
    256 
    257 /** Convert a psMetadata into an equivalent fooRow
    258  *
    259  * @return A pzDataStoreRow pointer or NULL on error
    260  */
    261 
    262 pzDataStoreRow *pzDataStoreObjectFromMetadata(
    263     psMetadata      *md                 ///< psMetadata to convert into a fooRow
    264 );
    265 /** Selects up to limit rows from the database and returns as pzDataStoreRow objects in a psArray
    266  *
    267  *  See psDBSelectRows() for documentation on the format of where.
    268  *
    269  * @return A psArray pointer or NULL on error
    270  */
    271 
    272 psArray *pzDataStoreSelectRowObjects(
    273     psDB            *dbh,               ///< Database handle
    274     const psMetadata *where,            ///< Row match criteria
    275     unsigned long long limit            ///< Maximum number of elements to return
    276 );
    277 /** Deletes a row from the database coresponding to an pzDataStore
    278  *
    279  *  Note that a 'where' search psMetadata is constructed from each object and
    280  *  used to find rows to delete.
    281  *
    282  * @return A The number of rows removed or a negative value on error
    283  */
    284 
    285 bool pzDataStoreDeleteObject(
    286     psDB            *dbh,               ///< Database handle
    287     const pzDataStoreRow *object    ///< Object to delete
    288 );
    289 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    290  *
    291  *  Note that a 'where' search psMetadata is constructed from each object and
    292  *  used to find rows to delete.
    293  *
    294  * @return A The number of rows removed or a negative value on error
    295  */
    296 
    297 long long pzDataStoreDeleteRowObjects(
    298     psDB            *dbh,               ///< Database handle
    299     const psArray   *objects,           ///< Array of objects to delete
    300     unsigned long long limit            ///< Maximum number of elements to delete
    301 );
    302 /** Formats and prints an array of pzDataStoreRow objects
    303  *
    304  * When mdcf is set the formated output is in psMetadataConfig
    305  * format, otherwise it is in a simple tabular format.
    306  *
    307  * @return true on success
    308  */
    309 
    310 bool pzDataStorePrintObjects(
    311     FILE            *stream,            ///< a stream
    312     psArray         *objects,           ///< An array of pzDataStoreRow objects
    313     bool            mdcf                ///< format as mdconfig or simple
    314 );
    315 /** Formats and prints an pzDataStoreRow object
    316  *
    317  * When mdcf is set the formated output is in psMetadataConfig
    318  * format, otherwise it is in a simple tabular format.
    319  *
    320  * @return true on success
    321  */
    322 
    323 bool pzDataStorePrintObject(
    324     FILE            *stream,            ///< a stream
    325     pzDataStoreRow *object,    ///< an pzDataStoreRow object
    326     bool            mdcf                ///< format as mdconfig or simple
    327 );
    328127/** summitExpRow data structure
    329128 *
     
    970769    char            *class;
    971770    char            *class_id;
     771    psS64           exp_id;
    972772} pzPendingImfileRow;
    973773
     
    982782    const char      *telescope,
    983783    const char      *class,
    984     const char      *class_id
     784    const char      *class_id,
     785    psS64           exp_id
    985786);
    986787
     
    1016817    const char      *telescope,
    1017818    const char      *class,
    1018     const char      *class_id
     819    const char      *class_id,
     820    psS64           exp_id
    1019821);
    1020822
     
    13781180    char            *class;
    13791181    char            *class_id;
     1182    psS64           exp_id;
    13801183    char            *uri;
    13811184} pzDoneImfileRow;
     
    13921195    const char      *class,
    13931196    const char      *class_id,
     1197    psS64           exp_id,
    13941198    const char      *uri
    13951199);
     
    14271231    const char      *class,
    14281232    const char      *class_id,
     1233    psS64           exp_id,
    14291234    const char      *uri
    14301235);
     
    15881393    char            *tmp_telescope;
    15891394    char            *state;
     1395    psS32           imfiles;
    15901396    char            *workdir;
    15911397    char            *workdir_state;
    1592     char            *reduction;
    15931398} newExpRow;
    15941399
     
    16041409    const char      *tmp_telescope,
    16051410    const char      *state,
     1411    psS32           imfiles,
    16061412    const char      *workdir,
    1607     const char      *workdir_state,
    1608     const char      *reduction
     1413    const char      *workdir_state
    16091414);
    16101415
     
    16411446    const char      *tmp_telescope,
    16421447    const char      *state,
     1448    psS32           imfiles,
    16431449    const char      *workdir,
    1644     const char      *workdir_state,
    1645     const char      *reduction
     1450    const char      *workdir_state
    16461451);
    16471452
     
    20071812    char            *exp_tag;
    20081813    char            *exp_type;
     1814    psS32           imfiles;
    20091815    char            *filelevel;
    20101816    char            *workdir;
    2011     char            *reduction;
    20121817    char            *filter;
    20131818    psF32           airmass;
     
    20461851    const char      *exp_tag,
    20471852    const char      *exp_type,
     1853    psS32           imfiles,
    20481854    const char      *filelevel,
    20491855    const char      *workdir,
    2050     const char      *reduction,
    20511856    const char      *filter,
    20521857    psF32           airmass,
     
    21061911    const char      *exp_tag,
    21071912    const char      *exp_type,
     1913    psS32           imfiles,
    21081914    const char      *filelevel,
    21091915    const char      *workdir,
    2110     const char      *reduction,
    21111916    const char      *filter,
    21121917    psF32           airmass,
     
    27692574typedef struct {
    27702575    psS64           chip_id;
    2771     psS64           exp_id;
    27722576    char            *state;
    27732577    char            *workdir;
     
    27862590chipRunRow *chipRunRowAlloc(
    27872591    psS64           chip_id,
    2788     psS64           exp_id,
    27892592    const char      *state,
    27902593    const char      *workdir,
     
    28242627    psDB            *dbh,               ///< Database handle
    28252628    psS64           chip_id,
    2826     psS64           exp_id,
    28272629    const char      *state,
    28282630    const char      *workdir,
     
    29792781    FILE            *stream,            ///< a stream
    29802782    chipRunRow *object,    ///< an chipRunRow object
     2783    bool            mdcf                ///< format as mdconfig or simple
     2784);
     2785/** chipInputImfileRow data structure
     2786 *
     2787 * Structure for representing a single row of chipInputImfile table data.
     2788 */
     2789
     2790typedef struct {
     2791    psS64           chip_id;
     2792    psS64           exp_id;
     2793    char            *class_id;
     2794} chipInputImfileRow;
     2795
     2796/** Creates a new chipInputImfileRow object
     2797 *
     2798 *  @return A new chipInputImfileRow object or NULL on failure.
     2799 */
     2800
     2801chipInputImfileRow *chipInputImfileRowAlloc(
     2802    psS64           chip_id,
     2803    psS64           exp_id,
     2804    const char      *class_id
     2805);
     2806
     2807/** Creates a new chipInputImfile table
     2808 *
     2809 * @return true on success
     2810 */
     2811
     2812bool chipInputImfileCreateTable(
     2813    psDB            *dbh                ///< Database handle
     2814);
     2815
     2816/** Deletes a chipInputImfile table
     2817 *
     2818 * @return true on success
     2819 */
     2820
     2821bool chipInputImfileDropTable(
     2822    psDB            *dbh                ///< Database handle
     2823);
     2824
     2825/** Insert a single row into a table
     2826 *
     2827 * This function constructs and inserts a single row based on it's parameters.
     2828 *
     2829 * @return true on success
     2830 */
     2831
     2832bool chipInputImfileInsert(
     2833    psDB            *dbh,               ///< Database handle
     2834    psS64           chip_id,
     2835    psS64           exp_id,
     2836    const char      *class_id
     2837);
     2838
     2839/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     2840 *
     2841 * @return A The number of rows removed or a negative value on error
     2842 */
     2843
     2844long long chipInputImfileDelete(
     2845    psDB            *dbh,               ///< Database handle
     2846    const psMetadata *where,            ///< Row match criteria
     2847    unsigned long long limit            ///< Maximum number of elements to delete
     2848);
     2849
     2850/** Insert a single chipInputImfileRow object into a table
     2851 *
     2852 * This function constructs and inserts a single row based on it's parameters.
     2853 *
     2854 * @return true on success
     2855 */
     2856
     2857bool chipInputImfileInsertObject(
     2858    psDB            *dbh,               ///< Database handle
     2859    chipInputImfileRow *object             ///< chipInputImfileRow object
     2860);
     2861
     2862/** Insert an array of chipInputImfileRow object into a table
     2863 *
     2864 * This function constructs and inserts multiple rows based on it's parameters.
     2865 *
     2866 * @return true on success
     2867 */
     2868
     2869bool chipInputImfileInsertObjects(
     2870    psDB            *dbh,               ///< Database handle
     2871    psArray         *objects            ///< array of chipInputImfileRow objects
     2872);
     2873
     2874/** Insert data from a binary FITS table chipInputImfileRow into the database
     2875 *
     2876 * This function expects a psFits object with a FITS table as the first
     2877 * extension.  The table must have at least one row of data in it, that is of
     2878 * the appropriate format (number of columns and their type).  All other
     2879 * extensions are ignored.
     2880 *
     2881 * @return true on success
     2882 */
     2883
     2884bool chipInputImfileInsertFits(
     2885    psDB            *dbh,               ///< Database handle
     2886    const psFits    *fits               ///< psFits object
     2887);
     2888
     2889/** Selects up to limit from the database and returns them in a binary FITS table
     2890 *
     2891 * This function assumes an empty psFits object and will create a FITS table
     2892 * as the first extension.
     2893 *
     2894 *  See psDBSelectRows() for documentation on the format of where.
     2895 *
     2896 * @return true on success
     2897 */
     2898
     2899bool chipInputImfileSelectRowsFits(
     2900    psDB            *dbh,               ///< Database handle
     2901    psFits          *fits,              ///< psFits object
     2902    const psMetadata *where,            ///< Row match criteria
     2903    unsigned long long limit            ///< Maximum number of elements to return
     2904);
     2905
     2906/** Convert a chipInputImfileRow into an equivalent psMetadata
     2907 *
     2908 * @return A psMetadata pointer or NULL on error
     2909 */
     2910
     2911psMetadata *chipInputImfileMetadataFromObject(
     2912    const chipInputImfileRow *object             ///< fooRow to convert into a psMetadata
     2913);
     2914
     2915/** Convert a psMetadata into an equivalent fooRow
     2916 *
     2917 * @return A chipInputImfileRow pointer or NULL on error
     2918 */
     2919
     2920chipInputImfileRow *chipInputImfileObjectFromMetadata(
     2921    psMetadata      *md                 ///< psMetadata to convert into a fooRow
     2922);
     2923/** Selects up to limit rows from the database and returns as chipInputImfileRow objects in a psArray
     2924 *
     2925 *  See psDBSelectRows() for documentation on the format of where.
     2926 *
     2927 * @return A psArray pointer or NULL on error
     2928 */
     2929
     2930psArray *chipInputImfileSelectRowObjects(
     2931    psDB            *dbh,               ///< Database handle
     2932    const psMetadata *where,            ///< Row match criteria
     2933    unsigned long long limit            ///< Maximum number of elements to return
     2934);
     2935/** Deletes a row from the database coresponding to an chipInputImfile
     2936 *
     2937 *  Note that a 'where' search psMetadata is constructed from each object and
     2938 *  used to find rows to delete.
     2939 *
     2940 * @return A The number of rows removed or a negative value on error
     2941 */
     2942
     2943bool chipInputImfileDeleteObject(
     2944    psDB            *dbh,               ///< Database handle
     2945    const chipInputImfileRow *object    ///< Object to delete
     2946);
     2947/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     2948 *
     2949 *  Note that a 'where' search psMetadata is constructed from each object and
     2950 *  used to find rows to delete.
     2951 *
     2952 * @return A The number of rows removed or a negative value on error
     2953 */
     2954
     2955long long chipInputImfileDeleteRowObjects(
     2956    psDB            *dbh,               ///< Database handle
     2957    const psArray   *objects,           ///< Array of objects to delete
     2958    unsigned long long limit            ///< Maximum number of elements to delete
     2959);
     2960/** Formats and prints an array of chipInputImfileRow objects
     2961 *
     2962 * When mdcf is set the formated output is in psMetadataConfig
     2963 * format, otherwise it is in a simple tabular format.
     2964 *
     2965 * @return true on success
     2966 */
     2967
     2968bool chipInputImfilePrintObjects(
     2969    FILE            *stream,            ///< a stream
     2970    psArray         *objects,           ///< An array of chipInputImfileRow objects
     2971    bool            mdcf                ///< format as mdconfig or simple
     2972);
     2973/** Formats and prints an chipInputImfileRow object
     2974 *
     2975 * When mdcf is set the formated output is in psMetadataConfig
     2976 * format, otherwise it is in a simple tabular format.
     2977 *
     2978 * @return true on success
     2979 */
     2980
     2981bool chipInputImfilePrintObject(
     2982    FILE            *stream,            ///< a stream
     2983    chipInputImfileRow *object,    ///< an chipInputImfileRow object
    29812984    bool            mdcf                ///< format as mdconfig or simple
    29822985);
     
    47344737    psF64           bg;
    47354738    psF64           bg_stdev;
    4736     psF64           pixel_fill;
    4737     psS16           fault;
    47384739} warpSkyfileRow;
    47394740
     
    47504751    const char      *path_base,
    47514752    psF64           bg,
    4752     psF64           bg_stdev,
    4753     psF64           pixel_fill,
    4754     psS16           fault
     4753    psF64           bg_stdev
    47554754);
    47564755
     
    47884787    const char      *path_base,
    47894788    psF64           bg,
    4790     psF64           bg_stdev,
    4791     psF64           pixel_fill,
    4792     psS16           fault
     4789    psF64           bg_stdev
    47934790);
    47944791
     
    51605157typedef struct {
    51615158    psS64           diff_id;
    5162     bool            template;
    5163     psS64           stack_id;
    51645159    psS64           warp_id;
    51655160    char            *skycell_id;
    51665161    char            *tess_id;
    51675162    char            *kind;
     5163    bool            template;
    51685164} diffInputSkyfileRow;
    51695165
     
    51755171diffInputSkyfileRow *diffInputSkyfileRowAlloc(
    51765172    psS64           diff_id,
    5177     bool            template,
    5178     psS64           stack_id,
    51795173    psS64           warp_id,
    51805174    const char      *skycell_id,
    51815175    const char      *tess_id,
    5182     const char      *kind
     5176    const char      *kind,
     5177    bool            template
    51835178);
    51845179
     
    52115206    psDB            *dbh,               ///< Database handle
    52125207    psS64           diff_id,
    5213     bool            template,
    5214     psS64           stack_id,
    52155208    psS64           warp_id,
    52165209    const char      *skycell_id,
    52175210    const char      *tess_id,
    5218     const char      *kind
     5211    const char      *kind,
     5212    bool            template
    52195213);
    52205214
     
    53775371    psF64           bg;
    53785372    psF64           bg_stdev;
    5379     psS16           fault;
    53805373} diffSkyfileRow;
    53815374
     
    53905383    const char      *path_base,
    53915384    psF64           bg,
    5392     psF64           bg_stdev,
    5393     psS16           fault
     5385    psF64           bg_stdev
    53945386);
    53955387
     
    54255417    const char      *path_base,
    54265418    psF64           bg,
    5427     psF64           bg_stdev,
    5428     psS16           fault
     5419    psF64           bg_stdev
    54295420);
    54305421
     
    59985989    psF64           bg;
    59995990    psF64           bg_stdev;
    6000     psS16           fault;
    60015991} stackSumSkyfileRow;
    60025992
     
    60116001    const char      *path_base,
    60126002    psF64           bg,
    6013     psF64           bg_stdev,
    6014     psS16           fault
     6003    psF64           bg_stdev
    60156004);
    60166005
     
    60466035    const char      *path_base,
    60476036    psF64           bg,
    6048     psF64           bg_stdev,
    6049     psS16           fault
     6037    psF64           bg_stdev
    60506038);
    60516039
     
    80878075    psF64           bg_stdev;
    80888076    psF64           bg_mean_stdev;
    8089     psF64           bg_skewness;
    8090     psF64           bg_kurtosis;
    80918077    psF64           bin_stdev;
    80928078    psF64           fringe_0;
    80938079    psF64           fringe_1;
    80948080    psF64           fringe_2;
    8095     psF64           fringe_resid_0;
    8096     psF64           fringe_resid_1;
    8097     psF64           fringe_resid_2;
    80988081    psF64           user_1;
    80998082    psF64           user_2;
     
    81208103    psF64           bg_stdev,
    81218104    psF64           bg_mean_stdev,
    8122     psF64           bg_skewness,
    8123     psF64           bg_kurtosis,
    81248105    psF64           bin_stdev,
    81258106    psF64           fringe_0,
    81268107    psF64           fringe_1,
    81278108    psF64           fringe_2,
    8128     psF64           fringe_resid_0,
    8129     psF64           fringe_resid_1,
    8130     psF64           fringe_resid_2,
    81318109    psF64           user_1,
    81328110    psF64           user_2,
     
    81748152    psF64           bg_stdev,
    81758153    psF64           bg_mean_stdev,
    8176     psF64           bg_skewness,
    8177     psF64           bg_kurtosis,
    81788154    psF64           bin_stdev,
    81798155    psF64           fringe_0,
    81808156    psF64           fringe_1,
    81818157    psF64           fringe_2,
    8182     psF64           fringe_resid_0,
    8183     psF64           fringe_resid_1,
    8184     psF64           fringe_resid_2,
    81858158    psF64           user_1,
    81868159    psF64           user_2,
     
    83528325    psF64           bg_stdev;
    83538326    psF64           bg_mean_stdev;
    8354     psF64           bg_skewness;
    8355     psF64           bg_kurtosis;
    83568327    psF64           bin_stdev;
    83578328    psF64           fringe_0;
    83588329    psF64           fringe_1;
    83598330    psF64           fringe_2;
    8360     psF64           fringe_resid_0;
    8361     psF64           fringe_resid_1;
    8362     psF64           fringe_resid_2;
    83638331    psF64           user_1;
    83648332    psF64           user_2;
     
    83848352    psF64           bg_stdev,
    83858353    psF64           bg_mean_stdev,
    8386     psF64           bg_skewness,
    8387     psF64           bg_kurtosis,
    83888354    psF64           bin_stdev,
    83898355    psF64           fringe_0,
    83908356    psF64           fringe_1,
    83918357    psF64           fringe_2,
    8392     psF64           fringe_resid_0,
    8393     psF64           fringe_resid_1,
    8394     psF64           fringe_resid_2,
    83958358    psF64           user_1,
    83968359    psF64           user_2,
     
    84378400    psF64           bg_stdev,
    84388401    psF64           bg_mean_stdev,
    8439     psF64           bg_skewness,
    8440     psF64           bg_kurtosis,
    84418402    psF64           bin_stdev,
    84428403    psF64           fringe_0,
    84438404    psF64           fringe_1,
    84448405    psF64           fringe_2,
    8445     psF64           fringe_resid_0,
    8446     psF64           fringe_resid_1,
    8447     psF64           fringe_resid_2,
    84488406    psF64           user_1,
    84498407    psF64           user_2,
     
    88168774    bool            mdcf                ///< format as mdconfig or simple
    88178775);
    8818 /** detRegisteredImfileRow data structure
    8819  *
    8820  * Structure for representing a single row of detRegisteredImfile table data.
    8821  */
    8822 
    8823 typedef struct {
    8824     psS64           det_id;
    8825     psS32           iteration;
    8826     char            *class_id;
    8827     char            *uri;
    8828     psF64           bg;
    8829     psF64           bg_stdev;
    8830     psF64           bg_mean_stdev;
    8831     psF64           user_1;
    8832     psF64           user_2;
    8833     psF64           user_3;
    8834     psF64           user_4;
    8835     psF64           user_5;
    8836     char            *path_base;
    8837     psS16           fault;
    8838 } detRegisteredImfileRow;
    8839 
    8840 /** Creates a new detRegisteredImfileRow object
    8841  *
    8842  *  @return A new detRegisteredImfileRow object or NULL on failure.
    8843  */
    8844 
    8845 detRegisteredImfileRow *detRegisteredImfileRowAlloc(
    8846     psS64           det_id,
    8847     psS32           iteration,
    8848     const char      *class_id,
    8849     const char      *uri,
    8850     psF64           bg,
    8851     psF64           bg_stdev,
    8852     psF64           bg_mean_stdev,
    8853     psF64           user_1,
    8854     psF64           user_2,
    8855     psF64           user_3,
    8856     psF64           user_4,
    8857     psF64           user_5,
    8858     const char      *path_base,
    8859     psS16           fault
    8860 );
    8861 
    8862 /** Creates a new detRegisteredImfile table
    8863  *
    8864  * @return true on success
    8865  */
    8866 
    8867 bool detRegisteredImfileCreateTable(
    8868     psDB            *dbh                ///< Database handle
    8869 );
    8870 
    8871 /** Deletes a detRegisteredImfile table
    8872  *
    8873  * @return true on success
    8874  */
    8875 
    8876 bool detRegisteredImfileDropTable(
    8877     psDB            *dbh                ///< Database handle
    8878 );
    8879 
    8880 /** Insert a single row into a table
    8881  *
    8882  * This function constructs and inserts a single row based on it's parameters.
    8883  *
    8884  * @return true on success
    8885  */
    8886 
    8887 bool detRegisteredImfileInsert(
    8888     psDB            *dbh,               ///< Database handle
    8889     psS64           det_id,
    8890     psS32           iteration,
    8891     const char      *class_id,
    8892     const char      *uri,
    8893     psF64           bg,
    8894     psF64           bg_stdev,
    8895     psF64           bg_mean_stdev,
    8896     psF64           user_1,
    8897     psF64           user_2,
    8898     psF64           user_3,
    8899     psF64           user_4,
    8900     psF64           user_5,
    8901     const char      *path_base,
    8902     psS16           fault
    8903 );
    8904 
    8905 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    8906  *
    8907  * @return A The number of rows removed or a negative value on error
    8908  */
    8909 
    8910 long long detRegisteredImfileDelete(
    8911     psDB            *dbh,               ///< Database handle
    8912     const psMetadata *where,            ///< Row match criteria
    8913     unsigned long long limit            ///< Maximum number of elements to delete
    8914 );
    8915 
    8916 /** Insert a single detRegisteredImfileRow object into a table
    8917  *
    8918  * This function constructs and inserts a single row based on it's parameters.
    8919  *
    8920  * @return true on success
    8921  */
    8922 
    8923 bool detRegisteredImfileInsertObject(
    8924     psDB            *dbh,               ///< Database handle
    8925     detRegisteredImfileRow *object             ///< detRegisteredImfileRow object
    8926 );
    8927 
    8928 /** Insert an array of detRegisteredImfileRow object into a table
    8929  *
    8930  * This function constructs and inserts multiple rows based on it's parameters.
    8931  *
    8932  * @return true on success
    8933  */
    8934 
    8935 bool detRegisteredImfileInsertObjects(
    8936     psDB            *dbh,               ///< Database handle
    8937     psArray         *objects            ///< array of detRegisteredImfileRow objects
    8938 );
    8939 
    8940 /** Insert data from a binary FITS table detRegisteredImfileRow into the database
    8941  *
    8942  * This function expects a psFits object with a FITS table as the first
    8943  * extension.  The table must have at least one row of data in it, that is of
    8944  * the appropriate format (number of columns and their type).  All other
    8945  * extensions are ignored.
    8946  *
    8947  * @return true on success
    8948  */
    8949 
    8950 bool detRegisteredImfileInsertFits(
    8951     psDB            *dbh,               ///< Database handle
    8952     const psFits    *fits               ///< psFits object
    8953 );
    8954 
    8955 /** Selects up to limit from the database and returns them in a binary FITS table
    8956  *
    8957  * This function assumes an empty psFits object and will create a FITS table
    8958  * as the first extension.
    8959  *
    8960  *  See psDBSelectRows() for documentation on the format of where.
    8961  *
    8962  * @return true on success
    8963  */
    8964 
    8965 bool detRegisteredImfileSelectRowsFits(
    8966     psDB            *dbh,               ///< Database handle
    8967     psFits          *fits,              ///< psFits object
    8968     const psMetadata *where,            ///< Row match criteria
    8969     unsigned long long limit            ///< Maximum number of elements to return
    8970 );
    8971 
    8972 /** Convert a detRegisteredImfileRow into an equivalent psMetadata
    8973  *
    8974  * @return A psMetadata pointer or NULL on error
    8975  */
    8976 
    8977 psMetadata *detRegisteredImfileMetadataFromObject(
    8978     const detRegisteredImfileRow *object             ///< fooRow to convert into a psMetadata
    8979 );
    8980 
    8981 /** Convert a psMetadata into an equivalent fooRow
    8982  *
    8983  * @return A detRegisteredImfileRow pointer or NULL on error
    8984  */
    8985 
    8986 detRegisteredImfileRow *detRegisteredImfileObjectFromMetadata(
    8987     psMetadata      *md                 ///< psMetadata to convert into a fooRow
    8988 );
    8989 /** Selects up to limit rows from the database and returns as detRegisteredImfileRow objects in a psArray
    8990  *
    8991  *  See psDBSelectRows() for documentation on the format of where.
    8992  *
    8993  * @return A psArray pointer or NULL on error
    8994  */
    8995 
    8996 psArray *detRegisteredImfileSelectRowObjects(
    8997     psDB            *dbh,               ///< Database handle
    8998     const psMetadata *where,            ///< Row match criteria
    8999     unsigned long long limit            ///< Maximum number of elements to return
    9000 );
    9001 /** Deletes a row from the database coresponding to an detRegisteredImfile
    9002  *
    9003  *  Note that a 'where' search psMetadata is constructed from each object and
    9004  *  used to find rows to delete.
    9005  *
    9006  * @return A The number of rows removed or a negative value on error
    9007  */
    9008 
    9009 bool detRegisteredImfileDeleteObject(
    9010     psDB            *dbh,               ///< Database handle
    9011     const detRegisteredImfileRow *object    ///< Object to delete
    9012 );
    9013 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    9014  *
    9015  *  Note that a 'where' search psMetadata is constructed from each object and
    9016  *  used to find rows to delete.
    9017  *
    9018  * @return A The number of rows removed or a negative value on error
    9019  */
    9020 
    9021 long long detRegisteredImfileDeleteRowObjects(
    9022     psDB            *dbh,               ///< Database handle
    9023     const psArray   *objects,           ///< Array of objects to delete
    9024     unsigned long long limit            ///< Maximum number of elements to delete
    9025 );
    9026 /** Formats and prints an array of detRegisteredImfileRow objects
    9027  *
    9028  * When mdcf is set the formated output is in psMetadataConfig
    9029  * format, otherwise it is in a simple tabular format.
    9030  *
    9031  * @return true on success
    9032  */
    9033 
    9034 bool detRegisteredImfilePrintObjects(
    9035     FILE            *stream,            ///< a stream
    9036     psArray         *objects,           ///< An array of detRegisteredImfileRow objects
    9037     bool            mdcf                ///< format as mdconfig or simple
    9038 );
    9039 /** Formats and prints an detRegisteredImfileRow object
    9040  *
    9041  * When mdcf is set the formated output is in psMetadataConfig
    9042  * format, otherwise it is in a simple tabular format.
    9043  *
    9044  * @return true on success
    9045  */
    9046 
    9047 bool detRegisteredImfilePrintObject(
    9048     FILE            *stream,            ///< a stream
    9049     detRegisteredImfileRow *object,    ///< an detRegisteredImfileRow object
    9050     bool            mdcf                ///< format as mdconfig or simple
    9051 );
    9052 /** detCorrectedExpRow data structure
    9053  *
    9054  * Structure for representing a single row of detCorrectedExp table data.
    9055  */
    9056 
    9057 typedef struct {
    9058     psS64           det_id;
    9059     psS64           exp_id;
    9060     char            *uri;
    9061     psS64           corr_id;
    9062     char            *corr_type;
    9063     char            *recipe;
    9064     char            *path_base;
    9065     psS16           fault;
    9066 } detCorrectedExpRow;
    9067 
    9068 /** Creates a new detCorrectedExpRow object
    9069  *
    9070  *  @return A new detCorrectedExpRow object or NULL on failure.
    9071  */
    9072 
    9073 detCorrectedExpRow *detCorrectedExpRowAlloc(
    9074     psS64           det_id,
    9075     psS64           exp_id,
    9076     const char      *uri,
    9077     psS64           corr_id,
    9078     const char      *corr_type,
    9079     const char      *recipe,
    9080     const char      *path_base,
    9081     psS16           fault
    9082 );
    9083 
    9084 /** Creates a new detCorrectedExp table
    9085  *
    9086  * @return true on success
    9087  */
    9088 
    9089 bool detCorrectedExpCreateTable(
    9090     psDB            *dbh                ///< Database handle
    9091 );
    9092 
    9093 /** Deletes a detCorrectedExp table
    9094  *
    9095  * @return true on success
    9096  */
    9097 
    9098 bool detCorrectedExpDropTable(
    9099     psDB            *dbh                ///< Database handle
    9100 );
    9101 
    9102 /** Insert a single row into a table
    9103  *
    9104  * This function constructs and inserts a single row based on it's parameters.
    9105  *
    9106  * @return true on success
    9107  */
    9108 
    9109 bool detCorrectedExpInsert(
    9110     psDB            *dbh,               ///< Database handle
    9111     psS64           det_id,
    9112     psS64           exp_id,
    9113     const char      *uri,
    9114     psS64           corr_id,
    9115     const char      *corr_type,
    9116     const char      *recipe,
    9117     const char      *path_base,
    9118     psS16           fault
    9119 );
    9120 
    9121 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    9122  *
    9123  * @return A The number of rows removed or a negative value on error
    9124  */
    9125 
    9126 long long detCorrectedExpDelete(
    9127     psDB            *dbh,               ///< Database handle
    9128     const psMetadata *where,            ///< Row match criteria
    9129     unsigned long long limit            ///< Maximum number of elements to delete
    9130 );
    9131 
    9132 /** Insert a single detCorrectedExpRow object into a table
    9133  *
    9134  * This function constructs and inserts a single row based on it's parameters.
    9135  *
    9136  * @return true on success
    9137  */
    9138 
    9139 bool detCorrectedExpInsertObject(
    9140     psDB            *dbh,               ///< Database handle
    9141     detCorrectedExpRow *object             ///< detCorrectedExpRow object
    9142 );
    9143 
    9144 /** Insert an array of detCorrectedExpRow object into a table
    9145  *
    9146  * This function constructs and inserts multiple rows based on it's parameters.
    9147  *
    9148  * @return true on success
    9149  */
    9150 
    9151 bool detCorrectedExpInsertObjects(
    9152     psDB            *dbh,               ///< Database handle
    9153     psArray         *objects            ///< array of detCorrectedExpRow objects
    9154 );
    9155 
    9156 /** Insert data from a binary FITS table detCorrectedExpRow into the database
    9157  *
    9158  * This function expects a psFits object with a FITS table as the first
    9159  * extension.  The table must have at least one row of data in it, that is of
    9160  * the appropriate format (number of columns and their type).  All other
    9161  * extensions are ignored.
    9162  *
    9163  * @return true on success
    9164  */
    9165 
    9166 bool detCorrectedExpInsertFits(
    9167     psDB            *dbh,               ///< Database handle
    9168     const psFits    *fits               ///< psFits object
    9169 );
    9170 
    9171 /** Selects up to limit from the database and returns them in a binary FITS table
    9172  *
    9173  * This function assumes an empty psFits object and will create a FITS table
    9174  * as the first extension.
    9175  *
    9176  *  See psDBSelectRows() for documentation on the format of where.
    9177  *
    9178  * @return true on success
    9179  */
    9180 
    9181 bool detCorrectedExpSelectRowsFits(
    9182     psDB            *dbh,               ///< Database handle
    9183     psFits          *fits,              ///< psFits object
    9184     const psMetadata *where,            ///< Row match criteria
    9185     unsigned long long limit            ///< Maximum number of elements to return
    9186 );
    9187 
    9188 /** Convert a detCorrectedExpRow into an equivalent psMetadata
    9189  *
    9190  * @return A psMetadata pointer or NULL on error
    9191  */
    9192 
    9193 psMetadata *detCorrectedExpMetadataFromObject(
    9194     const detCorrectedExpRow *object             ///< fooRow to convert into a psMetadata
    9195 );
    9196 
    9197 /** Convert a psMetadata into an equivalent fooRow
    9198  *
    9199  * @return A detCorrectedExpRow pointer or NULL on error
    9200  */
    9201 
    9202 detCorrectedExpRow *detCorrectedExpObjectFromMetadata(
    9203     psMetadata      *md                 ///< psMetadata to convert into a fooRow
    9204 );
    9205 /** Selects up to limit rows from the database and returns as detCorrectedExpRow objects in a psArray
    9206  *
    9207  *  See psDBSelectRows() for documentation on the format of where.
    9208  *
    9209  * @return A psArray pointer or NULL on error
    9210  */
    9211 
    9212 psArray *detCorrectedExpSelectRowObjects(
    9213     psDB            *dbh,               ///< Database handle
    9214     const psMetadata *where,            ///< Row match criteria
    9215     unsigned long long limit            ///< Maximum number of elements to return
    9216 );
    9217 /** Deletes a row from the database coresponding to an detCorrectedExp
    9218  *
    9219  *  Note that a 'where' search psMetadata is constructed from each object and
    9220  *  used to find rows to delete.
    9221  *
    9222  * @return A The number of rows removed or a negative value on error
    9223  */
    9224 
    9225 bool detCorrectedExpDeleteObject(
    9226     psDB            *dbh,               ///< Database handle
    9227     const detCorrectedExpRow *object    ///< Object to delete
    9228 );
    9229 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    9230  *
    9231  *  Note that a 'where' search psMetadata is constructed from each object and
    9232  *  used to find rows to delete.
    9233  *
    9234  * @return A The number of rows removed or a negative value on error
    9235  */
    9236 
    9237 long long detCorrectedExpDeleteRowObjects(
    9238     psDB            *dbh,               ///< Database handle
    9239     const psArray   *objects,           ///< Array of objects to delete
    9240     unsigned long long limit            ///< Maximum number of elements to delete
    9241 );
    9242 /** Formats and prints an array of detCorrectedExpRow objects
    9243  *
    9244  * When mdcf is set the formated output is in psMetadataConfig
    9245  * format, otherwise it is in a simple tabular format.
    9246  *
    9247  * @return true on success
    9248  */
    9249 
    9250 bool detCorrectedExpPrintObjects(
    9251     FILE            *stream,            ///< a stream
    9252     psArray         *objects,           ///< An array of detCorrectedExpRow objects
    9253     bool            mdcf                ///< format as mdconfig or simple
    9254 );
    9255 /** Formats and prints an detCorrectedExpRow object
    9256  *
    9257  * When mdcf is set the formated output is in psMetadataConfig
    9258  * format, otherwise it is in a simple tabular format.
    9259  *
    9260  * @return true on success
    9261  */
    9262 
    9263 bool detCorrectedExpPrintObject(
    9264     FILE            *stream,            ///< a stream
    9265     detCorrectedExpRow *object,    ///< an detCorrectedExpRow object
    9266     bool            mdcf                ///< format as mdconfig or simple
    9267 );
    9268 /** detCorrectedImfileRow data structure
    9269  *
    9270  * Structure for representing a single row of detCorrectedImfile table data.
    9271  */
    9272 
    9273 typedef struct {
    9274     psS64           det_id;
    9275     psS64           exp_id;
    9276     char            *class_id;
    9277     char            *uri;
    9278     char            *path_base;
    9279     psS16           fault;
    9280 } detCorrectedImfileRow;
    9281 
    9282 /** Creates a new detCorrectedImfileRow object
    9283  *
    9284  *  @return A new detCorrectedImfileRow object or NULL on failure.
    9285  */
    9286 
    9287 detCorrectedImfileRow *detCorrectedImfileRowAlloc(
    9288     psS64           det_id,
    9289     psS64           exp_id,
    9290     const char      *class_id,
    9291     const char      *uri,
    9292     const char      *path_base,
    9293     psS16           fault
    9294 );
    9295 
    9296 /** Creates a new detCorrectedImfile table
    9297  *
    9298  * @return true on success
    9299  */
    9300 
    9301 bool detCorrectedImfileCreateTable(
    9302     psDB            *dbh                ///< Database handle
    9303 );
    9304 
    9305 /** Deletes a detCorrectedImfile table
    9306  *
    9307  * @return true on success
    9308  */
    9309 
    9310 bool detCorrectedImfileDropTable(
    9311     psDB            *dbh                ///< Database handle
    9312 );
    9313 
    9314 /** Insert a single row into a table
    9315  *
    9316  * This function constructs and inserts a single row based on it's parameters.
    9317  *
    9318  * @return true on success
    9319  */
    9320 
    9321 bool detCorrectedImfileInsert(
    9322     psDB            *dbh,               ///< Database handle
    9323     psS64           det_id,
    9324     psS64           exp_id,
    9325     const char      *class_id,
    9326     const char      *uri,
    9327     const char      *path_base,
    9328     psS16           fault
    9329 );
    9330 
    9331 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    9332  *
    9333  * @return A The number of rows removed or a negative value on error
    9334  */
    9335 
    9336 long long detCorrectedImfileDelete(
    9337     psDB            *dbh,               ///< Database handle
    9338     const psMetadata *where,            ///< Row match criteria
    9339     unsigned long long limit            ///< Maximum number of elements to delete
    9340 );
    9341 
    9342 /** Insert a single detCorrectedImfileRow object into a table
    9343  *
    9344  * This function constructs and inserts a single row based on it's parameters.
    9345  *
    9346  * @return true on success
    9347  */
    9348 
    9349 bool detCorrectedImfileInsertObject(
    9350     psDB            *dbh,               ///< Database handle
    9351     detCorrectedImfileRow *object             ///< detCorrectedImfileRow object
    9352 );
    9353 
    9354 /** Insert an array of detCorrectedImfileRow object into a table
    9355  *
    9356  * This function constructs and inserts multiple rows based on it's parameters.
    9357  *
    9358  * @return true on success
    9359  */
    9360 
    9361 bool detCorrectedImfileInsertObjects(
    9362     psDB            *dbh,               ///< Database handle
    9363     psArray         *objects            ///< array of detCorrectedImfileRow objects
    9364 );
    9365 
    9366 /** Insert data from a binary FITS table detCorrectedImfileRow into the database
    9367  *
    9368  * This function expects a psFits object with a FITS table as the first
    9369  * extension.  The table must have at least one row of data in it, that is of
    9370  * the appropriate format (number of columns and their type).  All other
    9371  * extensions are ignored.
    9372  *
    9373  * @return true on success
    9374  */
    9375 
    9376 bool detCorrectedImfileInsertFits(
    9377     psDB            *dbh,               ///< Database handle
    9378     const psFits    *fits               ///< psFits object
    9379 );
    9380 
    9381 /** Selects up to limit from the database and returns them in a binary FITS table
    9382  *
    9383  * This function assumes an empty psFits object and will create a FITS table
    9384  * as the first extension.
    9385  *
    9386  *  See psDBSelectRows() for documentation on the format of where.
    9387  *
    9388  * @return true on success
    9389  */
    9390 
    9391 bool detCorrectedImfileSelectRowsFits(
    9392     psDB            *dbh,               ///< Database handle
    9393     psFits          *fits,              ///< psFits object
    9394     const psMetadata *where,            ///< Row match criteria
    9395     unsigned long long limit            ///< Maximum number of elements to return
    9396 );
    9397 
    9398 /** Convert a detCorrectedImfileRow into an equivalent psMetadata
    9399  *
    9400  * @return A psMetadata pointer or NULL on error
    9401  */
    9402 
    9403 psMetadata *detCorrectedImfileMetadataFromObject(
    9404     const detCorrectedImfileRow *object             ///< fooRow to convert into a psMetadata
    9405 );
    9406 
    9407 /** Convert a psMetadata into an equivalent fooRow
    9408  *
    9409  * @return A detCorrectedImfileRow pointer or NULL on error
    9410  */
    9411 
    9412 detCorrectedImfileRow *detCorrectedImfileObjectFromMetadata(
    9413     psMetadata      *md                 ///< psMetadata to convert into a fooRow
    9414 );
    9415 /** Selects up to limit rows from the database and returns as detCorrectedImfileRow objects in a psArray
    9416  *
    9417  *  See psDBSelectRows() for documentation on the format of where.
    9418  *
    9419  * @return A psArray pointer or NULL on error
    9420  */
    9421 
    9422 psArray *detCorrectedImfileSelectRowObjects(
    9423     psDB            *dbh,               ///< Database handle
    9424     const psMetadata *where,            ///< Row match criteria
    9425     unsigned long long limit            ///< Maximum number of elements to return
    9426 );
    9427 /** Deletes a row from the database coresponding to an detCorrectedImfile
    9428  *
    9429  *  Note that a 'where' search psMetadata is constructed from each object and
    9430  *  used to find rows to delete.
    9431  *
    9432  * @return A The number of rows removed or a negative value on error
    9433  */
    9434 
    9435 bool detCorrectedImfileDeleteObject(
    9436     psDB            *dbh,               ///< Database handle
    9437     const detCorrectedImfileRow *object    ///< Object to delete
    9438 );
    9439 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    9440  *
    9441  *  Note that a 'where' search psMetadata is constructed from each object and
    9442  *  used to find rows to delete.
    9443  *
    9444  * @return A The number of rows removed or a negative value on error
    9445  */
    9446 
    9447 long long detCorrectedImfileDeleteRowObjects(
    9448     psDB            *dbh,               ///< Database handle
    9449     const psArray   *objects,           ///< Array of objects to delete
    9450     unsigned long long limit            ///< Maximum number of elements to delete
    9451 );
    9452 /** Formats and prints an array of detCorrectedImfileRow objects
    9453  *
    9454  * When mdcf is set the formated output is in psMetadataConfig
    9455  * format, otherwise it is in a simple tabular format.
    9456  *
    9457  * @return true on success
    9458  */
    9459 
    9460 bool detCorrectedImfilePrintObjects(
    9461     FILE            *stream,            ///< a stream
    9462     psArray         *objects,           ///< An array of detCorrectedImfileRow objects
    9463     bool            mdcf                ///< format as mdconfig or simple
    9464 );
    9465 /** Formats and prints an detCorrectedImfileRow object
    9466  *
    9467  * When mdcf is set the formated output is in psMetadataConfig
    9468  * format, otherwise it is in a simple tabular format.
    9469  *
    9470  * @return true on success
    9471  */
    9472 
    9473 bool detCorrectedImfilePrintObject(
    9474     FILE            *stream,            ///< a stream
    9475     detCorrectedImfileRow *object,    ///< an detCorrectedImfileRow object
    9476     bool            mdcf                ///< format as mdconfig or simple
    9477 );
    9478 /** magicRunRow data structure
    9479  *
    9480  * Structure for representing a single row of magicRun table data.
    9481  */
    9482 
    9483 typedef struct {
    9484     psS64           magic_id;
    9485     char            *state;
    9486     char            *workdir;
    9487     char            *workdir_state;
    9488     char            *label;
    9489     char            *dvodb;
    9490     psTime*         registered;
    9491 } magicRunRow;
    9492 
    9493 /** Creates a new magicRunRow object
    9494  *
    9495  *  @return A new magicRunRow object or NULL on failure.
    9496  */
    9497 
    9498 magicRunRow *magicRunRowAlloc(
    9499     psS64           magic_id,
    9500     const char      *state,
    9501     const char      *workdir,
    9502     const char      *workdir_state,
    9503     const char      *label,
    9504     const char      *dvodb,
    9505     psTime*         registered
    9506 );
    9507 
    9508 /** Creates a new magicRun table
    9509  *
    9510  * @return true on success
    9511  */
    9512 
    9513 bool magicRunCreateTable(
    9514     psDB            *dbh                ///< Database handle
    9515 );
    9516 
    9517 /** Deletes a magicRun table
    9518  *
    9519  * @return true on success
    9520  */
    9521 
    9522 bool magicRunDropTable(
    9523     psDB            *dbh                ///< Database handle
    9524 );
    9525 
    9526 /** Insert a single row into a table
    9527  *
    9528  * This function constructs and inserts a single row based on it's parameters.
    9529  *
    9530  * @return true on success
    9531  */
    9532 
    9533 bool magicRunInsert(
    9534     psDB            *dbh,               ///< Database handle
    9535     psS64           magic_id,
    9536     const char      *state,
    9537     const char      *workdir,
    9538     const char      *workdir_state,
    9539     const char      *label,
    9540     const char      *dvodb,
    9541     psTime*         registered
    9542 );
    9543 
    9544 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    9545  *
    9546  * @return A The number of rows removed or a negative value on error
    9547  */
    9548 
    9549 long long magicRunDelete(
    9550     psDB            *dbh,               ///< Database handle
    9551     const psMetadata *where,            ///< Row match criteria
    9552     unsigned long long limit            ///< Maximum number of elements to delete
    9553 );
    9554 
    9555 /** Insert a single magicRunRow object into a table
    9556  *
    9557  * This function constructs and inserts a single row based on it's parameters.
    9558  *
    9559  * @return true on success
    9560  */
    9561 
    9562 bool magicRunInsertObject(
    9563     psDB            *dbh,               ///< Database handle
    9564     magicRunRow     *object             ///< magicRunRow object
    9565 );
    9566 
    9567 /** Insert an array of magicRunRow object into a table
    9568  *
    9569  * This function constructs and inserts multiple rows based on it's parameters.
    9570  *
    9571  * @return true on success
    9572  */
    9573 
    9574 bool magicRunInsertObjects(
    9575     psDB            *dbh,               ///< Database handle
    9576     psArray         *objects            ///< array of magicRunRow objects
    9577 );
    9578 
    9579 /** Insert data from a binary FITS table magicRunRow into the database
    9580  *
    9581  * This function expects a psFits object with a FITS table as the first
    9582  * extension.  The table must have at least one row of data in it, that is of
    9583  * the appropriate format (number of columns and their type).  All other
    9584  * extensions are ignored.
    9585  *
    9586  * @return true on success
    9587  */
    9588 
    9589 bool magicRunInsertFits(
    9590     psDB            *dbh,               ///< Database handle
    9591     const psFits    *fits               ///< psFits object
    9592 );
    9593 
    9594 /** Selects up to limit from the database and returns them in a binary FITS table
    9595  *
    9596  * This function assumes an empty psFits object and will create a FITS table
    9597  * as the first extension.
    9598  *
    9599  *  See psDBSelectRows() for documentation on the format of where.
    9600  *
    9601  * @return true on success
    9602  */
    9603 
    9604 bool magicRunSelectRowsFits(
    9605     psDB            *dbh,               ///< Database handle
    9606     psFits          *fits,              ///< psFits object
    9607     const psMetadata *where,            ///< Row match criteria
    9608     unsigned long long limit            ///< Maximum number of elements to return
    9609 );
    9610 
    9611 /** Convert a magicRunRow into an equivalent psMetadata
    9612  *
    9613  * @return A psMetadata pointer or NULL on error
    9614  */
    9615 
    9616 psMetadata *magicRunMetadataFromObject(
    9617     const magicRunRow *object             ///< fooRow to convert into a psMetadata
    9618 );
    9619 
    9620 /** Convert a psMetadata into an equivalent fooRow
    9621  *
    9622  * @return A magicRunRow pointer or NULL on error
    9623  */
    9624 
    9625 magicRunRow *magicRunObjectFromMetadata(
    9626     psMetadata      *md                 ///< psMetadata to convert into a fooRow
    9627 );
    9628 /** Selects up to limit rows from the database and returns as magicRunRow objects in a psArray
    9629  *
    9630  *  See psDBSelectRows() for documentation on the format of where.
    9631  *
    9632  * @return A psArray pointer or NULL on error
    9633  */
    9634 
    9635 psArray *magicRunSelectRowObjects(
    9636     psDB            *dbh,               ///< Database handle
    9637     const psMetadata *where,            ///< Row match criteria
    9638     unsigned long long limit            ///< Maximum number of elements to return
    9639 );
    9640 /** Deletes a row from the database coresponding to an magicRun
    9641  *
    9642  *  Note that a 'where' search psMetadata is constructed from each object and
    9643  *  used to find rows to delete.
    9644  *
    9645  * @return A The number of rows removed or a negative value on error
    9646  */
    9647 
    9648 bool magicRunDeleteObject(
    9649     psDB            *dbh,               ///< Database handle
    9650     const magicRunRow *object    ///< Object to delete
    9651 );
    9652 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    9653  *
    9654  *  Note that a 'where' search psMetadata is constructed from each object and
    9655  *  used to find rows to delete.
    9656  *
    9657  * @return A The number of rows removed or a negative value on error
    9658  */
    9659 
    9660 long long magicRunDeleteRowObjects(
    9661     psDB            *dbh,               ///< Database handle
    9662     const psArray   *objects,           ///< Array of objects to delete
    9663     unsigned long long limit            ///< Maximum number of elements to delete
    9664 );
    9665 /** Formats and prints an array of magicRunRow objects
    9666  *
    9667  * When mdcf is set the formated output is in psMetadataConfig
    9668  * format, otherwise it is in a simple tabular format.
    9669  *
    9670  * @return true on success
    9671  */
    9672 
    9673 bool magicRunPrintObjects(
    9674     FILE            *stream,            ///< a stream
    9675     psArray         *objects,           ///< An array of magicRunRow objects
    9676     bool            mdcf                ///< format as mdconfig or simple
    9677 );
    9678 /** Formats and prints an magicRunRow object
    9679  *
    9680  * When mdcf is set the formated output is in psMetadataConfig
    9681  * format, otherwise it is in a simple tabular format.
    9682  *
    9683  * @return true on success
    9684  */
    9685 
    9686 bool magicRunPrintObject(
    9687     FILE            *stream,            ///< a stream
    9688     magicRunRow *object,    ///< an magicRunRow object
    9689     bool            mdcf                ///< format as mdconfig or simple
    9690 );
    9691 /** magicInputSkyfileRow data structure
    9692  *
    9693  * Structure for representing a single row of magicInputSkyfile table data.
    9694  */
    9695 
    9696 typedef struct {
    9697     psS64           magic_id;
    9698     psS64           diff_id;
    9699     char            *node;
    9700 } magicInputSkyfileRow;
    9701 
    9702 /** Creates a new magicInputSkyfileRow object
    9703  *
    9704  *  @return A new magicInputSkyfileRow object or NULL on failure.
    9705  */
    9706 
    9707 magicInputSkyfileRow *magicInputSkyfileRowAlloc(
    9708     psS64           magic_id,
    9709     psS64           diff_id,
    9710     const char      *node
    9711 );
    9712 
    9713 /** Creates a new magicInputSkyfile table
    9714  *
    9715  * @return true on success
    9716  */
    9717 
    9718 bool magicInputSkyfileCreateTable(
    9719     psDB            *dbh                ///< Database handle
    9720 );
    9721 
    9722 /** Deletes a magicInputSkyfile table
    9723  *
    9724  * @return true on success
    9725  */
    9726 
    9727 bool magicInputSkyfileDropTable(
    9728     psDB            *dbh                ///< Database handle
    9729 );
    9730 
    9731 /** Insert a single row into a table
    9732  *
    9733  * This function constructs and inserts a single row based on it's parameters.
    9734  *
    9735  * @return true on success
    9736  */
    9737 
    9738 bool magicInputSkyfileInsert(
    9739     psDB            *dbh,               ///< Database handle
    9740     psS64           magic_id,
    9741     psS64           diff_id,
    9742     const char      *node
    9743 );
    9744 
    9745 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    9746  *
    9747  * @return A The number of rows removed or a negative value on error
    9748  */
    9749 
    9750 long long magicInputSkyfileDelete(
    9751     psDB            *dbh,               ///< Database handle
    9752     const psMetadata *where,            ///< Row match criteria
    9753     unsigned long long limit            ///< Maximum number of elements to delete
    9754 );
    9755 
    9756 /** Insert a single magicInputSkyfileRow object into a table
    9757  *
    9758  * This function constructs and inserts a single row based on it's parameters.
    9759  *
    9760  * @return true on success
    9761  */
    9762 
    9763 bool magicInputSkyfileInsertObject(
    9764     psDB            *dbh,               ///< Database handle
    9765     magicInputSkyfileRow *object             ///< magicInputSkyfileRow object
    9766 );
    9767 
    9768 /** Insert an array of magicInputSkyfileRow object into a table
    9769  *
    9770  * This function constructs and inserts multiple rows based on it's parameters.
    9771  *
    9772  * @return true on success
    9773  */
    9774 
    9775 bool magicInputSkyfileInsertObjects(
    9776     psDB            *dbh,               ///< Database handle
    9777     psArray         *objects            ///< array of magicInputSkyfileRow objects
    9778 );
    9779 
    9780 /** Insert data from a binary FITS table magicInputSkyfileRow into the database
    9781  *
    9782  * This function expects a psFits object with a FITS table as the first
    9783  * extension.  The table must have at least one row of data in it, that is of
    9784  * the appropriate format (number of columns and their type).  All other
    9785  * extensions are ignored.
    9786  *
    9787  * @return true on success
    9788  */
    9789 
    9790 bool magicInputSkyfileInsertFits(
    9791     psDB            *dbh,               ///< Database handle
    9792     const psFits    *fits               ///< psFits object
    9793 );
    9794 
    9795 /** Selects up to limit from the database and returns them in a binary FITS table
    9796  *
    9797  * This function assumes an empty psFits object and will create a FITS table
    9798  * as the first extension.
    9799  *
    9800  *  See psDBSelectRows() for documentation on the format of where.
    9801  *
    9802  * @return true on success
    9803  */
    9804 
    9805 bool magicInputSkyfileSelectRowsFits(
    9806     psDB            *dbh,               ///< Database handle
    9807     psFits          *fits,              ///< psFits object
    9808     const psMetadata *where,            ///< Row match criteria
    9809     unsigned long long limit            ///< Maximum number of elements to return
    9810 );
    9811 
    9812 /** Convert a magicInputSkyfileRow into an equivalent psMetadata
    9813  *
    9814  * @return A psMetadata pointer or NULL on error
    9815  */
    9816 
    9817 psMetadata *magicInputSkyfileMetadataFromObject(
    9818     const magicInputSkyfileRow *object             ///< fooRow to convert into a psMetadata
    9819 );
    9820 
    9821 /** Convert a psMetadata into an equivalent fooRow
    9822  *
    9823  * @return A magicInputSkyfileRow pointer or NULL on error
    9824  */
    9825 
    9826 magicInputSkyfileRow *magicInputSkyfileObjectFromMetadata(
    9827     psMetadata      *md                 ///< psMetadata to convert into a fooRow
    9828 );
    9829 /** Selects up to limit rows from the database and returns as magicInputSkyfileRow objects in a psArray
    9830  *
    9831  *  See psDBSelectRows() for documentation on the format of where.
    9832  *
    9833  * @return A psArray pointer or NULL on error
    9834  */
    9835 
    9836 psArray *magicInputSkyfileSelectRowObjects(
    9837     psDB            *dbh,               ///< Database handle
    9838     const psMetadata *where,            ///< Row match criteria
    9839     unsigned long long limit            ///< Maximum number of elements to return
    9840 );
    9841 /** Deletes a row from the database coresponding to an magicInputSkyfile
    9842  *
    9843  *  Note that a 'where' search psMetadata is constructed from each object and
    9844  *  used to find rows to delete.
    9845  *
    9846  * @return A The number of rows removed or a negative value on error
    9847  */
    9848 
    9849 bool magicInputSkyfileDeleteObject(
    9850     psDB            *dbh,               ///< Database handle
    9851     const magicInputSkyfileRow *object    ///< Object to delete
    9852 );
    9853 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    9854  *
    9855  *  Note that a 'where' search psMetadata is constructed from each object and
    9856  *  used to find rows to delete.
    9857  *
    9858  * @return A The number of rows removed or a negative value on error
    9859  */
    9860 
    9861 long long magicInputSkyfileDeleteRowObjects(
    9862     psDB            *dbh,               ///< Database handle
    9863     const psArray   *objects,           ///< Array of objects to delete
    9864     unsigned long long limit            ///< Maximum number of elements to delete
    9865 );
    9866 /** Formats and prints an array of magicInputSkyfileRow objects
    9867  *
    9868  * When mdcf is set the formated output is in psMetadataConfig
    9869  * format, otherwise it is in a simple tabular format.
    9870  *
    9871  * @return true on success
    9872  */
    9873 
    9874 bool magicInputSkyfilePrintObjects(
    9875     FILE            *stream,            ///< a stream
    9876     psArray         *objects,           ///< An array of magicInputSkyfileRow objects
    9877     bool            mdcf                ///< format as mdconfig or simple
    9878 );
    9879 /** Formats and prints an magicInputSkyfileRow object
    9880  *
    9881  * When mdcf is set the formated output is in psMetadataConfig
    9882  * format, otherwise it is in a simple tabular format.
    9883  *
    9884  * @return true on success
    9885  */
    9886 
    9887 bool magicInputSkyfilePrintObject(
    9888     FILE            *stream,            ///< a stream
    9889     magicInputSkyfileRow *object,    ///< an magicInputSkyfileRow object
    9890     bool            mdcf                ///< format as mdconfig or simple
    9891 );
    9892 /** magicTreeRow data structure
    9893  *
    9894  * Structure for representing a single row of magicTree table data.
    9895  */
    9896 
    9897 typedef struct {
    9898     psS64           magic_id;
    9899     char            *node;
    9900     char            *dep;
    9901 } magicTreeRow;
    9902 
    9903 /** Creates a new magicTreeRow object
    9904  *
    9905  *  @return A new magicTreeRow object or NULL on failure.
    9906  */
    9907 
    9908 magicTreeRow *magicTreeRowAlloc(
    9909     psS64           magic_id,
    9910     const char      *node,
    9911     const char      *dep
    9912 );
    9913 
    9914 /** Creates a new magicTree table
    9915  *
    9916  * @return true on success
    9917  */
    9918 
    9919 bool magicTreeCreateTable(
    9920     psDB            *dbh                ///< Database handle
    9921 );
    9922 
    9923 /** Deletes a magicTree table
    9924  *
    9925  * @return true on success
    9926  */
    9927 
    9928 bool magicTreeDropTable(
    9929     psDB            *dbh                ///< Database handle
    9930 );
    9931 
    9932 /** Insert a single row into a table
    9933  *
    9934  * This function constructs and inserts a single row based on it's parameters.
    9935  *
    9936  * @return true on success
    9937  */
    9938 
    9939 bool magicTreeInsert(
    9940     psDB            *dbh,               ///< Database handle
    9941     psS64           magic_id,
    9942     const char      *node,
    9943     const char      *dep
    9944 );
    9945 
    9946 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    9947  *
    9948  * @return A The number of rows removed or a negative value on error
    9949  */
    9950 
    9951 long long magicTreeDelete(
    9952     psDB            *dbh,               ///< Database handle
    9953     const psMetadata *where,            ///< Row match criteria
    9954     unsigned long long limit            ///< Maximum number of elements to delete
    9955 );
    9956 
    9957 /** Insert a single magicTreeRow object into a table
    9958  *
    9959  * This function constructs and inserts a single row based on it's parameters.
    9960  *
    9961  * @return true on success
    9962  */
    9963 
    9964 bool magicTreeInsertObject(
    9965     psDB            *dbh,               ///< Database handle
    9966     magicTreeRow    *object             ///< magicTreeRow object
    9967 );
    9968 
    9969 /** Insert an array of magicTreeRow object into a table
    9970  *
    9971  * This function constructs and inserts multiple rows based on it's parameters.
    9972  *
    9973  * @return true on success
    9974  */
    9975 
    9976 bool magicTreeInsertObjects(
    9977     psDB            *dbh,               ///< Database handle
    9978     psArray         *objects            ///< array of magicTreeRow objects
    9979 );
    9980 
    9981 /** Insert data from a binary FITS table magicTreeRow into the database
    9982  *
    9983  * This function expects a psFits object with a FITS table as the first
    9984  * extension.  The table must have at least one row of data in it, that is of
    9985  * the appropriate format (number of columns and their type).  All other
    9986  * extensions are ignored.
    9987  *
    9988  * @return true on success
    9989  */
    9990 
    9991 bool magicTreeInsertFits(
    9992     psDB            *dbh,               ///< Database handle
    9993     const psFits    *fits               ///< psFits object
    9994 );
    9995 
    9996 /** Selects up to limit from the database and returns them in a binary FITS table
    9997  *
    9998  * This function assumes an empty psFits object and will create a FITS table
    9999  * as the first extension.
    10000  *
    10001  *  See psDBSelectRows() for documentation on the format of where.
    10002  *
    10003  * @return true on success
    10004  */
    10005 
    10006 bool magicTreeSelectRowsFits(
    10007     psDB            *dbh,               ///< Database handle
    10008     psFits          *fits,              ///< psFits object
    10009     const psMetadata *where,            ///< Row match criteria
    10010     unsigned long long limit            ///< Maximum number of elements to return
    10011 );
    10012 
    10013 /** Convert a magicTreeRow into an equivalent psMetadata
    10014  *
    10015  * @return A psMetadata pointer or NULL on error
    10016  */
    10017 
    10018 psMetadata *magicTreeMetadataFromObject(
    10019     const magicTreeRow *object             ///< fooRow to convert into a psMetadata
    10020 );
    10021 
    10022 /** Convert a psMetadata into an equivalent fooRow
    10023  *
    10024  * @return A magicTreeRow pointer or NULL on error
    10025  */
    10026 
    10027 magicTreeRow *magicTreeObjectFromMetadata(
    10028     psMetadata      *md                 ///< psMetadata to convert into a fooRow
    10029 );
    10030 /** Selects up to limit rows from the database and returns as magicTreeRow objects in a psArray
    10031  *
    10032  *  See psDBSelectRows() for documentation on the format of where.
    10033  *
    10034  * @return A psArray pointer or NULL on error
    10035  */
    10036 
    10037 psArray *magicTreeSelectRowObjects(
    10038     psDB            *dbh,               ///< Database handle
    10039     const psMetadata *where,            ///< Row match criteria
    10040     unsigned long long limit            ///< Maximum number of elements to return
    10041 );
    10042 /** Deletes a row from the database coresponding to an magicTree
    10043  *
    10044  *  Note that a 'where' search psMetadata is constructed from each object and
    10045  *  used to find rows to delete.
    10046  *
    10047  * @return A The number of rows removed or a negative value on error
    10048  */
    10049 
    10050 bool magicTreeDeleteObject(
    10051     psDB            *dbh,               ///< Database handle
    10052     const magicTreeRow *object    ///< Object to delete
    10053 );
    10054 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    10055  *
    10056  *  Note that a 'where' search psMetadata is constructed from each object and
    10057  *  used to find rows to delete.
    10058  *
    10059  * @return A The number of rows removed or a negative value on error
    10060  */
    10061 
    10062 long long magicTreeDeleteRowObjects(
    10063     psDB            *dbh,               ///< Database handle
    10064     const psArray   *objects,           ///< Array of objects to delete
    10065     unsigned long long limit            ///< Maximum number of elements to delete
    10066 );
    10067 /** Formats and prints an array of magicTreeRow objects
    10068  *
    10069  * When mdcf is set the formated output is in psMetadataConfig
    10070  * format, otherwise it is in a simple tabular format.
    10071  *
    10072  * @return true on success
    10073  */
    10074 
    10075 bool magicTreePrintObjects(
    10076     FILE            *stream,            ///< a stream
    10077     psArray         *objects,           ///< An array of magicTreeRow objects
    10078     bool            mdcf                ///< format as mdconfig or simple
    10079 );
    10080 /** Formats and prints an magicTreeRow object
    10081  *
    10082  * When mdcf is set the formated output is in psMetadataConfig
    10083  * format, otherwise it is in a simple tabular format.
    10084  *
    10085  * @return true on success
    10086  */
    10087 
    10088 bool magicTreePrintObject(
    10089     FILE            *stream,            ///< a stream
    10090     magicTreeRow *object,    ///< an magicTreeRow object
    10091     bool            mdcf                ///< format as mdconfig or simple
    10092 );
    10093 /** magicNodeResultRow data structure
    10094  *
    10095  * Structure for representing a single row of magicNodeResult table data.
    10096  */
    10097 
    10098 typedef struct {
    10099     psS64           magic_id;
    10100     char            *node;
    10101     char            *uri;
    10102 } magicNodeResultRow;
    10103 
    10104 /** Creates a new magicNodeResultRow object
    10105  *
    10106  *  @return A new magicNodeResultRow object or NULL on failure.
    10107  */
    10108 
    10109 magicNodeResultRow *magicNodeResultRowAlloc(
    10110     psS64           magic_id,
    10111     const char      *node,
    10112     const char      *uri
    10113 );
    10114 
    10115 /** Creates a new magicNodeResult table
    10116  *
    10117  * @return true on success
    10118  */
    10119 
    10120 bool magicNodeResultCreateTable(
    10121     psDB            *dbh                ///< Database handle
    10122 );
    10123 
    10124 /** Deletes a magicNodeResult table
    10125  *
    10126  * @return true on success
    10127  */
    10128 
    10129 bool magicNodeResultDropTable(
    10130     psDB            *dbh                ///< Database handle
    10131 );
    10132 
    10133 /** Insert a single row into a table
    10134  *
    10135  * This function constructs and inserts a single row based on it's parameters.
    10136  *
    10137  * @return true on success
    10138  */
    10139 
    10140 bool magicNodeResultInsert(
    10141     psDB            *dbh,               ///< Database handle
    10142     psS64           magic_id,
    10143     const char      *node,
    10144     const char      *uri
    10145 );
    10146 
    10147 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    10148  *
    10149  * @return A The number of rows removed or a negative value on error
    10150  */
    10151 
    10152 long long magicNodeResultDelete(
    10153     psDB            *dbh,               ///< Database handle
    10154     const psMetadata *where,            ///< Row match criteria
    10155     unsigned long long limit            ///< Maximum number of elements to delete
    10156 );
    10157 
    10158 /** Insert a single magicNodeResultRow object into a table
    10159  *
    10160  * This function constructs and inserts a single row based on it's parameters.
    10161  *
    10162  * @return true on success
    10163  */
    10164 
    10165 bool magicNodeResultInsertObject(
    10166     psDB            *dbh,               ///< Database handle
    10167     magicNodeResultRow *object             ///< magicNodeResultRow object
    10168 );
    10169 
    10170 /** Insert an array of magicNodeResultRow object into a table
    10171  *
    10172  * This function constructs and inserts multiple rows based on it's parameters.
    10173  *
    10174  * @return true on success
    10175  */
    10176 
    10177 bool magicNodeResultInsertObjects(
    10178     psDB            *dbh,               ///< Database handle
    10179     psArray         *objects            ///< array of magicNodeResultRow objects
    10180 );
    10181 
    10182 /** Insert data from a binary FITS table magicNodeResultRow into the database
    10183  *
    10184  * This function expects a psFits object with a FITS table as the first
    10185  * extension.  The table must have at least one row of data in it, that is of
    10186  * the appropriate format (number of columns and their type).  All other
    10187  * extensions are ignored.
    10188  *
    10189  * @return true on success
    10190  */
    10191 
    10192 bool magicNodeResultInsertFits(
    10193     psDB            *dbh,               ///< Database handle
    10194     const psFits    *fits               ///< psFits object
    10195 );
    10196 
    10197 /** Selects up to limit from the database and returns them in a binary FITS table
    10198  *
    10199  * This function assumes an empty psFits object and will create a FITS table
    10200  * as the first extension.
    10201  *
    10202  *  See psDBSelectRows() for documentation on the format of where.
    10203  *
    10204  * @return true on success
    10205  */
    10206 
    10207 bool magicNodeResultSelectRowsFits(
    10208     psDB            *dbh,               ///< Database handle
    10209     psFits          *fits,              ///< psFits object
    10210     const psMetadata *where,            ///< Row match criteria
    10211     unsigned long long limit            ///< Maximum number of elements to return
    10212 );
    10213 
    10214 /** Convert a magicNodeResultRow into an equivalent psMetadata
    10215  *
    10216  * @return A psMetadata pointer or NULL on error
    10217  */
    10218 
    10219 psMetadata *magicNodeResultMetadataFromObject(
    10220     const magicNodeResultRow *object             ///< fooRow to convert into a psMetadata
    10221 );
    10222 
    10223 /** Convert a psMetadata into an equivalent fooRow
    10224  *
    10225  * @return A magicNodeResultRow pointer or NULL on error
    10226  */
    10227 
    10228 magicNodeResultRow *magicNodeResultObjectFromMetadata(
    10229     psMetadata      *md                 ///< psMetadata to convert into a fooRow
    10230 );
    10231 /** Selects up to limit rows from the database and returns as magicNodeResultRow objects in a psArray
    10232  *
    10233  *  See psDBSelectRows() for documentation on the format of where.
    10234  *
    10235  * @return A psArray pointer or NULL on error
    10236  */
    10237 
    10238 psArray *magicNodeResultSelectRowObjects(
    10239     psDB            *dbh,               ///< Database handle
    10240     const psMetadata *where,            ///< Row match criteria
    10241     unsigned long long limit            ///< Maximum number of elements to return
    10242 );
    10243 /** Deletes a row from the database coresponding to an magicNodeResult
    10244  *
    10245  *  Note that a 'where' search psMetadata is constructed from each object and
    10246  *  used to find rows to delete.
    10247  *
    10248  * @return A The number of rows removed or a negative value on error
    10249  */
    10250 
    10251 bool magicNodeResultDeleteObject(
    10252     psDB            *dbh,               ///< Database handle
    10253     const magicNodeResultRow *object    ///< Object to delete
    10254 );
    10255 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    10256  *
    10257  *  Note that a 'where' search psMetadata is constructed from each object and
    10258  *  used to find rows to delete.
    10259  *
    10260  * @return A The number of rows removed or a negative value on error
    10261  */
    10262 
    10263 long long magicNodeResultDeleteRowObjects(
    10264     psDB            *dbh,               ///< Database handle
    10265     const psArray   *objects,           ///< Array of objects to delete
    10266     unsigned long long limit            ///< Maximum number of elements to delete
    10267 );
    10268 /** Formats and prints an array of magicNodeResultRow objects
    10269  *
    10270  * When mdcf is set the formated output is in psMetadataConfig
    10271  * format, otherwise it is in a simple tabular format.
    10272  *
    10273  * @return true on success
    10274  */
    10275 
    10276 bool magicNodeResultPrintObjects(
    10277     FILE            *stream,            ///< a stream
    10278     psArray         *objects,           ///< An array of magicNodeResultRow objects
    10279     bool            mdcf                ///< format as mdconfig or simple
    10280 );
    10281 /** Formats and prints an magicNodeResultRow object
    10282  *
    10283  * When mdcf is set the formated output is in psMetadataConfig
    10284  * format, otherwise it is in a simple tabular format.
    10285  *
    10286  * @return true on success
    10287  */
    10288 
    10289 bool magicNodeResultPrintObject(
    10290     FILE            *stream,            ///< a stream
    10291     magicNodeResultRow *object,    ///< an magicNodeResultRow object
    10292     bool            mdcf                ///< format as mdconfig or simple
    10293 );
    10294 /** magicMaskRow data structure
    10295  *
    10296  * Structure for representing a single row of magicMask table data.
    10297  */
    10298 
    10299 typedef struct {
    10300     psS64           magic_id;
    10301     char            *uri;
    10302 } magicMaskRow;
    10303 
    10304 /** Creates a new magicMaskRow object
    10305  *
    10306  *  @return A new magicMaskRow object or NULL on failure.
    10307  */
    10308 
    10309 magicMaskRow *magicMaskRowAlloc(
    10310     psS64           magic_id,
    10311     const char      *uri
    10312 );
    10313 
    10314 /** Creates a new magicMask table
    10315  *
    10316  * @return true on success
    10317  */
    10318 
    10319 bool magicMaskCreateTable(
    10320     psDB            *dbh                ///< Database handle
    10321 );
    10322 
    10323 /** Deletes a magicMask table
    10324  *
    10325  * @return true on success
    10326  */
    10327 
    10328 bool magicMaskDropTable(
    10329     psDB            *dbh                ///< Database handle
    10330 );
    10331 
    10332 /** Insert a single row into a table
    10333  *
    10334  * This function constructs and inserts a single row based on it's parameters.
    10335  *
    10336  * @return true on success
    10337  */
    10338 
    10339 bool magicMaskInsert(
    10340     psDB            *dbh,               ///< Database handle
    10341     psS64           magic_id,
    10342     const char      *uri
    10343 );
    10344 
    10345 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    10346  *
    10347  * @return A The number of rows removed or a negative value on error
    10348  */
    10349 
    10350 long long magicMaskDelete(
    10351     psDB            *dbh,               ///< Database handle
    10352     const psMetadata *where,            ///< Row match criteria
    10353     unsigned long long limit            ///< Maximum number of elements to delete
    10354 );
    10355 
    10356 /** Insert a single magicMaskRow object into a table
    10357  *
    10358  * This function constructs and inserts a single row based on it's parameters.
    10359  *
    10360  * @return true on success
    10361  */
    10362 
    10363 bool magicMaskInsertObject(
    10364     psDB            *dbh,               ///< Database handle
    10365     magicMaskRow    *object             ///< magicMaskRow object
    10366 );
    10367 
    10368 /** Insert an array of magicMaskRow object into a table
    10369  *
    10370  * This function constructs and inserts multiple rows based on it's parameters.
    10371  *
    10372  * @return true on success
    10373  */
    10374 
    10375 bool magicMaskInsertObjects(
    10376     psDB            *dbh,               ///< Database handle
    10377     psArray         *objects            ///< array of magicMaskRow objects
    10378 );
    10379 
    10380 /** Insert data from a binary FITS table magicMaskRow into the database
    10381  *
    10382  * This function expects a psFits object with a FITS table as the first
    10383  * extension.  The table must have at least one row of data in it, that is of
    10384  * the appropriate format (number of columns and their type).  All other
    10385  * extensions are ignored.
    10386  *
    10387  * @return true on success
    10388  */
    10389 
    10390 bool magicMaskInsertFits(
    10391     psDB            *dbh,               ///< Database handle
    10392     const psFits    *fits               ///< psFits object
    10393 );
    10394 
    10395 /** Selects up to limit from the database and returns them in a binary FITS table
    10396  *
    10397  * This function assumes an empty psFits object and will create a FITS table
    10398  * as the first extension.
    10399  *
    10400  *  See psDBSelectRows() for documentation on the format of where.
    10401  *
    10402  * @return true on success
    10403  */
    10404 
    10405 bool magicMaskSelectRowsFits(
    10406     psDB            *dbh,               ///< Database handle
    10407     psFits          *fits,              ///< psFits object
    10408     const psMetadata *where,            ///< Row match criteria
    10409     unsigned long long limit            ///< Maximum number of elements to return
    10410 );
    10411 
    10412 /** Convert a magicMaskRow into an equivalent psMetadata
    10413  *
    10414  * @return A psMetadata pointer or NULL on error
    10415  */
    10416 
    10417 psMetadata *magicMaskMetadataFromObject(
    10418     const magicMaskRow *object             ///< fooRow to convert into a psMetadata
    10419 );
    10420 
    10421 /** Convert a psMetadata into an equivalent fooRow
    10422  *
    10423  * @return A magicMaskRow pointer or NULL on error
    10424  */
    10425 
    10426 magicMaskRow *magicMaskObjectFromMetadata(
    10427     psMetadata      *md                 ///< psMetadata to convert into a fooRow
    10428 );
    10429 /** Selects up to limit rows from the database and returns as magicMaskRow objects in a psArray
    10430  *
    10431  *  See psDBSelectRows() for documentation on the format of where.
    10432  *
    10433  * @return A psArray pointer or NULL on error
    10434  */
    10435 
    10436 psArray *magicMaskSelectRowObjects(
    10437     psDB            *dbh,               ///< Database handle
    10438     const psMetadata *where,            ///< Row match criteria
    10439     unsigned long long limit            ///< Maximum number of elements to return
    10440 );
    10441 /** Deletes a row from the database coresponding to an magicMask
    10442  *
    10443  *  Note that a 'where' search psMetadata is constructed from each object and
    10444  *  used to find rows to delete.
    10445  *
    10446  * @return A The number of rows removed or a negative value on error
    10447  */
    10448 
    10449 bool magicMaskDeleteObject(
    10450     psDB            *dbh,               ///< Database handle
    10451     const magicMaskRow *object    ///< Object to delete
    10452 );
    10453 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    10454  *
    10455  *  Note that a 'where' search psMetadata is constructed from each object and
    10456  *  used to find rows to delete.
    10457  *
    10458  * @return A The number of rows removed or a negative value on error
    10459  */
    10460 
    10461 long long magicMaskDeleteRowObjects(
    10462     psDB            *dbh,               ///< Database handle
    10463     const psArray   *objects,           ///< Array of objects to delete
    10464     unsigned long long limit            ///< Maximum number of elements to delete
    10465 );
    10466 /** Formats and prints an array of magicMaskRow objects
    10467  *
    10468  * When mdcf is set the formated output is in psMetadataConfig
    10469  * format, otherwise it is in a simple tabular format.
    10470  *
    10471  * @return true on success
    10472  */
    10473 
    10474 bool magicMaskPrintObjects(
    10475     FILE            *stream,            ///< a stream
    10476     psArray         *objects,           ///< An array of magicMaskRow objects
    10477     bool            mdcf                ///< format as mdconfig or simple
    10478 );
    10479 /** Formats and prints an magicMaskRow object
    10480  *
    10481  * When mdcf is set the formated output is in psMetadataConfig
    10482  * format, otherwise it is in a simple tabular format.
    10483  *
    10484  * @return true on success
    10485  */
    10486 
    10487 bool magicMaskPrintObject(
    10488     FILE            *stream,            ///< a stream
    10489     magicMaskRow *object,    ///< an magicMaskRow object
    10490     bool            mdcf                ///< format as mdconfig or simple
    10491 );
    10492 /** magicSkyfileMaskRow data structure
    10493  *
    10494  * Structure for representing a single row of magicSkyfileMask table data.
    10495  */
    10496 
    10497 typedef struct {
    10498     psS64           magic_id;
    10499     psS64           diff_id;
    10500     char            *uri;
    10501 } magicSkyfileMaskRow;
    10502 
    10503 /** Creates a new magicSkyfileMaskRow object
    10504  *
    10505  *  @return A new magicSkyfileMaskRow object or NULL on failure.
    10506  */
    10507 
    10508 magicSkyfileMaskRow *magicSkyfileMaskRowAlloc(
    10509     psS64           magic_id,
    10510     psS64           diff_id,
    10511     const char      *uri
    10512 );
    10513 
    10514 /** Creates a new magicSkyfileMask table
    10515  *
    10516  * @return true on success
    10517  */
    10518 
    10519 bool magicSkyfileMaskCreateTable(
    10520     psDB            *dbh                ///< Database handle
    10521 );
    10522 
    10523 /** Deletes a magicSkyfileMask table
    10524  *
    10525  * @return true on success
    10526  */
    10527 
    10528 bool magicSkyfileMaskDropTable(
    10529     psDB            *dbh                ///< Database handle
    10530 );
    10531 
    10532 /** Insert a single row into a table
    10533  *
    10534  * This function constructs and inserts a single row based on it's parameters.
    10535  *
    10536  * @return true on success
    10537  */
    10538 
    10539 bool magicSkyfileMaskInsert(
    10540     psDB            *dbh,               ///< Database handle
    10541     psS64           magic_id,
    10542     psS64           diff_id,
    10543     const char      *uri
    10544 );
    10545 
    10546 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    10547  *
    10548  * @return A The number of rows removed or a negative value on error
    10549  */
    10550 
    10551 long long magicSkyfileMaskDelete(
    10552     psDB            *dbh,               ///< Database handle
    10553     const psMetadata *where,            ///< Row match criteria
    10554     unsigned long long limit            ///< Maximum number of elements to delete
    10555 );
    10556 
    10557 /** Insert a single magicSkyfileMaskRow object into a table
    10558  *
    10559  * This function constructs and inserts a single row based on it's parameters.
    10560  *
    10561  * @return true on success
    10562  */
    10563 
    10564 bool magicSkyfileMaskInsertObject(
    10565     psDB            *dbh,               ///< Database handle
    10566     magicSkyfileMaskRow *object             ///< magicSkyfileMaskRow object
    10567 );
    10568 
    10569 /** Insert an array of magicSkyfileMaskRow object into a table
    10570  *
    10571  * This function constructs and inserts multiple rows based on it's parameters.
    10572  *
    10573  * @return true on success
    10574  */
    10575 
    10576 bool magicSkyfileMaskInsertObjects(
    10577     psDB            *dbh,               ///< Database handle
    10578     psArray         *objects            ///< array of magicSkyfileMaskRow objects
    10579 );
    10580 
    10581 /** Insert data from a binary FITS table magicSkyfileMaskRow into the database
    10582  *
    10583  * This function expects a psFits object with a FITS table as the first
    10584  * extension.  The table must have at least one row of data in it, that is of
    10585  * the appropriate format (number of columns and their type).  All other
    10586  * extensions are ignored.
    10587  *
    10588  * @return true on success
    10589  */
    10590 
    10591 bool magicSkyfileMaskInsertFits(
    10592     psDB            *dbh,               ///< Database handle
    10593     const psFits    *fits               ///< psFits object
    10594 );
    10595 
    10596 /** Selects up to limit from the database and returns them in a binary FITS table
    10597  *
    10598  * This function assumes an empty psFits object and will create a FITS table
    10599  * as the first extension.
    10600  *
    10601  *  See psDBSelectRows() for documentation on the format of where.
    10602  *
    10603  * @return true on success
    10604  */
    10605 
    10606 bool magicSkyfileMaskSelectRowsFits(
    10607     psDB            *dbh,               ///< Database handle
    10608     psFits          *fits,              ///< psFits object
    10609     const psMetadata *where,            ///< Row match criteria
    10610     unsigned long long limit            ///< Maximum number of elements to return
    10611 );
    10612 
    10613 /** Convert a magicSkyfileMaskRow into an equivalent psMetadata
    10614  *
    10615  * @return A psMetadata pointer or NULL on error
    10616  */
    10617 
    10618 psMetadata *magicSkyfileMaskMetadataFromObject(
    10619     const magicSkyfileMaskRow *object             ///< fooRow to convert into a psMetadata
    10620 );
    10621 
    10622 /** Convert a psMetadata into an equivalent fooRow
    10623  *
    10624  * @return A magicSkyfileMaskRow pointer or NULL on error
    10625  */
    10626 
    10627 magicSkyfileMaskRow *magicSkyfileMaskObjectFromMetadata(
    10628     psMetadata      *md                 ///< psMetadata to convert into a fooRow
    10629 );
    10630 /** Selects up to limit rows from the database and returns as magicSkyfileMaskRow objects in a psArray
    10631  *
    10632  *  See psDBSelectRows() for documentation on the format of where.
    10633  *
    10634  * @return A psArray pointer or NULL on error
    10635  */
    10636 
    10637 psArray *magicSkyfileMaskSelectRowObjects(
    10638     psDB            *dbh,               ///< Database handle
    10639     const psMetadata *where,            ///< Row match criteria
    10640     unsigned long long limit            ///< Maximum number of elements to return
    10641 );
    10642 /** Deletes a row from the database coresponding to an magicSkyfileMask
    10643  *
    10644  *  Note that a 'where' search psMetadata is constructed from each object and
    10645  *  used to find rows to delete.
    10646  *
    10647  * @return A The number of rows removed or a negative value on error
    10648  */
    10649 
    10650 bool magicSkyfileMaskDeleteObject(
    10651     psDB            *dbh,               ///< Database handle
    10652     const magicSkyfileMaskRow *object    ///< Object to delete
    10653 );
    10654 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    10655  *
    10656  *  Note that a 'where' search psMetadata is constructed from each object and
    10657  *  used to find rows to delete.
    10658  *
    10659  * @return A The number of rows removed or a negative value on error
    10660  */
    10661 
    10662 long long magicSkyfileMaskDeleteRowObjects(
    10663     psDB            *dbh,               ///< Database handle
    10664     const psArray   *objects,           ///< Array of objects to delete
    10665     unsigned long long limit            ///< Maximum number of elements to delete
    10666 );
    10667 /** Formats and prints an array of magicSkyfileMaskRow objects
    10668  *
    10669  * When mdcf is set the formated output is in psMetadataConfig
    10670  * format, otherwise it is in a simple tabular format.
    10671  *
    10672  * @return true on success
    10673  */
    10674 
    10675 bool magicSkyfileMaskPrintObjects(
    10676     FILE            *stream,            ///< a stream
    10677     psArray         *objects,           ///< An array of magicSkyfileMaskRow objects
    10678     bool            mdcf                ///< format as mdconfig or simple
    10679 );
    10680 /** Formats and prints an magicSkyfileMaskRow object
    10681  *
    10682  * When mdcf is set the formated output is in psMetadataConfig
    10683  * format, otherwise it is in a simple tabular format.
    10684  *
    10685  * @return true on success
    10686  */
    10687 
    10688 bool magicSkyfileMaskPrintObject(
    10689     FILE            *stream,            ///< a stream
    10690     magicSkyfileMaskRow *object,    ///< an magicSkyfileMaskRow object
    10691     bool            mdcf                ///< format as mdconfig or simple
    10692 );
    106938776
    106948777/// @}
     
    106988781#endif
    106998782
    10700 #endif // MAGICSKYFILEMASK_DB_H
     8783#endif // DETRUNSUMMARY_DB_H
  • trunk/ippdb/tests/alloc.c

    r15343 r15420  
    99{
    1010    {
    11         pzDataStoreRow  *object;
    12 
    13         object = pzDataStoreRowAlloc("a string", "a string", "a string"    );
    14 
    15         if (!object) {
    16             exit(EXIT_FAILURE);
    17         }
    18 
     11        summitExpRow    *object;
     12
     13        object = summitExpRowAlloc("a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", -32    );
     14
     15        if (!object) {
     16            exit(EXIT_FAILURE);
     17        }
     18
     19        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
     20            psFree(object);
     21            exit(EXIT_FAILURE);
     22        }
    1923        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    2024            psFree(object);
     
    2529            exit(EXIT_FAILURE);
    2630        }
     31            psFree(object);
     32            exit(EXIT_FAILURE);
     33        }
     34        if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
     35            psFree(object);
     36            exit(EXIT_FAILURE);
     37        }
    2738        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    2839            psFree(object);
    2940            exit(EXIT_FAILURE);
    3041        }
    31 
    32         psFree(object);
    33     }
    34 
    35     {
    36         summitExpRow    *object;
    37 
    38         object = summitExpRowAlloc("a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", -32    );
     42        if (!object->imfiles == -32) {
     43            psFree(object);
     44            exit(EXIT_FAILURE);
     45        }
     46
     47        psFree(object);
     48    }
     49
     50    {
     51        summitImfileRow *object;
     52
     53        object = summitImfileRowAlloc("a string", "a string", "a string", "a string", -32, "a string", "a string", "a string", "a string"    );
    3954
    4055        if (!object) {
     
    5469            exit(EXIT_FAILURE);
    5570        }
     71        if (strncmp(object->file_id, "a string", MAX_STRING_LENGTH)) {
     72            psFree(object);
     73            exit(EXIT_FAILURE);
     74        }
     75        if (!object->bytes == -32) {
     76            psFree(object);
     77            exit(EXIT_FAILURE);
     78        }
     79        if (strncmp(object->md5sum, "a string", MAX_STRING_LENGTH)) {
     80            psFree(object);
     81            exit(EXIT_FAILURE);
     82        }
     83        if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
     84            psFree(object);
     85            exit(EXIT_FAILURE);
     86        }
     87        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     88            psFree(object);
     89            exit(EXIT_FAILURE);
     90        }
     91        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     92            psFree(object);
     93            exit(EXIT_FAILURE);
     94        }
     95
     96        psFree(object);
     97    }
     98
     99    {
     100        pzPendingExpRow *object;
     101
     102        object = pzPendingExpRowAlloc("a string", "a string", "a string"    );
     103
     104        if (!object) {
     105            exit(EXIT_FAILURE);
     106        }
     107
     108        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
     109            psFree(object);
     110            exit(EXIT_FAILURE);
     111        }
     112        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
     113            psFree(object);
     114            exit(EXIT_FAILURE);
     115        }
     116        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
     117            psFree(object);
     118            exit(EXIT_FAILURE);
     119        }
     120
     121        psFree(object);
     122    }
     123
     124    {
     125        pzPendingImfileRow *object;
     126
     127        object = pzPendingImfileRowAlloc("a string", "a string", "a string", "a string", "a string", -64    );
     128
     129        if (!object) {
     130            exit(EXIT_FAILURE);
     131        }
     132
     133        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
     134            psFree(object);
     135            exit(EXIT_FAILURE);
     136        }
     137        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
     138            psFree(object);
     139            exit(EXIT_FAILURE);
     140        }
     141        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
     142            psFree(object);
     143            exit(EXIT_FAILURE);
     144        }
     145        if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
     146            psFree(object);
     147            exit(EXIT_FAILURE);
     148        }
     149        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     150            psFree(object);
     151            exit(EXIT_FAILURE);
     152        }
     153        if (!object->exp_id == -64) {
     154            psFree(object);
     155            exit(EXIT_FAILURE);
     156        }
     157
     158        psFree(object);
     159    }
     160
     161    {
     162        pzDoneExpRow    *object;
     163
     164        object = pzDoneExpRowAlloc("a string", "a string", "a string"    );
     165
     166        if (!object) {
     167            exit(EXIT_FAILURE);
     168        }
     169
     170        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
     171            psFree(object);
     172            exit(EXIT_FAILURE);
     173        }
     174        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
     175            psFree(object);
     176            exit(EXIT_FAILURE);
     177        }
     178        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
     179            psFree(object);
     180            exit(EXIT_FAILURE);
     181        }
     182
     183        psFree(object);
     184    }
     185
     186    {
     187        pzDoneImfileRow *object;
     188
     189        object = pzDoneImfileRowAlloc("a string", "a string", "a string", "a string", "a string", -64, "a string"    );
     190
     191        if (!object) {
     192            exit(EXIT_FAILURE);
     193        }
     194
     195        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
     196            psFree(object);
     197            exit(EXIT_FAILURE);
     198        }
     199        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
     200            psFree(object);
     201            exit(EXIT_FAILURE);
     202        }
     203        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
     204            psFree(object);
     205            exit(EXIT_FAILURE);
     206        }
     207        if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
     208            psFree(object);
     209            exit(EXIT_FAILURE);
     210        }
     211        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     212            psFree(object);
     213            exit(EXIT_FAILURE);
     214        }
     215        if (!object->exp_id == -64) {
     216            psFree(object);
     217            exit(EXIT_FAILURE);
     218        }
     219        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     220            psFree(object);
     221            exit(EXIT_FAILURE);
     222        }
     223
     224        psFree(object);
     225    }
     226
     227    {
     228        newExpRow       *object;
     229
     230        object = newExpRowAlloc(-64, "a string", "a string", "a string", "a string", -32, "a string", "a string"    );
     231
     232        if (!object) {
     233            exit(EXIT_FAILURE);
     234        }
     235
     236        if (!object->exp_id == -64) {
     237            psFree(object);
     238            exit(EXIT_FAILURE);
     239        }
     240        if (strncmp(object->tmp_exp_name, "a string", MAX_STRING_LENGTH)) {
     241            psFree(object);
     242            exit(EXIT_FAILURE);
     243        }
     244        if (strncmp(object->tmp_camera, "a string", MAX_STRING_LENGTH)) {
     245            psFree(object);
     246            exit(EXIT_FAILURE);
     247        }
     248        if (strncmp(object->tmp_telescope, "a string", MAX_STRING_LENGTH)) {
     249            psFree(object);
     250            exit(EXIT_FAILURE);
     251        }
     252        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     253            psFree(object);
     254            exit(EXIT_FAILURE);
     255        }
     256        if (!object->imfiles == -32) {
     257            psFree(object);
     258            exit(EXIT_FAILURE);
     259        }
     260        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     261            psFree(object);
     262            exit(EXIT_FAILURE);
     263        }
     264        if (strncmp(object->workdir_state, "a string", MAX_STRING_LENGTH)) {
     265            psFree(object);
     266            exit(EXIT_FAILURE);
     267        }
     268
     269        psFree(object);
     270    }
     271
     272    {
     273        newImfileRow    *object;
     274
     275        object = newImfileRowAlloc(-64, "a string", "a string"    );
     276
     277        if (!object) {
     278            exit(EXIT_FAILURE);
     279        }
     280
     281        if (!object->exp_id == -64) {
     282            psFree(object);
     283            exit(EXIT_FAILURE);
     284        }
     285        if (strncmp(object->tmp_class_id, "a string", MAX_STRING_LENGTH)) {
     286            psFree(object);
     287            exit(EXIT_FAILURE);
     288        }
     289        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     290            psFree(object);
     291            exit(EXIT_FAILURE);
     292        }
     293
     294        psFree(object);
     295    }
     296
     297    {
     298        rawExpRow       *object;
     299
     300        object = rawExpRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", -32, "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", 32.32, -16    );
     301
     302        if (!object) {
     303            exit(EXIT_FAILURE);
     304        }
     305
     306        if (!object->exp_id == -64) {
     307            psFree(object);
     308            exit(EXIT_FAILURE);
     309        }
     310        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
     311            psFree(object);
     312            exit(EXIT_FAILURE);
     313        }
     314        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
     315            psFree(object);
     316            exit(EXIT_FAILURE);
     317        }
     318        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
     319            psFree(object);
     320            exit(EXIT_FAILURE);
     321        }
     322            psFree(object);
     323            exit(EXIT_FAILURE);
     324        }
     325        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    56326            psFree(object);
    57327            exit(EXIT_FAILURE);
     
    61331            exit(EXIT_FAILURE);
    62332        }
     333        if (!object->imfiles == -32) {
     334            psFree(object);
     335            exit(EXIT_FAILURE);
     336        }
     337        if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
     338            psFree(object);
     339            exit(EXIT_FAILURE);
     340        }
     341        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     342            psFree(object);
     343            exit(EXIT_FAILURE);
     344        }
     345        if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
     346            psFree(object);
     347            exit(EXIT_FAILURE);
     348        }
     349        if (!object->airmass == 32.32) {
     350            psFree(object);
     351            exit(EXIT_FAILURE);
     352        }
     353        if (!object->ra == 64.64) {
     354            psFree(object);
     355            exit(EXIT_FAILURE);
     356        }
     357        if (!object->decl == 64.64) {
     358            psFree(object);
     359            exit(EXIT_FAILURE);
     360        }
     361        if (!object->exp_time == 32.32) {
     362            psFree(object);
     363            exit(EXIT_FAILURE);
     364        }
     365        if (!object->sat_pixel_frac == 32.32) {
     366            psFree(object);
     367            exit(EXIT_FAILURE);
     368        }
     369        if (!object->bg == 64.64) {
     370            psFree(object);
     371            exit(EXIT_FAILURE);
     372        }
     373        if (!object->bg_stdev == 64.64) {
     374            psFree(object);
     375            exit(EXIT_FAILURE);
     376        }
     377        if (!object->bg_mean_stdev == 64.64) {
     378            psFree(object);
     379            exit(EXIT_FAILURE);
     380        }
     381        if (!object->alt == 64.64) {
     382            psFree(object);
     383            exit(EXIT_FAILURE);
     384        }
     385        if (!object->az == 64.64) {
     386            psFree(object);
     387            exit(EXIT_FAILURE);
     388        }
     389        if (!object->ccd_temp == 32.32) {
     390            psFree(object);
     391            exit(EXIT_FAILURE);
     392        }
     393        if (!object->posang == 64.64) {
     394            psFree(object);
     395            exit(EXIT_FAILURE);
     396        }
     397        if (!object->user_1 == 64.64) {
     398            psFree(object);
     399            exit(EXIT_FAILURE);
     400        }
     401        if (!object->user_2 == 64.64) {
     402            psFree(object);
     403            exit(EXIT_FAILURE);
     404        }
     405        if (!object->user_3 == 64.64) {
     406            psFree(object);
     407            exit(EXIT_FAILURE);
     408        }
     409        if (!object->user_4 == 64.64) {
     410            psFree(object);
     411            exit(EXIT_FAILURE);
     412        }
     413        if (!object->user_5 == 64.64) {
     414            psFree(object);
     415            exit(EXIT_FAILURE);
     416        }
     417        if (strncmp(object->object, "a string", MAX_STRING_LENGTH)) {
     418            psFree(object);
     419            exit(EXIT_FAILURE);
     420        }
     421        if (!object->solang == 32.32) {
     422            psFree(object);
     423            exit(EXIT_FAILURE);
     424        }
     425        if (!object->fault == -16) {
     426            psFree(object);
     427            exit(EXIT_FAILURE);
     428        }
     429
     430        psFree(object);
     431    }
     432
     433    {
     434        rawImfileRow    *object;
     435
     436        object = rawImfileRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16    );
     437
     438        if (!object) {
     439            exit(EXIT_FAILURE);
     440        }
     441
     442        if (!object->exp_id == -64) {
     443            psFree(object);
     444            exit(EXIT_FAILURE);
     445        }
     446        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
     447            psFree(object);
     448            exit(EXIT_FAILURE);
     449        }
     450        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
     451            psFree(object);
     452            exit(EXIT_FAILURE);
     453        }
     454        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
     455            psFree(object);
     456            exit(EXIT_FAILURE);
     457        }
     458            psFree(object);
     459            exit(EXIT_FAILURE);
     460        }
     461        if (strncmp(object->tmp_class_id, "a string", MAX_STRING_LENGTH)) {
     462            psFree(object);
     463            exit(EXIT_FAILURE);
     464        }
     465        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     466            psFree(object);
     467            exit(EXIT_FAILURE);
     468        }
    63469        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    64470            psFree(object);
    65471            exit(EXIT_FAILURE);
    66472        }
    67         if (!object->imfiles == -32) {
    68             psFree(object);
    69             exit(EXIT_FAILURE);
    70         }
    71 
    72         psFree(object);
    73     }
    74 
    75     {
    76         summitImfileRow *object;
    77 
    78         object = summitImfileRowAlloc("a string", "a string", "a string", "a string", -32, "a string", "a string", "a string", "a string"    );
    79 
    80         if (!object) {
    81             exit(EXIT_FAILURE);
    82         }
    83 
    84         if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
     473        if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
     474            psFree(object);
     475            exit(EXIT_FAILURE);
     476        }
     477        if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
     478            psFree(object);
     479            exit(EXIT_FAILURE);
     480        }
     481        if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
     482            psFree(object);
     483            exit(EXIT_FAILURE);
     484        }
     485        if (!object->airmass == 32.32) {
     486            psFree(object);
     487            exit(EXIT_FAILURE);
     488        }
     489        if (!object->ra == 64.64) {
     490            psFree(object);
     491            exit(EXIT_FAILURE);
     492        }
     493        if (!object->decl == 64.64) {
     494            psFree(object);
     495            exit(EXIT_FAILURE);
     496        }
     497        if (!object->exp_time == 32.32) {
     498            psFree(object);
     499            exit(EXIT_FAILURE);
     500        }
     501        if (!object->sat_pixel_frac == 32.32) {
     502            psFree(object);
     503            exit(EXIT_FAILURE);
     504        }
     505        if (!object->bg == 64.64) {
     506            psFree(object);
     507            exit(EXIT_FAILURE);
     508        }
     509        if (!object->bg_stdev == 64.64) {
     510            psFree(object);
     511            exit(EXIT_FAILURE);
     512        }
     513        if (!object->bg_mean_stdev == 64.64) {
     514            psFree(object);
     515            exit(EXIT_FAILURE);
     516        }
     517        if (!object->alt == 64.64) {
     518            psFree(object);
     519            exit(EXIT_FAILURE);
     520        }
     521        if (!object->az == 64.64) {
     522            psFree(object);
     523            exit(EXIT_FAILURE);
     524        }
     525        if (!object->ccd_temp == 32.32) {
     526            psFree(object);
     527            exit(EXIT_FAILURE);
     528        }
     529        if (!object->posang == 64.64) {
     530            psFree(object);
     531            exit(EXIT_FAILURE);
     532        }
     533        if (!object->user_1 == 64.64) {
     534            psFree(object);
     535            exit(EXIT_FAILURE);
     536        }
     537        if (!object->user_2 == 64.64) {
     538            psFree(object);
     539            exit(EXIT_FAILURE);
     540        }
     541        if (!object->user_3 == 64.64) {
     542            psFree(object);
     543            exit(EXIT_FAILURE);
     544        }
     545        if (!object->user_4 == 64.64) {
     546            psFree(object);
     547            exit(EXIT_FAILURE);
     548        }
     549        if (!object->user_5 == 64.64) {
     550            psFree(object);
     551            exit(EXIT_FAILURE);
     552        }
     553        if (strncmp(object->object, "a string", MAX_STRING_LENGTH)) {
     554            psFree(object);
     555            exit(EXIT_FAILURE);
     556        }
     557        if (!object->fault == -16) {
     558            psFree(object);
     559            exit(EXIT_FAILURE);
     560        }
     561
     562        psFree(object);
     563    }
     564
     565    {
     566        guidePendingExpRow *object;
     567
     568        object = guidePendingExpRowAlloc(-64, -64, "a string"    );
     569
     570        if (!object) {
     571            exit(EXIT_FAILURE);
     572        }
     573
     574        if (!object->guide_id == -64) {
     575            psFree(object);
     576            exit(EXIT_FAILURE);
     577        }
     578        if (!object->exp_id == -64) {
     579            psFree(object);
     580            exit(EXIT_FAILURE);
     581        }
     582        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     583            psFree(object);
     584            exit(EXIT_FAILURE);
     585        }
     586
     587        psFree(object);
     588    }
     589
     590    {
     591        chipRunRow      *object;
     592
     593        object = chipRunRowAlloc(-64, "a string", "a string", "a string", "a string", "a string", "a string", "a string"    );
     594
     595        if (!object) {
     596            exit(EXIT_FAILURE);
     597        }
     598
     599        if (!object->chip_id == -64) {
     600            psFree(object);
     601            exit(EXIT_FAILURE);
     602        }
     603        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     604            psFree(object);
     605            exit(EXIT_FAILURE);
     606        }
     607        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     608            psFree(object);
     609            exit(EXIT_FAILURE);
     610        }
     611        if (strncmp(object->workdir_state, "a string", MAX_STRING_LENGTH)) {
     612            psFree(object);
     613            exit(EXIT_FAILURE);
     614        }
     615        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     616            psFree(object);
     617            exit(EXIT_FAILURE);
     618        }
     619        if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
     620            psFree(object);
     621            exit(EXIT_FAILURE);
     622        }
     623        if (strncmp(object->expgroup, "a string", MAX_STRING_LENGTH)) {
     624            psFree(object);
     625            exit(EXIT_FAILURE);
     626        }
     627        if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
     628            psFree(object);
     629            exit(EXIT_FAILURE);
     630        }
     631
     632        psFree(object);
     633    }
     634
     635    {
     636        chipInputImfileRow *object;
     637
     638        object = chipInputImfileRowAlloc(-64, -64, "a string"    );
     639
     640        if (!object) {
     641            exit(EXIT_FAILURE);
     642        }
     643
     644        if (!object->chip_id == -64) {
     645            psFree(object);
     646            exit(EXIT_FAILURE);
     647        }
     648        if (!object->exp_id == -64) {
     649            psFree(object);
     650            exit(EXIT_FAILURE);
     651        }
     652        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     653            psFree(object);
     654            exit(EXIT_FAILURE);
     655        }
     656
     657        psFree(object);
     658    }
     659
     660    {
     661        chipProcessedImfileRow *object;
     662
     663        object = chipProcessedImfileRowAlloc(-64, -64, "a string", "a string", 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, -32, -32, -32, -32, "a string", -16    );
     664
     665        if (!object) {
     666            exit(EXIT_FAILURE);
     667        }
     668
     669        if (!object->chip_id == -64) {
     670            psFree(object);
     671            exit(EXIT_FAILURE);
     672        }
     673        if (!object->exp_id == -64) {
     674            psFree(object);
     675            exit(EXIT_FAILURE);
     676        }
     677        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     678            psFree(object);
     679            exit(EXIT_FAILURE);
     680        }
     681        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     682            psFree(object);
     683            exit(EXIT_FAILURE);
     684        }
     685        if (!object->bg == 32.32) {
     686            psFree(object);
     687            exit(EXIT_FAILURE);
     688        }
     689        if (!object->bg_stdev == 32.32) {
     690            psFree(object);
     691            exit(EXIT_FAILURE);
     692        }
     693        if (!object->bg_mean_stdev == 32.32) {
     694            psFree(object);
     695            exit(EXIT_FAILURE);
     696        }
     697        if (!object->bias == 32.32) {
     698            psFree(object);
     699            exit(EXIT_FAILURE);
     700        }
     701        if (!object->bias_stdev == 32.32) {
     702            psFree(object);
     703            exit(EXIT_FAILURE);
     704        }
     705        if (!object->fringe_0 == 32.32) {
     706            psFree(object);
     707            exit(EXIT_FAILURE);
     708        }
     709        if (!object->fringe_1 == 32.32) {
     710            psFree(object);
     711            exit(EXIT_FAILURE);
     712        }
     713        if (!object->fringe_2 == 32.32) {
     714            psFree(object);
     715            exit(EXIT_FAILURE);
     716        }
     717        if (!object->sigma_ra == 32.32) {
     718            psFree(object);
     719            exit(EXIT_FAILURE);
     720        }
     721        if (!object->sigma_dec == 32.32) {
     722            psFree(object);
     723            exit(EXIT_FAILURE);
     724        }
     725        if (!object->ap_resid == 32.32) {
     726            psFree(object);
     727            exit(EXIT_FAILURE);
     728        }
     729        if (!object->ap_resid_stdev == 32.32) {
     730            psFree(object);
     731            exit(EXIT_FAILURE);
     732        }
     733        if (!object->fwhm == 32.32) {
     734            psFree(object);
     735            exit(EXIT_FAILURE);
     736        }
     737        if (!object->fwhm_range == 32.32) {
     738            psFree(object);
     739            exit(EXIT_FAILURE);
     740        }
     741        if (!object->n_stars == -32) {
     742            psFree(object);
     743            exit(EXIT_FAILURE);
     744        }
     745        if (!object->n_extended == -32) {
     746            psFree(object);
     747            exit(EXIT_FAILURE);
     748        }
     749        if (!object->n_cr == -32) {
     750            psFree(object);
     751            exit(EXIT_FAILURE);
     752        }
     753        if (!object->n_astrom == -32) {
     754            psFree(object);
     755            exit(EXIT_FAILURE);
     756        }
     757        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     758            psFree(object);
     759            exit(EXIT_FAILURE);
     760        }
     761        if (!object->fault == -16) {
     762            psFree(object);
     763            exit(EXIT_FAILURE);
     764        }
     765
     766        psFree(object);
     767    }
     768
     769    {
     770        chipMaskRow     *object;
     771
     772        object = chipMaskRowAlloc("a string"    );
     773
     774        if (!object) {
     775            exit(EXIT_FAILURE);
     776        }
     777
     778        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     779            psFree(object);
     780            exit(EXIT_FAILURE);
     781        }
     782
     783        psFree(object);
     784    }
     785
     786    {
     787        camRunRow       *object;
     788
     789        object = camRunRowAlloc(-64, -64, "a string", "a string", "a string", "a string", "a string", "a string", "a string"    );
     790
     791        if (!object) {
     792            exit(EXIT_FAILURE);
     793        }
     794
     795        if (!object->cam_id == -64) {
     796            psFree(object);
     797            exit(EXIT_FAILURE);
     798        }
     799        if (!object->chip_id == -64) {
     800            psFree(object);
     801            exit(EXIT_FAILURE);
     802        }
     803        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     804            psFree(object);
     805            exit(EXIT_FAILURE);
     806        }
     807        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     808            psFree(object);
     809            exit(EXIT_FAILURE);
     810        }
     811        if (strncmp(object->workdir_state, "a string", MAX_STRING_LENGTH)) {
     812            psFree(object);
     813            exit(EXIT_FAILURE);
     814        }
     815        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     816            psFree(object);
     817            exit(EXIT_FAILURE);
     818        }
     819        if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
     820            psFree(object);
     821            exit(EXIT_FAILURE);
     822        }
     823        if (strncmp(object->expgroup, "a string", MAX_STRING_LENGTH)) {
     824            psFree(object);
     825            exit(EXIT_FAILURE);
     826        }
     827        if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
     828            psFree(object);
     829            exit(EXIT_FAILURE);
     830        }
     831
     832        psFree(object);
     833    }
     834
     835    {
     836        camProcessedExpRow *object;
     837
     838        object = camProcessedExpRowAlloc(-64, -64, "a string", 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, -32, -32, -32, -32, "a string", -16    );
     839
     840        if (!object) {
     841            exit(EXIT_FAILURE);
     842        }
     843
     844        if (!object->cam_id == -64) {
     845            psFree(object);
     846            exit(EXIT_FAILURE);
     847        }
     848        if (!object->chip_id == -64) {
     849            psFree(object);
     850            exit(EXIT_FAILURE);
     851        }
     852        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     853            psFree(object);
     854            exit(EXIT_FAILURE);
     855        }
     856        if (!object->bg == 32.32) {
     857            psFree(object);
     858            exit(EXIT_FAILURE);
     859        }
     860        if (!object->bg_stdev == 32.32) {
     861            psFree(object);
     862            exit(EXIT_FAILURE);
     863        }
     864        if (!object->bg_mean_stdev == 32.32) {
     865            psFree(object);
     866            exit(EXIT_FAILURE);
     867        }
     868        if (!object->sigma_ra == 32.32) {
     869            psFree(object);
     870            exit(EXIT_FAILURE);
     871        }
     872        if (!object->sigma_dec == 32.32) {
     873            psFree(object);
     874            exit(EXIT_FAILURE);
     875        }
     876        if (!object->zp_mean == 32.32) {
     877            psFree(object);
     878            exit(EXIT_FAILURE);
     879        }
     880        if (!object->zp_stdev == 32.32) {
     881            psFree(object);
     882            exit(EXIT_FAILURE);
     883        }
     884        if (!object->fwhm == 32.32) {
     885            psFree(object);
     886            exit(EXIT_FAILURE);
     887        }
     888        if (!object->fwhm_range == 32.32) {
     889            psFree(object);
     890            exit(EXIT_FAILURE);
     891        }
     892        if (!object->n_stars == -32) {
     893            psFree(object);
     894            exit(EXIT_FAILURE);
     895        }
     896        if (!object->n_extended == -32) {
     897            psFree(object);
     898            exit(EXIT_FAILURE);
     899        }
     900        if (!object->n_cr == -32) {
     901            psFree(object);
     902            exit(EXIT_FAILURE);
     903        }
     904        if (!object->n_astrom == -32) {
     905            psFree(object);
     906            exit(EXIT_FAILURE);
     907        }
     908        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     909            psFree(object);
     910            exit(EXIT_FAILURE);
     911        }
     912        if (!object->fault == -16) {
     913            psFree(object);
     914            exit(EXIT_FAILURE);
     915        }
     916
     917        psFree(object);
     918    }
     919
     920    {
     921        camMaskRow      *object;
     922
     923        object = camMaskRowAlloc("a string"    );
     924
     925        if (!object) {
     926            exit(EXIT_FAILURE);
     927        }
     928
     929        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     930            psFree(object);
     931            exit(EXIT_FAILURE);
     932        }
     933
     934        psFree(object);
     935    }
     936
     937    {
     938        warpRunRow      *object;
     939
     940        object = warpRunRowAlloc(-64, "a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z"    );
     941
     942        if (!object) {
     943            exit(EXIT_FAILURE);
     944        }
     945
     946        if (!object->warp_id == -64) {
     947            psFree(object);
     948            exit(EXIT_FAILURE);
     949        }
     950        if (strncmp(object->mode, "a string", MAX_STRING_LENGTH)) {
     951            psFree(object);
     952            exit(EXIT_FAILURE);
     953        }
     954        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     955            psFree(object);
     956            exit(EXIT_FAILURE);
     957        }
     958        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     959            psFree(object);
     960            exit(EXIT_FAILURE);
     961        }
     962        if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
     963            psFree(object);
     964            exit(EXIT_FAILURE);
     965        }
     966            psFree(object);
     967            exit(EXIT_FAILURE);
     968        }
     969
     970        psFree(object);
     971    }
     972
     973    {
     974        warpInputExpRow *object;
     975
     976        object = warpInputExpRowAlloc(-64, -64, true    );
     977
     978        if (!object) {
     979            exit(EXIT_FAILURE);
     980        }
     981
     982        if (!object->warp_id == -64) {
     983            psFree(object);
     984            exit(EXIT_FAILURE);
     985        }
     986        if (!object->cam_id == -64) {
     987            psFree(object);
     988            exit(EXIT_FAILURE);
     989        }
     990        if (!object->magiced == true) {
     991            psFree(object);
     992            exit(EXIT_FAILURE);
     993        }
     994
     995        psFree(object);
     996    }
     997
     998    {
     999        warpSkyCellMapRow *object;
     1000
     1001        object = warpSkyCellMapRowAlloc(-64, "a string", "a string", -64, "a string", -16    );
     1002
     1003        if (!object) {
     1004            exit(EXIT_FAILURE);
     1005        }
     1006
     1007        if (!object->warp_id == -64) {
     1008            psFree(object);
     1009            exit(EXIT_FAILURE);
     1010        }
     1011        if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
     1012            psFree(object);
     1013            exit(EXIT_FAILURE);
     1014        }
     1015        if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
     1016            psFree(object);
     1017            exit(EXIT_FAILURE);
     1018        }
     1019        if (!object->cam_id == -64) {
     1020            psFree(object);
     1021            exit(EXIT_FAILURE);
     1022        }
     1023        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     1024            psFree(object);
     1025            exit(EXIT_FAILURE);
     1026        }
     1027        if (!object->fault == -16) {
     1028            psFree(object);
     1029            exit(EXIT_FAILURE);
     1030        }
     1031
     1032        psFree(object);
     1033    }
     1034
     1035    {
     1036        warpSkyfileRow  *object;
     1037
     1038        object = warpSkyfileRowAlloc(-64, "a string", "a string", "a string", "a string", 64.64, 64.64    );
     1039
     1040        if (!object) {
     1041            exit(EXIT_FAILURE);
     1042        }
     1043
     1044        if (!object->warp_id == -64) {
     1045            psFree(object);
     1046            exit(EXIT_FAILURE);
     1047        }
     1048        if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
     1049            psFree(object);
     1050            exit(EXIT_FAILURE);
     1051        }
     1052        if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
     1053            psFree(object);
     1054            exit(EXIT_FAILURE);
     1055        }
     1056        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     1057            psFree(object);
     1058            exit(EXIT_FAILURE);
     1059        }
     1060        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1061            psFree(object);
     1062            exit(EXIT_FAILURE);
     1063        }
     1064        if (!object->bg == 64.64) {
     1065            psFree(object);
     1066            exit(EXIT_FAILURE);
     1067        }
     1068        if (!object->bg_stdev == 64.64) {
     1069            psFree(object);
     1070            exit(EXIT_FAILURE);
     1071        }
     1072
     1073        psFree(object);
     1074    }
     1075
     1076    {
     1077        diffRunRow      *object;
     1078
     1079        object = diffRunRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string"    );
     1080
     1081        if (!object) {
     1082            exit(EXIT_FAILURE);
     1083        }
     1084
     1085        if (!object->diff_id == -64) {
     1086            psFree(object);
     1087            exit(EXIT_FAILURE);
     1088        }
     1089        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     1090            psFree(object);
     1091            exit(EXIT_FAILURE);
     1092        }
     1093        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     1094            psFree(object);
     1095            exit(EXIT_FAILURE);
     1096        }
     1097        if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
     1098            psFree(object);
     1099            exit(EXIT_FAILURE);
     1100        }
     1101            psFree(object);
     1102            exit(EXIT_FAILURE);
     1103        }
     1104        if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
     1105            psFree(object);
     1106            exit(EXIT_FAILURE);
     1107        }
     1108        if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
     1109            psFree(object);
     1110            exit(EXIT_FAILURE);
     1111        }
     1112
     1113        psFree(object);
     1114    }
     1115
     1116    {
     1117        diffInputSkyfileRow *object;
     1118
     1119        object = diffInputSkyfileRowAlloc(-64, -64, "a string", "a string", "a string", true    );
     1120
     1121        if (!object) {
     1122            exit(EXIT_FAILURE);
     1123        }
     1124
     1125        if (!object->diff_id == -64) {
     1126            psFree(object);
     1127            exit(EXIT_FAILURE);
     1128        }
     1129        if (!object->warp_id == -64) {
     1130            psFree(object);
     1131            exit(EXIT_FAILURE);
     1132        }
     1133        if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
     1134            psFree(object);
     1135            exit(EXIT_FAILURE);
     1136        }
     1137        if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
     1138            psFree(object);
     1139            exit(EXIT_FAILURE);
     1140        }
     1141        if (strncmp(object->kind, "a string", MAX_STRING_LENGTH)) {
     1142            psFree(object);
     1143            exit(EXIT_FAILURE);
     1144        }
     1145        if (!object->template == true) {
     1146            psFree(object);
     1147            exit(EXIT_FAILURE);
     1148        }
     1149
     1150        psFree(object);
     1151    }
     1152
     1153    {
     1154        diffSkyfileRow  *object;
     1155
     1156        object = diffSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64    );
     1157
     1158        if (!object) {
     1159            exit(EXIT_FAILURE);
     1160        }
     1161
     1162        if (!object->diff_id == -64) {
     1163            psFree(object);
     1164            exit(EXIT_FAILURE);
     1165        }
     1166        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     1167            psFree(object);
     1168            exit(EXIT_FAILURE);
     1169        }
     1170        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1171            psFree(object);
     1172            exit(EXIT_FAILURE);
     1173        }
     1174        if (!object->bg == 64.64) {
     1175            psFree(object);
     1176            exit(EXIT_FAILURE);
     1177        }
     1178        if (!object->bg_stdev == 64.64) {
     1179            psFree(object);
     1180            exit(EXIT_FAILURE);
     1181        }
     1182
     1183        psFree(object);
     1184    }
     1185
     1186    {
     1187        stackRunRow     *object;
     1188
     1189        object = stackRunRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string"    );
     1190
     1191        if (!object) {
     1192            exit(EXIT_FAILURE);
     1193        }
     1194
     1195        if (!object->stack_id == -64) {
     1196            psFree(object);
     1197            exit(EXIT_FAILURE);
     1198        }
     1199        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     1200            psFree(object);
     1201            exit(EXIT_FAILURE);
     1202        }
     1203        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     1204            psFree(object);
     1205            exit(EXIT_FAILURE);
     1206        }
     1207        if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
     1208            psFree(object);
     1209            exit(EXIT_FAILURE);
     1210        }
     1211            psFree(object);
     1212            exit(EXIT_FAILURE);
     1213        }
     1214        if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
     1215            psFree(object);
     1216            exit(EXIT_FAILURE);
     1217        }
     1218        if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
     1219            psFree(object);
     1220            exit(EXIT_FAILURE);
     1221        }
     1222
     1223        psFree(object);
     1224    }
     1225
     1226    {
     1227        stackInputSkyfileRow *object;
     1228
     1229        object = stackInputSkyfileRowAlloc(-64, -64    );
     1230
     1231        if (!object) {
     1232            exit(EXIT_FAILURE);
     1233        }
     1234
     1235        if (!object->stack_id == -64) {
     1236            psFree(object);
     1237            exit(EXIT_FAILURE);
     1238        }
     1239        if (!object->warp_id == -64) {
     1240            psFree(object);
     1241            exit(EXIT_FAILURE);
     1242        }
     1243
     1244        psFree(object);
     1245    }
     1246
     1247    {
     1248        stackSumSkyfileRow *object;
     1249
     1250        object = stackSumSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64    );
     1251
     1252        if (!object) {
     1253            exit(EXIT_FAILURE);
     1254        }
     1255
     1256        if (!object->stack_id == -64) {
     1257            psFree(object);
     1258            exit(EXIT_FAILURE);
     1259        }
     1260        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     1261            psFree(object);
     1262            exit(EXIT_FAILURE);
     1263        }
     1264        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1265            psFree(object);
     1266            exit(EXIT_FAILURE);
     1267        }
     1268        if (!object->bg == 64.64) {
     1269            psFree(object);
     1270            exit(EXIT_FAILURE);
     1271        }
     1272        if (!object->bg_stdev == 64.64) {
     1273            psFree(object);
     1274            exit(EXIT_FAILURE);
     1275        }
     1276
     1277        psFree(object);
     1278    }
     1279
     1280    {
     1281        detRunRow       *object;
     1282
     1283        object = detRunRowAlloc(-64, -32, "a string", "a string", "a string", "a string", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 64.64, 64.64, "0001-01-01T00:00:00Z", "0001-01-01T00:00:00Z", "0001-01-01T00:00:00Z", "0001-01-01T00:00:00Z", "0001-01-01T00:00:00Z", 32.32, 32.32, "a string", -32    );
     1284
     1285        if (!object) {
     1286            exit(EXIT_FAILURE);
     1287        }
     1288
     1289        if (!object->det_id == -64) {
     1290            psFree(object);
     1291            exit(EXIT_FAILURE);
     1292        }
     1293        if (!object->iteration == -32) {
     1294            psFree(object);
     1295            exit(EXIT_FAILURE);
     1296        }
     1297        if (strncmp(object->det_type, "a string", MAX_STRING_LENGTH)) {
     1298            psFree(object);
     1299            exit(EXIT_FAILURE);
     1300        }
     1301        if (strncmp(object->mode, "a string", MAX_STRING_LENGTH)) {
     1302            psFree(object);
     1303            exit(EXIT_FAILURE);
     1304        }
     1305        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     1306            psFree(object);
     1307            exit(EXIT_FAILURE);
     1308        }
     1309        if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
     1310            psFree(object);
     1311            exit(EXIT_FAILURE);
     1312        }
     1313        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    851314            psFree(object);
    861315            exit(EXIT_FAILURE);
     
    941323            exit(EXIT_FAILURE);
    951324        }
    96         if (strncmp(object->file_id, "a string", MAX_STRING_LENGTH)) {
    97             psFree(object);
    98             exit(EXIT_FAILURE);
    99         }
    100         if (!object->bytes == -32) {
    101             psFree(object);
    102             exit(EXIT_FAILURE);
    103         }
    104         if (strncmp(object->md5sum, "a string", MAX_STRING_LENGTH)) {
    105             psFree(object);
    106             exit(EXIT_FAILURE);
    107         }
    108         if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
     1325        if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
     1326            psFree(object);
     1327            exit(EXIT_FAILURE);
     1328        }
     1329        if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
     1330            psFree(object);
     1331            exit(EXIT_FAILURE);
     1332        }
     1333        if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
     1334            psFree(object);
     1335            exit(EXIT_FAILURE);
     1336        }
     1337        if (!object->airmass_min == 32.32) {
     1338            psFree(object);
     1339            exit(EXIT_FAILURE);
     1340        }
     1341        if (!object->airmass_max == 32.32) {
     1342            psFree(object);
     1343            exit(EXIT_FAILURE);
     1344        }
     1345        if (!object->exp_time_min == 32.32) {
     1346            psFree(object);
     1347            exit(EXIT_FAILURE);
     1348        }
     1349        if (!object->exp_time_max == 32.32) {
     1350            psFree(object);
     1351            exit(EXIT_FAILURE);
     1352        }
     1353        if (!object->ccd_temp_min == 32.32) {
     1354            psFree(object);
     1355            exit(EXIT_FAILURE);
     1356        }
     1357        if (!object->ccd_temp_max == 32.32) {
     1358            psFree(object);
     1359            exit(EXIT_FAILURE);
     1360        }
     1361        if (!object->posang_min == 64.64) {
     1362            psFree(object);
     1363            exit(EXIT_FAILURE);
     1364        }
     1365        if (!object->posang_max == 64.64) {
     1366            psFree(object);
     1367            exit(EXIT_FAILURE);
     1368        }
     1369            psFree(object);
     1370            exit(EXIT_FAILURE);
     1371        }
     1372            psFree(object);
     1373            exit(EXIT_FAILURE);
     1374        }
     1375            psFree(object);
     1376            exit(EXIT_FAILURE);
     1377        }
     1378            psFree(object);
     1379            exit(EXIT_FAILURE);
     1380        }
     1381            psFree(object);
     1382            exit(EXIT_FAILURE);
     1383        }
     1384        if (!object->solang_min == 32.32) {
     1385            psFree(object);
     1386            exit(EXIT_FAILURE);
     1387        }
     1388        if (!object->solang_max == 32.32) {
     1389            psFree(object);
     1390            exit(EXIT_FAILURE);
     1391        }
     1392        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     1393            psFree(object);
     1394            exit(EXIT_FAILURE);
     1395        }
     1396        if (!object->parent == -32) {
     1397            psFree(object);
     1398            exit(EXIT_FAILURE);
     1399        }
     1400
     1401        psFree(object);
     1402    }
     1403
     1404    {
     1405        detInputExpRow  *object;
     1406
     1407        object = detInputExpRowAlloc(-64, -32, -64, true    );
     1408
     1409        if (!object) {
     1410            exit(EXIT_FAILURE);
     1411        }
     1412
     1413        if (!object->det_id == -64) {
     1414            psFree(object);
     1415            exit(EXIT_FAILURE);
     1416        }
     1417        if (!object->iteration == -32) {
     1418            psFree(object);
     1419            exit(EXIT_FAILURE);
     1420        }
     1421        if (!object->exp_id == -64) {
     1422            psFree(object);
     1423            exit(EXIT_FAILURE);
     1424        }
     1425        if (!object->include == true) {
     1426            psFree(object);
     1427            exit(EXIT_FAILURE);
     1428        }
     1429
     1430        psFree(object);
     1431    }
     1432
     1433    {
     1434        detProcessedImfileRow *object;
     1435
     1436        object = detProcessedImfileRowAlloc(-64, -64, "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16    );
     1437
     1438        if (!object) {
     1439            exit(EXIT_FAILURE);
     1440        }
     1441
     1442        if (!object->det_id == -64) {
     1443            psFree(object);
     1444            exit(EXIT_FAILURE);
     1445        }
     1446        if (!object->exp_id == -64) {
    1091447            psFree(object);
    1101448            exit(EXIT_FAILURE);
     
    1181456            exit(EXIT_FAILURE);
    1191457        }
    120 
    121         psFree(object);
    122     }
    123 
    124     {
    125         pzPendingExpRow *object;
    126 
    127         object = pzPendingExpRowAlloc("a string", "a string", "a string"    );
    128 
    129         if (!object) {
    130             exit(EXIT_FAILURE);
    131         }
    132 
    133         if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    134             psFree(object);
    135             exit(EXIT_FAILURE);
    136         }
    137         if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    138             psFree(object);
    139             exit(EXIT_FAILURE);
    140         }
    141         if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
    142             psFree(object);
    143             exit(EXIT_FAILURE);
    144         }
    145 
    146         psFree(object);
    147     }
    148 
    149     {
    150         pzPendingImfileRow *object;
    151 
    152         object = pzPendingImfileRowAlloc("a string", "a string", "a string", "a string", "a string"    );
    153 
    154         if (!object) {
    155             exit(EXIT_FAILURE);
    156         }
    157 
    158         if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    159             psFree(object);
    160             exit(EXIT_FAILURE);
    161         }
    162         if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    163             psFree(object);
    164             exit(EXIT_FAILURE);
    165         }
    166         if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
    167             psFree(object);
    168             exit(EXIT_FAILURE);
    169         }
    170         if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
     1458        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     1459            psFree(object);
     1460            exit(EXIT_FAILURE);
     1461        }
     1462        if (!object->bg == 64.64) {
     1463            psFree(object);
     1464            exit(EXIT_FAILURE);
     1465        }
     1466        if (!object->bg_stdev == 64.64) {
     1467            psFree(object);
     1468            exit(EXIT_FAILURE);
     1469        }
     1470        if (!object->bg_mean_stdev == 64.64) {
     1471            psFree(object);
     1472            exit(EXIT_FAILURE);
     1473        }
     1474        if (!object->fringe_0 == 64.64) {
     1475            psFree(object);
     1476            exit(EXIT_FAILURE);
     1477        }
     1478        if (!object->fringe_1 == 64.64) {
     1479            psFree(object);
     1480            exit(EXIT_FAILURE);
     1481        }
     1482        if (!object->fringe_2 == 64.64) {
     1483            psFree(object);
     1484            exit(EXIT_FAILURE);
     1485        }
     1486        if (!object->user_1 == 64.64) {
     1487            psFree(object);
     1488            exit(EXIT_FAILURE);
     1489        }
     1490        if (!object->user_2 == 64.64) {
     1491            psFree(object);
     1492            exit(EXIT_FAILURE);
     1493        }
     1494        if (!object->user_3 == 64.64) {
     1495            psFree(object);
     1496            exit(EXIT_FAILURE);
     1497        }
     1498        if (!object->user_4 == 64.64) {
     1499            psFree(object);
     1500            exit(EXIT_FAILURE);
     1501        }
     1502        if (!object->user_5 == 64.64) {
     1503            psFree(object);
     1504            exit(EXIT_FAILURE);
     1505        }
     1506        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1507            psFree(object);
     1508            exit(EXIT_FAILURE);
     1509        }
     1510        if (!object->fault == -16) {
     1511            psFree(object);
     1512            exit(EXIT_FAILURE);
     1513        }
     1514
     1515        psFree(object);
     1516    }
     1517
     1518    {
     1519        detProcessedExpRow *object;
     1520
     1521        object = detProcessedExpRowAlloc(-64, -64, "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16    );
     1522
     1523        if (!object) {
     1524            exit(EXIT_FAILURE);
     1525        }
     1526
     1527        if (!object->det_id == -64) {
     1528            psFree(object);
     1529            exit(EXIT_FAILURE);
     1530        }
     1531        if (!object->exp_id == -64) {
     1532            psFree(object);
     1533            exit(EXIT_FAILURE);
     1534        }
     1535        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     1536            psFree(object);
     1537            exit(EXIT_FAILURE);
     1538        }
     1539        if (!object->bg == 64.64) {
     1540            psFree(object);
     1541            exit(EXIT_FAILURE);
     1542        }
     1543        if (!object->bg_stdev == 64.64) {
     1544            psFree(object);
     1545            exit(EXIT_FAILURE);
     1546        }
     1547        if (!object->bg_mean_stdev == 64.64) {
     1548            psFree(object);
     1549            exit(EXIT_FAILURE);
     1550        }
     1551        if (!object->fringe_0 == 64.64) {
     1552            psFree(object);
     1553            exit(EXIT_FAILURE);
     1554        }
     1555        if (!object->fringe_1 == 64.64) {
     1556            psFree(object);
     1557            exit(EXIT_FAILURE);
     1558        }
     1559        if (!object->fringe_2 == 64.64) {
     1560            psFree(object);
     1561            exit(EXIT_FAILURE);
     1562        }
     1563        if (!object->user_1 == 64.64) {
     1564            psFree(object);
     1565            exit(EXIT_FAILURE);
     1566        }
     1567        if (!object->user_2 == 64.64) {
     1568            psFree(object);
     1569            exit(EXIT_FAILURE);
     1570        }
     1571        if (!object->user_3 == 64.64) {
     1572            psFree(object);
     1573            exit(EXIT_FAILURE);
     1574        }
     1575        if (!object->user_4 == 64.64) {
     1576            psFree(object);
     1577            exit(EXIT_FAILURE);
     1578        }
     1579        if (!object->user_5 == 64.64) {
     1580            psFree(object);
     1581            exit(EXIT_FAILURE);
     1582        }
     1583        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1584            psFree(object);
     1585            exit(EXIT_FAILURE);
     1586        }
     1587        if (!object->fault == -16) {
     1588            psFree(object);
     1589            exit(EXIT_FAILURE);
     1590        }
     1591
     1592        psFree(object);
     1593    }
     1594
     1595    {
     1596        detStackedImfileRow *object;
     1597
     1598        object = detStackedImfileRowAlloc(-64, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, -16    );
     1599
     1600        if (!object) {
     1601            exit(EXIT_FAILURE);
     1602        }
     1603
     1604        if (!object->det_id == -64) {
     1605            psFree(object);
     1606            exit(EXIT_FAILURE);
     1607        }
     1608        if (!object->iteration == -32) {
    1711609            psFree(object);
    1721610            exit(EXIT_FAILURE);
     
    1761614            exit(EXIT_FAILURE);
    1771615        }
    178 
    179         psFree(object);
    180     }
    181 
    182     {
    183         pzDoneExpRow    *object;
    184 
    185         object = pzDoneExpRowAlloc("a string", "a string", "a string"    );
    186 
    187         if (!object) {
    188             exit(EXIT_FAILURE);
    189         }
    190 
    191         if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    192             psFree(object);
    193             exit(EXIT_FAILURE);
    194         }
    195         if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    196             psFree(object);
    197             exit(EXIT_FAILURE);
    198         }
    199         if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
    200             psFree(object);
    201             exit(EXIT_FAILURE);
    202         }
    203 
    204         psFree(object);
    205     }
    206 
    207     {
    208         pzDoneImfileRow *object;
    209 
    210         object = pzDoneImfileRowAlloc("a string", "a string", "a string", "a string", "a string", "a string"    );
    211 
    212         if (!object) {
    213             exit(EXIT_FAILURE);
    214         }
    215 
    216         if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    217             psFree(object);
    218             exit(EXIT_FAILURE);
    219         }
    220         if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    221             psFree(object);
    222             exit(EXIT_FAILURE);
    223         }
    224         if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
    225             psFree(object);
    226             exit(EXIT_FAILURE);
    227         }
    228         if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
     1616        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     1617            psFree(object);
     1618            exit(EXIT_FAILURE);
     1619        }
     1620        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     1621            psFree(object);
     1622            exit(EXIT_FAILURE);
     1623        }
     1624        if (!object->bg == 64.64) {
     1625            psFree(object);
     1626            exit(EXIT_FAILURE);
     1627        }
     1628        if (!object->bg_stdev == 64.64) {
     1629            psFree(object);
     1630            exit(EXIT_FAILURE);
     1631        }
     1632        if (!object->bg_mean_stdev == 64.64) {
     1633            psFree(object);
     1634            exit(EXIT_FAILURE);
     1635        }
     1636        if (!object->user_1 == 64.64) {
     1637            psFree(object);
     1638            exit(EXIT_FAILURE);
     1639        }
     1640        if (!object->user_2 == 64.64) {
     1641            psFree(object);
     1642            exit(EXIT_FAILURE);
     1643        }
     1644        if (!object->user_3 == 64.64) {
     1645            psFree(object);
     1646            exit(EXIT_FAILURE);
     1647        }
     1648        if (!object->user_4 == 64.64) {
     1649            psFree(object);
     1650            exit(EXIT_FAILURE);
     1651        }
     1652        if (!object->user_5 == 64.64) {
     1653            psFree(object);
     1654            exit(EXIT_FAILURE);
     1655        }
     1656        if (!object->fault == -16) {
     1657            psFree(object);
     1658            exit(EXIT_FAILURE);
     1659        }
     1660
     1661        psFree(object);
     1662    }
     1663
     1664    {
     1665        detNormalizedStatImfileRow *object;
     1666
     1667        object = detNormalizedStatImfileRowAlloc(-64, -32, "a string", 32.32, -16    );
     1668
     1669        if (!object) {
     1670            exit(EXIT_FAILURE);
     1671        }
     1672
     1673        if (!object->det_id == -64) {
     1674            psFree(object);
     1675            exit(EXIT_FAILURE);
     1676        }
     1677        if (!object->iteration == -32) {
    2291678            psFree(object);
    2301679            exit(EXIT_FAILURE);
     
    2341683            exit(EXIT_FAILURE);
    2351684        }
     1685        if (!object->norm == 32.32) {
     1686            psFree(object);
     1687            exit(EXIT_FAILURE);
     1688        }
     1689        if (!object->fault == -16) {
     1690            psFree(object);
     1691            exit(EXIT_FAILURE);
     1692        }
     1693
     1694        psFree(object);
     1695    }
     1696
     1697    {
     1698        detNormalizedImfileRow *object;
     1699
     1700        object = detNormalizedImfileRowAlloc(-64, -32, "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16    );
     1701
     1702        if (!object) {
     1703            exit(EXIT_FAILURE);
     1704        }
     1705
     1706        if (!object->det_id == -64) {
     1707            psFree(object);
     1708            exit(EXIT_FAILURE);
     1709        }
     1710        if (!object->iteration == -32) {
     1711            psFree(object);
     1712            exit(EXIT_FAILURE);
     1713        }
     1714        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     1715            psFree(object);
     1716            exit(EXIT_FAILURE);
     1717        }
    2361718        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    2371719            psFree(object);
    2381720            exit(EXIT_FAILURE);
    2391721        }
    240 
    241         psFree(object);
    242     }
    243 
    244     {
    245         newExpRow       *object;
    246 
    247         object = newExpRowAlloc(-64, "a string", "a string", "a string", "a string", "a string", "a string", "a string"    );
    248 
    249         if (!object) {
    250             exit(EXIT_FAILURE);
    251         }
    252 
     1722        if (!object->bg == 64.64) {
     1723            psFree(object);
     1724            exit(EXIT_FAILURE);
     1725        }
     1726        if (!object->bg_stdev == 64.64) {
     1727            psFree(object);
     1728            exit(EXIT_FAILURE);
     1729        }
     1730        if (!object->bg_mean_stdev == 64.64) {
     1731            psFree(object);
     1732            exit(EXIT_FAILURE);
     1733        }
     1734        if (!object->user_1 == 64.64) {
     1735            psFree(object);
     1736            exit(EXIT_FAILURE);
     1737        }
     1738        if (!object->user_2 == 64.64) {
     1739            psFree(object);
     1740            exit(EXIT_FAILURE);
     1741        }
     1742        if (!object->user_3 == 64.64) {
     1743            psFree(object);
     1744            exit(EXIT_FAILURE);
     1745        }
     1746        if (!object->user_4 == 64.64) {
     1747            psFree(object);
     1748            exit(EXIT_FAILURE);
     1749        }
     1750        if (!object->user_5 == 64.64) {
     1751            psFree(object);
     1752            exit(EXIT_FAILURE);
     1753        }
     1754        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1755            psFree(object);
     1756            exit(EXIT_FAILURE);
     1757        }
     1758        if (!object->fault == -16) {
     1759            psFree(object);
     1760            exit(EXIT_FAILURE);
     1761        }
     1762
     1763        psFree(object);
     1764    }
     1765
     1766    {
     1767        detNormalizedExpRow *object;
     1768
     1769        object = detNormalizedExpRowAlloc(-64, -32, "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16    );
     1770
     1771        if (!object) {
     1772            exit(EXIT_FAILURE);
     1773        }
     1774
     1775        if (!object->det_id == -64) {
     1776            psFree(object);
     1777            exit(EXIT_FAILURE);
     1778        }
     1779        if (!object->iteration == -32) {
     1780            psFree(object);
     1781            exit(EXIT_FAILURE);
     1782        }
     1783        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     1784            psFree(object);
     1785            exit(EXIT_FAILURE);
     1786        }
     1787        if (!object->bg == 64.64) {
     1788            psFree(object);
     1789            exit(EXIT_FAILURE);
     1790        }
     1791        if (!object->bg_stdev == 64.64) {
     1792            psFree(object);
     1793            exit(EXIT_FAILURE);
     1794        }
     1795        if (!object->bg_mean_stdev == 64.64) {
     1796            psFree(object);
     1797            exit(EXIT_FAILURE);
     1798        }
     1799        if (!object->user_1 == 64.64) {
     1800            psFree(object);
     1801            exit(EXIT_FAILURE);
     1802        }
     1803        if (!object->user_2 == 64.64) {
     1804            psFree(object);
     1805            exit(EXIT_FAILURE);
     1806        }
     1807        if (!object->user_3 == 64.64) {
     1808            psFree(object);
     1809            exit(EXIT_FAILURE);
     1810        }
     1811        if (!object->user_4 == 64.64) {
     1812            psFree(object);
     1813            exit(EXIT_FAILURE);
     1814        }
     1815        if (!object->user_5 == 64.64) {
     1816            psFree(object);
     1817            exit(EXIT_FAILURE);
     1818        }
     1819        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1820            psFree(object);
     1821            exit(EXIT_FAILURE);
     1822        }
     1823        if (!object->fault == -16) {
     1824            psFree(object);
     1825            exit(EXIT_FAILURE);
     1826        }
     1827
     1828        psFree(object);
     1829    }
     1830
     1831    {
     1832        detResidImfileRow *object;
     1833
     1834        object = detResidImfileRowAlloc(-64, -32, -64, "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16    );
     1835
     1836        if (!object) {
     1837            exit(EXIT_FAILURE);
     1838        }
     1839
     1840        if (!object->det_id == -64) {
     1841            psFree(object);
     1842            exit(EXIT_FAILURE);
     1843        }
     1844        if (!object->iteration == -32) {
     1845            psFree(object);
     1846            exit(EXIT_FAILURE);
     1847        }
    2531848        if (!object->exp_id == -64) {
    2541849            psFree(object);
    2551850            exit(EXIT_FAILURE);
    2561851        }
    257         if (strncmp(object->tmp_exp_name, "a string", MAX_STRING_LENGTH)) {
    258             psFree(object);
    259             exit(EXIT_FAILURE);
    260         }
    261         if (strncmp(object->tmp_camera, "a string", MAX_STRING_LENGTH)) {
    262             psFree(object);
    263             exit(EXIT_FAILURE);
    264         }
    265         if (strncmp(object->tmp_telescope, "a string", MAX_STRING_LENGTH)) {
    266             psFree(object);
    267             exit(EXIT_FAILURE);
    268         }
    269         if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    270             psFree(object);
    271             exit(EXIT_FAILURE);
    272         }
    273         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    274             psFree(object);
    275             exit(EXIT_FAILURE);
    276         }
    277         if (strncmp(object->workdir_state, "a string", MAX_STRING_LENGTH)) {
    278             psFree(object);
    279             exit(EXIT_FAILURE);
    280         }
    281         if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
    282             psFree(object);
    283             exit(EXIT_FAILURE);
    284         }
    285 
    286         psFree(object);
    287     }
    288 
    289     {
    290         newImfileRow    *object;
    291 
    292         object = newImfileRowAlloc(-64, "a string", "a string"    );
    293 
    294         if (!object) {
    295             exit(EXIT_FAILURE);
    296         }
    297 
     1852        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     1853            psFree(object);
     1854            exit(EXIT_FAILURE);
     1855        }
     1856        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     1857            psFree(object);
     1858            exit(EXIT_FAILURE);
     1859        }
     1860        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     1861            psFree(object);
     1862            exit(EXIT_FAILURE);
     1863        }
     1864        if (!object->bg == 64.64) {
     1865            psFree(object);
     1866            exit(EXIT_FAILURE);
     1867        }
     1868        if (!object->bg_stdev == 64.64) {
     1869            psFree(object);
     1870            exit(EXIT_FAILURE);
     1871        }
     1872        if (!object->bg_mean_stdev == 64.64) {
     1873            psFree(object);
     1874            exit(EXIT_FAILURE);
     1875        }
     1876        if (!object->bin_stdev == 64.64) {
     1877            psFree(object);
     1878            exit(EXIT_FAILURE);
     1879        }
     1880        if (!object->fringe_0 == 64.64) {
     1881            psFree(object);
     1882            exit(EXIT_FAILURE);
     1883        }
     1884        if (!object->fringe_1 == 64.64) {
     1885            psFree(object);
     1886            exit(EXIT_FAILURE);
     1887        }
     1888        if (!object->fringe_2 == 64.64) {
     1889            psFree(object);
     1890            exit(EXIT_FAILURE);
     1891        }
     1892        if (!object->user_1 == 64.64) {
     1893            psFree(object);
     1894            exit(EXIT_FAILURE);
     1895        }
     1896        if (!object->user_2 == 64.64) {
     1897            psFree(object);
     1898            exit(EXIT_FAILURE);
     1899        }
     1900        if (!object->user_3 == 64.64) {
     1901            psFree(object);
     1902            exit(EXIT_FAILURE);
     1903        }
     1904        if (!object->user_4 == 64.64) {
     1905            psFree(object);
     1906            exit(EXIT_FAILURE);
     1907        }
     1908        if (!object->user_5 == 64.64) {
     1909            psFree(object);
     1910            exit(EXIT_FAILURE);
     1911        }
     1912        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1913            psFree(object);
     1914            exit(EXIT_FAILURE);
     1915        }
     1916        if (!object->fault == -16) {
     1917            psFree(object);
     1918            exit(EXIT_FAILURE);
     1919        }
     1920
     1921        psFree(object);
     1922    }
     1923
     1924    {
     1925        detResidExpRow  *object;
     1926
     1927        object = detResidExpRowAlloc(-64, -32, -64, "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", true, -16    );
     1928
     1929        if (!object) {
     1930            exit(EXIT_FAILURE);
     1931        }
     1932
     1933        if (!object->det_id == -64) {
     1934            psFree(object);
     1935            exit(EXIT_FAILURE);
     1936        }
     1937        if (!object->iteration == -32) {
     1938            psFree(object);
     1939            exit(EXIT_FAILURE);
     1940        }
    2981941        if (!object->exp_id == -64) {
    2991942            psFree(object);
    3001943            exit(EXIT_FAILURE);
    3011944        }
    302         if (strncmp(object->tmp_class_id, "a string", MAX_STRING_LENGTH)) {
    303             psFree(object);
    304             exit(EXIT_FAILURE);
    305         }
    306         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    307             psFree(object);
    308             exit(EXIT_FAILURE);
    309         }
    310 
    311         psFree(object);
    312     }
    313 
    314     {
    315         rawExpRow       *object;
    316 
    317         object = rawExpRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", 32.32, -16    );
    318 
    319         if (!object) {
    320             exit(EXIT_FAILURE);
    321         }
    322 
    323         if (!object->exp_id == -64) {
    324             psFree(object);
    325             exit(EXIT_FAILURE);
    326         }
    327         if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    328             psFree(object);
    329             exit(EXIT_FAILURE);
    330         }
    331         if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    332             psFree(object);
    333             exit(EXIT_FAILURE);
    334         }
    335         if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
    336             psFree(object);
    337             exit(EXIT_FAILURE);
    338         }
    339             psFree(object);
    340             exit(EXIT_FAILURE);
    341         }
    342         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    343             psFree(object);
    344             exit(EXIT_FAILURE);
    345         }
    346         if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
    347             psFree(object);
    348             exit(EXIT_FAILURE);
    349         }
    350         if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
    351             psFree(object);
    352             exit(EXIT_FAILURE);
    353         }
    354         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    355             psFree(object);
    356             exit(EXIT_FAILURE);
    357         }
    358         if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
    359             psFree(object);
    360             exit(EXIT_FAILURE);
    361         }
    362         if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
    363             psFree(object);
    364             exit(EXIT_FAILURE);
    365         }
    366         if (!object->airmass == 32.32) {
    367             psFree(object);
    368             exit(EXIT_FAILURE);
    369         }
    370         if (!object->ra == 64.64) {
    371             psFree(object);
    372             exit(EXIT_FAILURE);
    373         }
    374         if (!object->decl == 64.64) {
    375             psFree(object);
    376             exit(EXIT_FAILURE);
    377         }
    378         if (!object->exp_time == 32.32) {
    379             psFree(object);
    380             exit(EXIT_FAILURE);
    381         }
    382         if (!object->sat_pixel_frac == 32.32) {
     1945        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    3831946            psFree(object);
    3841947            exit(EXIT_FAILURE);
     
    3961959            exit(EXIT_FAILURE);
    3971960        }
    398         if (!object->alt == 64.64) {
    399             psFree(object);
    400             exit(EXIT_FAILURE);
    401         }
    402         if (!object->az == 64.64) {
    403             psFree(object);
    404             exit(EXIT_FAILURE);
    405         }
    406         if (!object->ccd_temp == 32.32) {
    407             psFree(object);
    408             exit(EXIT_FAILURE);
    409         }
    410         if (!object->posang == 64.64) {
     1961        if (!object->bin_stdev == 64.64) {
     1962            psFree(object);
     1963            exit(EXIT_FAILURE);
     1964        }
     1965        if (!object->fringe_0 == 64.64) {
     1966            psFree(object);
     1967            exit(EXIT_FAILURE);
     1968        }
     1969        if (!object->fringe_1 == 64.64) {
     1970            psFree(object);
     1971            exit(EXIT_FAILURE);
     1972        }
     1973        if (!object->fringe_2 == 64.64) {
    4111974            psFree(object);
    4121975            exit(EXIT_FAILURE);
     
    4321995            exit(EXIT_FAILURE);
    4331996        }
    434         if (strncmp(object->object, "a string", MAX_STRING_LENGTH)) {
    435             psFree(object);
    436             exit(EXIT_FAILURE);
    437         }
    438         if (!object->solang == 32.32) {
     1997        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1998            psFree(object);
     1999            exit(EXIT_FAILURE);
     2000        }
     2001        if (!object->accept == true) {
    4392002            psFree(object);
    4402003            exit(EXIT_FAILURE);
     
    4492012
    4502013    {
    451         rawImfileRow    *object;
    452 
    453         object = rawImfileRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16    );
    454 
    455         if (!object) {
    456             exit(EXIT_FAILURE);
    457         }
    458 
    459         if (!object->exp_id == -64) {
    460             psFree(object);
    461             exit(EXIT_FAILURE);
    462         }
    463         if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    464             psFree(object);
    465             exit(EXIT_FAILURE);
    466         }
    467         if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    468             psFree(object);
    469             exit(EXIT_FAILURE);
    470         }
    471         if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
    472             psFree(object);
    473             exit(EXIT_FAILURE);
    474         }
    475             psFree(object);
    476             exit(EXIT_FAILURE);
    477         }
    478         if (strncmp(object->tmp_class_id, "a string", MAX_STRING_LENGTH)) {
    479             psFree(object);
    480             exit(EXIT_FAILURE);
    481         }
    482         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    483             psFree(object);
    484             exit(EXIT_FAILURE);
    485         }
    486         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    487             psFree(object);
    488             exit(EXIT_FAILURE);
    489         }
    490         if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
    491             psFree(object);
    492             exit(EXIT_FAILURE);
    493         }
    494         if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
    495             psFree(object);
    496             exit(EXIT_FAILURE);
    497         }
    498         if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
    499             psFree(object);
    500             exit(EXIT_FAILURE);
    501         }
    502         if (!object->airmass == 32.32) {
    503             psFree(object);
    504             exit(EXIT_FAILURE);
    505         }
    506         if (!object->ra == 64.64) {
    507             psFree(object);
    508             exit(EXIT_FAILURE);
    509         }
    510         if (!object->decl == 64.64) {
    511             psFree(object);
    512             exit(EXIT_FAILURE);
    513         }
    514         if (!object->exp_time == 32.32) {
    515             psFree(object);
    516             exit(EXIT_FAILURE);
    517         }
    518         if (!object->sat_pixel_frac == 32.32) {
     2014        detRunSummaryRow *object;
     2015
     2016        object = detRunSummaryRowAlloc(-64, -32, 64.64, 64.64, 64.64, true, -16    );
     2017
     2018        if (!object) {
     2019            exit(EXIT_FAILURE);
     2020        }
     2021
     2022        if (!object->det_id == -64) {
     2023            psFree(object);
     2024            exit(EXIT_FAILURE);
     2025        }
     2026        if (!object->iteration == -32) {
    5192027            psFree(object);
    5202028            exit(EXIT_FAILURE);
     
    5322040            exit(EXIT_FAILURE);
    5332041        }
    534         if (!object->alt == 64.64) {
    535             psFree(object);
    536             exit(EXIT_FAILURE);
    537         }
    538         if (!object->az == 64.64) {
    539             psFree(object);
    540             exit(EXIT_FAILURE);
    541         }
    542         if (!object->ccd_temp == 32.32) {
    543             psFree(object);
    544             exit(EXIT_FAILURE);
    545         }
    546         if (!object->posang == 64.64) {
    547             psFree(object);
    548             exit(EXIT_FAILURE);
    549         }
    550         if (!object->user_1 == 64.64) {
    551             psFree(object);
    552             exit(EXIT_FAILURE);
    553         }
    554         if (!object->user_2 == 64.64) {
    555             psFree(object);
    556             exit(EXIT_FAILURE);
    557         }
    558         if (!object->user_3 == 64.64) {
    559             psFree(object);
    560             exit(EXIT_FAILURE);
    561         }
    562         if (!object->user_4 == 64.64) {
    563             psFree(object);
    564             exit(EXIT_FAILURE);
    565         }
    566         if (!object->user_5 == 64.64) {
    567             psFree(object);
    568             exit(EXIT_FAILURE);
    569         }
    570         if (strncmp(object->object, "a string", MAX_STRING_LENGTH)) {
     2042        if (!object->accept == true) {
    5712043            psFree(object);
    5722044            exit(EXIT_FAILURE);
    5732045        }
    5742046        if (!object->fault == -16) {
    575             psFree(object);
    576             exit(EXIT_FAILURE);
    577         }
    578 
    579         psFree(object);
    580     }
    581 
    582     {
    583         guidePendingExpRow *object;
    584 
    585         object = guidePendingExpRowAlloc(-64, -64, "a string"    );
    586 
    587         if (!object) {
    588             exit(EXIT_FAILURE);
    589         }
    590 
    591         if (!object->guide_id == -64) {
    592             psFree(object);
    593             exit(EXIT_FAILURE);
    594         }
    595         if (!object->exp_id == -64) {
    596             psFree(object);
    597             exit(EXIT_FAILURE);
    598         }
    599         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    600             psFree(object);
    601             exit(EXIT_FAILURE);
    602         }
    603 
    604         psFree(object);
    605     }
    606 
    607     {
    608         chipRunRow      *object;
    609 
    610         object = chipRunRowAlloc(-64, -64, "a string", "a string", "a string", "a string", "a string", "a string", "a string"    );
    611 
    612         if (!object) {
    613             exit(EXIT_FAILURE);
    614         }
    615 
    616         if (!object->chip_id == -64) {
    617             psFree(object);
    618             exit(EXIT_FAILURE);
    619         }
    620         if (!object->exp_id == -64) {
    621             psFree(object);
    622             exit(EXIT_FAILURE);
    623         }
    624         if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    625             psFree(object);
    626             exit(EXIT_FAILURE);
    627         }
    628         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    629             psFree(object);
    630             exit(EXIT_FAILURE);
    631         }
    632         if (strncmp(object->workdir_state, "a string", MAX_STRING_LENGTH)) {
    633             psFree(object);
    634             exit(EXIT_FAILURE);
    635         }
    636         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    637             psFree(object);
    638             exit(EXIT_FAILURE);
    639         }
    640         if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
    641             psFree(object);
    642             exit(EXIT_FAILURE);
    643         }
    644         if (strncmp(object->expgroup, "a string", MAX_STRING_LENGTH)) {
    645             psFree(object);
    646             exit(EXIT_FAILURE);
    647         }
    648         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    649             psFree(object);
    650             exit(EXIT_FAILURE);
    651         }
    652 
    653         psFree(object);
    654     }
    655 
    656     {
    657         chipProcessedImfileRow *object;
    658 
    659         object = chipProcessedImfileRowAlloc(-64, -64, "a string", "a string", 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, -32, -32, -32, -32, "a string", -16    );
    660 
    661         if (!object) {
    662             exit(EXIT_FAILURE);
    663         }
    664 
    665         if (!object->chip_id == -64) {
    666             psFree(object);
    667             exit(EXIT_FAILURE);
    668         }
    669         if (!object->exp_id == -64) {
    670             psFree(object);
    671             exit(EXIT_FAILURE);
    672         }
    673         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    674             psFree(object);
    675             exit(EXIT_FAILURE);
    676         }
    677         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    678             psFree(object);
    679             exit(EXIT_FAILURE);
    680         }
    681         if (!object->bg == 32.32) {
    682             psFree(object);
    683             exit(EXIT_FAILURE);
    684         }
    685         if (!object->bg_stdev == 32.32) {
    686             psFree(object);
    687             exit(EXIT_FAILURE);
    688         }
    689         if (!object->bg_mean_stdev == 32.32) {
    690             psFree(object);
    691             exit(EXIT_FAILURE);
    692         }
    693         if (!object->bias == 32.32) {
    694             psFree(object);
    695             exit(EXIT_FAILURE);
    696         }
    697         if (!object->bias_stdev == 32.32) {
    698             psFree(object);
    699             exit(EXIT_FAILURE);
    700         }
    701         if (!object->fringe_0 == 32.32) {
    702             psFree(object);
    703             exit(EXIT_FAILURE);
    704         }
    705         if (!object->fringe_1 == 32.32) {
    706             psFree(object);
    707             exit(EXIT_FAILURE);
    708         }
    709         if (!object->fringe_2 == 32.32) {
    710             psFree(object);
    711             exit(EXIT_FAILURE);
    712         }
    713         if (!object->sigma_ra == 32.32) {
    714             psFree(object);
    715             exit(EXIT_FAILURE);
    716         }
    717         if (!object->sigma_dec == 32.32) {
    718             psFree(object);
    719             exit(EXIT_FAILURE);
    720         }
    721         if (!object->ap_resid == 32.32) {
    722             psFree(object);
    723             exit(EXIT_FAILURE);
    724         }
    725         if (!object->ap_resid_stdev == 32.32) {
    726             psFree(object);
    727             exit(EXIT_FAILURE);
    728         }
    729         if (!object->fwhm == 32.32) {
    730             psFree(object);
    731             exit(EXIT_FAILURE);
    732         }
    733         if (!object->fwhm_range == 32.32) {
    734             psFree(object);
    735             exit(EXIT_FAILURE);
    736         }
    737         if (!object->n_stars == -32) {
    738             psFree(object);
    739             exit(EXIT_FAILURE);
    740         }
    741         if (!object->n_extended == -32) {
    742             psFree(object);
    743             exit(EXIT_FAILURE);
    744         }
    745         if (!object->n_cr == -32) {
    746             psFree(object);
    747             exit(EXIT_FAILURE);
    748         }
    749         if (!object->n_astrom == -32) {
    750             psFree(object);
    751             exit(EXIT_FAILURE);
    752         }
    753         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    754             psFree(object);
    755             exit(EXIT_FAILURE);
    756         }
    757         if (!object->fault == -16) {
    758             psFree(object);
    759             exit(EXIT_FAILURE);
    760         }
    761 
    762         psFree(object);
    763     }
    764 
    765     {
    766         chipMaskRow     *object;
    767 
    768         object = chipMaskRowAlloc("a string"    );
    769 
    770         if (!object) {
    771             exit(EXIT_FAILURE);
    772         }
    773 
    774         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    775             psFree(object);
    776             exit(EXIT_FAILURE);
    777         }
    778 
    779         psFree(object);
    780     }
    781 
    782     {
    783         camRunRow       *object;
    784 
    785         object = camRunRowAlloc(-64, -64, "a string", "a string", "a string", "a string", "a string", "a string", "a string"    );
    786 
    787         if (!object) {
    788             exit(EXIT_FAILURE);
    789         }
    790 
    791         if (!object->cam_id == -64) {
    792             psFree(object);
    793             exit(EXIT_FAILURE);
    794         }
    795         if (!object->chip_id == -64) {
    796             psFree(object);
    797             exit(EXIT_FAILURE);
    798         }
    799         if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    800             psFree(object);
    801             exit(EXIT_FAILURE);
    802         }
    803         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    804             psFree(object);
    805             exit(EXIT_FAILURE);
    806         }
    807         if (strncmp(object->workdir_state, "a string", MAX_STRING_LENGTH)) {
    808             psFree(object);
    809             exit(EXIT_FAILURE);
    810         }
    811         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    812             psFree(object);
    813             exit(EXIT_FAILURE);
    814         }
    815         if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
    816             psFree(object);
    817             exit(EXIT_FAILURE);
    818         }
    819         if (strncmp(object->expgroup, "a string", MAX_STRING_LENGTH)) {
    820             psFree(object);
    821             exit(EXIT_FAILURE);
    822         }
    823         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    824             psFree(object);
    825             exit(EXIT_FAILURE);
    826         }
    827 
    828         psFree(object);
    829     }
    830 
    831     {
    832         camProcessedExpRow *object;
    833 
    834         object = camProcessedExpRowAlloc(-64, -64, "a string", 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, -32, -32, -32, -32, "a string", -16    );
    835 
    836         if (!object) {
    837             exit(EXIT_FAILURE);
    838         }
    839 
    840         if (!object->cam_id == -64) {
    841             psFree(object);
    842             exit(EXIT_FAILURE);
    843         }
    844         if (!object->chip_id == -64) {
    845             psFree(object);
    846             exit(EXIT_FAILURE);
    847         }
    848         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    849             psFree(object);
    850             exit(EXIT_FAILURE);
    851         }
    852         if (!object->bg == 32.32) {
    853             psFree(object);
    854             exit(EXIT_FAILURE);
    855         }
    856         if (!object->bg_stdev == 32.32) {
    857             psFree(object);
    858             exit(EXIT_FAILURE);
    859         }
    860         if (!object->bg_mean_stdev == 32.32) {
    861             psFree(object);
    862             exit(EXIT_FAILURE);
    863         }
    864         if (!object->sigma_ra == 32.32) {
    865             psFree(object);
    866             exit(EXIT_FAILURE);
    867         }
    868         if (!object->sigma_dec == 32.32) {
    869             psFree(object);
    870             exit(EXIT_FAILURE);
    871         }
    872         if (!object->zp_mean == 32.32) {
    873             psFree(object);
    874             exit(EXIT_FAILURE);
    875         }
    876         if (!object->zp_stdev == 32.32) {
    877             psFree(object);
    878             exit(EXIT_FAILURE);
    879         }
    880         if (!object->fwhm == 32.32) {
    881             psFree(object);
    882             exit(EXIT_FAILURE);
    883         }
    884         if (!object->fwhm_range == 32.32) {
    885             psFree(object);
    886             exit(EXIT_FAILURE);
    887         }
    888         if (!object->n_stars == -32) {
    889             psFree(object);
    890             exit(EXIT_FAILURE);
    891         }
    892         if (!object->n_extended == -32) {
    893             psFree(object);
    894             exit(EXIT_FAILURE);
    895         }
    896         if (!object->n_cr == -32) {
    897             psFree(object);
    898             exit(EXIT_FAILURE);
    899         }
    900         if (!object->n_astrom == -32) {
    901             psFree(object);
    902             exit(EXIT_FAILURE);
    903         }
    904         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    905             psFree(object);
    906             exit(EXIT_FAILURE);
    907         }
    908         if (!object->fault == -16) {
    909             psFree(object);
    910             exit(EXIT_FAILURE);
    911         }
    912 
    913         psFree(object);
    914     }
    915 
    916     {
    917         camMaskRow      *object;
    918 
    919         object = camMaskRowAlloc("a string"    );
    920 
    921         if (!object) {
    922             exit(EXIT_FAILURE);
    923         }
    924 
    925         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    926             psFree(object);
    927             exit(EXIT_FAILURE);
    928         }
    929 
    930         psFree(object);
    931     }
    932 
    933     {
    934         warpRunRow      *object;
    935 
    936         object = warpRunRowAlloc(-64, "a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z"    );
    937 
    938         if (!object) {
    939             exit(EXIT_FAILURE);
    940         }
    941 
    942         if (!object->warp_id == -64) {
    943             psFree(object);
    944             exit(EXIT_FAILURE);
    945         }
    946         if (strncmp(object->mode, "a string", MAX_STRING_LENGTH)) {
    947             psFree(object);
    948             exit(EXIT_FAILURE);
    949         }
    950         if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    951             psFree(object);
    952             exit(EXIT_FAILURE);
    953         }
    954         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    955             psFree(object);
    956             exit(EXIT_FAILURE);
    957         }
    958         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    959             psFree(object);
    960             exit(EXIT_FAILURE);
    961         }
    962             psFree(object);
    963             exit(EXIT_FAILURE);
    964         }
    965 
    966         psFree(object);
    967     }
    968 
    969     {
    970         warpInputExpRow *object;
    971 
    972         object = warpInputExpRowAlloc(-64, -64, true    );
    973 
    974         if (!object) {
    975             exit(EXIT_FAILURE);
    976         }
    977 
    978         if (!object->warp_id == -64) {
    979             psFree(object);
    980             exit(EXIT_FAILURE);
    981         }
    982         if (!object->cam_id == -64) {
    983             psFree(object);
    984             exit(EXIT_FAILURE);
    985         }
    986         if (!object->magiced == true) {
    987             psFree(object);
    988             exit(EXIT_FAILURE);
    989         }
    990 
    991         psFree(object);
    992     }
    993 
    994     {
    995         warpSkyCellMapRow *object;
    996 
    997         object = warpSkyCellMapRowAlloc(-64, "a string", "a string", -64, "a string", -16    );
    998 
    999         if (!object) {
    1000             exit(EXIT_FAILURE);
    1001         }
    1002 
    1003         if (!object->warp_id == -64) {
    1004             psFree(object);
    1005             exit(EXIT_FAILURE);
    1006         }
    1007         if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
    1008             psFree(object);
    1009             exit(EXIT_FAILURE);
    1010         }
    1011         if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
    1012             psFree(object);
    1013             exit(EXIT_FAILURE);
    1014         }
    1015         if (!object->cam_id == -64) {
    1016             psFree(object);
    1017             exit(EXIT_FAILURE);
    1018         }
    1019         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    1020             psFree(object);
    1021             exit(EXIT_FAILURE);
    1022         }
    1023         if (!object->fault == -16) {
    1024             psFree(object);
    1025             exit(EXIT_FAILURE);
    1026         }
    1027 
    1028         psFree(object);
    1029     }
    1030 
    1031     {
    1032         warpSkyfileRow  *object;
    1033 
    1034         object = warpSkyfileRowAlloc(-64, "a string", "a string", "a string", "a string", 64.64, 64.64, 64.64, -16    );
    1035 
    1036         if (!object) {
    1037             exit(EXIT_FAILURE);
    1038         }
    1039 
    1040         if (!object->warp_id == -64) {
    1041             psFree(object);
    1042             exit(EXIT_FAILURE);
    1043         }
    1044         if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
    1045             psFree(object);
    1046             exit(EXIT_FAILURE);
    1047         }
    1048         if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
    1049             psFree(object);
    1050             exit(EXIT_FAILURE);
    1051         }
    1052         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    1053             psFree(object);
    1054             exit(EXIT_FAILURE);
    1055         }
    1056         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    1057             psFree(object);
    1058             exit(EXIT_FAILURE);
    1059         }
    1060         if (!object->bg == 64.64) {
    1061             psFree(object);
    1062             exit(EXIT_FAILURE);
    1063         }
    1064         if (!object->bg_stdev == 64.64) {
    1065             psFree(object);
    1066             exit(EXIT_FAILURE);
    1067         }
    1068         if (!object->pixel_fill == 64.64) {
    1069             psFree(object);
    1070             exit(EXIT_FAILURE);
    1071         }
    1072         if (!object->fault == -16) {
    1073             psFree(object);
    1074             exit(EXIT_FAILURE);
    1075         }
    1076 
    1077         psFree(object);
    1078     }
    1079 
    1080     {
    1081         diffRunRow      *object;
    1082 
    1083         object = diffRunRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string"    );
    1084 
    1085         if (!object) {
    1086             exit(EXIT_FAILURE);
    1087         }
    1088 
    1089         if (!object->diff_id == -64) {
    1090             psFree(object);
    1091             exit(EXIT_FAILURE);
    1092         }
    1093         if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    1094             psFree(object);
    1095             exit(EXIT_FAILURE);
    1096         }
    1097         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    1098             psFree(object);
    1099             exit(EXIT_FAILURE);
    1100         }
    1101         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    1102             psFree(object);
    1103             exit(EXIT_FAILURE);
    1104         }
    1105             psFree(object);
    1106             exit(EXIT_FAILURE);
    1107         }
    1108         if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
    1109             psFree(object);
    1110             exit(EXIT_FAILURE);
    1111         }
    1112         if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
    1113             psFree(object);
    1114             exit(EXIT_FAILURE);
    1115         }
    1116 
    1117         psFree(object);
    1118     }
    1119 
    1120     {
    1121         diffInputSkyfileRow *object;
    1122 
    1123         object = diffInputSkyfileRowAlloc(-64, true, -64, -64, "a string", "a string", "a string"    );
    1124 
    1125         if (!object) {
    1126             exit(EXIT_FAILURE);
    1127         }
    1128 
    1129         if (!object->diff_id == -64) {
    1130             psFree(object);
    1131             exit(EXIT_FAILURE);
    1132         }
    1133         if (!object->template == true) {
    1134             psFree(object);
    1135             exit(EXIT_FAILURE);
    1136         }
    1137         if (!object->stack_id == -64) {
    1138             psFree(object);
    1139             exit(EXIT_FAILURE);
    1140         }
    1141         if (!object->warp_id == -64) {
    1142             psFree(object);
    1143             exit(EXIT_FAILURE);
    1144         }
    1145         if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
    1146             psFree(object);
    1147             exit(EXIT_FAILURE);
    1148         }
    1149         if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
    1150             psFree(object);
    1151             exit(EXIT_FAILURE);
    1152         }
    1153         if (strncmp(object->kind, "a string", MAX_STRING_LENGTH)) {
    1154             psFree(object);
    1155             exit(EXIT_FAILURE);
    1156         }
    1157 
    1158         psFree(object);
    1159     }
    1160 
    1161     {
    1162         diffSkyfileRow  *object;
    1163 
    1164         object = diffSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64, -16    );
    1165 
    1166         if (!object) {
    1167             exit(EXIT_FAILURE);
    1168         }
    1169 
    1170         if (!object->diff_id == -64) {
    1171             psFree(object);
    1172             exit(EXIT_FAILURE);
    1173         }
    1174         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    1175             psFree(object);
    1176             exit(EXIT_FAILURE);
    1177         }
    1178         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    1179             psFree(object);
    1180             exit(EXIT_FAILURE);
    1181         }
    1182         if (!object->bg == 64.64) {
    1183             psFree(object);
    1184             exit(EXIT_FAILURE);
    1185         }
    1186         if (!object->bg_stdev == 64.64) {
    1187             psFree(object);
    1188             exit(EXIT_FAILURE);
    1189         }
    1190         if (!object->fault == -16) {
    1191             psFree(object);
    1192             exit(EXIT_FAILURE);
    1193         }
    1194 
    1195         psFree(object);
    1196     }
    1197 
    1198     {
    1199         stackRunRow     *object;
    1200 
    1201         object = stackRunRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string"    );
    1202 
    1203         if (!object) {
    1204             exit(EXIT_FAILURE);
    1205         }
    1206 
    1207         if (!object->stack_id == -64) {
    1208             psFree(object);
    1209             exit(EXIT_FAILURE);
    1210         }
    1211         if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    1212             psFree(object);
    1213             exit(EXIT_FAILURE);
    1214         }
    1215         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    1216             psFree(object);
    1217             exit(EXIT_FAILURE);
    1218         }
    1219         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    1220             psFree(object);
    1221             exit(EXIT_FAILURE);
    1222         }
    1223             psFree(object);
    1224             exit(EXIT_FAILURE);
    1225         }
    1226         if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
    1227             psFree(object);
    1228             exit(EXIT_FAILURE);
    1229         }
    1230         if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
    1231             psFree(object);
    1232             exit(EXIT_FAILURE);
    1233         }
    1234 
    1235         psFree(object);
    1236     }
    1237 
    1238     {
    1239         stackInputSkyfileRow *object;
    1240 
    1241         object = stackInputSkyfileRowAlloc(-64, -64    );
    1242 
    1243         if (!object) {
    1244             exit(EXIT_FAILURE);
    1245         }
    1246 
    1247         if (!object->stack_id == -64) {
    1248             psFree(object);
    1249             exit(EXIT_FAILURE);
    1250         }
    1251         if (!object->warp_id == -64) {
    1252             psFree(object);
    1253             exit(EXIT_FAILURE);
    1254         }
    1255 
    1256         psFree(object);
    1257     }
    1258 
    1259     {
    1260         stackSumSkyfileRow *object;
    1261 
    1262         object = stackSumSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64, -16    );
    1263 
    1264         if (!object) {
    1265             exit(EXIT_FAILURE);
    1266         }
    1267 
    1268         if (!object->stack_id == -64) {
    1269             psFree(object);
    1270             exit(EXIT_FAILURE);
    1271         }
    1272         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    1273             psFree(object);
    1274             exit(EXIT_FAILURE);
    1275         }
    1276         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    1277             psFree(object);
    1278             exit(EXIT_FAILURE);
    1279         }
    1280         if (!object->bg == 64.64) {
    1281             psFree(object);
    1282             exit(EXIT_FAILURE);
    1283         }
    1284         if (!object->bg_stdev == 64.64) {
    1285             psFree(object);
    1286             exit(EXIT_FAILURE);
    1287         }
    1288         if (!object->fault == -16) {
    1289             psFree(object);
    1290             exit(EXIT_FAILURE);
    1291         }
    1292 
    1293         psFree(object);
    1294     }
    1295 
    1296     {
    1297         detRunRow       *object;
    1298 
    1299         object = detRunRowAlloc(-64, -32, "a string", "a string", "a string", "a string", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 64.64, 64.64, "0001-01-01T00:00:00Z", "0001-01-01T00:00:00Z", "0001-01-01T00:00:00Z", "0001-01-01T00:00:00Z", "0001-01-01T00:00:00Z", 32.32, 32.32, "a string", -32    );
    1300 
    1301         if (!object) {
    1302             exit(EXIT_FAILURE);
    1303         }
    1304 
    1305         if (!object->det_id == -64) {
    1306             psFree(object);
    1307             exit(EXIT_FAILURE);
    1308         }
    1309         if (!object->iteration == -32) {
    1310             psFree(object);
    1311             exit(EXIT_FAILURE);
    1312         }
    1313         if (strncmp(object->det_type, "a string", MAX_STRING_LENGTH)) {
    1314             psFree(object);
    1315             exit(EXIT_FAILURE);
    1316         }
    1317         if (strncmp(object->mode, "a string", MAX_STRING_LENGTH)) {
    1318             psFree(object);
    1319             exit(EXIT_FAILURE);
    1320         }
    1321         if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    1322             psFree(object);
    1323             exit(EXIT_FAILURE);
    1324         }
    1325         if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
    1326             psFree(object);
    1327             exit(EXIT_FAILURE);
    1328         }
    1329         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    1330             psFree(object);
    1331             exit(EXIT_FAILURE);
    1332         }
    1333         if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    1334             psFree(object);
    1335             exit(EXIT_FAILURE);
    1336         }
    1337         if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
    1338             psFree(object);
    1339             exit(EXIT_FAILURE);
    1340         }
    1341         if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
    1342             psFree(object);
    1343             exit(EXIT_FAILURE);
    1344         }
    1345         if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
    1346             psFree(object);
    1347             exit(EXIT_FAILURE);
    1348         }
    1349         if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
    1350             psFree(object);
    1351             exit(EXIT_FAILURE);
    1352         }
    1353         if (!object->airmass_min == 32.32) {
    1354             psFree(object);
    1355             exit(EXIT_FAILURE);
    1356         }
    1357         if (!object->airmass_max == 32.32) {
    1358             psFree(object);
    1359             exit(EXIT_FAILURE);
    1360         }
    1361         if (!object->exp_time_min == 32.32) {
    1362             psFree(object);
    1363             exit(EXIT_FAILURE);
    1364         }
    1365         if (!object->exp_time_max == 32.32) {
    1366             psFree(object);
    1367             exit(EXIT_FAILURE);
    1368         }
    1369         if (!object->ccd_temp_min == 32.32) {
    1370             psFree(object);
    1371             exit(EXIT_FAILURE);
    1372         }
    1373         if (!object->ccd_temp_max == 32.32) {
    1374             psFree(object);
    1375             exit(EXIT_FAILURE);
    1376         }
    1377         if (!object->posang_min == 64.64) {
    1378             psFree(object);
    1379             exit(EXIT_FAILURE);
    1380         }
    1381         if (!object->posang_max == 64.64) {
    1382             psFree(object);
    1383             exit(EXIT_FAILURE);
    1384         }
    1385             psFree(object);
    1386             exit(EXIT_FAILURE);
    1387         }
    1388             psFree(object);
    1389             exit(EXIT_FAILURE);
    1390         }
    1391             psFree(object);
    1392             exit(EXIT_FAILURE);
    1393         }
    1394             psFree(object);
    1395             exit(EXIT_FAILURE);
    1396         }
    1397             psFree(object);
    1398             exit(EXIT_FAILURE);
    1399         }
    1400         if (!object->solang_min == 32.32) {
    1401             psFree(object);
    1402             exit(EXIT_FAILURE);
    1403         }
    1404         if (!object->solang_max == 32.32) {
    1405             psFree(object);
    1406             exit(EXIT_FAILURE);
    1407         }
    1408         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    1409             psFree(object);
    1410             exit(EXIT_FAILURE);
    1411         }
    1412         if (!object->parent == -32) {
    1413             psFree(object);
    1414             exit(EXIT_FAILURE);
    1415         }
    1416 
    1417         psFree(object);
    1418     }
    1419 
    1420     {
    1421         detInputExpRow  *object;
    1422 
    1423         object = detInputExpRowAlloc(-64, -32, -64, true    );
    1424 
    1425         if (!object) {
    1426             exit(EXIT_FAILURE);
    1427         }
    1428 
    1429         if (!object->det_id == -64) {
    1430             psFree(object);
    1431             exit(EXIT_FAILURE);
    1432         }
    1433         if (!object->iteration == -32) {
    1434             psFree(object);
    1435             exit(EXIT_FAILURE);
    1436         }
    1437         if (!object->exp_id == -64) {
    1438             psFree(object);
    1439             exit(EXIT_FAILURE);
    1440         }
    1441         if (!object->include == true) {
    1442             psFree(object);
    1443             exit(EXIT_FAILURE);
    1444         }
    1445 
    1446         psFree(object);
    1447     }
    1448 
    1449     {
    1450         detProcessedImfileRow *object;
    1451 
    1452         object = detProcessedImfileRowAlloc(-64, -64, "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16    );
    1453 
    1454         if (!object) {
    1455             exit(EXIT_FAILURE);
    1456         }
    1457 
    1458         if (!object->det_id == -64) {
    1459             psFree(object);
    1460             exit(EXIT_FAILURE);
    1461         }
    1462         if (!object->exp_id == -64) {
    1463             psFree(object);
    1464             exit(EXIT_FAILURE);
    1465         }
    1466         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    1467             psFree(object);
    1468             exit(EXIT_FAILURE);
    1469         }
    1470         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    1471             psFree(object);
    1472             exit(EXIT_FAILURE);
    1473         }
    1474         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    1475             psFree(object);
    1476             exit(EXIT_FAILURE);
    1477         }
    1478         if (!object->bg == 64.64) {
    1479             psFree(object);
    1480             exit(EXIT_FAILURE);
    1481         }
    1482         if (!object->bg_stdev == 64.64) {
    1483             psFree(object);
    1484             exit(EXIT_FAILURE);
    1485         }
    1486         if (!object->bg_mean_stdev == 64.64) {
    1487             psFree(object);
    1488             exit(EXIT_FAILURE);
    1489         }
    1490         if (!object->fringe_0 == 64.64) {
    1491             psFree(object);
    1492             exit(EXIT_FAILURE);
    1493         }
    1494         if (!object->fringe_1 == 64.64) {
    1495             psFree(object);
    1496             exit(EXIT_FAILURE);
    1497         }
    1498         if (!object->fringe_2 == 64.64) {
    1499             psFree(object);
    1500             exit(EXIT_FAILURE);
    1501         }
    1502         if (!object->user_1 == 64.64) {
    1503             psFree(object);
    1504             exit(EXIT_FAILURE);
    1505         }
    1506         if (!object->user_2 == 64.64) {
    1507             psFree(object);
    1508             exit(EXIT_FAILURE);
    1509         }
    1510         if (!object->user_3 == 64.64) {
    1511             psFree(object);
    1512             exit(EXIT_FAILURE);
    1513         }
    1514         if (!object->user_4 == 64.64) {
    1515             psFree(object);
    1516             exit(EXIT_FAILURE);
    1517         }
    1518         if (!object->user_5 == 64.64) {
    1519             psFree(object);
    1520             exit(EXIT_FAILURE);
    1521         }
    1522         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    1523             psFree(object);
    1524             exit(EXIT_FAILURE);
    1525         }
    1526         if (!object->fault == -16) {
    1527             psFree(object);
    1528             exit(EXIT_FAILURE);
    1529         }
    1530 
    1531         psFree(object);
    1532     }
    1533 
    1534     {
    1535         detProcessedExpRow *object;
    1536 
    1537         object = detProcessedExpRowAlloc(-64, -64, "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16    );
    1538 
    1539         if (!object) {
    1540             exit(EXIT_FAILURE);
    1541         }
    1542 
    1543         if (!object->det_id == -64) {
    1544             psFree(object);
    1545             exit(EXIT_FAILURE);
    1546         }
    1547         if (!object->exp_id == -64) {
    1548             psFree(object);
    1549             exit(EXIT_FAILURE);
    1550         }
    1551         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    1552             psFree(object);
    1553             exit(EXIT_FAILURE);
    1554         }
    1555         if (!object->bg == 64.64) {
    1556             psFree(object);
    1557             exit(EXIT_FAILURE);
    1558         }
    1559         if (!object->bg_stdev == 64.64) {
    1560             psFree(object);
    1561             exit(EXIT_FAILURE);
    1562         }
    1563         if (!object->bg_mean_stdev == 64.64) {
    1564             psFree(object);
    1565             exit(EXIT_FAILURE);
    1566         }
    1567         if (!object->fringe_0 == 64.64) {
    1568             psFree(object);
    1569             exit(EXIT_FAILURE);
    1570         }
    1571         if (!object->fringe_1 == 64.64) {
    1572             psFree(object);
    1573             exit(EXIT_FAILURE);
    1574         }
    1575         if (!object->fringe_2 == 64.64) {
    1576             psFree(object);
    1577             exit(EXIT_FAILURE);
    1578         }
    1579         if (!object->user_1 == 64.64) {
    1580             psFree(object);
    1581             exit(EXIT_FAILURE);
    1582         }
    1583         if (!object->user_2 == 64.64) {
    1584             psFree(object);
    1585             exit(EXIT_FAILURE);
    1586         }
    1587         if (!object->user_3 == 64.64) {
    1588             psFree(object);
    1589             exit(EXIT_FAILURE);
    1590         }
    1591         if (!object->user_4 == 64.64) {
    1592             psFree(object);
    1593             exit(EXIT_FAILURE);
    1594         }
    1595         if (!object->user_5 == 64.64) {
    1596             psFree(object);
    1597             exit(EXIT_FAILURE);
    1598         }
    1599         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    1600             psFree(object);
    1601             exit(EXIT_FAILURE);
    1602         }
    1603         if (!object->fault == -16) {
    1604             psFree(object);
    1605             exit(EXIT_FAILURE);
    1606         }
    1607 
    1608         psFree(object);
    1609     }
    1610 
    1611     {
    1612         detStackedImfileRow *object;
    1613 
    1614         object = detStackedImfileRowAlloc(-64, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, -16    );
    1615 
    1616         if (!object) {
    1617             exit(EXIT_FAILURE);
    1618         }
    1619 
    1620         if (!object->det_id == -64) {
    1621             psFree(object);
    1622             exit(EXIT_FAILURE);
    1623         }
    1624         if (!object->iteration == -32) {
    1625             psFree(object);
    1626             exit(EXIT_FAILURE);
    1627         }
    1628         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    1629             psFree(object);
    1630             exit(EXIT_FAILURE);
    1631         }
    1632         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    1633             psFree(object);
    1634             exit(EXIT_FAILURE);
    1635         }
    1636         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    1637             psFree(object);
    1638             exit(EXIT_FAILURE);
    1639         }
    1640         if (!object->bg == 64.64) {
    1641             psFree(object);
    1642             exit(EXIT_FAILURE);
    1643         }
    1644         if (!object->bg_stdev == 64.64) {
    1645             psFree(object);
    1646             exit(EXIT_FAILURE);
    1647         }
    1648         if (!object->bg_mean_stdev == 64.64) {
    1649             psFree(object);
    1650             exit(EXIT_FAILURE);
    1651         }
    1652         if (!object->user_1 == 64.64) {
    1653             psFree(object);
    1654             exit(EXIT_FAILURE);
    1655         }
    1656         if (!object->user_2 == 64.64) {
    1657             psFree(object);
    1658             exit(EXIT_FAILURE);
    1659         }
    1660         if (!object->user_3 == 64.64) {
    1661             psFree(object);
    1662             exit(EXIT_FAILURE);
    1663         }
    1664         if (!object->user_4 == 64.64) {
    1665             psFree(object);
    1666             exit(EXIT_FAILURE);
    1667         }
    1668         if (!object->user_5 == 64.64) {
    1669             psFree(object);
    1670             exit(EXIT_FAILURE);
    1671         }
    1672         if (!object->fault == -16) {
    1673             psFree(object);
    1674             exit(EXIT_FAILURE);
    1675         }
    1676 
    1677         psFree(object);
    1678     }
    1679 
    1680     {
    1681         detNormalizedStatImfileRow *object;
    1682 
    1683         object = detNormalizedStatImfileRowAlloc(-64, -32, "a string", 32.32, -16    );
    1684 
    1685         if (!object) {
    1686             exit(EXIT_FAILURE);
    1687         }
    1688 
    1689         if (!object->det_id == -64) {
    1690             psFree(object);
    1691             exit(EXIT_FAILURE);
    1692         }
    1693         if (!object->iteration == -32) {
    1694             psFree(object);
    1695             exit(EXIT_FAILURE);
    1696         }
    1697         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    1698             psFree(object);
    1699             exit(EXIT_FAILURE);
    1700         }
    1701         if (!object->norm == 32.32) {
    1702             psFree(object);
    1703             exit(EXIT_FAILURE);
    1704         }
    1705         if (!object->fault == -16) {
    1706             psFree(object);
    1707             exit(EXIT_FAILURE);
    1708         }
    1709 
    1710         psFree(object);
    1711     }
    1712 
    1713     {
    1714         detNormalizedImfileRow *object;
    1715 
    1716         object = detNormalizedImfileRowAlloc(-64, -32, "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16    );
    1717 
    1718         if (!object) {
    1719             exit(EXIT_FAILURE);
    1720         }
    1721 
    1722         if (!object->det_id == -64) {
    1723             psFree(object);
    1724             exit(EXIT_FAILURE);
    1725         }
    1726         if (!object->iteration == -32) {
    1727             psFree(object);
    1728             exit(EXIT_FAILURE);
    1729         }
    1730         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    1731             psFree(object);
    1732             exit(EXIT_FAILURE);
    1733         }
    1734         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    1735             psFree(object);
    1736             exit(EXIT_FAILURE);
    1737         }
    1738         if (!object->bg == 64.64) {
    1739             psFree(object);
    1740             exit(EXIT_FAILURE);
    1741         }
    1742         if (!object->bg_stdev == 64.64) {
    1743             psFree(object);
    1744             exit(EXIT_FAILURE);
    1745         }
    1746         if (!object->bg_mean_stdev == 64.64) {
    1747             psFree(object);
    1748             exit(EXIT_FAILURE);
    1749         }
    1750         if (!object->user_1 == 64.64) {
    1751             psFree(object);
    1752             exit(EXIT_FAILURE);
    1753         }
    1754         if (!object->user_2 == 64.64) {
    1755             psFree(object);
    1756             exit(EXIT_FAILURE);
    1757         }
    1758         if (!object->user_3 == 64.64) {
    1759             psFree(object);
    1760             exit(EXIT_FAILURE);
    1761         }
    1762         if (!object->user_4 == 64.64) {
    1763             psFree(object);
    1764             exit(EXIT_FAILURE);
    1765         }
    1766         if (!object->user_5 == 64.64) {
    1767             psFree(object);
    1768             exit(EXIT_FAILURE);
    1769         }
    1770         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    1771             psFree(object);
    1772             exit(EXIT_FAILURE);
    1773         }
    1774         if (!object->fault == -16) {
    1775             psFree(object);
    1776             exit(EXIT_FAILURE);
    1777         }
    1778 
    1779         psFree(object);
    1780     }
    1781 
    1782     {
    1783         detNormalizedExpRow *object;
    1784 
    1785         object = detNormalizedExpRowAlloc(-64, -32, "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16    );
    1786 
    1787         if (!object) {
    1788             exit(EXIT_FAILURE);
    1789         }
    1790 
    1791         if (!object->det_id == -64) {
    1792             psFree(object);
    1793             exit(EXIT_FAILURE);
    1794         }
    1795         if (!object->iteration == -32) {
    1796             psFree(object);
    1797             exit(EXIT_FAILURE);
    1798         }
    1799         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    1800             psFree(object);
    1801             exit(EXIT_FAILURE);
    1802         }
    1803         if (!object->bg == 64.64) {
    1804             psFree(object);
    1805             exit(EXIT_FAILURE);
    1806         }
    1807         if (!object->bg_stdev == 64.64) {
    1808             psFree(object);
    1809             exit(EXIT_FAILURE);
    1810         }
    1811         if (!object->bg_mean_stdev == 64.64) {
    1812             psFree(object);
    1813             exit(EXIT_FAILURE);
    1814         }
    1815         if (!object->user_1 == 64.64) {
    1816             psFree(object);
    1817             exit(EXIT_FAILURE);
    1818         }
    1819         if (!object->user_2 == 64.64) {
    1820             psFree(object);
    1821             exit(EXIT_FAILURE);
    1822         }
    1823         if (!object->user_3 == 64.64) {
    1824             psFree(object);
    1825             exit(EXIT_FAILURE);
    1826         }
    1827         if (!object->user_4 == 64.64) {
    1828             psFree(object);
    1829             exit(EXIT_FAILURE);
    1830         }
    1831         if (!object->user_5 == 64.64) {
    1832             psFree(object);
    1833             exit(EXIT_FAILURE);
    1834         }
    1835         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    1836             psFree(object);
    1837             exit(EXIT_FAILURE);
    1838         }
    1839         if (!object->fault == -16) {
    1840             psFree(object);
    1841             exit(EXIT_FAILURE);
    1842         }
    1843 
    1844         psFree(object);
    1845     }
    1846 
    1847     {
    1848         detResidImfileRow *object;
    1849 
    1850         object = detResidImfileRowAlloc(-64, -32, -64, "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16    );
    1851 
    1852         if (!object) {
    1853             exit(EXIT_FAILURE);
    1854         }
    1855 
    1856         if (!object->det_id == -64) {
    1857             psFree(object);
    1858             exit(EXIT_FAILURE);
    1859         }
    1860         if (!object->iteration == -32) {
    1861             psFree(object);
    1862             exit(EXIT_FAILURE);
    1863         }
    1864         if (!object->exp_id == -64) {
    1865             psFree(object);
    1866             exit(EXIT_FAILURE);
    1867         }
    1868         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    1869             psFree(object);
    1870             exit(EXIT_FAILURE);
    1871         }
    1872         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    1873             psFree(object);
    1874             exit(EXIT_FAILURE);
    1875         }
    1876         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    1877             psFree(object);
    1878             exit(EXIT_FAILURE);
    1879         }
    1880         if (!object->bg == 64.64) {
    1881             psFree(object);
    1882             exit(EXIT_FAILURE);
    1883         }
    1884         if (!object->bg_stdev == 64.64) {
    1885             psFree(object);
    1886             exit(EXIT_FAILURE);
    1887         }
    1888         if (!object->bg_mean_stdev == 64.64) {
    1889             psFree(object);
    1890             exit(EXIT_FAILURE);
    1891         }
    1892         if (!object->bg_skewness == 64.64) {
    1893             psFree(object);
    1894             exit(EXIT_FAILURE);
    1895         }
    1896         if (!object->bg_kurtosis == 64.64) {
    1897             psFree(object);
    1898             exit(EXIT_FAILURE);
    1899         }
    1900         if (!object->bin_stdev == 64.64) {
    1901             psFree(object);
    1902             exit(EXIT_FAILURE);
    1903         }
    1904         if (!object->fringe_0 == 64.64) {
    1905             psFree(object);
    1906             exit(EXIT_FAILURE);
    1907         }
    1908         if (!object->fringe_1 == 64.64) {
    1909             psFree(object);
    1910             exit(EXIT_FAILURE);
    1911         }
    1912         if (!object->fringe_2 == 64.64) {
    1913             psFree(object);
    1914             exit(EXIT_FAILURE);
    1915         }
    1916         if (!object->fringe_resid_0 == 64.64) {
    1917             psFree(object);
    1918             exit(EXIT_FAILURE);
    1919         }
    1920         if (!object->fringe_resid_1 == 64.64) {
    1921             psFree(object);
    1922             exit(EXIT_FAILURE);
    1923         }
    1924         if (!object->fringe_resid_2 == 64.64) {
    1925             psFree(object);
    1926             exit(EXIT_FAILURE);
    1927         }
    1928         if (!object->user_1 == 64.64) {
    1929             psFree(object);
    1930             exit(EXIT_FAILURE);
    1931         }
    1932         if (!object->user_2 == 64.64) {
    1933             psFree(object);
    1934             exit(EXIT_FAILURE);
    1935         }
    1936         if (!object->user_3 == 64.64) {
    1937             psFree(object);
    1938             exit(EXIT_FAILURE);
    1939         }
    1940         if (!object->user_4 == 64.64) {
    1941             psFree(object);
    1942             exit(EXIT_FAILURE);
    1943         }
    1944         if (!object->user_5 == 64.64) {
    1945             psFree(object);
    1946             exit(EXIT_FAILURE);
    1947         }
    1948         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    1949             psFree(object);
    1950             exit(EXIT_FAILURE);
    1951         }
    1952         if (!object->fault == -16) {
    1953             psFree(object);
    1954             exit(EXIT_FAILURE);
    1955         }
    1956 
    1957         psFree(object);
    1958     }
    1959 
    1960     {
    1961         detResidExpRow  *object;
    1962 
    1963         object = detResidExpRowAlloc(-64, -32, -64, "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", true, -16    );
    1964 
    1965         if (!object) {
    1966             exit(EXIT_FAILURE);
    1967         }
    1968 
    1969         if (!object->det_id == -64) {
    1970             psFree(object);
    1971             exit(EXIT_FAILURE);
    1972         }
    1973         if (!object->iteration == -32) {
    1974             psFree(object);
    1975             exit(EXIT_FAILURE);
    1976         }
    1977         if (!object->exp_id == -64) {
    1978             psFree(object);
    1979             exit(EXIT_FAILURE);
    1980         }
    1981         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    1982             psFree(object);
    1983             exit(EXIT_FAILURE);
    1984         }
    1985         if (!object->bg == 64.64) {
    1986             psFree(object);
    1987             exit(EXIT_FAILURE);
    1988         }
    1989         if (!object->bg_stdev == 64.64) {
    1990             psFree(object);
    1991             exit(EXIT_FAILURE);
    1992         }
    1993         if (!object->bg_mean_stdev == 64.64) {
    1994             psFree(object);
    1995             exit(EXIT_FAILURE);
    1996         }
    1997         if (!object->bg_skewness == 64.64) {
    1998             psFree(object);
    1999             exit(EXIT_FAILURE);
    2000         }
    2001         if (!object->bg_kurtosis == 64.64) {
    2002             psFree(object);
    2003             exit(EXIT_FAILURE);
    2004         }
    2005         if (!object->bin_stdev == 64.64) {
    2006             psFree(object);
    2007             exit(EXIT_FAILURE);
    2008         }
    2009         if (!object->fringe_0 == 64.64) {
    2010             psFree(object);
    2011             exit(EXIT_FAILURE);
    2012         }
    2013         if (!object->fringe_1 == 64.64) {
    2014             psFree(object);
    2015             exit(EXIT_FAILURE);
    2016         }
    2017         if (!object->fringe_2 == 64.64) {
    2018             psFree(object);
    2019             exit(EXIT_FAILURE);
    2020         }
    2021         if (!object->fringe_resid_0 == 64.64) {
    2022             psFree(object);
    2023             exit(EXIT_FAILURE);
    2024         }
    2025         if (!object->fringe_resid_1 == 64.64) {
    2026             psFree(object);
    2027             exit(EXIT_FAILURE);
    2028         }
    2029         if (!object->fringe_resid_2 == 64.64) {
    2030             psFree(object);
    2031             exit(EXIT_FAILURE);
    2032         }
    2033         if (!object->user_1 == 64.64) {
    2034             psFree(object);
    2035             exit(EXIT_FAILURE);
    2036         }
    2037         if (!object->user_2 == 64.64) {
    2038             psFree(object);
    2039             exit(EXIT_FAILURE);
    2040         }
    2041         if (!object->user_3 == 64.64) {
    2042             psFree(object);
    2043             exit(EXIT_FAILURE);
    2044         }
    2045         if (!object->user_4 == 64.64) {
    2046             psFree(object);
    2047             exit(EXIT_FAILURE);
    2048         }
    2049         if (!object->user_5 == 64.64) {
    2050             psFree(object);
    2051             exit(EXIT_FAILURE);
    2052         }
    2053         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    2054             psFree(object);
    2055             exit(EXIT_FAILURE);
    2056         }
    2057         if (!object->accept == true) {
    2058             psFree(object);
    2059             exit(EXIT_FAILURE);
    2060         }
    2061         if (!object->fault == -16) {
    2062             psFree(object);
    2063             exit(EXIT_FAILURE);
    2064         }
    2065 
    2066         psFree(object);
    2067     }
    2068 
    2069     {
    2070         detRunSummaryRow *object;
    2071 
    2072         object = detRunSummaryRowAlloc(-64, -32, 64.64, 64.64, 64.64, true, -16    );
    2073 
    2074         if (!object) {
    2075             exit(EXIT_FAILURE);
    2076         }
    2077 
    2078         if (!object->det_id == -64) {
    2079             psFree(object);
    2080             exit(EXIT_FAILURE);
    2081         }
    2082         if (!object->iteration == -32) {
    2083             psFree(object);
    2084             exit(EXIT_FAILURE);
    2085         }
    2086         if (!object->bg == 64.64) {
    2087             psFree(object);
    2088             exit(EXIT_FAILURE);
    2089         }
    2090         if (!object->bg_stdev == 64.64) {
    2091             psFree(object);
    2092             exit(EXIT_FAILURE);
    2093         }
    2094         if (!object->bg_mean_stdev == 64.64) {
    2095             psFree(object);
    2096             exit(EXIT_FAILURE);
    2097         }
    2098         if (!object->accept == true) {
    2099             psFree(object);
    2100             exit(EXIT_FAILURE);
    2101         }
    2102         if (!object->fault == -16) {
    2103             psFree(object);
    2104             exit(EXIT_FAILURE);
    2105         }
    2106 
    2107         psFree(object);
    2108     }
    2109 
    2110     {
    2111         detRegisteredImfileRow *object;
    2112 
    2113         object = detRegisteredImfileRowAlloc(-64, -32, "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16    );
    2114 
    2115         if (!object) {
    2116             exit(EXIT_FAILURE);
    2117         }
    2118 
    2119         if (!object->det_id == -64) {
    2120             psFree(object);
    2121             exit(EXIT_FAILURE);
    2122         }
    2123         if (!object->iteration == -32) {
    2124             psFree(object);
    2125             exit(EXIT_FAILURE);
    2126         }
    2127         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    2128             psFree(object);
    2129             exit(EXIT_FAILURE);
    2130         }
    2131         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    2132             psFree(object);
    2133             exit(EXIT_FAILURE);
    2134         }
    2135         if (!object->bg == 64.64) {
    2136             psFree(object);
    2137             exit(EXIT_FAILURE);
    2138         }
    2139         if (!object->bg_stdev == 64.64) {
    2140             psFree(object);
    2141             exit(EXIT_FAILURE);
    2142         }
    2143         if (!object->bg_mean_stdev == 64.64) {
    2144             psFree(object);
    2145             exit(EXIT_FAILURE);
    2146         }
    2147         if (!object->user_1 == 64.64) {
    2148             psFree(object);
    2149             exit(EXIT_FAILURE);
    2150         }
    2151         if (!object->user_2 == 64.64) {
    2152             psFree(object);
    2153             exit(EXIT_FAILURE);
    2154         }
    2155         if (!object->user_3 == 64.64) {
    2156             psFree(object);
    2157             exit(EXIT_FAILURE);
    2158         }
    2159         if (!object->user_4 == 64.64) {
    2160             psFree(object);
    2161             exit(EXIT_FAILURE);
    2162         }
    2163         if (!object->user_5 == 64.64) {
    2164             psFree(object);
    2165             exit(EXIT_FAILURE);
    2166         }
    2167         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    2168             psFree(object);
    2169             exit(EXIT_FAILURE);
    2170         }
    2171         if (!object->fault == -16) {
    2172             psFree(object);
    2173             exit(EXIT_FAILURE);
    2174         }
    2175 
    2176         psFree(object);
    2177     }
    2178 
    2179     {
    2180         detCorrectedExpRow *object;
    2181 
    2182         object = detCorrectedExpRowAlloc(-64, -64, "a string", -64, "a string", "a string", "a string", -16    );
    2183 
    2184         if (!object) {
    2185             exit(EXIT_FAILURE);
    2186         }
    2187 
    2188         if (!object->det_id == -64) {
    2189             psFree(object);
    2190             exit(EXIT_FAILURE);
    2191         }
    2192         if (!object->exp_id == -64) {
    2193             psFree(object);
    2194             exit(EXIT_FAILURE);
    2195         }
    2196         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    2197             psFree(object);
    2198             exit(EXIT_FAILURE);
    2199         }
    2200         if (!object->corr_id == -64) {
    2201             psFree(object);
    2202             exit(EXIT_FAILURE);
    2203         }
    2204         if (strncmp(object->corr_type, "a string", MAX_STRING_LENGTH)) {
    2205             psFree(object);
    2206             exit(EXIT_FAILURE);
    2207         }
    2208         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    2209             psFree(object);
    2210             exit(EXIT_FAILURE);
    2211         }
    2212         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    2213             psFree(object);
    2214             exit(EXIT_FAILURE);
    2215         }
    2216         if (!object->fault == -16) {
    2217             psFree(object);
    2218             exit(EXIT_FAILURE);
    2219         }
    2220 
    2221         psFree(object);
    2222     }
    2223 
    2224     {
    2225         detCorrectedImfileRow *object;
    2226 
    2227         object = detCorrectedImfileRowAlloc(-64, -64, "a string", "a string", "a string", -16    );
    2228 
    2229         if (!object) {
    2230             exit(EXIT_FAILURE);
    2231         }
    2232 
    2233         if (!object->det_id == -64) {
    2234             psFree(object);
    2235             exit(EXIT_FAILURE);
    2236         }
    2237         if (!object->exp_id == -64) {
    2238             psFree(object);
    2239             exit(EXIT_FAILURE);
    2240         }
    2241         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    2242             psFree(object);
    2243             exit(EXIT_FAILURE);
    2244         }
    2245         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    2246             psFree(object);
    2247             exit(EXIT_FAILURE);
    2248         }
    2249         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    2250             psFree(object);
    2251             exit(EXIT_FAILURE);
    2252         }
    2253         if (!object->fault == -16) {
    2254             psFree(object);
    2255             exit(EXIT_FAILURE);
    2256         }
    2257 
    2258         psFree(object);
    2259     }
    2260 
    2261     {
    2262         magicRunRow     *object;
    2263 
    2264         object = magicRunRowAlloc(-64, "a string", "a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z"    );
    2265 
    2266         if (!object) {
    2267             exit(EXIT_FAILURE);
    2268         }
    2269 
    2270         if (!object->magic_id == -64) {
    2271             psFree(object);
    2272             exit(EXIT_FAILURE);
    2273         }
    2274         if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    2275             psFree(object);
    2276             exit(EXIT_FAILURE);
    2277         }
    2278         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    2279             psFree(object);
    2280             exit(EXIT_FAILURE);
    2281         }
    2282         if (strncmp(object->workdir_state, "a string", MAX_STRING_LENGTH)) {
    2283             psFree(object);
    2284             exit(EXIT_FAILURE);
    2285         }
    2286         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    2287             psFree(object);
    2288             exit(EXIT_FAILURE);
    2289         }
    2290         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    2291             psFree(object);
    2292             exit(EXIT_FAILURE);
    2293         }
    2294             psFree(object);
    2295             exit(EXIT_FAILURE);
    2296         }
    2297 
    2298         psFree(object);
    2299     }
    2300 
    2301     {
    2302         magicInputSkyfileRow *object;
    2303 
    2304         object = magicInputSkyfileRowAlloc(-64, -64, "a string"    );
    2305 
    2306         if (!object) {
    2307             exit(EXIT_FAILURE);
    2308         }
    2309 
    2310         if (!object->magic_id == -64) {
    2311             psFree(object);
    2312             exit(EXIT_FAILURE);
    2313         }
    2314         if (!object->diff_id == -64) {
    2315             psFree(object);
    2316             exit(EXIT_FAILURE);
    2317         }
    2318         if (strncmp(object->node, "a string", MAX_STRING_LENGTH)) {
    2319             psFree(object);
    2320             exit(EXIT_FAILURE);
    2321         }
    2322 
    2323         psFree(object);
    2324     }
    2325 
    2326     {
    2327         magicTreeRow    *object;
    2328 
    2329         object = magicTreeRowAlloc(-64, "a string", "a string"    );
    2330 
    2331         if (!object) {
    2332             exit(EXIT_FAILURE);
    2333         }
    2334 
    2335         if (!object->magic_id == -64) {
    2336             psFree(object);
    2337             exit(EXIT_FAILURE);
    2338         }
    2339         if (strncmp(object->node, "a string", MAX_STRING_LENGTH)) {
    2340             psFree(object);
    2341             exit(EXIT_FAILURE);
    2342         }
    2343         if (strncmp(object->dep, "a string", MAX_STRING_LENGTH)) {
    2344             psFree(object);
    2345             exit(EXIT_FAILURE);
    2346         }
    2347 
    2348         psFree(object);
    2349     }
    2350 
    2351     {
    2352         magicNodeResultRow *object;
    2353 
    2354         object = magicNodeResultRowAlloc(-64, "a string", "a string"    );
    2355 
    2356         if (!object) {
    2357             exit(EXIT_FAILURE);
    2358         }
    2359 
    2360         if (!object->magic_id == -64) {
    2361             psFree(object);
    2362             exit(EXIT_FAILURE);
    2363         }
    2364         if (strncmp(object->node, "a string", MAX_STRING_LENGTH)) {
    2365             psFree(object);
    2366             exit(EXIT_FAILURE);
    2367         }
    2368         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    2369             psFree(object);
    2370             exit(EXIT_FAILURE);
    2371         }
    2372 
    2373         psFree(object);
    2374     }
    2375 
    2376     {
    2377         magicMaskRow    *object;
    2378 
    2379         object = magicMaskRowAlloc(-64, "a string"    );
    2380 
    2381         if (!object) {
    2382             exit(EXIT_FAILURE);
    2383         }
    2384 
    2385         if (!object->magic_id == -64) {
    2386             psFree(object);
    2387             exit(EXIT_FAILURE);
    2388         }
    2389         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    2390             psFree(object);
    2391             exit(EXIT_FAILURE);
    2392         }
    2393 
    2394         psFree(object);
    2395     }
    2396 
    2397     {
    2398         magicSkyfileMaskRow *object;
    2399 
    2400         object = magicSkyfileMaskRowAlloc(-64, -64, "a string"    );
    2401 
    2402         if (!object) {
    2403             exit(EXIT_FAILURE);
    2404         }
    2405 
    2406         if (!object->magic_id == -64) {
    2407             psFree(object);
    2408             exit(EXIT_FAILURE);
    2409         }
    2410         if (!object->diff_id == -64) {
    2411             psFree(object);
    2412             exit(EXIT_FAILURE);
    2413         }
    2414         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    24152047            psFree(object);
    24162048            exit(EXIT_FAILURE);
  • trunk/ippdb/tests/createtable.c

    r15343 r15420  
    1313        }
    1414
    15         if(!pzDataStoreCreateTable(dbh)) {
    16             exit(EXIT_FAILURE);
    17         }
    18 
    19         psDBCleanup(dbh);
    20     }
    21 
    22     {
    23         psDB            *dbh;
    24 
    25         dbh = psDBInit("localhost", "test", NULL, "test");
    26         if (!dbh) {
    27             exit(EXIT_FAILURE);
    28         }
    29 
    3015        if(!summitExpCreateTable(dbh)) {
    3116            exit(EXIT_FAILURE);
     
    208193        }
    209194
     195        if(!chipInputImfileCreateTable(dbh)) {
     196            exit(EXIT_FAILURE);
     197        }
     198
     199        psDBCleanup(dbh);
     200    }
     201
     202    {
     203        psDB            *dbh;
     204
     205        dbh = psDBInit("localhost", "test", NULL, "test");
     206        if (!dbh) {
     207            exit(EXIT_FAILURE);
     208        }
     209
    210210        if(!chipProcessedImfileCreateTable(dbh)) {
    211211            exit(EXIT_FAILURE);
     
    584584
    585585        if(!detRunSummaryCreateTable(dbh)) {
    586             exit(EXIT_FAILURE);
    587         }
    588 
    589         psDBCleanup(dbh);
    590     }
    591 
    592     {
    593         psDB            *dbh;
    594 
    595         dbh = psDBInit("localhost", "test", NULL, "test");
    596         if (!dbh) {
    597             exit(EXIT_FAILURE);
    598         }
    599 
    600         if(!detRegisteredImfileCreateTable(dbh)) {
    601             exit(EXIT_FAILURE);
    602         }
    603 
    604         psDBCleanup(dbh);
    605     }
    606 
    607     {
    608         psDB            *dbh;
    609 
    610         dbh = psDBInit("localhost", "test", NULL, "test");
    611         if (!dbh) {
    612             exit(EXIT_FAILURE);
    613         }
    614 
    615         if(!detCorrectedExpCreateTable(dbh)) {
    616             exit(EXIT_FAILURE);
    617         }
    618 
    619         psDBCleanup(dbh);
    620     }
    621 
    622     {
    623         psDB            *dbh;
    624 
    625         dbh = psDBInit("localhost", "test", NULL, "test");
    626         if (!dbh) {
    627             exit(EXIT_FAILURE);
    628         }
    629 
    630         if(!detCorrectedImfileCreateTable(dbh)) {
    631             exit(EXIT_FAILURE);
    632         }
    633 
    634         psDBCleanup(dbh);
    635     }
    636 
    637     {
    638         psDB            *dbh;
    639 
    640         dbh = psDBInit("localhost", "test", NULL, "test");
    641         if (!dbh) {
    642             exit(EXIT_FAILURE);
    643         }
    644 
    645         if(!magicRunCreateTable(dbh)) {
    646             exit(EXIT_FAILURE);
    647         }
    648 
    649         psDBCleanup(dbh);
    650     }
    651 
    652     {
    653         psDB            *dbh;
    654 
    655         dbh = psDBInit("localhost", "test", NULL, "test");
    656         if (!dbh) {
    657             exit(EXIT_FAILURE);
    658         }
    659 
    660         if(!magicInputSkyfileCreateTable(dbh)) {
    661             exit(EXIT_FAILURE);
    662         }
    663 
    664         psDBCleanup(dbh);
    665     }
    666 
    667     {
    668         psDB            *dbh;
    669 
    670         dbh = psDBInit("localhost", "test", NULL, "test");
    671         if (!dbh) {
    672             exit(EXIT_FAILURE);
    673         }
    674 
    675         if(!magicTreeCreateTable(dbh)) {
    676             exit(EXIT_FAILURE);
    677         }
    678 
    679         psDBCleanup(dbh);
    680     }
    681 
    682     {
    683         psDB            *dbh;
    684 
    685         dbh = psDBInit("localhost", "test", NULL, "test");
    686         if (!dbh) {
    687             exit(EXIT_FAILURE);
    688         }
    689 
    690         if(!magicNodeResultCreateTable(dbh)) {
    691             exit(EXIT_FAILURE);
    692         }
    693 
    694         psDBCleanup(dbh);
    695     }
    696 
    697     {
    698         psDB            *dbh;
    699 
    700         dbh = psDBInit("localhost", "test", NULL, "test");
    701         if (!dbh) {
    702             exit(EXIT_FAILURE);
    703         }
    704 
    705         if(!magicMaskCreateTable(dbh)) {
    706             exit(EXIT_FAILURE);
    707         }
    708 
    709         psDBCleanup(dbh);
    710     }
    711 
    712     {
    713         psDB            *dbh;
    714 
    715         dbh = psDBInit("localhost", "test", NULL, "test");
    716         if (!dbh) {
    717             exit(EXIT_FAILURE);
    718         }
    719 
    720         if(!magicSkyfileMaskCreateTable(dbh)) {
    721586            exit(EXIT_FAILURE);
    722587        }
  • trunk/ippdb/tests/dbcleanup.c

    r15343 r15420  
    1111    }
    1212
    13     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS pzDataStore");
    1413    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS summitExp");
    1514    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS summitImfile");
     
    2423    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS guidePendingExp");
    2524    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS chipRun");
     25    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS chipInputImfile");
    2626    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS chipProcessedImfile");
    2727    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS chipMask");
     
    5050    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detResidExp");
    5151    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detRunSummary");
    52     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detRegisteredImfile");
    53     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detCorrectedExp");
    54     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detCorrectedImfile");
    55     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS magicRun");
    56     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS magicInputSkyfile");
    57     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS magicTree");
    58     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS magicNodeResult");
    59     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS magicMask");
    60     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS magicSkyfileMask");
    6152
    6253    psDBCleanup(dbh);
  • trunk/ippdb/tests/dbsetup.c

    r15343 r15420  
    1313
    1414    // remove the table if it already exists
    15     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS pzDataStore");
    16     pzDataStoreCreateTable(dbh);
    17 
    1815    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS summitExp");
    1916    summitExpCreateTable(dbh);
     
    5148    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS chipRun");
    5249    chipRunCreateTable(dbh);
     50
     51    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS chipInputImfile");
     52    chipInputImfileCreateTable(dbh);
    5353
    5454    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS chipProcessedImfile");
     
    130130    detRunSummaryCreateTable(dbh);
    131131
    132     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detRegisteredImfile");
    133     detRegisteredImfileCreateTable(dbh);
    134 
    135     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detCorrectedExp");
    136     detCorrectedExpCreateTable(dbh);
    137 
    138     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detCorrectedImfile");
    139     detCorrectedImfileCreateTable(dbh);
    140 
    141     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS magicRun");
    142     magicRunCreateTable(dbh);
    143 
    144     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS magicInputSkyfile");
    145     magicInputSkyfileCreateTable(dbh);
    146 
    147     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS magicTree");
    148     magicTreeCreateTable(dbh);
    149 
    150     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS magicNodeResult");
    151     magicNodeResultCreateTable(dbh);
    152 
    153     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS magicMask");
    154     magicMaskCreateTable(dbh);
    155 
    156     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS magicSkyfileMask");
    157     magicSkyfileMaskCreateTable(dbh);
    158 
    159132    psDBCleanup(dbh);
    160133
  • trunk/ippdb/tests/droptable.c

    r15343 r15420  
    1313        }
    1414
    15         if (!pzDataStoreDropTable(dbh)) {
    16             exit(EXIT_FAILURE);
    17         }
    18 
    19         psDBCleanup(dbh);
    20     }
    21 
    22     {
    23         psDB            *dbh;
    24 
    25         dbh = psDBInit("localhost", "test", NULL, "test");
    26         if (!dbh) {
    27             exit(EXIT_FAILURE);
    28         }
    29 
    3015        if (!summitExpDropTable(dbh)) {
    3116            exit(EXIT_FAILURE);
     
    208193        }
    209194
     195        if (!chipInputImfileDropTable(dbh)) {
     196            exit(EXIT_FAILURE);
     197        }
     198
     199        psDBCleanup(dbh);
     200    }
     201
     202    {
     203        psDB            *dbh;
     204
     205        dbh = psDBInit("localhost", "test", NULL, "test");
     206        if (!dbh) {
     207            exit(EXIT_FAILURE);
     208        }
     209
    210210        if (!chipProcessedImfileDropTable(dbh)) {
    211211            exit(EXIT_FAILURE);
     
    584584
    585585        if (!detRunSummaryDropTable(dbh)) {
    586             exit(EXIT_FAILURE);
    587         }
    588 
    589         psDBCleanup(dbh);
    590     }
    591 
    592     {
    593         psDB            *dbh;
    594 
    595         dbh = psDBInit("localhost", "test", NULL, "test");
    596         if (!dbh) {
    597             exit(EXIT_FAILURE);
    598         }
    599 
    600         if (!detRegisteredImfileDropTable(dbh)) {
    601             exit(EXIT_FAILURE);
    602         }
    603 
    604         psDBCleanup(dbh);
    605     }
    606 
    607     {
    608         psDB            *dbh;
    609 
    610         dbh = psDBInit("localhost", "test", NULL, "test");
    611         if (!dbh) {
    612             exit(EXIT_FAILURE);
    613         }
    614 
    615         if (!detCorrectedExpDropTable(dbh)) {
    616             exit(EXIT_FAILURE);
    617         }
    618 
    619         psDBCleanup(dbh);
    620     }
    621 
    622     {
    623         psDB            *dbh;
    624 
    625         dbh = psDBInit("localhost", "test", NULL, "test");
    626         if (!dbh) {
    627             exit(EXIT_FAILURE);
    628         }
    629 
    630         if (!detCorrectedImfileDropTable(dbh)) {
    631             exit(EXIT_FAILURE);
    632         }
    633 
    634         psDBCleanup(dbh);
    635     }
    636 
    637     {
    638         psDB            *dbh;
    639 
    640         dbh = psDBInit("localhost", "test", NULL, "test");
    641         if (!dbh) {
    642             exit(EXIT_FAILURE);
    643         }
    644 
    645         if (!magicRunDropTable(dbh)) {
    646             exit(EXIT_FAILURE);
    647         }
    648 
    649         psDBCleanup(dbh);
    650     }
    651 
    652     {
    653         psDB            *dbh;
    654 
    655         dbh = psDBInit("localhost", "test", NULL, "test");
    656         if (!dbh) {
    657             exit(EXIT_FAILURE);
    658         }
    659 
    660         if (!magicInputSkyfileDropTable(dbh)) {
    661             exit(EXIT_FAILURE);
    662         }
    663 
    664         psDBCleanup(dbh);
    665     }
    666 
    667     {
    668         psDB            *dbh;
    669 
    670         dbh = psDBInit("localhost", "test", NULL, "test");
    671         if (!dbh) {
    672             exit(EXIT_FAILURE);
    673         }
    674 
    675         if (!magicTreeDropTable(dbh)) {
    676             exit(EXIT_FAILURE);
    677         }
    678 
    679         psDBCleanup(dbh);
    680     }
    681 
    682     {
    683         psDB            *dbh;
    684 
    685         dbh = psDBInit("localhost", "test", NULL, "test");
    686         if (!dbh) {
    687             exit(EXIT_FAILURE);
    688         }
    689 
    690         if (!magicNodeResultDropTable(dbh)) {
    691             exit(EXIT_FAILURE);
    692         }
    693 
    694         psDBCleanup(dbh);
    695     }
    696 
    697     {
    698         psDB            *dbh;
    699 
    700         dbh = psDBInit("localhost", "test", NULL, "test");
    701         if (!dbh) {
    702             exit(EXIT_FAILURE);
    703         }
    704 
    705         if (!magicMaskDropTable(dbh)) {
    706             exit(EXIT_FAILURE);
    707         }
    708 
    709         psDBCleanup(dbh);
    710     }
    711 
    712     {
    713         psDB            *dbh;
    714 
    715         dbh = psDBInit("localhost", "test", NULL, "test");
    716         if (!dbh) {
    717             exit(EXIT_FAILURE);
    718         }
    719 
    720         if (!magicSkyfileMaskDropTable(dbh)) {
    721586            exit(EXIT_FAILURE);
    722587        }
  • trunk/ippdb/tests/insert.c

    r15343 r15420  
    1313        }
    1414
    15         if (!pzDataStoreInsert(dbh, "a string", "a string", "a string")) {
    16             exit(EXIT_FAILURE);
    17         }
    18 
    19         psDBCleanup(dbh);
    20     }
    21 
    22     {
    23         psDB            *dbh;
    24 
    25         dbh = psDBInit("localhost", "test", NULL, "test");
    26         if (!dbh) {
    27             exit(EXIT_FAILURE);
    28         }
    29 
    3015        if (!summitExpInsert(dbh, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", -32)) {
    3116            exit(EXIT_FAILURE);
     
    7358        }
    7459
    75         if (!pzPendingImfileInsert(dbh, "a string", "a string", "a string", "a string", "a string")) {
     60        if (!pzPendingImfileInsert(dbh, "a string", "a string", "a string", "a string", "a string", -64)) {
    7661            exit(EXIT_FAILURE);
    7762        }
     
    10388        }
    10489
    105         if (!pzDoneImfileInsert(dbh, "a string", "a string", "a string", "a string", "a string", "a string")) {
    106             exit(EXIT_FAILURE);
    107         }
    108 
    109         psDBCleanup(dbh);
    110     }
    111 
    112     {
    113         psDB            *dbh;
    114 
    115         dbh = psDBInit("localhost", "test", NULL, "test");
    116         if (!dbh) {
    117             exit(EXIT_FAILURE);
    118         }
    119 
    120         if (!newExpInsert(dbh, -64, "a string", "a string", "a string", "a string", "a string", "a string", "a string")) {
     90        if (!pzDoneImfileInsert(dbh, "a string", "a string", "a string", "a string", "a string", -64, "a string")) {
     91            exit(EXIT_FAILURE);
     92        }
     93
     94        psDBCleanup(dbh);
     95    }
     96
     97    {
     98        psDB            *dbh;
     99
     100        dbh = psDBInit("localhost", "test", NULL, "test");
     101        if (!dbh) {
     102            exit(EXIT_FAILURE);
     103        }
     104
     105        if (!newExpInsert(dbh, -64, "a string", "a string", "a string", "a string", -32, "a string", "a string")) {
    121106            exit(EXIT_FAILURE);
    122107        }
     
    148133        }
    149134
    150         if (!rawExpInsert(dbh, -64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", 32.32, -16)) {
     135        if (!rawExpInsert(dbh, -64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", -32, "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", 32.32, -16)) {
    151136            exit(EXIT_FAILURE);
    152137        }
     
    193178        }
    194179
    195         if (!chipRunInsert(dbh, -64, -64, "a string", "a string", "a string", "a string", "a string", "a string", "a string")) {
     180        if (!chipRunInsert(dbh, -64, "a string", "a string", "a string", "a string", "a string", "a string", "a string")) {
     181            exit(EXIT_FAILURE);
     182        }
     183
     184        psDBCleanup(dbh);
     185    }
     186
     187    {
     188        psDB            *dbh;
     189
     190        dbh = psDBInit("localhost", "test", NULL, "test");
     191        if (!dbh) {
     192            exit(EXIT_FAILURE);
     193        }
     194
     195        if (!chipInputImfileInsert(dbh, -64, -64, "a string")) {
    196196            exit(EXIT_FAILURE);
    197197        }
     
    328328        }
    329329
    330         if (!warpSkyfileInsert(dbh, -64, "a string", "a string", "a string", "a string", 64.64, 64.64, 64.64, -16)) {
     330        if (!warpSkyfileInsert(dbh, -64, "a string", "a string", "a string", "a string", 64.64, 64.64)) {
    331331            exit(EXIT_FAILURE);
    332332        }
     
    358358        }
    359359
    360         if (!diffInputSkyfileInsert(dbh, -64, true, -64, -64, "a string", "a string", "a string")) {
    361             exit(EXIT_FAILURE);
    362         }
    363 
    364         psDBCleanup(dbh);
    365     }
    366 
    367     {
    368         psDB            *dbh;
    369 
    370         dbh = psDBInit("localhost", "test", NULL, "test");
    371         if (!dbh) {
    372             exit(EXIT_FAILURE);
    373         }
    374 
    375         if (!diffSkyfileInsert(dbh, -64, "a string", "a string", 64.64, 64.64, -16)) {
     360        if (!diffInputSkyfileInsert(dbh, -64, -64, "a string", "a string", "a string", true)) {
     361            exit(EXIT_FAILURE);
     362        }
     363
     364        psDBCleanup(dbh);
     365    }
     366
     367    {
     368        psDB            *dbh;
     369
     370        dbh = psDBInit("localhost", "test", NULL, "test");
     371        if (!dbh) {
     372            exit(EXIT_FAILURE);
     373        }
     374
     375        if (!diffSkyfileInsert(dbh, -64, "a string", "a string", 64.64, 64.64)) {
    376376            exit(EXIT_FAILURE);
    377377        }
     
    418418        }
    419419
    420         if (!stackSumSkyfileInsert(dbh, -64, "a string", "a string", 64.64, 64.64, -16)) {
     420        if (!stackSumSkyfileInsert(dbh, -64, "a string", "a string", 64.64, 64.64)) {
    421421            exit(EXIT_FAILURE);
    422422        }
     
    553553        }
    554554
    555         if (!detResidImfileInsert(dbh, -64, -32, -64, "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16)) {
    556             exit(EXIT_FAILURE);
    557         }
    558 
    559         psDBCleanup(dbh);
    560     }
    561 
    562     {
    563         psDB            *dbh;
    564 
    565         dbh = psDBInit("localhost", "test", NULL, "test");
    566         if (!dbh) {
    567             exit(EXIT_FAILURE);
    568         }
    569 
    570         if (!detResidExpInsert(dbh, -64, -32, -64, "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", true, -16)) {
     555        if (!detResidImfileInsert(dbh, -64, -32, -64, "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16)) {
     556            exit(EXIT_FAILURE);
     557        }
     558
     559        psDBCleanup(dbh);
     560    }
     561
     562    {
     563        psDB            *dbh;
     564
     565        dbh = psDBInit("localhost", "test", NULL, "test");
     566        if (!dbh) {
     567            exit(EXIT_FAILURE);
     568        }
     569
     570        if (!detResidExpInsert(dbh, -64, -32, -64, "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", true, -16)) {
    571571            exit(EXIT_FAILURE);
    572572        }
     
    584584
    585585        if (!detRunSummaryInsert(dbh, -64, -32, 64.64, 64.64, 64.64, true, -16)) {
    586             exit(EXIT_FAILURE);
    587         }
    588 
    589         psDBCleanup(dbh);
    590     }
    591 
    592     {
    593         psDB            *dbh;
    594 
    595         dbh = psDBInit("localhost", "test", NULL, "test");
    596         if (!dbh) {
    597             exit(EXIT_FAILURE);
    598         }
    599 
    600         if (!detRegisteredImfileInsert(dbh, -64, -32, "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16)) {
    601             exit(EXIT_FAILURE);
    602         }
    603 
    604         psDBCleanup(dbh);
    605     }
    606 
    607     {
    608         psDB            *dbh;
    609 
    610         dbh = psDBInit("localhost", "test", NULL, "test");
    611         if (!dbh) {
    612             exit(EXIT_FAILURE);
    613         }
    614 
    615         if (!detCorrectedExpInsert(dbh, -64, -64, "a string", -64, "a string", "a string", "a string", -16)) {
    616             exit(EXIT_FAILURE);
    617         }
    618 
    619         psDBCleanup(dbh);
    620     }
    621 
    622     {
    623         psDB            *dbh;
    624 
    625         dbh = psDBInit("localhost", "test", NULL, "test");
    626         if (!dbh) {
    627             exit(EXIT_FAILURE);
    628         }
    629 
    630         if (!detCorrectedImfileInsert(dbh, -64, -64, "a string", "a string", "a string", -16)) {
    631             exit(EXIT_FAILURE);
    632         }
    633 
    634         psDBCleanup(dbh);
    635     }
    636 
    637     {
    638         psDB            *dbh;
    639 
    640         dbh = psDBInit("localhost", "test", NULL, "test");
    641         if (!dbh) {
    642             exit(EXIT_FAILURE);
    643         }
    644 
    645         if (!magicRunInsert(dbh, -64, "a string", "a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z")) {
    646             exit(EXIT_FAILURE);
    647         }
    648 
    649         psDBCleanup(dbh);
    650     }
    651 
    652     {
    653         psDB            *dbh;
    654 
    655         dbh = psDBInit("localhost", "test", NULL, "test");
    656         if (!dbh) {
    657             exit(EXIT_FAILURE);
    658         }
    659 
    660         if (!magicInputSkyfileInsert(dbh, -64, -64, "a string")) {
    661             exit(EXIT_FAILURE);
    662         }
    663 
    664         psDBCleanup(dbh);
    665     }
    666 
    667     {
    668         psDB            *dbh;
    669 
    670         dbh = psDBInit("localhost", "test", NULL, "test");
    671         if (!dbh) {
    672             exit(EXIT_FAILURE);
    673         }
    674 
    675         if (!magicTreeInsert(dbh, -64, "a string", "a string")) {
    676             exit(EXIT_FAILURE);
    677         }
    678 
    679         psDBCleanup(dbh);
    680     }
    681 
    682     {
    683         psDB            *dbh;
    684 
    685         dbh = psDBInit("localhost", "test", NULL, "test");
    686         if (!dbh) {
    687             exit(EXIT_FAILURE);
    688         }
    689 
    690         if (!magicNodeResultInsert(dbh, -64, "a string", "a string")) {
    691             exit(EXIT_FAILURE);
    692         }
    693 
    694         psDBCleanup(dbh);
    695     }
    696 
    697     {
    698         psDB            *dbh;
    699 
    700         dbh = psDBInit("localhost", "test", NULL, "test");
    701         if (!dbh) {
    702             exit(EXIT_FAILURE);
    703         }
    704 
    705         if (!magicMaskInsert(dbh, -64, "a string")) {
    706             exit(EXIT_FAILURE);
    707         }
    708 
    709         psDBCleanup(dbh);
    710     }
    711 
    712     {
    713         psDB            *dbh;
    714 
    715         dbh = psDBInit("localhost", "test", NULL, "test");
    716         if (!dbh) {
    717             exit(EXIT_FAILURE);
    718         }
    719 
    720         if (!magicSkyfileMaskInsert(dbh, -64, -64, "a string")) {
    721586            exit(EXIT_FAILURE);
    722587        }
  • trunk/ippdb/tests/insertfits.c

    r15343 r15420  
    2424        }
    2525
    26         if (!pzDataStoreInsertFits(dbh, fits)) {
    27             exit(EXIT_FAILURE);
    28         }
    29 
    30         if (!psFitsClose(fits)) {
    31             exit(EXIT_FAILURE);
    32         }
    33 
    34         psDBCleanup(dbh);
    35     }
    36 
    37     {
    38         psDB            *dbh;
    39         psFits          *fits;
    40 
    41         dbh = psDBInit("localhost", "test", NULL, "test");
    42         if (!dbh) {
    43             exit(EXIT_FAILURE);
    44         }
    45 
    46         // open a temp
    47         fits = psFitsOpen(TMP_FILENAME, "r");
    48         if (!fits) {
    49             exit(EXIT_FAILURE);
    50         }
    51 
    5226        if (!summitExpInsertFits(dbh, fits)) {
    5327            exit(EXIT_FAILURE);
     
    362336        }
    363337
     338        if (!chipInputImfileInsertFits(dbh, fits)) {
     339            exit(EXIT_FAILURE);
     340        }
     341
     342        if (!psFitsClose(fits)) {
     343            exit(EXIT_FAILURE);
     344        }
     345
     346        psDBCleanup(dbh);
     347    }
     348
     349    {
     350        psDB            *dbh;
     351        psFits          *fits;
     352
     353        dbh = psDBInit("localhost", "test", NULL, "test");
     354        if (!dbh) {
     355            exit(EXIT_FAILURE);
     356        }
     357
     358        // open a temp
     359        fits = psFitsOpen(TMP_FILENAME, "r");
     360        if (!fits) {
     361            exit(EXIT_FAILURE);
     362        }
     363
    364364        if (!chipProcessedImfileInsertFits(dbh, fits)) {
    365365            exit(EXIT_FAILURE);
     
    10131013
    10141014        if (!detRunSummaryInsertFits(dbh, fits)) {
    1015             exit(EXIT_FAILURE);
    1016         }
    1017 
    1018         if (!psFitsClose(fits)) {
    1019             exit(EXIT_FAILURE);
    1020         }
    1021 
    1022         psDBCleanup(dbh);
    1023     }
    1024 
    1025     {
    1026         psDB            *dbh;
    1027         psFits          *fits;
    1028 
    1029         dbh = psDBInit("localhost", "test", NULL, "test");
    1030         if (!dbh) {
    1031             exit(EXIT_FAILURE);
    1032         }
    1033 
    1034         // open a temp
    1035         fits = psFitsOpen(TMP_FILENAME, "r");
    1036         if (!fits) {
    1037             exit(EXIT_FAILURE);
    1038         }
    1039 
    1040         if (!detRegisteredImfileInsertFits(dbh, fits)) {
    1041             exit(EXIT_FAILURE);
    1042         }
    1043 
    1044         if (!psFitsClose(fits)) {
    1045             exit(EXIT_FAILURE);
    1046         }
    1047 
    1048         psDBCleanup(dbh);
    1049     }
    1050 
    1051     {
    1052         psDB            *dbh;
    1053         psFits          *fits;
    1054 
    1055         dbh = psDBInit("localhost", "test", NULL, "test");
    1056         if (!dbh) {
    1057             exit(EXIT_FAILURE);
    1058         }
    1059 
    1060         // open a temp
    1061         fits = psFitsOpen(TMP_FILENAME, "r");
    1062         if (!fits) {
    1063             exit(EXIT_FAILURE);
    1064         }
    1065 
    1066         if (!detCorrectedExpInsertFits(dbh, fits)) {
    1067             exit(EXIT_FAILURE);
    1068         }
    1069 
    1070         if (!psFitsClose(fits)) {
    1071             exit(EXIT_FAILURE);
    1072         }
    1073 
    1074         psDBCleanup(dbh);
    1075     }
    1076 
    1077     {
    1078         psDB            *dbh;
    1079         psFits          *fits;
    1080 
    1081         dbh = psDBInit("localhost", "test", NULL, "test");
    1082         if (!dbh) {
    1083             exit(EXIT_FAILURE);
    1084         }
    1085 
    1086         // open a temp
    1087         fits = psFitsOpen(TMP_FILENAME, "r");
    1088         if (!fits) {
    1089             exit(EXIT_FAILURE);
    1090         }
    1091 
    1092         if (!detCorrectedImfileInsertFits(dbh, fits)) {
    1093             exit(EXIT_FAILURE);
    1094         }
    1095 
    1096         if (!psFitsClose(fits)) {
    1097             exit(EXIT_FAILURE);
    1098         }
    1099 
    1100         psDBCleanup(dbh);
    1101     }
    1102 
    1103     {
    1104         psDB            *dbh;
    1105         psFits          *fits;
    1106 
    1107         dbh = psDBInit("localhost", "test", NULL, "test");
    1108         if (!dbh) {
    1109             exit(EXIT_FAILURE);
    1110         }
    1111 
    1112         // open a temp
    1113         fits = psFitsOpen(TMP_FILENAME, "r");
    1114         if (!fits) {
    1115             exit(EXIT_FAILURE);
    1116         }
    1117 
    1118         if (!magicRunInsertFits(dbh, fits)) {
    1119             exit(EXIT_FAILURE);
    1120         }
    1121 
    1122         if (!psFitsClose(fits)) {
    1123             exit(EXIT_FAILURE);
    1124         }
    1125 
    1126         psDBCleanup(dbh);
    1127     }
    1128 
    1129     {
    1130         psDB            *dbh;
    1131         psFits          *fits;
    1132 
    1133         dbh = psDBInit("localhost", "test", NULL, "test");
    1134         if (!dbh) {
    1135             exit(EXIT_FAILURE);
    1136         }
    1137 
    1138         // open a temp
    1139         fits = psFitsOpen(TMP_FILENAME, "r");
    1140         if (!fits) {
    1141             exit(EXIT_FAILURE);
    1142         }
    1143 
    1144         if (!magicInputSkyfileInsertFits(dbh, fits)) {
    1145             exit(EXIT_FAILURE);
    1146         }
    1147 
    1148         if (!psFitsClose(fits)) {
    1149             exit(EXIT_FAILURE);
    1150         }
    1151 
    1152         psDBCleanup(dbh);
    1153     }
    1154 
    1155     {
    1156         psDB            *dbh;
    1157         psFits          *fits;
    1158 
    1159         dbh = psDBInit("localhost", "test", NULL, "test");
    1160         if (!dbh) {
    1161             exit(EXIT_FAILURE);
    1162         }
    1163 
    1164         // open a temp
    1165         fits = psFitsOpen(TMP_FILENAME, "r");
    1166         if (!fits) {
    1167             exit(EXIT_FAILURE);
    1168         }
    1169 
    1170         if (!magicTreeInsertFits(dbh, fits)) {
    1171             exit(EXIT_FAILURE);
    1172         }
    1173 
    1174         if (!psFitsClose(fits)) {
    1175             exit(EXIT_FAILURE);
    1176         }
    1177 
    1178         psDBCleanup(dbh);
    1179     }
    1180 
    1181     {
    1182         psDB            *dbh;
    1183         psFits          *fits;
    1184 
    1185         dbh = psDBInit("localhost", "test", NULL, "test");
    1186         if (!dbh) {
    1187             exit(EXIT_FAILURE);
    1188         }
    1189 
    1190         // open a temp
    1191         fits = psFitsOpen(TMP_FILENAME, "r");
    1192         if (!fits) {
    1193             exit(EXIT_FAILURE);
    1194         }
    1195 
    1196         if (!magicNodeResultInsertFits(dbh, fits)) {
    1197             exit(EXIT_FAILURE);
    1198         }
    1199 
    1200         if (!psFitsClose(fits)) {
    1201             exit(EXIT_FAILURE);
    1202         }
    1203 
    1204         psDBCleanup(dbh);
    1205     }
    1206 
    1207     {
    1208         psDB            *dbh;
    1209         psFits          *fits;
    1210 
    1211         dbh = psDBInit("localhost", "test", NULL, "test");
    1212         if (!dbh) {
    1213             exit(EXIT_FAILURE);
    1214         }
    1215 
    1216         // open a temp
    1217         fits = psFitsOpen(TMP_FILENAME, "r");
    1218         if (!fits) {
    1219             exit(EXIT_FAILURE);
    1220         }
    1221 
    1222         if (!magicMaskInsertFits(dbh, fits)) {
    1223             exit(EXIT_FAILURE);
    1224         }
    1225 
    1226         if (!psFitsClose(fits)) {
    1227             exit(EXIT_FAILURE);
    1228         }
    1229 
    1230         psDBCleanup(dbh);
    1231     }
    1232 
    1233     {
    1234         psDB            *dbh;
    1235         psFits          *fits;
    1236 
    1237         dbh = psDBInit("localhost", "test", NULL, "test");
    1238         if (!dbh) {
    1239             exit(EXIT_FAILURE);
    1240         }
    1241 
    1242         // open a temp
    1243         fits = psFitsOpen(TMP_FILENAME, "r");
    1244         if (!fits) {
    1245             exit(EXIT_FAILURE);
    1246         }
    1247 
    1248         if (!magicSkyfileMaskInsertFits(dbh, fits)) {
    12491015            exit(EXIT_FAILURE);
    12501016        }
  • trunk/ippdb/tests/insertobject.c

    r15343 r15420  
    77    {
    88        psDB            *dbh;
    9         pzDataStoreRow  *object;
    10 
    11         dbh = psDBInit("localhost", "test", NULL, "test");
    12         if (!dbh) {
    13             exit(EXIT_FAILURE);
    14         }
    15 
    16         object = pzDataStoreRowAlloc("a string", "a string", "a string");
    17         if (!object) {
    18             exit(EXIT_FAILURE);
    19         }
    20 
    21         if (!pzDataStoreInsertObject(dbh, object)) {
    22             exit(EXIT_FAILURE);
    23         }
    24 
    25         psFree(object);
    26         psDBCleanup(dbh);
    27     }
    28 
    29     {
    30         psDB            *dbh;
    319        summitExpRow    *object;
    3210
     
    10280        }
    10381
    104         object = pzPendingImfileRowAlloc("a string", "a string", "a string", "a string", "a string");
     82        object = pzPendingImfileRowAlloc("a string", "a string", "a string", "a string", "a string", -64);
    10583        if (!object) {
    10684            exit(EXIT_FAILURE);
     
    146124        }
    147125
    148         object = pzDoneImfileRowAlloc("a string", "a string", "a string", "a string", "a string", "a string");
     126        object = pzDoneImfileRowAlloc("a string", "a string", "a string", "a string", "a string", -64, "a string");
    149127        if (!object) {
    150128            exit(EXIT_FAILURE);
     
    168146        }
    169147
    170         object = newExpRowAlloc(-64, "a string", "a string", "a string", "a string", "a string", "a string", "a string");
     148        object = newExpRowAlloc(-64, "a string", "a string", "a string", "a string", -32, "a string", "a string");
    171149        if (!object) {
    172150            exit(EXIT_FAILURE);
     
    212190        }
    213191
    214         object = rawExpRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", 32.32, -16);
     192        object = rawExpRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", -32, "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", 32.32, -16);
    215193        if (!object) {
    216194            exit(EXIT_FAILURE);
     
    278256        }
    279257
    280         object = chipRunRowAlloc(-64, -64, "a string", "a string", "a string", "a string", "a string", "a string", "a string");
     258        object = chipRunRowAlloc(-64, "a string", "a string", "a string", "a string", "a string", "a string", "a string");
    281259        if (!object) {
    282260            exit(EXIT_FAILURE);
     
    293271    {
    294272        psDB            *dbh;
     273        chipInputImfileRow *object;
     274
     275        dbh = psDBInit("localhost", "test", NULL, "test");
     276        if (!dbh) {
     277            exit(EXIT_FAILURE);
     278        }
     279
     280        object = chipInputImfileRowAlloc(-64, -64, "a string");
     281        if (!object) {
     282            exit(EXIT_FAILURE);
     283        }
     284
     285        if (!chipInputImfileInsertObject(dbh, object)) {
     286            exit(EXIT_FAILURE);
     287        }
     288
     289        psFree(object);
     290        psDBCleanup(dbh);
     291    }
     292
     293    {
     294        psDB            *dbh;
    295295        chipProcessedImfileRow *object;
    296296
     
    476476        }
    477477
    478         object = warpSkyfileRowAlloc(-64, "a string", "a string", "a string", "a string", 64.64, 64.64, 64.64, -16);
     478        object = warpSkyfileRowAlloc(-64, "a string", "a string", "a string", "a string", 64.64, 64.64);
    479479        if (!object) {
    480480            exit(EXIT_FAILURE);
     
    520520        }
    521521
    522         object = diffInputSkyfileRowAlloc(-64, true, -64, -64, "a string", "a string", "a string");
     522        object = diffInputSkyfileRowAlloc(-64, -64, "a string", "a string", "a string", true);
    523523        if (!object) {
    524524            exit(EXIT_FAILURE);
     
    542542        }
    543543
    544         object = diffSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64, -16);
     544        object = diffSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64);
    545545        if (!object) {
    546546            exit(EXIT_FAILURE);
     
    608608        }
    609609
    610         object = stackSumSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64, -16);
     610        object = stackSumSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64);
    611611        if (!object) {
    612612            exit(EXIT_FAILURE);
     
    806806        }
    807807
    808         object = detResidImfileRowAlloc(-64, -32, -64, "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
     808        object = detResidImfileRowAlloc(-64, -32, -64, "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
    809809        if (!object) {
    810810            exit(EXIT_FAILURE);
     
    828828        }
    829829
    830         object = detResidExpRowAlloc(-64, -32, -64, "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", true, -16);
     830        object = detResidExpRowAlloc(-64, -32, -64, "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", true, -16);
    831831        if (!object) {
    832832            exit(EXIT_FAILURE);
     
    856856
    857857        if (!detRunSummaryInsertObject(dbh, object)) {
    858             exit(EXIT_FAILURE);
    859         }
    860 
    861         psFree(object);
    862         psDBCleanup(dbh);
    863     }
    864 
    865     {
    866         psDB            *dbh;
    867         detRegisteredImfileRow *object;
    868 
    869         dbh = psDBInit("localhost", "test", NULL, "test");
    870         if (!dbh) {
    871             exit(EXIT_FAILURE);
    872         }
    873 
    874         object = detRegisteredImfileRowAlloc(-64, -32, "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
    875         if (!object) {
    876             exit(EXIT_FAILURE);
    877         }
    878 
    879         if (!detRegisteredImfileInsertObject(dbh, object)) {
    880             exit(EXIT_FAILURE);
    881         }
    882 
    883         psFree(object);
    884         psDBCleanup(dbh);
    885     }
    886 
    887     {
    888         psDB            *dbh;
    889         detCorrectedExpRow *object;
    890 
    891         dbh = psDBInit("localhost", "test", NULL, "test");
    892         if (!dbh) {
    893             exit(EXIT_FAILURE);
    894         }
    895 
    896         object = detCorrectedExpRowAlloc(-64, -64, "a string", -64, "a string", "a string", "a string", -16);
    897         if (!object) {
    898             exit(EXIT_FAILURE);
    899         }
    900 
    901         if (!detCorrectedExpInsertObject(dbh, object)) {
    902             exit(EXIT_FAILURE);
    903         }
    904 
    905         psFree(object);
    906         psDBCleanup(dbh);
    907     }
    908 
    909     {
    910         psDB            *dbh;
    911         detCorrectedImfileRow *object;
    912 
    913         dbh = psDBInit("localhost", "test", NULL, "test");
    914         if (!dbh) {
    915             exit(EXIT_FAILURE);
    916         }
    917 
    918         object = detCorrectedImfileRowAlloc(-64, -64, "a string", "a string", "a string", -16);
    919         if (!object) {
    920             exit(EXIT_FAILURE);
    921         }
    922 
    923         if (!detCorrectedImfileInsertObject(dbh, object)) {
    924             exit(EXIT_FAILURE);
    925         }
    926 
    927         psFree(object);
    928         psDBCleanup(dbh);
    929     }
    930 
    931     {
    932         psDB            *dbh;
    933         magicRunRow     *object;
    934 
    935         dbh = psDBInit("localhost", "test", NULL, "test");
    936         if (!dbh) {
    937             exit(EXIT_FAILURE);
    938         }
    939 
    940         object = magicRunRowAlloc(-64, "a string", "a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z");
    941         if (!object) {
    942             exit(EXIT_FAILURE);
    943         }
    944 
    945         if (!magicRunInsertObject(dbh, object)) {
    946             exit(EXIT_FAILURE);
    947         }
    948 
    949         psFree(object);
    950         psDBCleanup(dbh);
    951     }
    952 
    953     {
    954         psDB            *dbh;
    955         magicInputSkyfileRow *object;
    956 
    957         dbh = psDBInit("localhost", "test", NULL, "test");
    958         if (!dbh) {
    959             exit(EXIT_FAILURE);
    960         }
    961 
    962         object = magicInputSkyfileRowAlloc(-64, -64, "a string");
    963         if (!object) {
    964             exit(EXIT_FAILURE);
    965         }
    966 
    967         if (!magicInputSkyfileInsertObject(dbh, object)) {
    968             exit(EXIT_FAILURE);
    969         }
    970 
    971         psFree(object);
    972         psDBCleanup(dbh);
    973     }
    974 
    975     {
    976         psDB            *dbh;
    977         magicTreeRow    *object;
    978 
    979         dbh = psDBInit("localhost", "test", NULL, "test");
    980         if (!dbh) {
    981             exit(EXIT_FAILURE);
    982         }
    983 
    984         object = magicTreeRowAlloc(-64, "a string", "a string");
    985         if (!object) {
    986             exit(EXIT_FAILURE);
    987         }
    988 
    989         if (!magicTreeInsertObject(dbh, object)) {
    990             exit(EXIT_FAILURE);
    991         }
    992 
    993         psFree(object);
    994         psDBCleanup(dbh);
    995     }
    996 
    997     {
    998         psDB            *dbh;
    999         magicNodeResultRow *object;
    1000 
    1001         dbh = psDBInit("localhost", "test", NULL, "test");
    1002         if (!dbh) {
    1003             exit(EXIT_FAILURE);
    1004         }
    1005 
    1006         object = magicNodeResultRowAlloc(-64, "a string", "a string");
    1007         if (!object) {
    1008             exit(EXIT_FAILURE);
    1009         }
    1010 
    1011         if (!magicNodeResultInsertObject(dbh, object)) {
    1012             exit(EXIT_FAILURE);
    1013         }
    1014 
    1015         psFree(object);
    1016         psDBCleanup(dbh);
    1017     }
    1018 
    1019     {
    1020         psDB            *dbh;
    1021         magicMaskRow    *object;
    1022 
    1023         dbh = psDBInit("localhost", "test", NULL, "test");
    1024         if (!dbh) {
    1025             exit(EXIT_FAILURE);
    1026         }
    1027 
    1028         object = magicMaskRowAlloc(-64, "a string");
    1029         if (!object) {
    1030             exit(EXIT_FAILURE);
    1031         }
    1032 
    1033         if (!magicMaskInsertObject(dbh, object)) {
    1034             exit(EXIT_FAILURE);
    1035         }
    1036 
    1037         psFree(object);
    1038         psDBCleanup(dbh);
    1039     }
    1040 
    1041     {
    1042         psDB            *dbh;
    1043         magicSkyfileMaskRow *object;
    1044 
    1045         dbh = psDBInit("localhost", "test", NULL, "test");
    1046         if (!dbh) {
    1047             exit(EXIT_FAILURE);
    1048         }
    1049 
    1050         object = magicSkyfileMaskRowAlloc(-64, -64, "a string");
    1051         if (!object) {
    1052             exit(EXIT_FAILURE);
    1053         }
    1054 
    1055         if (!magicSkyfileMaskInsertObject(dbh, object)) {
    1056858            exit(EXIT_FAILURE);
    1057859        }
  • trunk/ippdb/tests/metadatafromobject.c

    r15343 r15420  
    1010    {
    1111        psMetadata      *md;
    12         pzDataStoreRow  *object;
    13         bool            status;
    14 
    15         object = pzDataStoreRowAlloc("a string", "a string", "a string");
    16         if (!object) {
    17             exit(EXIT_FAILURE);
    18         }
    19 
    20         md = pzDataStoreMetadataFromObject(object);
    21         if (!md) {
    22             exit(EXIT_FAILURE);
    23         }
    24 
    25         psFree(object);
    26 
     12        summitExpRow    *object;
     13        bool            status;
     14
     15        object = summitExpRowAlloc("a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", -32);
     16        if (!object) {
     17            exit(EXIT_FAILURE);
     18        }
     19
     20        md = summitExpMetadataFromObject(object);
     21        if (!md) {
     22            exit(EXIT_FAILURE);
     23        }
     24
     25        psFree(object);
     26
     27        if (strncmp(psMetadataLookupPtr(&status, md, "exp_name"), "a string", MAX_STRING_LENGTH)) {
     28            psFree(md);
     29            exit(EXIT_FAILURE);
     30        }
    2731        if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
    2832            psFree(md);
     
    3337            exit(EXIT_FAILURE);
    3438        }
     39            psFree(md);
     40            exit(EXIT_FAILURE);
     41        }
     42        if (strncmp(psMetadataLookupPtr(&status, md, "exp_type"), "a string", MAX_STRING_LENGTH)) {
     43            psFree(md);
     44            exit(EXIT_FAILURE);
     45        }
    3546        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    3647            psFree(md);
    3748            exit(EXIT_FAILURE);
    3849        }
    39 
    40         psFree(md);
    41     }
    42 
    43     {
    44         psMetadata      *md;
    45         summitExpRow    *object;
    46         bool            status;
    47 
    48         object = summitExpRowAlloc("a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", -32);
    49         if (!object) {
    50             exit(EXIT_FAILURE);
    51         }
    52 
    53         md = summitExpMetadataFromObject(object);
     50        if (!psMetadataLookupS32(&status, md, "imfiles") == -32) {
     51            psFree(md);
     52            exit(EXIT_FAILURE);
     53        }
     54
     55        psFree(md);
     56    }
     57
     58    {
     59        psMetadata      *md;
     60        summitImfileRow *object;
     61        bool            status;
     62
     63        object = summitImfileRowAlloc("a string", "a string", "a string", "a string", -32, "a string", "a string", "a string", "a string");
     64        if (!object) {
     65            exit(EXIT_FAILURE);
     66        }
     67
     68        md = summitImfileMetadataFromObject(object);
    5469        if (!md) {
    5570            exit(EXIT_FAILURE);
     
    7085            exit(EXIT_FAILURE);
    7186        }
     87        if (strncmp(psMetadataLookupPtr(&status, md, "file_id"), "a string", MAX_STRING_LENGTH)) {
     88            psFree(md);
     89            exit(EXIT_FAILURE);
     90        }
     91        if (!psMetadataLookupS32(&status, md, "bytes") == -32) {
     92            psFree(md);
     93            exit(EXIT_FAILURE);
     94        }
     95        if (strncmp(psMetadataLookupPtr(&status, md, "md5sum"), "a string", MAX_STRING_LENGTH)) {
     96            psFree(md);
     97            exit(EXIT_FAILURE);
     98        }
     99        if (strncmp(psMetadataLookupPtr(&status, md, "class"), "a string", MAX_STRING_LENGTH)) {
     100            psFree(md);
     101            exit(EXIT_FAILURE);
     102        }
     103        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
     104            psFree(md);
     105            exit(EXIT_FAILURE);
     106        }
     107        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     108            psFree(md);
     109            exit(EXIT_FAILURE);
     110        }
     111
     112        psFree(md);
     113    }
     114
     115    {
     116        psMetadata      *md;
     117        pzPendingExpRow *object;
     118        bool            status;
     119
     120        object = pzPendingExpRowAlloc("a string", "a string", "a string");
     121        if (!object) {
     122            exit(EXIT_FAILURE);
     123        }
     124
     125        md = pzPendingExpMetadataFromObject(object);
     126        if (!md) {
     127            exit(EXIT_FAILURE);
     128        }
     129
     130        psFree(object);
     131
     132        if (strncmp(psMetadataLookupPtr(&status, md, "exp_name"), "a string", MAX_STRING_LENGTH)) {
     133            psFree(md);
     134            exit(EXIT_FAILURE);
     135        }
     136        if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
     137            psFree(md);
     138            exit(EXIT_FAILURE);
     139        }
     140        if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) {
     141            psFree(md);
     142            exit(EXIT_FAILURE);
     143        }
     144
     145        psFree(md);
     146    }
     147
     148    {
     149        psMetadata      *md;
     150        pzPendingImfileRow *object;
     151        bool            status;
     152
     153        object = pzPendingImfileRowAlloc("a string", "a string", "a string", "a string", "a string", -64);
     154        if (!object) {
     155            exit(EXIT_FAILURE);
     156        }
     157
     158        md = pzPendingImfileMetadataFromObject(object);
     159        if (!md) {
     160            exit(EXIT_FAILURE);
     161        }
     162
     163        psFree(object);
     164
     165        if (strncmp(psMetadataLookupPtr(&status, md, "exp_name"), "a string", MAX_STRING_LENGTH)) {
     166            psFree(md);
     167            exit(EXIT_FAILURE);
     168        }
     169        if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
     170            psFree(md);
     171            exit(EXIT_FAILURE);
     172        }
     173        if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) {
     174            psFree(md);
     175            exit(EXIT_FAILURE);
     176        }
     177        if (strncmp(psMetadataLookupPtr(&status, md, "class"), "a string", MAX_STRING_LENGTH)) {
     178            psFree(md);
     179            exit(EXIT_FAILURE);
     180        }
     181        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
     182            psFree(md);
     183            exit(EXIT_FAILURE);
     184        }
     185            psFree(md);
     186            exit(EXIT_FAILURE);
     187        }
     188
     189        psFree(md);
     190    }
     191
     192    {
     193        psMetadata      *md;
     194        pzDoneExpRow    *object;
     195        bool            status;
     196
     197        object = pzDoneExpRowAlloc("a string", "a string", "a string");
     198        if (!object) {
     199            exit(EXIT_FAILURE);
     200        }
     201
     202        md = pzDoneExpMetadataFromObject(object);
     203        if (!md) {
     204            exit(EXIT_FAILURE);
     205        }
     206
     207        psFree(object);
     208
     209        if (strncmp(psMetadataLookupPtr(&status, md, "exp_name"), "a string", MAX_STRING_LENGTH)) {
     210            psFree(md);
     211            exit(EXIT_FAILURE);
     212        }
     213        if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
     214            psFree(md);
     215            exit(EXIT_FAILURE);
     216        }
     217        if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) {
     218            psFree(md);
     219            exit(EXIT_FAILURE);
     220        }
     221
     222        psFree(md);
     223    }
     224
     225    {
     226        psMetadata      *md;
     227        pzDoneImfileRow *object;
     228        bool            status;
     229
     230        object = pzDoneImfileRowAlloc("a string", "a string", "a string", "a string", "a string", -64, "a string");
     231        if (!object) {
     232            exit(EXIT_FAILURE);
     233        }
     234
     235        md = pzDoneImfileMetadataFromObject(object);
     236        if (!md) {
     237            exit(EXIT_FAILURE);
     238        }
     239
     240        psFree(object);
     241
     242        if (strncmp(psMetadataLookupPtr(&status, md, "exp_name"), "a string", MAX_STRING_LENGTH)) {
     243            psFree(md);
     244            exit(EXIT_FAILURE);
     245        }
     246        if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
     247            psFree(md);
     248            exit(EXIT_FAILURE);
     249        }
     250        if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) {
     251            psFree(md);
     252            exit(EXIT_FAILURE);
     253        }
     254        if (strncmp(psMetadataLookupPtr(&status, md, "class"), "a string", MAX_STRING_LENGTH)) {
     255            psFree(md);
     256            exit(EXIT_FAILURE);
     257        }
     258        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
     259            psFree(md);
     260            exit(EXIT_FAILURE);
     261        }
     262            psFree(md);
     263            exit(EXIT_FAILURE);
     264        }
     265        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     266            psFree(md);
     267            exit(EXIT_FAILURE);
     268        }
     269
     270        psFree(md);
     271    }
     272
     273    {
     274        psMetadata      *md;
     275        newExpRow       *object;
     276        bool            status;
     277
     278        object = newExpRowAlloc(-64, "a string", "a string", "a string", "a string", -32, "a string", "a string");
     279        if (!object) {
     280            exit(EXIT_FAILURE);
     281        }
     282
     283        md = newExpMetadataFromObject(object);
     284        if (!md) {
     285            exit(EXIT_FAILURE);
     286        }
     287
     288        psFree(object);
     289
     290            psFree(md);
     291            exit(EXIT_FAILURE);
     292        }
     293        if (strncmp(psMetadataLookupPtr(&status, md, "tmp_exp_name"), "a string", MAX_STRING_LENGTH)) {
     294            psFree(md);
     295            exit(EXIT_FAILURE);
     296        }
     297        if (strncmp(psMetadataLookupPtr(&status, md, "tmp_camera"), "a string", MAX_STRING_LENGTH)) {
     298            psFree(md);
     299            exit(EXIT_FAILURE);
     300        }
     301        if (strncmp(psMetadataLookupPtr(&status, md, "tmp_telescope"), "a string", MAX_STRING_LENGTH)) {
     302            psFree(md);
     303            exit(EXIT_FAILURE);
     304        }
     305        if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
     306            psFree(md);
     307            exit(EXIT_FAILURE);
     308        }
     309        if (!psMetadataLookupS32(&status, md, "imfiles") == -32) {
     310            psFree(md);
     311            exit(EXIT_FAILURE);
     312        }
     313        if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
     314            psFree(md);
     315            exit(EXIT_FAILURE);
     316        }
     317        if (strncmp(psMetadataLookupPtr(&status, md, "workdir_state"), "a string", MAX_STRING_LENGTH)) {
     318            psFree(md);
     319            exit(EXIT_FAILURE);
     320        }
     321
     322        psFree(md);
     323    }
     324
     325    {
     326        psMetadata      *md;
     327        newImfileRow    *object;
     328        bool            status;
     329
     330        object = newImfileRowAlloc(-64, "a string", "a string");
     331        if (!object) {
     332            exit(EXIT_FAILURE);
     333        }
     334
     335        md = newImfileMetadataFromObject(object);
     336        if (!md) {
     337            exit(EXIT_FAILURE);
     338        }
     339
     340        psFree(object);
     341
     342            psFree(md);
     343            exit(EXIT_FAILURE);
     344        }
     345        if (strncmp(psMetadataLookupPtr(&status, md, "tmp_class_id"), "a string", MAX_STRING_LENGTH)) {
     346            psFree(md);
     347            exit(EXIT_FAILURE);
     348        }
     349        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     350            psFree(md);
     351            exit(EXIT_FAILURE);
     352        }
     353
     354        psFree(md);
     355    }
     356
     357    {
     358        psMetadata      *md;
     359        rawExpRow       *object;
     360        bool            status;
     361
     362        object = rawExpRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", -32, "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", 32.32, -16);
     363        if (!object) {
     364            exit(EXIT_FAILURE);
     365        }
     366
     367        md = rawExpMetadataFromObject(object);
     368        if (!md) {
     369            exit(EXIT_FAILURE);
     370        }
     371
     372        psFree(object);
     373
     374            psFree(md);
     375            exit(EXIT_FAILURE);
     376        }
     377        if (strncmp(psMetadataLookupPtr(&status, md, "exp_name"), "a string", MAX_STRING_LENGTH)) {
     378            psFree(md);
     379            exit(EXIT_FAILURE);
     380        }
     381        if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
     382            psFree(md);
     383            exit(EXIT_FAILURE);
     384        }
     385        if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) {
     386            psFree(md);
     387            exit(EXIT_FAILURE);
     388        }
     389            psFree(md);
     390            exit(EXIT_FAILURE);
     391        }
     392        if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
    72393            psFree(md);
    73394            exit(EXIT_FAILURE);
     
    77398            exit(EXIT_FAILURE);
    78399        }
     400        if (!psMetadataLookupS32(&status, md, "imfiles") == -32) {
     401            psFree(md);
     402            exit(EXIT_FAILURE);
     403        }
     404        if (strncmp(psMetadataLookupPtr(&status, md, "filelevel"), "a string", MAX_STRING_LENGTH)) {
     405            psFree(md);
     406            exit(EXIT_FAILURE);
     407        }
     408        if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
     409            psFree(md);
     410            exit(EXIT_FAILURE);
     411        }
     412        if (strncmp(psMetadataLookupPtr(&status, md, "filter"), "a string", MAX_STRING_LENGTH)) {
     413            psFree(md);
     414            exit(EXIT_FAILURE);
     415        }
     416        if (!psMetadataLookupF32(&status, md, "airmass") == 32.32) {
     417            psFree(md);
     418            exit(EXIT_FAILURE);
     419        }
     420        if (!psMetadataLookupF64(&status, md, "ra") == 64.64) {
     421            psFree(md);
     422            exit(EXIT_FAILURE);
     423        }
     424        if (!psMetadataLookupF64(&status, md, "decl") == 64.64) {
     425            psFree(md);
     426            exit(EXIT_FAILURE);
     427        }
     428        if (!psMetadataLookupF32(&status, md, "exp_time") == 32.32) {
     429            psFree(md);
     430            exit(EXIT_FAILURE);
     431        }
     432        if (!psMetadataLookupF32(&status, md, "sat_pixel_frac") == 32.32) {
     433            psFree(md);
     434            exit(EXIT_FAILURE);
     435        }
     436        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     437            psFree(md);
     438            exit(EXIT_FAILURE);
     439        }
     440        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     441            psFree(md);
     442            exit(EXIT_FAILURE);
     443        }
     444        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
     445            psFree(md);
     446            exit(EXIT_FAILURE);
     447        }
     448        if (!psMetadataLookupF64(&status, md, "alt") == 64.64) {
     449            psFree(md);
     450            exit(EXIT_FAILURE);
     451        }
     452        if (!psMetadataLookupF64(&status, md, "az") == 64.64) {
     453            psFree(md);
     454            exit(EXIT_FAILURE);
     455        }
     456        if (!psMetadataLookupF32(&status, md, "ccd_temp") == 32.32) {
     457            psFree(md);
     458            exit(EXIT_FAILURE);
     459        }
     460        if (!psMetadataLookupF64(&status, md, "posang") == 64.64) {
     461            psFree(md);
     462            exit(EXIT_FAILURE);
     463        }
     464        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
     465            psFree(md);
     466            exit(EXIT_FAILURE);
     467        }
     468        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
     469            psFree(md);
     470            exit(EXIT_FAILURE);
     471        }
     472        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
     473            psFree(md);
     474            exit(EXIT_FAILURE);
     475        }
     476        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
     477            psFree(md);
     478            exit(EXIT_FAILURE);
     479        }
     480        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
     481            psFree(md);
     482            exit(EXIT_FAILURE);
     483        }
     484        if (strncmp(psMetadataLookupPtr(&status, md, "object"), "a string", MAX_STRING_LENGTH)) {
     485            psFree(md);
     486            exit(EXIT_FAILURE);
     487        }
     488        if (!psMetadataLookupF32(&status, md, "solang") == 32.32) {
     489            psFree(md);
     490            exit(EXIT_FAILURE);
     491        }
     492            psFree(md);
     493            exit(EXIT_FAILURE);
     494        }
     495
     496        psFree(md);
     497    }
     498
     499    {
     500        psMetadata      *md;
     501        rawImfileRow    *object;
     502        bool            status;
     503
     504        object = rawImfileRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
     505        if (!object) {
     506            exit(EXIT_FAILURE);
     507        }
     508
     509        md = rawImfileMetadataFromObject(object);
     510        if (!md) {
     511            exit(EXIT_FAILURE);
     512        }
     513
     514        psFree(object);
     515
     516            psFree(md);
     517            exit(EXIT_FAILURE);
     518        }
     519        if (strncmp(psMetadataLookupPtr(&status, md, "exp_name"), "a string", MAX_STRING_LENGTH)) {
     520            psFree(md);
     521            exit(EXIT_FAILURE);
     522        }
     523        if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
     524            psFree(md);
     525            exit(EXIT_FAILURE);
     526        }
     527        if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) {
     528            psFree(md);
     529            exit(EXIT_FAILURE);
     530        }
     531            psFree(md);
     532            exit(EXIT_FAILURE);
     533        }
     534        if (strncmp(psMetadataLookupPtr(&status, md, "tmp_class_id"), "a string", MAX_STRING_LENGTH)) {
     535            psFree(md);
     536            exit(EXIT_FAILURE);
     537        }
     538        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
     539            psFree(md);
     540            exit(EXIT_FAILURE);
     541        }
    79542        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    80543            psFree(md);
    81544            exit(EXIT_FAILURE);
    82545        }
    83         if (!psMetadataLookupS32(&status, md, "imfiles") == -32) {
    84             psFree(md);
    85             exit(EXIT_FAILURE);
    86         }
    87 
    88         psFree(md);
    89     }
    90 
    91     {
    92         psMetadata      *md;
    93         summitImfileRow *object;
    94         bool            status;
    95 
    96         object = summitImfileRowAlloc("a string", "a string", "a string", "a string", -32, "a string", "a string", "a string", "a string");
    97         if (!object) {
    98             exit(EXIT_FAILURE);
    99         }
    100 
    101         md = summitImfileMetadataFromObject(object);
    102         if (!md) {
    103             exit(EXIT_FAILURE);
    104         }
    105 
    106         psFree(object);
    107 
    108         if (strncmp(psMetadataLookupPtr(&status, md, "exp_name"), "a string", MAX_STRING_LENGTH)) {
     546        if (strncmp(psMetadataLookupPtr(&status, md, "exp_type"), "a string", MAX_STRING_LENGTH)) {
     547            psFree(md);
     548            exit(EXIT_FAILURE);
     549        }
     550        if (strncmp(psMetadataLookupPtr(&status, md, "filelevel"), "a string", MAX_STRING_LENGTH)) {
     551            psFree(md);
     552            exit(EXIT_FAILURE);
     553        }
     554        if (strncmp(psMetadataLookupPtr(&status, md, "filter"), "a string", MAX_STRING_LENGTH)) {
     555            psFree(md);
     556            exit(EXIT_FAILURE);
     557        }
     558        if (!psMetadataLookupF32(&status, md, "airmass") == 32.32) {
     559            psFree(md);
     560            exit(EXIT_FAILURE);
     561        }
     562        if (!psMetadataLookupF64(&status, md, "ra") == 64.64) {
     563            psFree(md);
     564            exit(EXIT_FAILURE);
     565        }
     566        if (!psMetadataLookupF64(&status, md, "decl") == 64.64) {
     567            psFree(md);
     568            exit(EXIT_FAILURE);
     569        }
     570        if (!psMetadataLookupF32(&status, md, "exp_time") == 32.32) {
     571            psFree(md);
     572            exit(EXIT_FAILURE);
     573        }
     574        if (!psMetadataLookupF32(&status, md, "sat_pixel_frac") == 32.32) {
     575            psFree(md);
     576            exit(EXIT_FAILURE);
     577        }
     578        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     579            psFree(md);
     580            exit(EXIT_FAILURE);
     581        }
     582        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     583            psFree(md);
     584            exit(EXIT_FAILURE);
     585        }
     586        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
     587            psFree(md);
     588            exit(EXIT_FAILURE);
     589        }
     590        if (!psMetadataLookupF64(&status, md, "alt") == 64.64) {
     591            psFree(md);
     592            exit(EXIT_FAILURE);
     593        }
     594        if (!psMetadataLookupF64(&status, md, "az") == 64.64) {
     595            psFree(md);
     596            exit(EXIT_FAILURE);
     597        }
     598        if (!psMetadataLookupF32(&status, md, "ccd_temp") == 32.32) {
     599            psFree(md);
     600            exit(EXIT_FAILURE);
     601        }
     602        if (!psMetadataLookupF64(&status, md, "posang") == 64.64) {
     603            psFree(md);
     604            exit(EXIT_FAILURE);
     605        }
     606        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
     607            psFree(md);
     608            exit(EXIT_FAILURE);
     609        }
     610        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
     611            psFree(md);
     612            exit(EXIT_FAILURE);
     613        }
     614        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
     615            psFree(md);
     616            exit(EXIT_FAILURE);
     617        }
     618        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
     619            psFree(md);
     620            exit(EXIT_FAILURE);
     621        }
     622        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
     623            psFree(md);
     624            exit(EXIT_FAILURE);
     625        }
     626        if (strncmp(psMetadataLookupPtr(&status, md, "object"), "a string", MAX_STRING_LENGTH)) {
     627            psFree(md);
     628            exit(EXIT_FAILURE);
     629        }
     630            psFree(md);
     631            exit(EXIT_FAILURE);
     632        }
     633
     634        psFree(md);
     635    }
     636
     637    {
     638        psMetadata      *md;
     639        guidePendingExpRow *object;
     640        bool            status;
     641
     642        object = guidePendingExpRowAlloc(-64, -64, "a string");
     643        if (!object) {
     644            exit(EXIT_FAILURE);
     645        }
     646
     647        md = guidePendingExpMetadataFromObject(object);
     648        if (!md) {
     649            exit(EXIT_FAILURE);
     650        }
     651
     652        psFree(object);
     653
     654            psFree(md);
     655            exit(EXIT_FAILURE);
     656        }
     657            psFree(md);
     658            exit(EXIT_FAILURE);
     659        }
     660        if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
     661            psFree(md);
     662            exit(EXIT_FAILURE);
     663        }
     664
     665        psFree(md);
     666    }
     667
     668    {
     669        psMetadata      *md;
     670        chipRunRow      *object;
     671        bool            status;
     672
     673        object = chipRunRowAlloc(-64, "a string", "a string", "a string", "a string", "a string", "a string", "a string");
     674        if (!object) {
     675            exit(EXIT_FAILURE);
     676        }
     677
     678        md = chipRunMetadataFromObject(object);
     679        if (!md) {
     680            exit(EXIT_FAILURE);
     681        }
     682
     683        psFree(object);
     684
     685            psFree(md);
     686            exit(EXIT_FAILURE);
     687        }
     688        if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
     689            psFree(md);
     690            exit(EXIT_FAILURE);
     691        }
     692        if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
     693            psFree(md);
     694            exit(EXIT_FAILURE);
     695        }
     696        if (strncmp(psMetadataLookupPtr(&status, md, "workdir_state"), "a string", MAX_STRING_LENGTH)) {
     697            psFree(md);
     698            exit(EXIT_FAILURE);
     699        }
     700        if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
     701            psFree(md);
     702            exit(EXIT_FAILURE);
     703        }
     704        if (strncmp(psMetadataLookupPtr(&status, md, "reduction"), "a string", MAX_STRING_LENGTH)) {
     705            psFree(md);
     706            exit(EXIT_FAILURE);
     707        }
     708        if (strncmp(psMetadataLookupPtr(&status, md, "expgroup"), "a string", MAX_STRING_LENGTH)) {
     709            psFree(md);
     710            exit(EXIT_FAILURE);
     711        }
     712        if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
     713            psFree(md);
     714            exit(EXIT_FAILURE);
     715        }
     716
     717        psFree(md);
     718    }
     719
     720    {
     721        psMetadata      *md;
     722        chipInputImfileRow *object;
     723        bool            status;
     724
     725        object = chipInputImfileRowAlloc(-64, -64, "a string");
     726        if (!object) {
     727            exit(EXIT_FAILURE);
     728        }
     729
     730        md = chipInputImfileMetadataFromObject(object);
     731        if (!md) {
     732            exit(EXIT_FAILURE);
     733        }
     734
     735        psFree(object);
     736
     737            psFree(md);
     738            exit(EXIT_FAILURE);
     739        }
     740            psFree(md);
     741            exit(EXIT_FAILURE);
     742        }
     743        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
     744            psFree(md);
     745            exit(EXIT_FAILURE);
     746        }
     747
     748        psFree(md);
     749    }
     750
     751    {
     752        psMetadata      *md;
     753        chipProcessedImfileRow *object;
     754        bool            status;
     755
     756        object = chipProcessedImfileRowAlloc(-64, -64, "a string", "a string", 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, -32, -32, -32, -32, "a string", -16);
     757        if (!object) {
     758            exit(EXIT_FAILURE);
     759        }
     760
     761        md = chipProcessedImfileMetadataFromObject(object);
     762        if (!md) {
     763            exit(EXIT_FAILURE);
     764        }
     765
     766        psFree(object);
     767
     768            psFree(md);
     769            exit(EXIT_FAILURE);
     770        }
     771            psFree(md);
     772            exit(EXIT_FAILURE);
     773        }
     774        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
     775            psFree(md);
     776            exit(EXIT_FAILURE);
     777        }
     778        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     779            psFree(md);
     780            exit(EXIT_FAILURE);
     781        }
     782        if (!psMetadataLookupF32(&status, md, "bg") == 32.32) {
     783            psFree(md);
     784            exit(EXIT_FAILURE);
     785        }
     786        if (!psMetadataLookupF32(&status, md, "bg_stdev") == 32.32) {
     787            psFree(md);
     788            exit(EXIT_FAILURE);
     789        }
     790        if (!psMetadataLookupF32(&status, md, "bg_mean_stdev") == 32.32) {
     791            psFree(md);
     792            exit(EXIT_FAILURE);
     793        }
     794        if (!psMetadataLookupF32(&status, md, "bias") == 32.32) {
     795            psFree(md);
     796            exit(EXIT_FAILURE);
     797        }
     798        if (!psMetadataLookupF32(&status, md, "bias_stdev") == 32.32) {
     799            psFree(md);
     800            exit(EXIT_FAILURE);
     801        }
     802        if (!psMetadataLookupF32(&status, md, "fringe_0") == 32.32) {
     803            psFree(md);
     804            exit(EXIT_FAILURE);
     805        }
     806        if (!psMetadataLookupF32(&status, md, "fringe_1") == 32.32) {
     807            psFree(md);
     808            exit(EXIT_FAILURE);
     809        }
     810        if (!psMetadataLookupF32(&status, md, "fringe_2") == 32.32) {
     811            psFree(md);
     812            exit(EXIT_FAILURE);
     813        }
     814        if (!psMetadataLookupF32(&status, md, "sigma_ra") == 32.32) {
     815            psFree(md);
     816            exit(EXIT_FAILURE);
     817        }
     818        if (!psMetadataLookupF32(&status, md, "sigma_dec") == 32.32) {
     819            psFree(md);
     820            exit(EXIT_FAILURE);
     821        }
     822        if (!psMetadataLookupF32(&status, md, "ap_resid") == 32.32) {
     823            psFree(md);
     824            exit(EXIT_FAILURE);
     825        }
     826        if (!psMetadataLookupF32(&status, md, "ap_resid_stdev") == 32.32) {
     827            psFree(md);
     828            exit(EXIT_FAILURE);
     829        }
     830        if (!psMetadataLookupF32(&status, md, "fwhm") == 32.32) {
     831            psFree(md);
     832            exit(EXIT_FAILURE);
     833        }
     834        if (!psMetadataLookupF32(&status, md, "fwhm_range") == 32.32) {
     835            psFree(md);
     836            exit(EXIT_FAILURE);
     837        }
     838        if (!psMetadataLookupS32(&status, md, "n_stars") == -32) {
     839            psFree(md);
     840            exit(EXIT_FAILURE);
     841        }
     842        if (!psMetadataLookupS32(&status, md, "n_extended") == -32) {
     843            psFree(md);
     844            exit(EXIT_FAILURE);
     845        }
     846        if (!psMetadataLookupS32(&status, md, "n_cr") == -32) {
     847            psFree(md);
     848            exit(EXIT_FAILURE);
     849        }
     850        if (!psMetadataLookupS32(&status, md, "n_astrom") == -32) {
     851            psFree(md);
     852            exit(EXIT_FAILURE);
     853        }
     854        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     855            psFree(md);
     856            exit(EXIT_FAILURE);
     857        }
     858            psFree(md);
     859            exit(EXIT_FAILURE);
     860        }
     861
     862        psFree(md);
     863    }
     864
     865    {
     866        psMetadata      *md;
     867        chipMaskRow     *object;
     868        bool            status;
     869
     870        object = chipMaskRowAlloc("a string");
     871        if (!object) {
     872            exit(EXIT_FAILURE);
     873        }
     874
     875        md = chipMaskMetadataFromObject(object);
     876        if (!md) {
     877            exit(EXIT_FAILURE);
     878        }
     879
     880        psFree(object);
     881
     882        if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
     883            psFree(md);
     884            exit(EXIT_FAILURE);
     885        }
     886
     887        psFree(md);
     888    }
     889
     890    {
     891        psMetadata      *md;
     892        camRunRow       *object;
     893        bool            status;
     894
     895        object = camRunRowAlloc(-64, -64, "a string", "a string", "a string", "a string", "a string", "a string", "a string");
     896        if (!object) {
     897            exit(EXIT_FAILURE);
     898        }
     899
     900        md = camRunMetadataFromObject(object);
     901        if (!md) {
     902            exit(EXIT_FAILURE);
     903        }
     904
     905        psFree(object);
     906
     907            psFree(md);
     908            exit(EXIT_FAILURE);
     909        }
     910            psFree(md);
     911            exit(EXIT_FAILURE);
     912        }
     913        if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
     914            psFree(md);
     915            exit(EXIT_FAILURE);
     916        }
     917        if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
     918            psFree(md);
     919            exit(EXIT_FAILURE);
     920        }
     921        if (strncmp(psMetadataLookupPtr(&status, md, "workdir_state"), "a string", MAX_STRING_LENGTH)) {
     922            psFree(md);
     923            exit(EXIT_FAILURE);
     924        }
     925        if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
     926            psFree(md);
     927            exit(EXIT_FAILURE);
     928        }
     929        if (strncmp(psMetadataLookupPtr(&status, md, "reduction"), "a string", MAX_STRING_LENGTH)) {
     930            psFree(md);
     931            exit(EXIT_FAILURE);
     932        }
     933        if (strncmp(psMetadataLookupPtr(&status, md, "expgroup"), "a string", MAX_STRING_LENGTH)) {
     934            psFree(md);
     935            exit(EXIT_FAILURE);
     936        }
     937        if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
     938            psFree(md);
     939            exit(EXIT_FAILURE);
     940        }
     941
     942        psFree(md);
     943    }
     944
     945    {
     946        psMetadata      *md;
     947        camProcessedExpRow *object;
     948        bool            status;
     949
     950        object = camProcessedExpRowAlloc(-64, -64, "a string", 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, -32, -32, -32, -32, "a string", -16);
     951        if (!object) {
     952            exit(EXIT_FAILURE);
     953        }
     954
     955        md = camProcessedExpMetadataFromObject(object);
     956        if (!md) {
     957            exit(EXIT_FAILURE);
     958        }
     959
     960        psFree(object);
     961
     962            psFree(md);
     963            exit(EXIT_FAILURE);
     964        }
     965            psFree(md);
     966            exit(EXIT_FAILURE);
     967        }
     968        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     969            psFree(md);
     970            exit(EXIT_FAILURE);
     971        }
     972        if (!psMetadataLookupF32(&status, md, "bg") == 32.32) {
     973            psFree(md);
     974            exit(EXIT_FAILURE);
     975        }
     976        if (!psMetadataLookupF32(&status, md, "bg_stdev") == 32.32) {
     977            psFree(md);
     978            exit(EXIT_FAILURE);
     979        }
     980        if (!psMetadataLookupF32(&status, md, "bg_mean_stdev") == 32.32) {
     981            psFree(md);
     982            exit(EXIT_FAILURE);
     983        }
     984        if (!psMetadataLookupF32(&status, md, "sigma_ra") == 32.32) {
     985            psFree(md);
     986            exit(EXIT_FAILURE);
     987        }
     988        if (!psMetadataLookupF32(&status, md, "sigma_dec") == 32.32) {
     989            psFree(md);
     990            exit(EXIT_FAILURE);
     991        }
     992        if (!psMetadataLookupF32(&status, md, "zp_mean") == 32.32) {
     993            psFree(md);
     994            exit(EXIT_FAILURE);
     995        }
     996        if (!psMetadataLookupF32(&status, md, "zp_stdev") == 32.32) {
     997            psFree(md);
     998            exit(EXIT_FAILURE);
     999        }
     1000        if (!psMetadataLookupF32(&status, md, "fwhm") == 32.32) {
     1001            psFree(md);
     1002            exit(EXIT_FAILURE);
     1003        }
     1004        if (!psMetadataLookupF32(&status, md, "fwhm_range") == 32.32) {
     1005            psFree(md);
     1006            exit(EXIT_FAILURE);
     1007        }
     1008        if (!psMetadataLookupS32(&status, md, "n_stars") == -32) {
     1009            psFree(md);
     1010            exit(EXIT_FAILURE);
     1011        }
     1012        if (!psMetadataLookupS32(&status, md, "n_extended") == -32) {
     1013            psFree(md);
     1014            exit(EXIT_FAILURE);
     1015        }
     1016        if (!psMetadataLookupS32(&status, md, "n_cr") == -32) {
     1017            psFree(md);
     1018            exit(EXIT_FAILURE);
     1019        }
     1020        if (!psMetadataLookupS32(&status, md, "n_astrom") == -32) {
     1021            psFree(md);
     1022            exit(EXIT_FAILURE);
     1023        }
     1024        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     1025            psFree(md);
     1026            exit(EXIT_FAILURE);
     1027        }
     1028            psFree(md);
     1029            exit(EXIT_FAILURE);
     1030        }
     1031
     1032        psFree(md);
     1033    }
     1034
     1035    {
     1036        psMetadata      *md;
     1037        camMaskRow      *object;
     1038        bool            status;
     1039
     1040        object = camMaskRowAlloc("a string");
     1041        if (!object) {
     1042            exit(EXIT_FAILURE);
     1043        }
     1044
     1045        md = camMaskMetadataFromObject(object);
     1046        if (!md) {
     1047            exit(EXIT_FAILURE);
     1048        }
     1049
     1050        psFree(object);
     1051
     1052        if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
     1053            psFree(md);
     1054            exit(EXIT_FAILURE);
     1055        }
     1056
     1057        psFree(md);
     1058    }
     1059
     1060    {
     1061        psMetadata      *md;
     1062        warpRunRow      *object;
     1063        bool            status;
     1064
     1065        object = warpRunRowAlloc(-64, "a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z");
     1066        if (!object) {
     1067            exit(EXIT_FAILURE);
     1068        }
     1069
     1070        md = warpRunMetadataFromObject(object);
     1071        if (!md) {
     1072            exit(EXIT_FAILURE);
     1073        }
     1074
     1075        psFree(object);
     1076
     1077            psFree(md);
     1078            exit(EXIT_FAILURE);
     1079        }
     1080        if (strncmp(psMetadataLookupPtr(&status, md, "mode"), "a string", MAX_STRING_LENGTH)) {
     1081            psFree(md);
     1082            exit(EXIT_FAILURE);
     1083        }
     1084        if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
     1085            psFree(md);
     1086            exit(EXIT_FAILURE);
     1087        }
     1088        if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
     1089            psFree(md);
     1090            exit(EXIT_FAILURE);
     1091        }
     1092        if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
     1093            psFree(md);
     1094            exit(EXIT_FAILURE);
     1095        }
     1096            psFree(md);
     1097            exit(EXIT_FAILURE);
     1098        }
     1099
     1100        psFree(md);
     1101    }
     1102
     1103    {
     1104        psMetadata      *md;
     1105        warpInputExpRow *object;
     1106        bool            status;
     1107
     1108        object = warpInputExpRowAlloc(-64, -64, true);
     1109        if (!object) {
     1110            exit(EXIT_FAILURE);
     1111        }
     1112
     1113        md = warpInputExpMetadataFromObject(object);
     1114        if (!md) {
     1115            exit(EXIT_FAILURE);
     1116        }
     1117
     1118        psFree(object);
     1119
     1120            psFree(md);
     1121            exit(EXIT_FAILURE);
     1122        }
     1123            psFree(md);
     1124            exit(EXIT_FAILURE);
     1125        }
     1126        if (!psMetadataLookupBool(&status, md, "magiced") == true) {
     1127            psFree(md);
     1128            exit(EXIT_FAILURE);
     1129        }
     1130
     1131        psFree(md);
     1132    }
     1133
     1134    {
     1135        psMetadata      *md;
     1136        warpSkyCellMapRow *object;
     1137        bool            status;
     1138
     1139        object = warpSkyCellMapRowAlloc(-64, "a string", "a string", -64, "a string", -16);
     1140        if (!object) {
     1141            exit(EXIT_FAILURE);
     1142        }
     1143
     1144        md = warpSkyCellMapMetadataFromObject(object);
     1145        if (!md) {
     1146            exit(EXIT_FAILURE);
     1147        }
     1148
     1149        psFree(object);
     1150
     1151            psFree(md);
     1152            exit(EXIT_FAILURE);
     1153        }
     1154        if (strncmp(psMetadataLookupPtr(&status, md, "skycell_id"), "a string", MAX_STRING_LENGTH)) {
     1155            psFree(md);
     1156            exit(EXIT_FAILURE);
     1157        }
     1158        if (strncmp(psMetadataLookupPtr(&status, md, "tess_id"), "a string", MAX_STRING_LENGTH)) {
     1159            psFree(md);
     1160            exit(EXIT_FAILURE);
     1161        }
     1162            psFree(md);
     1163            exit(EXIT_FAILURE);
     1164        }
     1165        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
     1166            psFree(md);
     1167            exit(EXIT_FAILURE);
     1168        }
     1169            psFree(md);
     1170            exit(EXIT_FAILURE);
     1171        }
     1172
     1173        psFree(md);
     1174    }
     1175
     1176    {
     1177        psMetadata      *md;
     1178        warpSkyfileRow  *object;
     1179        bool            status;
     1180
     1181        object = warpSkyfileRowAlloc(-64, "a string", "a string", "a string", "a string", 64.64, 64.64);
     1182        if (!object) {
     1183            exit(EXIT_FAILURE);
     1184        }
     1185
     1186        md = warpSkyfileMetadataFromObject(object);
     1187        if (!md) {
     1188            exit(EXIT_FAILURE);
     1189        }
     1190
     1191        psFree(object);
     1192
     1193            psFree(md);
     1194            exit(EXIT_FAILURE);
     1195        }
     1196        if (strncmp(psMetadataLookupPtr(&status, md, "skycell_id"), "a string", MAX_STRING_LENGTH)) {
     1197            psFree(md);
     1198            exit(EXIT_FAILURE);
     1199        }
     1200        if (strncmp(psMetadataLookupPtr(&status, md, "tess_id"), "a string", MAX_STRING_LENGTH)) {
     1201            psFree(md);
     1202            exit(EXIT_FAILURE);
     1203        }
     1204        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     1205            psFree(md);
     1206            exit(EXIT_FAILURE);
     1207        }
     1208        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     1209            psFree(md);
     1210            exit(EXIT_FAILURE);
     1211        }
     1212        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     1213            psFree(md);
     1214            exit(EXIT_FAILURE);
     1215        }
     1216        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     1217            psFree(md);
     1218            exit(EXIT_FAILURE);
     1219        }
     1220
     1221        psFree(md);
     1222    }
     1223
     1224    {
     1225        psMetadata      *md;
     1226        diffRunRow      *object;
     1227        bool            status;
     1228
     1229        object = diffRunRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string");
     1230        if (!object) {
     1231            exit(EXIT_FAILURE);
     1232        }
     1233
     1234        md = diffRunMetadataFromObject(object);
     1235        if (!md) {
     1236            exit(EXIT_FAILURE);
     1237        }
     1238
     1239        psFree(object);
     1240
     1241            psFree(md);
     1242            exit(EXIT_FAILURE);
     1243        }
     1244        if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
     1245            psFree(md);
     1246            exit(EXIT_FAILURE);
     1247        }
     1248        if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
     1249            psFree(md);
     1250            exit(EXIT_FAILURE);
     1251        }
     1252        if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
     1253            psFree(md);
     1254            exit(EXIT_FAILURE);
     1255        }
     1256            psFree(md);
     1257            exit(EXIT_FAILURE);
     1258        }
     1259        if (strncmp(psMetadataLookupPtr(&status, md, "skycell_id"), "a string", MAX_STRING_LENGTH)) {
     1260            psFree(md);
     1261            exit(EXIT_FAILURE);
     1262        }
     1263        if (strncmp(psMetadataLookupPtr(&status, md, "tess_id"), "a string", MAX_STRING_LENGTH)) {
     1264            psFree(md);
     1265            exit(EXIT_FAILURE);
     1266        }
     1267
     1268        psFree(md);
     1269    }
     1270
     1271    {
     1272        psMetadata      *md;
     1273        diffInputSkyfileRow *object;
     1274        bool            status;
     1275
     1276        object = diffInputSkyfileRowAlloc(-64, -64, "a string", "a string", "a string", true);
     1277        if (!object) {
     1278            exit(EXIT_FAILURE);
     1279        }
     1280
     1281        md = diffInputSkyfileMetadataFromObject(object);
     1282        if (!md) {
     1283            exit(EXIT_FAILURE);
     1284        }
     1285
     1286        psFree(object);
     1287
     1288            psFree(md);
     1289            exit(EXIT_FAILURE);
     1290        }
     1291            psFree(md);
     1292            exit(EXIT_FAILURE);
     1293        }
     1294        if (strncmp(psMetadataLookupPtr(&status, md, "skycell_id"), "a string", MAX_STRING_LENGTH)) {
     1295            psFree(md);
     1296            exit(EXIT_FAILURE);
     1297        }
     1298        if (strncmp(psMetadataLookupPtr(&status, md, "tess_id"), "a string", MAX_STRING_LENGTH)) {
     1299            psFree(md);
     1300            exit(EXIT_FAILURE);
     1301        }
     1302        if (strncmp(psMetadataLookupPtr(&status, md, "kind"), "a string", MAX_STRING_LENGTH)) {
     1303            psFree(md);
     1304            exit(EXIT_FAILURE);
     1305        }
     1306        if (!psMetadataLookupBool(&status, md, "template") == true) {
     1307            psFree(md);
     1308            exit(EXIT_FAILURE);
     1309        }
     1310
     1311        psFree(md);
     1312    }
     1313
     1314    {
     1315        psMetadata      *md;
     1316        diffSkyfileRow  *object;
     1317        bool            status;
     1318
     1319        object = diffSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64);
     1320        if (!object) {
     1321            exit(EXIT_FAILURE);
     1322        }
     1323
     1324        md = diffSkyfileMetadataFromObject(object);
     1325        if (!md) {
     1326            exit(EXIT_FAILURE);
     1327        }
     1328
     1329        psFree(object);
     1330
     1331            psFree(md);
     1332            exit(EXIT_FAILURE);
     1333        }
     1334        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     1335            psFree(md);
     1336            exit(EXIT_FAILURE);
     1337        }
     1338        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     1339            psFree(md);
     1340            exit(EXIT_FAILURE);
     1341        }
     1342        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     1343            psFree(md);
     1344            exit(EXIT_FAILURE);
     1345        }
     1346        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     1347            psFree(md);
     1348            exit(EXIT_FAILURE);
     1349        }
     1350
     1351        psFree(md);
     1352    }
     1353
     1354    {
     1355        psMetadata      *md;
     1356        stackRunRow     *object;
     1357        bool            status;
     1358
     1359        object = stackRunRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string");
     1360        if (!object) {
     1361            exit(EXIT_FAILURE);
     1362        }
     1363
     1364        md = stackRunMetadataFromObject(object);
     1365        if (!md) {
     1366            exit(EXIT_FAILURE);
     1367        }
     1368
     1369        psFree(object);
     1370
     1371            psFree(md);
     1372            exit(EXIT_FAILURE);
     1373        }
     1374        if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
     1375            psFree(md);
     1376            exit(EXIT_FAILURE);
     1377        }
     1378        if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
     1379            psFree(md);
     1380            exit(EXIT_FAILURE);
     1381        }
     1382        if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
     1383            psFree(md);
     1384            exit(EXIT_FAILURE);
     1385        }
     1386            psFree(md);
     1387            exit(EXIT_FAILURE);
     1388        }
     1389        if (strncmp(psMetadataLookupPtr(&status, md, "skycell_id"), "a string", MAX_STRING_LENGTH)) {
     1390            psFree(md);
     1391            exit(EXIT_FAILURE);
     1392        }
     1393        if (strncmp(psMetadataLookupPtr(&status, md, "tess_id"), "a string", MAX_STRING_LENGTH)) {
     1394            psFree(md);
     1395            exit(EXIT_FAILURE);
     1396        }
     1397
     1398        psFree(md);
     1399    }
     1400
     1401    {
     1402        psMetadata      *md;
     1403        stackInputSkyfileRow *object;
     1404        bool            status;
     1405
     1406        object = stackInputSkyfileRowAlloc(-64, -64);
     1407        if (!object) {
     1408            exit(EXIT_FAILURE);
     1409        }
     1410
     1411        md = stackInputSkyfileMetadataFromObject(object);
     1412        if (!md) {
     1413            exit(EXIT_FAILURE);
     1414        }
     1415
     1416        psFree(object);
     1417
     1418            psFree(md);
     1419            exit(EXIT_FAILURE);
     1420        }
     1421            psFree(md);
     1422            exit(EXIT_FAILURE);
     1423        }
     1424
     1425        psFree(md);
     1426    }
     1427
     1428    {
     1429        psMetadata      *md;
     1430        stackSumSkyfileRow *object;
     1431        bool            status;
     1432
     1433        object = stackSumSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64);
     1434        if (!object) {
     1435            exit(EXIT_FAILURE);
     1436        }
     1437
     1438        md = stackSumSkyfileMetadataFromObject(object);
     1439        if (!md) {
     1440            exit(EXIT_FAILURE);
     1441        }
     1442
     1443        psFree(object);
     1444
     1445            psFree(md);
     1446            exit(EXIT_FAILURE);
     1447        }
     1448        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     1449            psFree(md);
     1450            exit(EXIT_FAILURE);
     1451        }
     1452        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     1453            psFree(md);
     1454            exit(EXIT_FAILURE);
     1455        }
     1456        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     1457            psFree(md);
     1458            exit(EXIT_FAILURE);
     1459        }
     1460        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     1461            psFree(md);
     1462            exit(EXIT_FAILURE);
     1463        }
     1464
     1465        psFree(md);
     1466    }
     1467
     1468    {
     1469        psMetadata      *md;
     1470        detRunRow       *object;
     1471        bool            status;
     1472
     1473        object = detRunRowAlloc(-64, -32, "a string", "a string", "a string", "a string", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 64.64, 64.64, "0001-01-01T00:00:00Z", "0001-01-01T00:00:00Z", "0001-01-01T00:00:00Z", "0001-01-01T00:00:00Z", "0001-01-01T00:00:00Z", 32.32, 32.32, "a string", -32);
     1474        if (!object) {
     1475            exit(EXIT_FAILURE);
     1476        }
     1477
     1478        md = detRunMetadataFromObject(object);
     1479        if (!md) {
     1480            exit(EXIT_FAILURE);
     1481        }
     1482
     1483        psFree(object);
     1484
     1485            psFree(md);
     1486            exit(EXIT_FAILURE);
     1487        }
     1488        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
     1489            psFree(md);
     1490            exit(EXIT_FAILURE);
     1491        }
     1492        if (strncmp(psMetadataLookupPtr(&status, md, "det_type"), "a string", MAX_STRING_LENGTH)) {
     1493            psFree(md);
     1494            exit(EXIT_FAILURE);
     1495        }
     1496        if (strncmp(psMetadataLookupPtr(&status, md, "mode"), "a string", MAX_STRING_LENGTH)) {
     1497            psFree(md);
     1498            exit(EXIT_FAILURE);
     1499        }
     1500        if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
     1501            psFree(md);
     1502            exit(EXIT_FAILURE);
     1503        }
     1504        if (strncmp(psMetadataLookupPtr(&status, md, "filelevel"), "a string", MAX_STRING_LENGTH)) {
     1505            psFree(md);
     1506            exit(EXIT_FAILURE);
     1507        }
     1508        if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
    1091509            psFree(md);
    1101510            exit(EXIT_FAILURE);
     
    1181518            exit(EXIT_FAILURE);
    1191519        }
    120         if (strncmp(psMetadataLookupPtr(&status, md, "file_id"), "a string", MAX_STRING_LENGTH)) {
    121             psFree(md);
    122             exit(EXIT_FAILURE);
    123         }
    124         if (!psMetadataLookupS32(&status, md, "bytes") == -32) {
    125             psFree(md);
    126             exit(EXIT_FAILURE);
    127         }
    128         if (strncmp(psMetadataLookupPtr(&status, md, "md5sum"), "a string", MAX_STRING_LENGTH)) {
    129             psFree(md);
    130             exit(EXIT_FAILURE);
    131         }
    132         if (strncmp(psMetadataLookupPtr(&status, md, "class"), "a string", MAX_STRING_LENGTH)) {
     1520        if (strncmp(psMetadataLookupPtr(&status, md, "exp_type"), "a string", MAX_STRING_LENGTH)) {
     1521            psFree(md);
     1522            exit(EXIT_FAILURE);
     1523        }
     1524        if (strncmp(psMetadataLookupPtr(&status, md, "reduction"), "a string", MAX_STRING_LENGTH)) {
     1525            psFree(md);
     1526            exit(EXIT_FAILURE);
     1527        }
     1528        if (strncmp(psMetadataLookupPtr(&status, md, "filter"), "a string", MAX_STRING_LENGTH)) {
     1529            psFree(md);
     1530            exit(EXIT_FAILURE);
     1531        }
     1532        if (!psMetadataLookupF32(&status, md, "airmass_min") == 32.32) {
     1533            psFree(md);
     1534            exit(EXIT_FAILURE);
     1535        }
     1536        if (!psMetadataLookupF32(&status, md, "airmass_max") == 32.32) {
     1537            psFree(md);
     1538            exit(EXIT_FAILURE);
     1539        }
     1540        if (!psMetadataLookupF32(&status, md, "exp_time_min") == 32.32) {
     1541            psFree(md);
     1542            exit(EXIT_FAILURE);
     1543        }
     1544        if (!psMetadataLookupF32(&status, md, "exp_time_max") == 32.32) {
     1545            psFree(md);
     1546            exit(EXIT_FAILURE);
     1547        }
     1548        if (!psMetadataLookupF32(&status, md, "ccd_temp_min") == 32.32) {
     1549            psFree(md);
     1550            exit(EXIT_FAILURE);
     1551        }
     1552        if (!psMetadataLookupF32(&status, md, "ccd_temp_max") == 32.32) {
     1553            psFree(md);
     1554            exit(EXIT_FAILURE);
     1555        }
     1556        if (!psMetadataLookupF64(&status, md, "posang_min") == 64.64) {
     1557            psFree(md);
     1558            exit(EXIT_FAILURE);
     1559        }
     1560        if (!psMetadataLookupF64(&status, md, "posang_max") == 64.64) {
     1561            psFree(md);
     1562            exit(EXIT_FAILURE);
     1563        }
     1564            psFree(md);
     1565            exit(EXIT_FAILURE);
     1566        }
     1567            psFree(md);
     1568            exit(EXIT_FAILURE);
     1569        }
     1570            psFree(md);
     1571            exit(EXIT_FAILURE);
     1572        }
     1573            psFree(md);
     1574            exit(EXIT_FAILURE);
     1575        }
     1576            psFree(md);
     1577            exit(EXIT_FAILURE);
     1578        }
     1579        if (!psMetadataLookupF32(&status, md, "solang_min") == 32.32) {
     1580            psFree(md);
     1581            exit(EXIT_FAILURE);
     1582        }
     1583        if (!psMetadataLookupF32(&status, md, "solang_max") == 32.32) {
     1584            psFree(md);
     1585            exit(EXIT_FAILURE);
     1586        }
     1587        if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
     1588            psFree(md);
     1589            exit(EXIT_FAILURE);
     1590        }
     1591        if (!psMetadataLookupS32(&status, md, "parent") == -32) {
     1592            psFree(md);
     1593            exit(EXIT_FAILURE);
     1594        }
     1595
     1596        psFree(md);
     1597    }
     1598
     1599    {
     1600        psMetadata      *md;
     1601        detInputExpRow  *object;
     1602        bool            status;
     1603
     1604        object = detInputExpRowAlloc(-64, -32, -64, true);
     1605        if (!object) {
     1606            exit(EXIT_FAILURE);
     1607        }
     1608
     1609        md = detInputExpMetadataFromObject(object);
     1610        if (!md) {
     1611            exit(EXIT_FAILURE);
     1612        }
     1613
     1614        psFree(object);
     1615
     1616            psFree(md);
     1617            exit(EXIT_FAILURE);
     1618        }
     1619        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
     1620            psFree(md);
     1621            exit(EXIT_FAILURE);
     1622        }
     1623            psFree(md);
     1624            exit(EXIT_FAILURE);
     1625        }
     1626        if (!psMetadataLookupBool(&status, md, "include") == true) {
     1627            psFree(md);
     1628            exit(EXIT_FAILURE);
     1629        }
     1630
     1631        psFree(md);
     1632    }
     1633
     1634    {
     1635        psMetadata      *md;
     1636        detProcessedImfileRow *object;
     1637        bool            status;
     1638
     1639        object = detProcessedImfileRowAlloc(-64, -64, "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
     1640        if (!object) {
     1641            exit(EXIT_FAILURE);
     1642        }
     1643
     1644        md = detProcessedImfileMetadataFromObject(object);
     1645        if (!md) {
     1646            exit(EXIT_FAILURE);
     1647        }
     1648
     1649        psFree(object);
     1650
     1651            psFree(md);
     1652            exit(EXIT_FAILURE);
     1653        }
    1331654            psFree(md);
    1341655            exit(EXIT_FAILURE);
     
    1421663            exit(EXIT_FAILURE);
    1431664        }
    144 
    145         psFree(md);
    146     }
    147 
    148     {
    149         psMetadata      *md;
    150         pzPendingExpRow *object;
    151         bool            status;
    152 
    153         object = pzPendingExpRowAlloc("a string", "a string", "a string");
    154         if (!object) {
    155             exit(EXIT_FAILURE);
    156         }
    157 
    158         md = pzPendingExpMetadataFromObject(object);
    159         if (!md) {
    160             exit(EXIT_FAILURE);
    161         }
    162 
    163         psFree(object);
    164 
    165         if (strncmp(psMetadataLookupPtr(&status, md, "exp_name"), "a string", MAX_STRING_LENGTH)) {
    166             psFree(md);
    167             exit(EXIT_FAILURE);
    168         }
    169         if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
    170             psFree(md);
    171             exit(EXIT_FAILURE);
    172         }
    173         if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) {
    174             psFree(md);
    175             exit(EXIT_FAILURE);
    176         }
    177 
    178         psFree(md);
    179     }
    180 
    181     {
    182         psMetadata      *md;
    183         pzPendingImfileRow *object;
    184         bool            status;
    185 
    186         object = pzPendingImfileRowAlloc("a string", "a string", "a string", "a string", "a string");
    187         if (!object) {
    188             exit(EXIT_FAILURE);
    189         }
    190 
    191         md = pzPendingImfileMetadataFromObject(object);
    192         if (!md) {
    193             exit(EXIT_FAILURE);
    194         }
    195 
    196         psFree(object);
    197 
    198         if (strncmp(psMetadataLookupPtr(&status, md, "exp_name"), "a string", MAX_STRING_LENGTH)) {
    199             psFree(md);
    200             exit(EXIT_FAILURE);
    201         }
    202         if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
    203             psFree(md);
    204             exit(EXIT_FAILURE);
    205         }
    206         if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) {
    207             psFree(md);
    208             exit(EXIT_FAILURE);
    209         }
    210         if (strncmp(psMetadataLookupPtr(&status, md, "class"), "a string", MAX_STRING_LENGTH)) {
     1665        if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
     1666            psFree(md);
     1667            exit(EXIT_FAILURE);
     1668        }
     1669        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     1670            psFree(md);
     1671            exit(EXIT_FAILURE);
     1672        }
     1673        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     1674            psFree(md);
     1675            exit(EXIT_FAILURE);
     1676        }
     1677        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
     1678            psFree(md);
     1679            exit(EXIT_FAILURE);
     1680        }
     1681        if (!psMetadataLookupF64(&status, md, "fringe_0") == 64.64) {
     1682            psFree(md);
     1683            exit(EXIT_FAILURE);
     1684        }
     1685        if (!psMetadataLookupF64(&status, md, "fringe_1") == 64.64) {
     1686            psFree(md);
     1687            exit(EXIT_FAILURE);
     1688        }
     1689        if (!psMetadataLookupF64(&status, md, "fringe_2") == 64.64) {
     1690            psFree(md);
     1691            exit(EXIT_FAILURE);
     1692        }
     1693        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
     1694            psFree(md);
     1695            exit(EXIT_FAILURE);
     1696        }
     1697        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
     1698            psFree(md);
     1699            exit(EXIT_FAILURE);
     1700        }
     1701        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
     1702            psFree(md);
     1703            exit(EXIT_FAILURE);
     1704        }
     1705        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
     1706            psFree(md);
     1707            exit(EXIT_FAILURE);
     1708        }
     1709        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
     1710            psFree(md);
     1711            exit(EXIT_FAILURE);
     1712        }
     1713        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     1714            psFree(md);
     1715            exit(EXIT_FAILURE);
     1716        }
     1717            psFree(md);
     1718            exit(EXIT_FAILURE);
     1719        }
     1720
     1721        psFree(md);
     1722    }
     1723
     1724    {
     1725        psMetadata      *md;
     1726        detProcessedExpRow *object;
     1727        bool            status;
     1728
     1729        object = detProcessedExpRowAlloc(-64, -64, "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
     1730        if (!object) {
     1731            exit(EXIT_FAILURE);
     1732        }
     1733
     1734        md = detProcessedExpMetadataFromObject(object);
     1735        if (!md) {
     1736            exit(EXIT_FAILURE);
     1737        }
     1738
     1739        psFree(object);
     1740
     1741            psFree(md);
     1742            exit(EXIT_FAILURE);
     1743        }
     1744            psFree(md);
     1745            exit(EXIT_FAILURE);
     1746        }
     1747        if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
     1748            psFree(md);
     1749            exit(EXIT_FAILURE);
     1750        }
     1751        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     1752            psFree(md);
     1753            exit(EXIT_FAILURE);
     1754        }
     1755        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     1756            psFree(md);
     1757            exit(EXIT_FAILURE);
     1758        }
     1759        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
     1760            psFree(md);
     1761            exit(EXIT_FAILURE);
     1762        }
     1763        if (!psMetadataLookupF64(&status, md, "fringe_0") == 64.64) {
     1764            psFree(md);
     1765            exit(EXIT_FAILURE);
     1766        }
     1767        if (!psMetadataLookupF64(&status, md, "fringe_1") == 64.64) {
     1768            psFree(md);
     1769            exit(EXIT_FAILURE);
     1770        }
     1771        if (!psMetadataLookupF64(&status, md, "fringe_2") == 64.64) {
     1772            psFree(md);
     1773            exit(EXIT_FAILURE);
     1774        }
     1775        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
     1776            psFree(md);
     1777            exit(EXIT_FAILURE);
     1778        }
     1779        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
     1780            psFree(md);
     1781            exit(EXIT_FAILURE);
     1782        }
     1783        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
     1784            psFree(md);
     1785            exit(EXIT_FAILURE);
     1786        }
     1787        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
     1788            psFree(md);
     1789            exit(EXIT_FAILURE);
     1790        }
     1791        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
     1792            psFree(md);
     1793            exit(EXIT_FAILURE);
     1794        }
     1795        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     1796            psFree(md);
     1797            exit(EXIT_FAILURE);
     1798        }
     1799            psFree(md);
     1800            exit(EXIT_FAILURE);
     1801        }
     1802
     1803        psFree(md);
     1804    }
     1805
     1806    {
     1807        psMetadata      *md;
     1808        detStackedImfileRow *object;
     1809        bool            status;
     1810
     1811        object = detStackedImfileRowAlloc(-64, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, -16);
     1812        if (!object) {
     1813            exit(EXIT_FAILURE);
     1814        }
     1815
     1816        md = detStackedImfileMetadataFromObject(object);
     1817        if (!md) {
     1818            exit(EXIT_FAILURE);
     1819        }
     1820
     1821        psFree(object);
     1822
     1823            psFree(md);
     1824            exit(EXIT_FAILURE);
     1825        }
     1826        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
    2111827            psFree(md);
    2121828            exit(EXIT_FAILURE);
     
    2161832            exit(EXIT_FAILURE);
    2171833        }
    218 
    219         psFree(md);
    220     }
    221 
    222     {
    223         psMetadata      *md;
    224         pzDoneExpRow    *object;
    225         bool            status;
    226 
    227         object = pzDoneExpRowAlloc("a string", "a string", "a string");
    228         if (!object) {
    229             exit(EXIT_FAILURE);
    230         }
    231 
    232         md = pzDoneExpMetadataFromObject(object);
    233         if (!md) {
    234             exit(EXIT_FAILURE);
    235         }
    236 
    237         psFree(object);
    238 
    239         if (strncmp(psMetadataLookupPtr(&status, md, "exp_name"), "a string", MAX_STRING_LENGTH)) {
    240             psFree(md);
    241             exit(EXIT_FAILURE);
    242         }
    243         if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
    244             psFree(md);
    245             exit(EXIT_FAILURE);
    246         }
    247         if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) {
    248             psFree(md);
    249             exit(EXIT_FAILURE);
    250         }
    251 
    252         psFree(md);
    253     }
    254 
    255     {
    256         psMetadata      *md;
    257         pzDoneImfileRow *object;
    258         bool            status;
    259 
    260         object = pzDoneImfileRowAlloc("a string", "a string", "a string", "a string", "a string", "a string");
    261         if (!object) {
    262             exit(EXIT_FAILURE);
    263         }
    264 
    265         md = pzDoneImfileMetadataFromObject(object);
    266         if (!md) {
    267             exit(EXIT_FAILURE);
    268         }
    269 
    270         psFree(object);
    271 
    272         if (strncmp(psMetadataLookupPtr(&status, md, "exp_name"), "a string", MAX_STRING_LENGTH)) {
    273             psFree(md);
    274             exit(EXIT_FAILURE);
    275         }
    276         if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
    277             psFree(md);
    278             exit(EXIT_FAILURE);
    279         }
    280         if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) {
    281             psFree(md);
    282             exit(EXIT_FAILURE);
    283         }
    284         if (strncmp(psMetadataLookupPtr(&status, md, "class"), "a string", MAX_STRING_LENGTH)) {
     1834        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     1835            psFree(md);
     1836            exit(EXIT_FAILURE);
     1837        }
     1838        if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
     1839            psFree(md);
     1840            exit(EXIT_FAILURE);
     1841        }
     1842        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     1843            psFree(md);
     1844            exit(EXIT_FAILURE);
     1845        }
     1846        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     1847            psFree(md);
     1848            exit(EXIT_FAILURE);
     1849        }
     1850        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
     1851            psFree(md);
     1852            exit(EXIT_FAILURE);
     1853        }
     1854        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
     1855            psFree(md);
     1856            exit(EXIT_FAILURE);
     1857        }
     1858        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
     1859            psFree(md);
     1860            exit(EXIT_FAILURE);
     1861        }
     1862        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
     1863            psFree(md);
     1864            exit(EXIT_FAILURE);
     1865        }
     1866        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
     1867            psFree(md);
     1868            exit(EXIT_FAILURE);
     1869        }
     1870        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
     1871            psFree(md);
     1872            exit(EXIT_FAILURE);
     1873        }
     1874            psFree(md);
     1875            exit(EXIT_FAILURE);
     1876        }
     1877
     1878        psFree(md);
     1879    }
     1880
     1881    {
     1882        psMetadata      *md;
     1883        detNormalizedStatImfileRow *object;
     1884        bool            status;
     1885
     1886        object = detNormalizedStatImfileRowAlloc(-64, -32, "a string", 32.32, -16);
     1887        if (!object) {
     1888            exit(EXIT_FAILURE);
     1889        }
     1890
     1891        md = detNormalizedStatImfileMetadataFromObject(object);
     1892        if (!md) {
     1893            exit(EXIT_FAILURE);
     1894        }
     1895
     1896        psFree(object);
     1897
     1898            psFree(md);
     1899            exit(EXIT_FAILURE);
     1900        }
     1901        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
    2851902            psFree(md);
    2861903            exit(EXIT_FAILURE);
     
    2901907            exit(EXIT_FAILURE);
    2911908        }
     1909        if (!psMetadataLookupF32(&status, md, "norm") == 32.32) {
     1910            psFree(md);
     1911            exit(EXIT_FAILURE);
     1912        }
     1913            psFree(md);
     1914            exit(EXIT_FAILURE);
     1915        }
     1916
     1917        psFree(md);
     1918    }
     1919
     1920    {
     1921        psMetadata      *md;
     1922        detNormalizedImfileRow *object;
     1923        bool            status;
     1924
     1925        object = detNormalizedImfileRowAlloc(-64, -32, "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
     1926        if (!object) {
     1927            exit(EXIT_FAILURE);
     1928        }
     1929
     1930        md = detNormalizedImfileMetadataFromObject(object);
     1931        if (!md) {
     1932            exit(EXIT_FAILURE);
     1933        }
     1934
     1935        psFree(object);
     1936
     1937            psFree(md);
     1938            exit(EXIT_FAILURE);
     1939        }
     1940        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
     1941            psFree(md);
     1942            exit(EXIT_FAILURE);
     1943        }
     1944        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
     1945            psFree(md);
     1946            exit(EXIT_FAILURE);
     1947        }
    2921948        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    2931949            psFree(md);
    2941950            exit(EXIT_FAILURE);
    2951951        }
    296 
    297         psFree(md);
    298     }
    299 
    300     {
    301         psMetadata      *md;
    302         newExpRow       *object;
    303         bool            status;
    304 
    305         object = newExpRowAlloc(-64, "a string", "a string", "a string", "a string", "a string", "a string", "a string");
    306         if (!object) {
    307             exit(EXIT_FAILURE);
    308         }
    309 
    310         md = newExpMetadataFromObject(object);
    311         if (!md) {
    312             exit(EXIT_FAILURE);
    313         }
    314 
    315         psFree(object);
    316 
    317             psFree(md);
    318             exit(EXIT_FAILURE);
    319         }
    320         if (strncmp(psMetadataLookupPtr(&status, md, "tmp_exp_name"), "a string", MAX_STRING_LENGTH)) {
    321             psFree(md);
    322             exit(EXIT_FAILURE);
    323         }
    324         if (strncmp(psMetadataLookupPtr(&status, md, "tmp_camera"), "a string", MAX_STRING_LENGTH)) {
    325             psFree(md);
    326             exit(EXIT_FAILURE);
    327         }
    328         if (strncmp(psMetadataLookupPtr(&status, md, "tmp_telescope"), "a string", MAX_STRING_LENGTH)) {
    329             psFree(md);
    330             exit(EXIT_FAILURE);
    331         }
    332         if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
    333             psFree(md);
    334             exit(EXIT_FAILURE);
    335         }
    336         if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
    337             psFree(md);
    338             exit(EXIT_FAILURE);
    339         }
    340         if (strncmp(psMetadataLookupPtr(&status, md, "workdir_state"), "a string", MAX_STRING_LENGTH)) {
    341             psFree(md);
    342             exit(EXIT_FAILURE);
    343         }
    344         if (strncmp(psMetadataLookupPtr(&status, md, "reduction"), "a string", MAX_STRING_LENGTH)) {
    345             psFree(md);
    346             exit(EXIT_FAILURE);
    347         }
    348 
    349         psFree(md);
    350     }
    351 
    352     {
    353         psMetadata      *md;
    354         newImfileRow    *object;
    355         bool            status;
    356 
    357         object = newImfileRowAlloc(-64, "a string", "a string");
    358         if (!object) {
    359             exit(EXIT_FAILURE);
    360         }
    361 
    362         md = newImfileMetadataFromObject(object);
    363         if (!md) {
    364             exit(EXIT_FAILURE);
    365         }
    366 
    367         psFree(object);
    368 
    369             psFree(md);
    370             exit(EXIT_FAILURE);
    371         }
    372         if (strncmp(psMetadataLookupPtr(&status, md, "tmp_class_id"), "a string", MAX_STRING_LENGTH)) {
     1952        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     1953            psFree(md);
     1954            exit(EXIT_FAILURE);
     1955        }
     1956        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     1957            psFree(md);
     1958            exit(EXIT_FAILURE);
     1959        }
     1960        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
     1961            psFree(md);
     1962            exit(EXIT_FAILURE);
     1963        }
     1964        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
     1965            psFree(md);
     1966            exit(EXIT_FAILURE);
     1967        }
     1968        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
     1969            psFree(md);
     1970            exit(EXIT_FAILURE);
     1971        }
     1972        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
     1973            psFree(md);
     1974            exit(EXIT_FAILURE);
     1975        }
     1976        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
     1977            psFree(md);
     1978            exit(EXIT_FAILURE);
     1979        }
     1980        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
     1981            psFree(md);
     1982            exit(EXIT_FAILURE);
     1983        }
     1984        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     1985            psFree(md);
     1986            exit(EXIT_FAILURE);
     1987        }
     1988            psFree(md);
     1989            exit(EXIT_FAILURE);
     1990        }
     1991
     1992        psFree(md);
     1993    }
     1994
     1995    {
     1996        psMetadata      *md;
     1997        detNormalizedExpRow *object;
     1998        bool            status;
     1999
     2000        object = detNormalizedExpRowAlloc(-64, -32, "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
     2001        if (!object) {
     2002            exit(EXIT_FAILURE);
     2003        }
     2004
     2005        md = detNormalizedExpMetadataFromObject(object);
     2006        if (!md) {
     2007            exit(EXIT_FAILURE);
     2008        }
     2009
     2010        psFree(object);
     2011
     2012            psFree(md);
     2013            exit(EXIT_FAILURE);
     2014        }
     2015        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
     2016            psFree(md);
     2017            exit(EXIT_FAILURE);
     2018        }
     2019        if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
     2020            psFree(md);
     2021            exit(EXIT_FAILURE);
     2022        }
     2023        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     2024            psFree(md);
     2025            exit(EXIT_FAILURE);
     2026        }
     2027        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     2028            psFree(md);
     2029            exit(EXIT_FAILURE);
     2030        }
     2031        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
     2032            psFree(md);
     2033            exit(EXIT_FAILURE);
     2034        }
     2035        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
     2036            psFree(md);
     2037            exit(EXIT_FAILURE);
     2038        }
     2039        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
     2040            psFree(md);
     2041            exit(EXIT_FAILURE);
     2042        }
     2043        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
     2044            psFree(md);
     2045            exit(EXIT_FAILURE);
     2046        }
     2047        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
     2048            psFree(md);
     2049            exit(EXIT_FAILURE);
     2050        }
     2051        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
     2052            psFree(md);
     2053            exit(EXIT_FAILURE);
     2054        }
     2055        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     2056            psFree(md);
     2057            exit(EXIT_FAILURE);
     2058        }
     2059            psFree(md);
     2060            exit(EXIT_FAILURE);
     2061        }
     2062
     2063        psFree(md);
     2064    }
     2065
     2066    {
     2067        psMetadata      *md;
     2068        detResidImfileRow *object;
     2069        bool            status;
     2070
     2071        object = detResidImfileRowAlloc(-64, -32, -64, "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
     2072        if (!object) {
     2073            exit(EXIT_FAILURE);
     2074        }
     2075
     2076        md = detResidImfileMetadataFromObject(object);
     2077        if (!md) {
     2078            exit(EXIT_FAILURE);
     2079        }
     2080
     2081        psFree(object);
     2082
     2083            psFree(md);
     2084            exit(EXIT_FAILURE);
     2085        }
     2086        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
     2087            psFree(md);
     2088            exit(EXIT_FAILURE);
     2089        }
     2090            psFree(md);
     2091            exit(EXIT_FAILURE);
     2092        }
     2093        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
    3732094            psFree(md);
    3742095            exit(EXIT_FAILURE);
     
    3782099            exit(EXIT_FAILURE);
    3792100        }
    380 
    381         psFree(md);
    382     }
    383 
    384     {
    385         psMetadata      *md;
    386         rawExpRow       *object;
    387         bool            status;
    388 
    389         object = rawExpRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", 32.32, -16);
    390         if (!object) {
    391             exit(EXIT_FAILURE);
    392         }
    393 
    394         md = rawExpMetadataFromObject(object);
    395         if (!md) {
    396             exit(EXIT_FAILURE);
    397         }
    398 
    399         psFree(object);
    400 
    401             psFree(md);
    402             exit(EXIT_FAILURE);
    403         }
    404         if (strncmp(psMetadataLookupPtr(&status, md, "exp_name"), "a string", MAX_STRING_LENGTH)) {
    405             psFree(md);
    406             exit(EXIT_FAILURE);
    407         }
    408         if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
    409             psFree(md);
    410             exit(EXIT_FAILURE);
    411         }
    412         if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) {
    413             psFree(md);
    414             exit(EXIT_FAILURE);
    415         }
    416             psFree(md);
    417             exit(EXIT_FAILURE);
    418         }
    419         if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
    420             psFree(md);
    421             exit(EXIT_FAILURE);
    422         }
    423         if (strncmp(psMetadataLookupPtr(&status, md, "exp_type"), "a string", MAX_STRING_LENGTH)) {
    424             psFree(md);
    425             exit(EXIT_FAILURE);
    426         }
    427         if (strncmp(psMetadataLookupPtr(&status, md, "filelevel"), "a string", MAX_STRING_LENGTH)) {
    428             psFree(md);
    429             exit(EXIT_FAILURE);
    430         }
    431         if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
    432             psFree(md);
    433             exit(EXIT_FAILURE);
    434         }
    435         if (strncmp(psMetadataLookupPtr(&status, md, "reduction"), "a string", MAX_STRING_LENGTH)) {
    436             psFree(md);
    437             exit(EXIT_FAILURE);
    438         }
    439         if (strncmp(psMetadataLookupPtr(&status, md, "filter"), "a string", MAX_STRING_LENGTH)) {
    440             psFree(md);
    441             exit(EXIT_FAILURE);
    442         }
    443         if (!psMetadataLookupF32(&status, md, "airmass") == 32.32) {
    444             psFree(md);
    445             exit(EXIT_FAILURE);
    446         }
    447         if (!psMetadataLookupF64(&status, md, "ra") == 64.64) {
    448             psFree(md);
    449             exit(EXIT_FAILURE);
    450         }
    451         if (!psMetadataLookupF64(&status, md, "decl") == 64.64) {
    452             psFree(md);
    453             exit(EXIT_FAILURE);
    454         }
    455         if (!psMetadataLookupF32(&status, md, "exp_time") == 32.32) {
    456             psFree(md);
    457             exit(EXIT_FAILURE);
    458         }
    459         if (!psMetadataLookupF32(&status, md, "sat_pixel_frac") == 32.32) {
     2101        if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
    4602102            psFree(md);
    4612103            exit(EXIT_FAILURE);
     
    4732115            exit(EXIT_FAILURE);
    4742116        }
    475         if (!psMetadataLookupF64(&status, md, "alt") == 64.64) {
    476             psFree(md);
    477             exit(EXIT_FAILURE);
    478         }
    479         if (!psMetadataLookupF64(&status, md, "az") == 64.64) {
    480             psFree(md);
    481             exit(EXIT_FAILURE);
    482         }
    483         if (!psMetadataLookupF32(&status, md, "ccd_temp") == 32.32) {
    484             psFree(md);
    485             exit(EXIT_FAILURE);
    486         }
    487         if (!psMetadataLookupF64(&status, md, "posang") == 64.64) {
     2117        if (!psMetadataLookupF64(&status, md, "bin_stdev") == 64.64) {
     2118            psFree(md);
     2119            exit(EXIT_FAILURE);
     2120        }
     2121        if (!psMetadataLookupF64(&status, md, "fringe_0") == 64.64) {
     2122            psFree(md);
     2123            exit(EXIT_FAILURE);
     2124        }
     2125        if (!psMetadataLookupF64(&status, md, "fringe_1") == 64.64) {
     2126            psFree(md);
     2127            exit(EXIT_FAILURE);
     2128        }
     2129        if (!psMetadataLookupF64(&status, md, "fringe_2") == 64.64) {
    4882130            psFree(md);
    4892131            exit(EXIT_FAILURE);
     
    5092151            exit(EXIT_FAILURE);
    5102152        }
    511         if (strncmp(psMetadataLookupPtr(&status, md, "object"), "a string", MAX_STRING_LENGTH)) {
    512             psFree(md);
    513             exit(EXIT_FAILURE);
    514         }
    515         if (!psMetadataLookupF32(&status, md, "solang") == 32.32) {
    516             psFree(md);
    517             exit(EXIT_FAILURE);
    518         }
    519             psFree(md);
    520             exit(EXIT_FAILURE);
    521         }
    522 
    523         psFree(md);
    524     }
    525 
    526     {
    527         psMetadata      *md;
    528         rawImfileRow    *object;
    529         bool            status;
    530 
    531         object = rawImfileRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
    532         if (!object) {
    533             exit(EXIT_FAILURE);
    534         }
    535 
    536         md = rawImfileMetadataFromObject(object);
    537         if (!md) {
    538             exit(EXIT_FAILURE);
    539         }
    540 
    541         psFree(object);
    542 
    543             psFree(md);
    544             exit(EXIT_FAILURE);
    545         }
    546         if (strncmp(psMetadataLookupPtr(&status, md, "exp_name"), "a string", MAX_STRING_LENGTH)) {
    547             psFree(md);
    548             exit(EXIT_FAILURE);
    549         }
    550         if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
    551             psFree(md);
    552             exit(EXIT_FAILURE);
    553         }
    554         if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) {
    555             psFree(md);
    556             exit(EXIT_FAILURE);
    557         }
    558             psFree(md);
    559             exit(EXIT_FAILURE);
    560         }
    561         if (strncmp(psMetadataLookupPtr(&status, md, "tmp_class_id"), "a string", MAX_STRING_LENGTH)) {
    562             psFree(md);
    563             exit(EXIT_FAILURE);
    564         }
    565         if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
    566             psFree(md);
    567             exit(EXIT_FAILURE);
    568         }
    569         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    570             psFree(md);
    571             exit(EXIT_FAILURE);
    572         }
    573         if (strncmp(psMetadataLookupPtr(&status, md, "exp_type"), "a string", MAX_STRING_LENGTH)) {
    574             psFree(md);
    575             exit(EXIT_FAILURE);
    576         }
    577         if (strncmp(psMetadataLookupPtr(&status, md, "filelevel"), "a string", MAX_STRING_LENGTH)) {
    578             psFree(md);
    579             exit(EXIT_FAILURE);
    580         }
    581         if (strncmp(psMetadataLookupPtr(&status, md, "filter"), "a string", MAX_STRING_LENGTH)) {
    582             psFree(md);
    583             exit(EXIT_FAILURE);
    584         }
    585         if (!psMetadataLookupF32(&status, md, "airmass") == 32.32) {
    586             psFree(md);
    587             exit(EXIT_FAILURE);
    588         }
    589         if (!psMetadataLookupF64(&status, md, "ra") == 64.64) {
    590             psFree(md);
    591             exit(EXIT_FAILURE);
    592         }
    593         if (!psMetadataLookupF64(&status, md, "decl") == 64.64) {
    594             psFree(md);
    595             exit(EXIT_FAILURE);
    596         }
    597         if (!psMetadataLookupF32(&status, md, "exp_time") == 32.32) {
    598             psFree(md);
    599             exit(EXIT_FAILURE);
    600         }
    601         if (!psMetadataLookupF32(&status, md, "sat_pixel_frac") == 32.32) {
     2153        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     2154            psFree(md);
     2155            exit(EXIT_FAILURE);
     2156        }
     2157            psFree(md);
     2158            exit(EXIT_FAILURE);
     2159        }
     2160
     2161        psFree(md);
     2162    }
     2163
     2164    {
     2165        psMetadata      *md;
     2166        detResidExpRow  *object;
     2167        bool            status;
     2168
     2169        object = detResidExpRowAlloc(-64, -32, -64, "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", true, -16);
     2170        if (!object) {
     2171            exit(EXIT_FAILURE);
     2172        }
     2173
     2174        md = detResidExpMetadataFromObject(object);
     2175        if (!md) {
     2176            exit(EXIT_FAILURE);
     2177        }
     2178
     2179        psFree(object);
     2180
     2181            psFree(md);
     2182            exit(EXIT_FAILURE);
     2183        }
     2184        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
     2185            psFree(md);
     2186            exit(EXIT_FAILURE);
     2187        }
     2188            psFree(md);
     2189            exit(EXIT_FAILURE);
     2190        }
     2191        if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
    6022192            psFree(md);
    6032193            exit(EXIT_FAILURE);
     
    6152205            exit(EXIT_FAILURE);
    6162206        }
    617         if (!psMetadataLookupF64(&status, md, "alt") == 64.64) {
    618             psFree(md);
    619             exit(EXIT_FAILURE);
    620         }
    621         if (!psMetadataLookupF64(&status, md, "az") == 64.64) {
    622             psFree(md);
    623             exit(EXIT_FAILURE);
    624         }
    625         if (!psMetadataLookupF32(&status, md, "ccd_temp") == 32.32) {
    626             psFree(md);
    627             exit(EXIT_FAILURE);
    628         }
    629         if (!psMetadataLookupF64(&status, md, "posang") == 64.64) {
     2207        if (!psMetadataLookupF64(&status, md, "bin_stdev") == 64.64) {
     2208            psFree(md);
     2209            exit(EXIT_FAILURE);
     2210        }
     2211        if (!psMetadataLookupF64(&status, md, "fringe_0") == 64.64) {
     2212            psFree(md);
     2213            exit(EXIT_FAILURE);
     2214        }
     2215        if (!psMetadataLookupF64(&status, md, "fringe_1") == 64.64) {
     2216            psFree(md);
     2217            exit(EXIT_FAILURE);
     2218        }
     2219        if (!psMetadataLookupF64(&status, md, "fringe_2") == 64.64) {
    6302220            psFree(md);
    6312221            exit(EXIT_FAILURE);
     
    6512241            exit(EXIT_FAILURE);
    6522242        }
    653         if (strncmp(psMetadataLookupPtr(&status, md, "object"), "a string", MAX_STRING_LENGTH)) {
    654             psFree(md);
    655             exit(EXIT_FAILURE);
    656         }
    657             psFree(md);
    658             exit(EXIT_FAILURE);
    659         }
    660 
    661         psFree(md);
    662     }
    663 
    664     {
    665         psMetadata      *md;
    666         guidePendingExpRow *object;
    667         bool            status;
    668 
    669         object = guidePendingExpRowAlloc(-64, -64, "a string");
    670         if (!object) {
    671             exit(EXIT_FAILURE);
    672         }
    673 
    674         md = guidePendingExpMetadataFromObject(object);
    675         if (!md) {
    676             exit(EXIT_FAILURE);
    677         }
    678 
    679         psFree(object);
    680 
    681             psFree(md);
    682             exit(EXIT_FAILURE);
    683         }
    684             psFree(md);
    685             exit(EXIT_FAILURE);
    686         }
    687         if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
    688             psFree(md);
    689             exit(EXIT_FAILURE);
    690         }
    691 
    692         psFree(md);
    693     }
    694 
    695     {
    696         psMetadata      *md;
    697         chipRunRow      *object;
    698         bool            status;
    699 
    700         object = chipRunRowAlloc(-64, -64, "a string", "a string", "a string", "a string", "a string", "a string", "a string");
    701         if (!object) {
    702             exit(EXIT_FAILURE);
    703         }
    704 
    705         md = chipRunMetadataFromObject(object);
    706         if (!md) {
    707             exit(EXIT_FAILURE);
    708         }
    709 
    710         psFree(object);
    711 
    712             psFree(md);
    713             exit(EXIT_FAILURE);
    714         }
    715             psFree(md);
    716             exit(EXIT_FAILURE);
    717         }
    718         if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
    719             psFree(md);
    720             exit(EXIT_FAILURE);
    721         }
    722         if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
    723             psFree(md);
    724             exit(EXIT_FAILURE);
    725         }
    726         if (strncmp(psMetadataLookupPtr(&status, md, "workdir_state"), "a string", MAX_STRING_LENGTH)) {
    727             psFree(md);
    728             exit(EXIT_FAILURE);
    729         }
    730         if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
    731             psFree(md);
    732             exit(EXIT_FAILURE);
    733         }
    734         if (strncmp(psMetadataLookupPtr(&status, md, "reduction"), "a string", MAX_STRING_LENGTH)) {
    735             psFree(md);
    736             exit(EXIT_FAILURE);
    737         }
    738         if (strncmp(psMetadataLookupPtr(&status, md, "expgroup"), "a string", MAX_STRING_LENGTH)) {
    739             psFree(md);
    740             exit(EXIT_FAILURE);
    741         }
    742         if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
    743             psFree(md);
    744             exit(EXIT_FAILURE);
    745         }
    746 
    747         psFree(md);
    748     }
    749 
    750     {
    751         psMetadata      *md;
    752         chipProcessedImfileRow *object;
    753         bool            status;
    754 
    755         object = chipProcessedImfileRowAlloc(-64, -64, "a string", "a string", 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, -32, -32, -32, -32, "a string", -16);
    756         if (!object) {
    757             exit(EXIT_FAILURE);
    758         }
    759 
    760         md = chipProcessedImfileMetadataFromObject(object);
    761         if (!md) {
    762             exit(EXIT_FAILURE);
    763         }
    764 
    765         psFree(object);
    766 
    767             psFree(md);
    768             exit(EXIT_FAILURE);
    769         }
    770             psFree(md);
    771             exit(EXIT_FAILURE);
    772         }
    773         if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
    774             psFree(md);
    775             exit(EXIT_FAILURE);
    776         }
    777         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    778             psFree(md);
    779             exit(EXIT_FAILURE);
    780         }
    781         if (!psMetadataLookupF32(&status, md, "bg") == 32.32) {
    782             psFree(md);
    783             exit(EXIT_FAILURE);
    784         }
    785         if (!psMetadataLookupF32(&status, md, "bg_stdev") == 32.32) {
    786             psFree(md);
    787             exit(EXIT_FAILURE);
    788         }
    789         if (!psMetadataLookupF32(&status, md, "bg_mean_stdev") == 32.32) {
    790             psFree(md);
    791             exit(EXIT_FAILURE);
    792         }
    793         if (!psMetadataLookupF32(&status, md, "bias") == 32.32) {
    794             psFree(md);
    795             exit(EXIT_FAILURE);
    796         }
    797         if (!psMetadataLookupF32(&status, md, "bias_stdev") == 32.32) {
    798             psFree(md);
    799             exit(EXIT_FAILURE);
    800         }
    801         if (!psMetadataLookupF32(&status, md, "fringe_0") == 32.32) {
    802             psFree(md);
    803             exit(EXIT_FAILURE);
    804         }
    805         if (!psMetadataLookupF32(&status, md, "fringe_1") == 32.32) {
    806             psFree(md);
    807             exit(EXIT_FAILURE);
    808         }
    809         if (!psMetadataLookupF32(&status, md, "fringe_2") == 32.32) {
    810             psFree(md);
    811             exit(EXIT_FAILURE);
    812         }
    813         if (!psMetadataLookupF32(&status, md, "sigma_ra") == 32.32) {
    814             psFree(md);
    815             exit(EXIT_FAILURE);
    816         }
    817         if (!psMetadataLookupF32(&status, md, "sigma_dec") == 32.32) {
    818             psFree(md);
    819             exit(EXIT_FAILURE);
    820         }
    821         if (!psMetadataLookupF32(&status, md, "ap_resid") == 32.32) {
    822             psFree(md);
    823             exit(EXIT_FAILURE);
    824         }
    825         if (!psMetadataLookupF32(&status, md, "ap_resid_stdev") == 32.32) {
    826             psFree(md);
    827             exit(EXIT_FAILURE);
    828         }
    829         if (!psMetadataLookupF32(&status, md, "fwhm") == 32.32) {
    830             psFree(md);
    831             exit(EXIT_FAILURE);
    832         }
    833         if (!psMetadataLookupF32(&status, md, "fwhm_range") == 32.32) {
    834             psFree(md);
    835             exit(EXIT_FAILURE);
    836         }
    837         if (!psMetadataLookupS32(&status, md, "n_stars") == -32) {
    838             psFree(md);
    839             exit(EXIT_FAILURE);
    840         }
    841         if (!psMetadataLookupS32(&status, md, "n_extended") == -32) {
    842             psFree(md);
    843             exit(EXIT_FAILURE);
    844         }
    845         if (!psMetadataLookupS32(&status, md, "n_cr") == -32) {
    846             psFree(md);
    847             exit(EXIT_FAILURE);
    848         }
    849         if (!psMetadataLookupS32(&status, md, "n_astrom") == -32) {
    850             psFree(md);
    851             exit(EXIT_FAILURE);
    852         }
    8532243        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
    8542244            psFree(md);
    8552245            exit(EXIT_FAILURE);
    8562246        }
    857             psFree(md);
    858             exit(EXIT_FAILURE);
    859         }
    860 
    861         psFree(md);
    862     }
    863 
    864     {
    865         psMetadata      *md;
    866         chipMaskRow     *object;
    867         bool            status;
    868 
    869         object = chipMaskRowAlloc("a string");
    870         if (!object) {
    871             exit(EXIT_FAILURE);
    872         }
    873 
    874         md = chipMaskMetadataFromObject(object);
    875         if (!md) {
    876             exit(EXIT_FAILURE);
    877         }
    878 
    879         psFree(object);
    880 
    881         if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
    882             psFree(md);
    883             exit(EXIT_FAILURE);
    884         }
    885 
    886         psFree(md);
    887     }
    888 
    889     {
    890         psMetadata      *md;
    891         camRunRow       *object;
    892         bool            status;
    893 
    894         object = camRunRowAlloc(-64, -64, "a string", "a string", "a string", "a string", "a string", "a string", "a string");
    895         if (!object) {
    896             exit(EXIT_FAILURE);
    897         }
    898 
    899         md = camRunMetadataFromObject(object);
    900         if (!md) {
    901             exit(EXIT_FAILURE);
    902         }
    903 
    904         psFree(object);
    905 
    906             psFree(md);
    907             exit(EXIT_FAILURE);
    908         }
    909             psFree(md);
    910             exit(EXIT_FAILURE);
    911         }
    912         if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
    913             psFree(md);
    914             exit(EXIT_FAILURE);
    915         }
    916         if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
    917             psFree(md);
    918             exit(EXIT_FAILURE);
    919         }
    920         if (strncmp(psMetadataLookupPtr(&status, md, "workdir_state"), "a string", MAX_STRING_LENGTH)) {
    921             psFree(md);
    922             exit(EXIT_FAILURE);
    923         }
    924         if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
    925             psFree(md);
    926             exit(EXIT_FAILURE);
    927         }
    928         if (strncmp(psMetadataLookupPtr(&status, md, "reduction"), "a string", MAX_STRING_LENGTH)) {
    929             psFree(md);
    930             exit(EXIT_FAILURE);
    931         }
    932         if (strncmp(psMetadataLookupPtr(&status, md, "expgroup"), "a string", MAX_STRING_LENGTH)) {
    933             psFree(md);
    934             exit(EXIT_FAILURE);
    935         }
    936         if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
    937             psFree(md);
    938             exit(EXIT_FAILURE);
    939         }
    940 
    941         psFree(md);
    942     }
    943 
    944     {
    945         psMetadata      *md;
    946         camProcessedExpRow *object;
    947         bool            status;
    948 
    949         object = camProcessedExpRowAlloc(-64, -64, "a string", 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, -32, -32, -32, -32, "a string", -16);
    950         if (!object) {
    951             exit(EXIT_FAILURE);
    952         }
    953 
    954         md = camProcessedExpMetadataFromObject(object);
    955         if (!md) {
    956             exit(EXIT_FAILURE);
    957         }
    958 
    959         psFree(object);
    960 
    961             psFree(md);
    962             exit(EXIT_FAILURE);
    963         }
    964             psFree(md);
    965             exit(EXIT_FAILURE);
    966         }
    967         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    968             psFree(md);
    969             exit(EXIT_FAILURE);
    970         }
    971         if (!psMetadataLookupF32(&status, md, "bg") == 32.32) {
    972             psFree(md);
    973             exit(EXIT_FAILURE);
    974         }
    975         if (!psMetadataLookupF32(&status, md, "bg_stdev") == 32.32) {
    976             psFree(md);
    977             exit(EXIT_FAILURE);
    978         }
    979         if (!psMetadataLookupF32(&status, md, "bg_mean_stdev") == 32.32) {
    980             psFree(md);
    981             exit(EXIT_FAILURE);
    982         }
    983         if (!psMetadataLookupF32(&status, md, "sigma_ra") == 32.32) {
    984             psFree(md);
    985             exit(EXIT_FAILURE);
    986         }
    987         if (!psMetadataLookupF32(&status, md, "sigma_dec") == 32.32) {
    988             psFree(md);
    989             exit(EXIT_FAILURE);
    990         }
    991         if (!psMetadataLookupF32(&status, md, "zp_mean") == 32.32) {
    992             psFree(md);
    993             exit(EXIT_FAILURE);
    994         }
    995         if (!psMetadataLookupF32(&status, md, "zp_stdev") == 32.32) {
    996             psFree(md);
    997             exit(EXIT_FAILURE);
    998         }
    999         if (!psMetadataLookupF32(&status, md, "fwhm") == 32.32) {
    1000             psFree(md);
    1001             exit(EXIT_FAILURE);
    1002         }
    1003         if (!psMetadataLookupF32(&status, md, "fwhm_range") == 32.32) {
    1004             psFree(md);
    1005             exit(EXIT_FAILURE);
    1006         }
    1007         if (!psMetadataLookupS32(&status, md, "n_stars") == -32) {
    1008             psFree(md);
    1009             exit(EXIT_FAILURE);
    1010         }
    1011         if (!psMetadataLookupS32(&status, md, "n_extended") == -32) {
    1012             psFree(md);
    1013             exit(EXIT_FAILURE);
    1014         }
    1015         if (!psMetadataLookupS32(&status, md, "n_cr") == -32) {
    1016             psFree(md);
    1017             exit(EXIT_FAILURE);
    1018         }
    1019         if (!psMetadataLookupS32(&status, md, "n_astrom") == -32) {
    1020             psFree(md);
    1021             exit(EXIT_FAILURE);
    1022         }
    1023         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
    1024             psFree(md);
    1025             exit(EXIT_FAILURE);
    1026         }
    1027             psFree(md);
    1028             exit(EXIT_FAILURE);
    1029         }
    1030 
    1031         psFree(md);
    1032     }
    1033 
    1034     {
    1035         psMetadata      *md;
    1036         camMaskRow      *object;
    1037         bool            status;
    1038 
    1039         object = camMaskRowAlloc("a string");
    1040         if (!object) {
    1041             exit(EXIT_FAILURE);
    1042         }
    1043 
    1044         md = camMaskMetadataFromObject(object);
    1045         if (!md) {
    1046             exit(EXIT_FAILURE);
    1047         }
    1048 
    1049         psFree(object);
    1050 
    1051         if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
    1052             psFree(md);
    1053             exit(EXIT_FAILURE);
    1054         }
    1055 
    1056         psFree(md);
    1057     }
    1058 
    1059     {
    1060         psMetadata      *md;
    1061         warpRunRow      *object;
    1062         bool            status;
    1063 
    1064         object = warpRunRowAlloc(-64, "a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z");
    1065         if (!object) {
    1066             exit(EXIT_FAILURE);
    1067         }
    1068 
    1069         md = warpRunMetadataFromObject(object);
    1070         if (!md) {
    1071             exit(EXIT_FAILURE);
    1072         }
    1073 
    1074         psFree(object);
    1075 
    1076             psFree(md);
    1077             exit(EXIT_FAILURE);
    1078         }
    1079         if (strncmp(psMetadataLookupPtr(&status, md, "mode"), "a string", MAX_STRING_LENGTH)) {
    1080             psFree(md);
    1081             exit(EXIT_FAILURE);
    1082         }
    1083         if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
    1084             psFree(md);
    1085             exit(EXIT_FAILURE);
    1086         }
    1087         if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
    1088             psFree(md);
    1089             exit(EXIT_FAILURE);
    1090         }
    1091         if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
    1092             psFree(md);
    1093             exit(EXIT_FAILURE);
    1094         }
    1095             psFree(md);
    1096             exit(EXIT_FAILURE);
    1097         }
    1098 
    1099         psFree(md);
    1100     }
    1101 
    1102     {
    1103         psMetadata      *md;
    1104         warpInputExpRow *object;
    1105         bool            status;
    1106 
    1107         object = warpInputExpRowAlloc(-64, -64, true);
    1108         if (!object) {
    1109             exit(EXIT_FAILURE);
    1110         }
    1111 
    1112         md = warpInputExpMetadataFromObject(object);
    1113         if (!md) {
    1114             exit(EXIT_FAILURE);
    1115         }
    1116 
    1117         psFree(object);
    1118 
    1119             psFree(md);
    1120             exit(EXIT_FAILURE);
    1121         }
    1122             psFree(md);
    1123             exit(EXIT_FAILURE);
    1124         }
    1125         if (!psMetadataLookupBool(&status, md, "magiced") == true) {
    1126             psFree(md);
    1127             exit(EXIT_FAILURE);
    1128         }
    1129 
    1130         psFree(md);
    1131     }
    1132 
    1133     {
    1134         psMetadata      *md;
    1135         warpSkyCellMapRow *object;
    1136         bool            status;
    1137 
    1138         object = warpSkyCellMapRowAlloc(-64, "a string", "a string", -64, "a string", -16);
    1139         if (!object) {
    1140             exit(EXIT_FAILURE);
    1141         }
    1142 
    1143         md = warpSkyCellMapMetadataFromObject(object);
    1144         if (!md) {
    1145             exit(EXIT_FAILURE);
    1146         }
    1147 
    1148         psFree(object);
    1149 
    1150             psFree(md);
    1151             exit(EXIT_FAILURE);
    1152         }
    1153         if (strncmp(psMetadataLookupPtr(&status, md, "skycell_id"), "a string", MAX_STRING_LENGTH)) {
    1154             psFree(md);
    1155             exit(EXIT_FAILURE);
    1156         }
    1157         if (strncmp(psMetadataLookupPtr(&status, md, "tess_id"), "a string", MAX_STRING_LENGTH)) {
    1158             psFree(md);
    1159             exit(EXIT_FAILURE);
    1160         }
    1161             psFree(md);
    1162             exit(EXIT_FAILURE);
    1163         }
    1164         if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
    1165             psFree(md);
    1166             exit(EXIT_FAILURE);
    1167         }
    1168             psFree(md);
    1169             exit(EXIT_FAILURE);
    1170         }
    1171 
    1172         psFree(md);
    1173     }
    1174 
    1175     {
    1176         psMetadata      *md;
    1177         warpSkyfileRow  *object;
    1178         bool            status;
    1179 
    1180         object = warpSkyfileRowAlloc(-64, "a string", "a string", "a string", "a string", 64.64, 64.64, 64.64, -16);
    1181         if (!object) {
    1182             exit(EXIT_FAILURE);
    1183         }
    1184 
    1185         md = warpSkyfileMetadataFromObject(object);
    1186         if (!md) {
    1187             exit(EXIT_FAILURE);
    1188         }
    1189 
    1190         psFree(object);
    1191 
    1192             psFree(md);
    1193             exit(EXIT_FAILURE);
    1194         }
    1195         if (strncmp(psMetadataLookupPtr(&status, md, "skycell_id"), "a string", MAX_STRING_LENGTH)) {
    1196             psFree(md);
    1197             exit(EXIT_FAILURE);
    1198         }
    1199         if (strncmp(psMetadataLookupPtr(&status, md, "tess_id"), "a string", MAX_STRING_LENGTH)) {
    1200             psFree(md);
    1201             exit(EXIT_FAILURE);
    1202         }
    1203         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    1204             psFree(md);
    1205             exit(EXIT_FAILURE);
    1206         }
    1207         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     2247        if (!psMetadataLookupBool(&status, md, "accept") == true) {
     2248            psFree(md);
     2249            exit(EXIT_FAILURE);
     2250        }
     2251            psFree(md);
     2252            exit(EXIT_FAILURE);
     2253        }
     2254
     2255        psFree(md);
     2256    }
     2257
     2258    {
     2259        psMetadata      *md;
     2260        detRunSummaryRow *object;
     2261        bool            status;
     2262
     2263        object = detRunSummaryRowAlloc(-64, -32, 64.64, 64.64, 64.64, true, -16);
     2264        if (!object) {
     2265            exit(EXIT_FAILURE);
     2266        }
     2267
     2268        md = detRunSummaryMetadataFromObject(object);
     2269        if (!md) {
     2270            exit(EXIT_FAILURE);
     2271        }
     2272
     2273        psFree(object);
     2274
     2275            psFree(md);
     2276            exit(EXIT_FAILURE);
     2277        }
     2278        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
    12082279            psFree(md);
    12092280            exit(EXIT_FAILURE);
     
    12172288            exit(EXIT_FAILURE);
    12182289        }
    1219         if (!psMetadataLookupF64(&status, md, "pixel_fill") == 64.64) {
    1220             psFree(md);
    1221             exit(EXIT_FAILURE);
    1222         }
    1223             psFree(md);
    1224             exit(EXIT_FAILURE);
    1225         }
    1226 
    1227         psFree(md);
    1228     }
    1229 
    1230     {
    1231         psMetadata      *md;
    1232         diffRunRow      *object;
    1233         bool            status;
    1234 
    1235         object = diffRunRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string");
    1236         if (!object) {
    1237             exit(EXIT_FAILURE);
    1238         }
    1239 
    1240         md = diffRunMetadataFromObject(object);
    1241         if (!md) {
    1242             exit(EXIT_FAILURE);
    1243         }
    1244 
    1245         psFree(object);
    1246 
    1247             psFree(md);
    1248             exit(EXIT_FAILURE);
    1249         }
    1250         if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
    1251             psFree(md);
    1252             exit(EXIT_FAILURE);
    1253         }
    1254         if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
    1255             psFree(md);
    1256             exit(EXIT_FAILURE);
    1257         }
    1258         if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
    1259             psFree(md);
    1260             exit(EXIT_FAILURE);
    1261         }
    1262             psFree(md);
    1263             exit(EXIT_FAILURE);
    1264         }
    1265         if (strncmp(psMetadataLookupPtr(&status, md, "skycell_id"), "a string", MAX_STRING_LENGTH)) {
    1266             psFree(md);
    1267             exit(EXIT_FAILURE);
    1268         }
    1269         if (strncmp(psMetadataLookupPtr(&status, md, "tess_id"), "a string", MAX_STRING_LENGTH)) {
    1270             psFree(md);
    1271             exit(EXIT_FAILURE);
    1272         }
    1273 
    1274         psFree(md);
    1275     }
    1276 
    1277     {
    1278         psMetadata      *md;
    1279         diffInputSkyfileRow *object;
    1280         bool            status;
    1281 
    1282         object = diffInputSkyfileRowAlloc(-64, true, -64, -64, "a string", "a string", "a string");
    1283         if (!object) {
    1284             exit(EXIT_FAILURE);
    1285         }
    1286 
    1287         md = diffInputSkyfileMetadataFromObject(object);
    1288         if (!md) {
    1289             exit(EXIT_FAILURE);
    1290         }
    1291 
    1292         psFree(object);
    1293 
    1294             psFree(md);
    1295             exit(EXIT_FAILURE);
    1296         }
    1297         if (!psMetadataLookupBool(&status, md, "template") == true) {
    1298             psFree(md);
    1299             exit(EXIT_FAILURE);
    1300         }
    1301             psFree(md);
    1302             exit(EXIT_FAILURE);
    1303         }
    1304             psFree(md);
    1305             exit(EXIT_FAILURE);
    1306         }
    1307         if (strncmp(psMetadataLookupPtr(&status, md, "skycell_id"), "a string", MAX_STRING_LENGTH)) {
    1308             psFree(md);
    1309             exit(EXIT_FAILURE);
    1310         }
    1311         if (strncmp(psMetadataLookupPtr(&status, md, "tess_id"), "a string", MAX_STRING_LENGTH)) {
    1312             psFree(md);
    1313             exit(EXIT_FAILURE);
    1314         }
    1315         if (strncmp(psMetadataLookupPtr(&status, md, "kind"), "a string", MAX_STRING_LENGTH)) {
    1316             psFree(md);
    1317             exit(EXIT_FAILURE);
    1318         }
    1319 
    1320         psFree(md);
    1321     }
    1322 
    1323     {
    1324         psMetadata      *md;
    1325         diffSkyfileRow  *object;
    1326         bool            status;
    1327 
    1328         object = diffSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64, -16);
    1329         if (!object) {
    1330             exit(EXIT_FAILURE);
    1331         }
    1332 
    1333         md = diffSkyfileMetadataFromObject(object);
    1334         if (!md) {
    1335             exit(EXIT_FAILURE);
    1336         }
    1337 
    1338         psFree(object);
    1339 
    1340             psFree(md);
    1341             exit(EXIT_FAILURE);
    1342         }
    1343         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    1344             psFree(md);
    1345             exit(EXIT_FAILURE);
    1346         }
    1347         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
    1348             psFree(md);
    1349             exit(EXIT_FAILURE);
    1350         }
    1351         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
    1352             psFree(md);
    1353             exit(EXIT_FAILURE);
    1354         }
    1355         if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
    1356             psFree(md);
    1357             exit(EXIT_FAILURE);
    1358         }
    1359             psFree(md);
    1360             exit(EXIT_FAILURE);
    1361         }
    1362 
    1363         psFree(md);
    1364     }
    1365 
    1366     {
    1367         psMetadata      *md;
    1368         stackRunRow     *object;
    1369         bool            status;
    1370 
    1371         object = stackRunRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string");
    1372         if (!object) {
    1373             exit(EXIT_FAILURE);
    1374         }
    1375 
    1376         md = stackRunMetadataFromObject(object);
    1377         if (!md) {
    1378             exit(EXIT_FAILURE);
    1379         }
    1380 
    1381         psFree(object);
    1382 
    1383             psFree(md);
    1384             exit(EXIT_FAILURE);
    1385         }
    1386         if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
    1387             psFree(md);
    1388             exit(EXIT_FAILURE);
    1389         }
    1390         if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
    1391             psFree(md);
    1392             exit(EXIT_FAILURE);
    1393         }
    1394         if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
    1395             psFree(md);
    1396             exit(EXIT_FAILURE);
    1397         }
    1398             psFree(md);
    1399             exit(EXIT_FAILURE);
    1400         }
    1401         if (strncmp(psMetadataLookupPtr(&status, md, "skycell_id"), "a string", MAX_STRING_LENGTH)) {
    1402             psFree(md);
    1403             exit(EXIT_FAILURE);
    1404         }
    1405         if (strncmp(psMetadataLookupPtr(&status, md, "tess_id"), "a string", MAX_STRING_LENGTH)) {
    1406             psFree(md);
    1407             exit(EXIT_FAILURE);
    1408         }
    1409 
    1410         psFree(md);
    1411     }
    1412 
    1413     {
    1414         psMetadata      *md;
    1415         stackInputSkyfileRow *object;
    1416         bool            status;
    1417 
    1418         object = stackInputSkyfileRowAlloc(-64, -64);
    1419         if (!object) {
    1420             exit(EXIT_FAILURE);
    1421         }
    1422 
    1423         md = stackInputSkyfileMetadataFromObject(object);
    1424         if (!md) {
    1425             exit(EXIT_FAILURE);
    1426         }
    1427 
    1428         psFree(object);
    1429 
    1430             psFree(md);
    1431             exit(EXIT_FAILURE);
    1432         }
    1433             psFree(md);
    1434             exit(EXIT_FAILURE);
    1435         }
    1436 
    1437         psFree(md);
    1438     }
    1439 
    1440     {
    1441         psMetadata      *md;
    1442         stackSumSkyfileRow *object;
    1443         bool            status;
    1444 
    1445         object = stackSumSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64, -16);
    1446         if (!object) {
    1447             exit(EXIT_FAILURE);
    1448         }
    1449 
    1450         md = stackSumSkyfileMetadataFromObject(object);
    1451         if (!md) {
    1452             exit(EXIT_FAILURE);
    1453         }
    1454 
    1455         psFree(object);
    1456 
    1457             psFree(md);
    1458             exit(EXIT_FAILURE);
    1459         }
    1460         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    1461             psFree(md);
    1462             exit(EXIT_FAILURE);
    1463         }
    1464         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
    1465             psFree(md);
    1466             exit(EXIT_FAILURE);
    1467         }
    1468         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
    1469             psFree(md);
    1470             exit(EXIT_FAILURE);
    1471         }
    1472         if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
    1473             psFree(md);
    1474             exit(EXIT_FAILURE);
    1475         }
    1476             psFree(md);
    1477             exit(EXIT_FAILURE);
    1478         }
    1479 
    1480         psFree(md);
    1481     }
    1482 
    1483     {
    1484         psMetadata      *md;
    1485         detRunRow       *object;
    1486         bool            status;
    1487 
    1488         object = detRunRowAlloc(-64, -32, "a string", "a string", "a string", "a string", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 64.64, 64.64, "0001-01-01T00:00:00Z", "0001-01-01T00:00:00Z", "0001-01-01T00:00:00Z", "0001-01-01T00:00:00Z", "0001-01-01T00:00:00Z", 32.32, 32.32, "a string", -32);
    1489         if (!object) {
    1490             exit(EXIT_FAILURE);
    1491         }
    1492 
    1493         md = detRunMetadataFromObject(object);
    1494         if (!md) {
    1495             exit(EXIT_FAILURE);
    1496         }
    1497 
    1498         psFree(object);
    1499 
    1500             psFree(md);
    1501             exit(EXIT_FAILURE);
    1502         }
    1503         if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
    1504             psFree(md);
    1505             exit(EXIT_FAILURE);
    1506         }
    1507         if (strncmp(psMetadataLookupPtr(&status, md, "det_type"), "a string", MAX_STRING_LENGTH)) {
    1508             psFree(md);
    1509             exit(EXIT_FAILURE);
    1510         }
    1511         if (strncmp(psMetadataLookupPtr(&status, md, "mode"), "a string", MAX_STRING_LENGTH)) {
    1512             psFree(md);
    1513             exit(EXIT_FAILURE);
    1514         }
    1515         if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
    1516             psFree(md);
    1517             exit(EXIT_FAILURE);
    1518         }
    1519         if (strncmp(psMetadataLookupPtr(&status, md, "filelevel"), "a string", MAX_STRING_LENGTH)) {
    1520             psFree(md);
    1521             exit(EXIT_FAILURE);
    1522         }
    1523         if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
    1524             psFree(md);
    1525             exit(EXIT_FAILURE);
    1526         }
    1527         if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
    1528             psFree(md);
    1529             exit(EXIT_FAILURE);
    1530         }
    1531         if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) {
    1532             psFree(md);
    1533             exit(EXIT_FAILURE);
    1534         }
    1535         if (strncmp(psMetadataLookupPtr(&status, md, "exp_type"), "a string", MAX_STRING_LENGTH)) {
    1536             psFree(md);
    1537             exit(EXIT_FAILURE);
    1538         }
    1539         if (strncmp(psMetadataLookupPtr(&status, md, "reduction"), "a string", MAX_STRING_LENGTH)) {
    1540             psFree(md);
    1541             exit(EXIT_FAILURE);
    1542         }
    1543         if (strncmp(psMetadataLookupPtr(&status, md, "filter"), "a string", MAX_STRING_LENGTH)) {
    1544             psFree(md);
    1545             exit(EXIT_FAILURE);
    1546         }
    1547         if (!psMetadataLookupF32(&status, md, "airmass_min") == 32.32) {
    1548             psFree(md);
    1549             exit(EXIT_FAILURE);
    1550         }
    1551         if (!psMetadataLookupF32(&status, md, "airmass_max") == 32.32) {
    1552             psFree(md);
    1553             exit(EXIT_FAILURE);
    1554         }
    1555         if (!psMetadataLookupF32(&status, md, "exp_time_min") == 32.32) {
    1556             psFree(md);
    1557             exit(EXIT_FAILURE);
    1558         }
    1559         if (!psMetadataLookupF32(&status, md, "exp_time_max") == 32.32) {
    1560             psFree(md);
    1561             exit(EXIT_FAILURE);
    1562         }
    1563         if (!psMetadataLookupF32(&status, md, "ccd_temp_min") == 32.32) {
    1564             psFree(md);
    1565             exit(EXIT_FAILURE);
    1566         }
    1567         if (!psMetadataLookupF32(&status, md, "ccd_temp_max") == 32.32) {
    1568             psFree(md);
    1569             exit(EXIT_FAILURE);
    1570         }
    1571         if (!psMetadataLookupF64(&status, md, "posang_min") == 64.64) {
    1572             psFree(md);
    1573             exit(EXIT_FAILURE);
    1574         }
    1575         if (!psMetadataLookupF64(&status, md, "posang_max") == 64.64) {
    1576             psFree(md);
    1577             exit(EXIT_FAILURE);
    1578         }
    1579             psFree(md);
    1580             exit(EXIT_FAILURE);
    1581         }
    1582             psFree(md);
    1583             exit(EXIT_FAILURE);
    1584         }
    1585             psFree(md);
    1586             exit(EXIT_FAILURE);
    1587         }
    1588             psFree(md);
    1589             exit(EXIT_FAILURE);
    1590         }
    1591             psFree(md);
    1592             exit(EXIT_FAILURE);
    1593         }
    1594         if (!psMetadataLookupF32(&status, md, "solang_min") == 32.32) {
    1595             psFree(md);
    1596             exit(EXIT_FAILURE);
    1597         }
    1598         if (!psMetadataLookupF32(&status, md, "solang_max") == 32.32) {
    1599             psFree(md);
    1600             exit(EXIT_FAILURE);
    1601         }
    1602         if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
    1603             psFree(md);
    1604             exit(EXIT_FAILURE);
    1605         }
    1606         if (!psMetadataLookupS32(&status, md, "parent") == -32) {
    1607             psFree(md);
    1608             exit(EXIT_FAILURE);
    1609         }
    1610 
    1611         psFree(md);
    1612     }
    1613 
    1614     {
    1615         psMetadata      *md;
    1616         detInputExpRow  *object;
    1617         bool            status;
    1618 
    1619         object = detInputExpRowAlloc(-64, -32, -64, true);
    1620         if (!object) {
    1621             exit(EXIT_FAILURE);
    1622         }
    1623 
    1624         md = detInputExpMetadataFromObject(object);
    1625         if (!md) {
    1626             exit(EXIT_FAILURE);
    1627         }
    1628 
    1629         psFree(object);
    1630 
    1631             psFree(md);
    1632             exit(EXIT_FAILURE);
    1633         }
    1634         if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
    1635             psFree(md);
    1636             exit(EXIT_FAILURE);
    1637         }
    1638             psFree(md);
    1639             exit(EXIT_FAILURE);
    1640         }
    1641         if (!psMetadataLookupBool(&status, md, "include") == true) {
    1642             psFree(md);
    1643             exit(EXIT_FAILURE);
    1644         }
    1645 
    1646         psFree(md);
    1647     }
    1648 
    1649     {
    1650         psMetadata      *md;
    1651         detProcessedImfileRow *object;
    1652         bool            status;
    1653 
    1654         object = detProcessedImfileRowAlloc(-64, -64, "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
    1655         if (!object) {
    1656             exit(EXIT_FAILURE);
    1657         }
    1658 
    1659         md = detProcessedImfileMetadataFromObject(object);
    1660         if (!md) {
    1661             exit(EXIT_FAILURE);
    1662         }
    1663 
    1664         psFree(object);
    1665 
    1666             psFree(md);
    1667             exit(EXIT_FAILURE);
    1668         }
    1669             psFree(md);
    1670             exit(EXIT_FAILURE);
    1671         }
    1672         if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
    1673             psFree(md);
    1674             exit(EXIT_FAILURE);
    1675         }
    1676         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    1677             psFree(md);
    1678             exit(EXIT_FAILURE);
    1679         }
    1680         if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
    1681             psFree(md);
    1682             exit(EXIT_FAILURE);
    1683         }
    1684         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
    1685             psFree(md);
    1686             exit(EXIT_FAILURE);
    1687         }
    1688         if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
    1689             psFree(md);
    1690             exit(EXIT_FAILURE);
    1691         }
    16922290        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
    16932291            psFree(md);
    16942292            exit(EXIT_FAILURE);
    16952293        }
    1696         if (!psMetadataLookupF64(&status, md, "fringe_0") == 64.64) {
    1697             psFree(md);
    1698             exit(EXIT_FAILURE);
    1699         }
    1700         if (!psMetadataLookupF64(&status, md, "fringe_1") == 64.64) {
    1701             psFree(md);
    1702             exit(EXIT_FAILURE);
    1703         }
    1704         if (!psMetadataLookupF64(&status, md, "fringe_2") == 64.64) {
    1705             psFree(md);
    1706             exit(EXIT_FAILURE);
    1707         }
    1708         if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
    1709             psFree(md);
    1710             exit(EXIT_FAILURE);
    1711         }
    1712         if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
    1713             psFree(md);
    1714             exit(EXIT_FAILURE);
    1715         }
    1716         if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
    1717             psFree(md);
    1718             exit(EXIT_FAILURE);
    1719         }
    1720         if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
    1721             psFree(md);
    1722             exit(EXIT_FAILURE);
    1723         }
    1724         if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
    1725             psFree(md);
    1726             exit(EXIT_FAILURE);
    1727         }
    1728         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
    1729             psFree(md);
    1730             exit(EXIT_FAILURE);
    1731         }
    1732             psFree(md);
    1733             exit(EXIT_FAILURE);
    1734         }
    1735 
    1736         psFree(md);
    1737     }
    1738 
    1739     {
    1740         psMetadata      *md;
    1741         detProcessedExpRow *object;
    1742         bool            status;
    1743 
    1744         object = detProcessedExpRowAlloc(-64, -64, "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
    1745         if (!object) {
    1746             exit(EXIT_FAILURE);
    1747         }
    1748 
    1749         md = detProcessedExpMetadataFromObject(object);
    1750         if (!md) {
    1751             exit(EXIT_FAILURE);
    1752         }
    1753 
    1754         psFree(object);
    1755 
    1756             psFree(md);
    1757             exit(EXIT_FAILURE);
    1758         }
    1759             psFree(md);
    1760             exit(EXIT_FAILURE);
    1761         }
    1762         if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
    1763             psFree(md);
    1764             exit(EXIT_FAILURE);
    1765         }
    1766         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
    1767             psFree(md);
    1768             exit(EXIT_FAILURE);
    1769         }
    1770         if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
    1771             psFree(md);
    1772             exit(EXIT_FAILURE);
    1773         }
    1774         if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
    1775             psFree(md);
    1776             exit(EXIT_FAILURE);
    1777         }
    1778         if (!psMetadataLookupF64(&status, md, "fringe_0") == 64.64) {
    1779             psFree(md);
    1780             exit(EXIT_FAILURE);
    1781         }
    1782         if (!psMetadataLookupF64(&status, md, "fringe_1") == 64.64) {
    1783             psFree(md);
    1784             exit(EXIT_FAILURE);
    1785         }
    1786         if (!psMetadataLookupF64(&status, md, "fringe_2") == 64.64) {
    1787             psFree(md);
    1788             exit(EXIT_FAILURE);
    1789         }
    1790         if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
    1791             psFree(md);
    1792             exit(EXIT_FAILURE);
    1793         }
    1794         if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
    1795             psFree(md);
    1796             exit(EXIT_FAILURE);
    1797         }
    1798         if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
    1799             psFree(md);
    1800             exit(EXIT_FAILURE);
    1801         }
    1802         if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
    1803             psFree(md);
    1804             exit(EXIT_FAILURE);
    1805         }
    1806         if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
    1807             psFree(md);
    1808             exit(EXIT_FAILURE);
    1809         }
    1810         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
    1811             psFree(md);
    1812             exit(EXIT_FAILURE);
    1813         }
    1814             psFree(md);
    1815             exit(EXIT_FAILURE);
    1816         }
    1817 
    1818         psFree(md);
    1819     }
    1820 
    1821     {
    1822         psMetadata      *md;
    1823         detStackedImfileRow *object;
    1824         bool            status;
    1825 
    1826         object = detStackedImfileRowAlloc(-64, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, -16);
    1827         if (!object) {
    1828             exit(EXIT_FAILURE);
    1829         }
    1830 
    1831         md = detStackedImfileMetadataFromObject(object);
    1832         if (!md) {
    1833             exit(EXIT_FAILURE);
    1834         }
    1835 
    1836         psFree(object);
    1837 
    1838             psFree(md);
    1839             exit(EXIT_FAILURE);
    1840         }
    1841         if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
    1842             psFree(md);
    1843             exit(EXIT_FAILURE);
    1844         }
    1845         if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
    1846             psFree(md);
    1847             exit(EXIT_FAILURE);
    1848         }
    1849         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    1850             psFree(md);
    1851             exit(EXIT_FAILURE);
    1852         }
    1853         if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
    1854             psFree(md);
    1855             exit(EXIT_FAILURE);
    1856         }
    1857         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
    1858             psFree(md);
    1859             exit(EXIT_FAILURE);
    1860         }
    1861         if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
    1862             psFree(md);
    1863             exit(EXIT_FAILURE);
    1864         }
    1865         if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
    1866             psFree(md);
    1867             exit(EXIT_FAILURE);
    1868         }
    1869         if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
    1870             psFree(md);
    1871             exit(EXIT_FAILURE);
    1872         }
    1873         if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
    1874             psFree(md);
    1875             exit(EXIT_FAILURE);
    1876         }
    1877         if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
    1878             psFree(md);
    1879             exit(EXIT_FAILURE);
    1880         }
    1881         if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
    1882             psFree(md);
    1883             exit(EXIT_FAILURE);
    1884         }
    1885         if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
    1886             psFree(md);
    1887             exit(EXIT_FAILURE);
    1888         }
    1889             psFree(md);
    1890             exit(EXIT_FAILURE);
    1891         }
    1892 
    1893         psFree(md);
    1894     }
    1895 
    1896     {
    1897         psMetadata      *md;
    1898         detNormalizedStatImfileRow *object;
    1899         bool            status;
    1900 
    1901         object = detNormalizedStatImfileRowAlloc(-64, -32, "a string", 32.32, -16);
    1902         if (!object) {
    1903             exit(EXIT_FAILURE);
    1904         }
    1905 
    1906         md = detNormalizedStatImfileMetadataFromObject(object);
    1907         if (!md) {
    1908             exit(EXIT_FAILURE);
    1909         }
    1910 
    1911         psFree(object);
    1912 
    1913             psFree(md);
    1914             exit(EXIT_FAILURE);
    1915         }
    1916         if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
    1917             psFree(md);
    1918             exit(EXIT_FAILURE);
    1919         }
    1920         if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
    1921             psFree(md);
    1922             exit(EXIT_FAILURE);
    1923         }
    1924         if (!psMetadataLookupF32(&status, md, "norm") == 32.32) {
    1925             psFree(md);
    1926             exit(EXIT_FAILURE);
    1927         }
    1928             psFree(md);
    1929             exit(EXIT_FAILURE);
    1930         }
    1931 
    1932         psFree(md);
    1933     }
    1934 
    1935     {
    1936         psMetadata      *md;
    1937         detNormalizedImfileRow *object;
    1938         bool            status;
    1939 
    1940         object = detNormalizedImfileRowAlloc(-64, -32, "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
    1941         if (!object) {
    1942             exit(EXIT_FAILURE);
    1943         }
    1944 
    1945         md = detNormalizedImfileMetadataFromObject(object);
    1946         if (!md) {
    1947             exit(EXIT_FAILURE);
    1948         }
    1949 
    1950         psFree(object);
    1951 
    1952             psFree(md);
    1953             exit(EXIT_FAILURE);
    1954         }
    1955         if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
    1956             psFree(md);
    1957             exit(EXIT_FAILURE);
    1958         }
    1959         if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
    1960             psFree(md);
    1961             exit(EXIT_FAILURE);
    1962         }
    1963         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    1964             psFree(md);
    1965             exit(EXIT_FAILURE);
    1966         }
    1967         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
    1968             psFree(md);
    1969             exit(EXIT_FAILURE);
    1970         }
    1971         if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
    1972             psFree(md);
    1973             exit(EXIT_FAILURE);
    1974         }
    1975         if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
    1976             psFree(md);
    1977             exit(EXIT_FAILURE);
    1978         }
    1979         if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
    1980             psFree(md);
    1981             exit(EXIT_FAILURE);
    1982         }
    1983         if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
    1984             psFree(md);
    1985             exit(EXIT_FAILURE);
    1986         }
    1987         if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
    1988             psFree(md);
    1989             exit(EXIT_FAILURE);
    1990         }
    1991         if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
    1992             psFree(md);
    1993             exit(EXIT_FAILURE);
    1994         }
    1995         if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
    1996             psFree(md);
    1997             exit(EXIT_FAILURE);
    1998         }
    1999         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
    2000             psFree(md);
    2001             exit(EXIT_FAILURE);
    2002         }
    2003             psFree(md);
    2004             exit(EXIT_FAILURE);
    2005         }
    2006 
    2007         psFree(md);
    2008     }
    2009 
    2010     {
    2011         psMetadata      *md;
    2012         detNormalizedExpRow *object;
    2013         bool            status;
    2014 
    2015         object = detNormalizedExpRowAlloc(-64, -32, "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
    2016         if (!object) {
    2017             exit(EXIT_FAILURE);
    2018         }
    2019 
    2020         md = detNormalizedExpMetadataFromObject(object);
    2021         if (!md) {
    2022             exit(EXIT_FAILURE);
    2023         }
    2024 
    2025         psFree(object);
    2026 
    2027             psFree(md);
    2028             exit(EXIT_FAILURE);
    2029         }
    2030         if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
    2031             psFree(md);
    2032             exit(EXIT_FAILURE);
    2033         }
    2034         if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
    2035             psFree(md);
    2036             exit(EXIT_FAILURE);
    2037         }
    2038         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
    2039             psFree(md);
    2040             exit(EXIT_FAILURE);
    2041         }
    2042         if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
    2043             psFree(md);
    2044             exit(EXIT_FAILURE);
    2045         }
    2046         if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
    2047             psFree(md);
    2048             exit(EXIT_FAILURE);
    2049         }
    2050         if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
    2051             psFree(md);
    2052             exit(EXIT_FAILURE);
    2053         }
    2054         if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
    2055             psFree(md);
    2056             exit(EXIT_FAILURE);
    2057         }
    2058         if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
    2059             psFree(md);
    2060             exit(EXIT_FAILURE);
    2061         }
    2062         if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
    2063             psFree(md);
    2064             exit(EXIT_FAILURE);
    2065         }
    2066         if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
    2067             psFree(md);
    2068             exit(EXIT_FAILURE);
    2069         }
    2070         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
    2071             psFree(md);
    2072             exit(EXIT_FAILURE);
    2073         }
    2074             psFree(md);
    2075             exit(EXIT_FAILURE);
    2076         }
    2077 
    2078         psFree(md);
    2079     }
    2080 
    2081     {
    2082         psMetadata      *md;
    2083         detResidImfileRow *object;
    2084         bool            status;
    2085 
    2086         object = detResidImfileRowAlloc(-64, -32, -64, "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
    2087         if (!object) {
    2088             exit(EXIT_FAILURE);
    2089         }
    2090 
    2091         md = detResidImfileMetadataFromObject(object);
    2092         if (!md) {
    2093             exit(EXIT_FAILURE);
    2094         }
    2095 
    2096         psFree(object);
    2097 
    2098             psFree(md);
    2099             exit(EXIT_FAILURE);
    2100         }
    2101         if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
    2102             psFree(md);
    2103             exit(EXIT_FAILURE);
    2104         }
    2105             psFree(md);
    2106             exit(EXIT_FAILURE);
    2107         }
    2108         if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
    2109             psFree(md);
    2110             exit(EXIT_FAILURE);
    2111         }
    2112         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    2113             psFree(md);
    2114             exit(EXIT_FAILURE);
    2115         }
    2116         if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
    2117             psFree(md);
    2118             exit(EXIT_FAILURE);
    2119         }
    2120         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
    2121             psFree(md);
    2122             exit(EXIT_FAILURE);
    2123         }
    2124         if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
    2125             psFree(md);
    2126             exit(EXIT_FAILURE);
    2127         }
    2128         if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
    2129             psFree(md);
    2130             exit(EXIT_FAILURE);
    2131         }
    2132         if (!psMetadataLookupF64(&status, md, "bg_skewness") == 64.64) {
    2133             psFree(md);
    2134             exit(EXIT_FAILURE);
    2135         }
    2136         if (!psMetadataLookupF64(&status, md, "bg_kurtosis") == 64.64) {
    2137             psFree(md);
    2138             exit(EXIT_FAILURE);
    2139         }
    2140         if (!psMetadataLookupF64(&status, md, "bin_stdev") == 64.64) {
    2141             psFree(md);
    2142             exit(EXIT_FAILURE);
    2143         }
    2144         if (!psMetadataLookupF64(&status, md, "fringe_0") == 64.64) {
    2145             psFree(md);
    2146             exit(EXIT_FAILURE);
    2147         }
    2148         if (!psMetadataLookupF64(&status, md, "fringe_1") == 64.64) {
    2149             psFree(md);
    2150             exit(EXIT_FAILURE);
    2151         }
    2152         if (!psMetadataLookupF64(&status, md, "fringe_2") == 64.64) {
    2153             psFree(md);
    2154             exit(EXIT_FAILURE);
    2155         }
    2156         if (!psMetadataLookupF64(&status, md, "fringe_resid_0") == 64.64) {
    2157             psFree(md);
    2158             exit(EXIT_FAILURE);
    2159         }
    2160         if (!psMetadataLookupF64(&status, md, "fringe_resid_1") == 64.64) {
    2161             psFree(md);
    2162             exit(EXIT_FAILURE);
    2163         }
    2164         if (!psMetadataLookupF64(&status, md, "fringe_resid_2") == 64.64) {
    2165             psFree(md);
    2166             exit(EXIT_FAILURE);
    2167         }
    2168         if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
    2169             psFree(md);
    2170             exit(EXIT_FAILURE);
    2171         }
    2172         if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
    2173             psFree(md);
    2174             exit(EXIT_FAILURE);
    2175         }
    2176         if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
    2177             psFree(md);
    2178             exit(EXIT_FAILURE);
    2179         }
    2180         if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
    2181             psFree(md);
    2182             exit(EXIT_FAILURE);
    2183         }
    2184         if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
    2185             psFree(md);
    2186             exit(EXIT_FAILURE);
    2187         }
    2188         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
    2189             psFree(md);
    2190             exit(EXIT_FAILURE);
    2191         }
    2192             psFree(md);
    2193             exit(EXIT_FAILURE);
    2194         }
    2195 
    2196         psFree(md);
    2197     }
    2198 
    2199     {
    2200         psMetadata      *md;
    2201         detResidExpRow  *object;
    2202         bool            status;
    2203 
    2204         object = detResidExpRowAlloc(-64, -32, -64, "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", true, -16);
    2205         if (!object) {
    2206             exit(EXIT_FAILURE);
    2207         }
    2208 
    2209         md = detResidExpMetadataFromObject(object);
    2210         if (!md) {
    2211             exit(EXIT_FAILURE);
    2212         }
    2213 
    2214         psFree(object);
    2215 
    2216             psFree(md);
    2217             exit(EXIT_FAILURE);
    2218         }
    2219         if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
    2220             psFree(md);
    2221             exit(EXIT_FAILURE);
    2222         }
    2223             psFree(md);
    2224             exit(EXIT_FAILURE);
    2225         }
    2226         if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
    2227             psFree(md);
    2228             exit(EXIT_FAILURE);
    2229         }
    2230         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
    2231             psFree(md);
    2232             exit(EXIT_FAILURE);
    2233         }
    2234         if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
    2235             psFree(md);
    2236             exit(EXIT_FAILURE);
    2237         }
    2238         if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
    2239             psFree(md);
    2240             exit(EXIT_FAILURE);
    2241         }
    2242         if (!psMetadataLookupF64(&status, md, "bg_skewness") == 64.64) {
    2243             psFree(md);
    2244             exit(EXIT_FAILURE);
    2245         }
    2246         if (!psMetadataLookupF64(&status, md, "bg_kurtosis") == 64.64) {
    2247             psFree(md);
    2248             exit(EXIT_FAILURE);
    2249         }
    2250         if (!psMetadataLookupF64(&status, md, "bin_stdev") == 64.64) {
    2251             psFree(md);
    2252             exit(EXIT_FAILURE);
    2253         }
    2254         if (!psMetadataLookupF64(&status, md, "fringe_0") == 64.64) {
    2255             psFree(md);
    2256             exit(EXIT_FAILURE);
    2257         }
    2258         if (!psMetadataLookupF64(&status, md, "fringe_1") == 64.64) {
    2259             psFree(md);
    2260             exit(EXIT_FAILURE);
    2261         }
    2262         if (!psMetadataLookupF64(&status, md, "fringe_2") == 64.64) {
    2263             psFree(md);
    2264             exit(EXIT_FAILURE);
    2265         }
    2266         if (!psMetadataLookupF64(&status, md, "fringe_resid_0") == 64.64) {
    2267             psFree(md);
    2268             exit(EXIT_FAILURE);
    2269         }
    2270         if (!psMetadataLookupF64(&status, md, "fringe_resid_1") == 64.64) {
    2271             psFree(md);
    2272             exit(EXIT_FAILURE);
    2273         }
    2274         if (!psMetadataLookupF64(&status, md, "fringe_resid_2") == 64.64) {
    2275             psFree(md);
    2276             exit(EXIT_FAILURE);
    2277         }
    2278         if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
    2279             psFree(md);
    2280             exit(EXIT_FAILURE);
    2281         }
    2282         if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
    2283             psFree(md);
    2284             exit(EXIT_FAILURE);
    2285         }
    2286         if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
    2287             psFree(md);
    2288             exit(EXIT_FAILURE);
    2289         }
    2290         if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
    2291             psFree(md);
    2292             exit(EXIT_FAILURE);
    2293         }
    2294         if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
    2295             psFree(md);
    2296             exit(EXIT_FAILURE);
    2297         }
    2298         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
    2299             psFree(md);
    2300             exit(EXIT_FAILURE);
    2301         }
    23022294        if (!psMetadataLookupBool(&status, md, "accept") == true) {
    23032295            psFree(md);
    23042296            exit(EXIT_FAILURE);
    23052297        }
    2306             psFree(md);
    2307             exit(EXIT_FAILURE);
    2308         }
    2309 
    2310         psFree(md);
    2311     }
    2312 
    2313     {
    2314         psMetadata      *md;
    2315         detRunSummaryRow *object;
    2316         bool            status;
    2317 
    2318         object = detRunSummaryRowAlloc(-64, -32, 64.64, 64.64, 64.64, true, -16);
    2319         if (!object) {
    2320             exit(EXIT_FAILURE);
    2321         }
    2322 
    2323         md = detRunSummaryMetadataFromObject(object);
    2324         if (!md) {
    2325             exit(EXIT_FAILURE);
    2326         }
    2327 
    2328         psFree(object);
    2329 
    2330             psFree(md);
    2331             exit(EXIT_FAILURE);
    2332         }
    2333         if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
    2334             psFree(md);
    2335             exit(EXIT_FAILURE);
    2336         }
    2337         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
    2338             psFree(md);
    2339             exit(EXIT_FAILURE);
    2340         }
    2341         if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
    2342             psFree(md);
    2343             exit(EXIT_FAILURE);
    2344         }
    2345         if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
    2346             psFree(md);
    2347             exit(EXIT_FAILURE);
    2348         }
    2349         if (!psMetadataLookupBool(&status, md, "accept") == true) {
    2350             psFree(md);
    2351             exit(EXIT_FAILURE);
    2352         }
    2353             psFree(md);
    2354             exit(EXIT_FAILURE);
    2355         }
    2356 
    2357         psFree(md);
    2358     }
    2359 
    2360     {
    2361         psMetadata      *md;
    2362         detRegisteredImfileRow *object;
    2363         bool            status;
    2364 
    2365         object = detRegisteredImfileRowAlloc(-64, -32, "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
    2366         if (!object) {
    2367             exit(EXIT_FAILURE);
    2368         }
    2369 
    2370         md = detRegisteredImfileMetadataFromObject(object);
    2371         if (!md) {
    2372             exit(EXIT_FAILURE);
    2373         }
    2374 
    2375         psFree(object);
    2376 
    2377             psFree(md);
    2378             exit(EXIT_FAILURE);
    2379         }
    2380         if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
    2381             psFree(md);
    2382             exit(EXIT_FAILURE);
    2383         }
    2384         if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
    2385             psFree(md);
    2386             exit(EXIT_FAILURE);
    2387         }
    2388         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    2389             psFree(md);
    2390             exit(EXIT_FAILURE);
    2391         }
    2392         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
    2393             psFree(md);
    2394             exit(EXIT_FAILURE);
    2395         }
    2396         if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
    2397             psFree(md);
    2398             exit(EXIT_FAILURE);
    2399         }
    2400         if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
    2401             psFree(md);
    2402             exit(EXIT_FAILURE);
    2403         }
    2404         if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
    2405             psFree(md);
    2406             exit(EXIT_FAILURE);
    2407         }
    2408         if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
    2409             psFree(md);
    2410             exit(EXIT_FAILURE);
    2411         }
    2412         if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
    2413             psFree(md);
    2414             exit(EXIT_FAILURE);
    2415         }
    2416         if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
    2417             psFree(md);
    2418             exit(EXIT_FAILURE);
    2419         }
    2420         if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
    2421             psFree(md);
    2422             exit(EXIT_FAILURE);
    2423         }
    2424         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
    2425             psFree(md);
    2426             exit(EXIT_FAILURE);
    2427         }
    2428             psFree(md);
    2429             exit(EXIT_FAILURE);
    2430         }
    2431 
    2432         psFree(md);
    2433     }
    2434 
    2435     {
    2436         psMetadata      *md;
    2437         detCorrectedExpRow *object;
    2438         bool            status;
    2439 
    2440         object = detCorrectedExpRowAlloc(-64, -64, "a string", -64, "a string", "a string", "a string", -16);
    2441         if (!object) {
    2442             exit(EXIT_FAILURE);
    2443         }
    2444 
    2445         md = detCorrectedExpMetadataFromObject(object);
    2446         if (!md) {
    2447             exit(EXIT_FAILURE);
    2448         }
    2449 
    2450         psFree(object);
    2451 
    2452             psFree(md);
    2453             exit(EXIT_FAILURE);
    2454         }
    2455             psFree(md);
    2456             exit(EXIT_FAILURE);
    2457         }
    2458         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    2459             psFree(md);
    2460             exit(EXIT_FAILURE);
    2461         }
    2462             psFree(md);
    2463             exit(EXIT_FAILURE);
    2464         }
    2465         if (strncmp(psMetadataLookupPtr(&status, md, "corr_type"), "a string", MAX_STRING_LENGTH)) {
    2466             psFree(md);
    2467             exit(EXIT_FAILURE);
    2468         }
    2469         if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
    2470             psFree(md);
    2471             exit(EXIT_FAILURE);
    2472         }
    2473         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
    2474             psFree(md);
    2475             exit(EXIT_FAILURE);
    2476         }
    2477             psFree(md);
    2478             exit(EXIT_FAILURE);
    2479         }
    2480 
    2481         psFree(md);
    2482     }
    2483 
    2484     {
    2485         psMetadata      *md;
    2486         detCorrectedImfileRow *object;
    2487         bool            status;
    2488 
    2489         object = detCorrectedImfileRowAlloc(-64, -64, "a string", "a string", "a string", -16);
    2490         if (!object) {
    2491             exit(EXIT_FAILURE);
    2492         }
    2493 
    2494         md = detCorrectedImfileMetadataFromObject(object);
    2495         if (!md) {
    2496             exit(EXIT_FAILURE);
    2497         }
    2498 
    2499         psFree(object);
    2500 
    2501             psFree(md);
    2502             exit(EXIT_FAILURE);
    2503         }
    2504             psFree(md);
    2505             exit(EXIT_FAILURE);
    2506         }
    2507         if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
    2508             psFree(md);
    2509             exit(EXIT_FAILURE);
    2510         }
    2511         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    2512             psFree(md);
    2513             exit(EXIT_FAILURE);
    2514         }
    2515         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
    2516             psFree(md);
    2517             exit(EXIT_FAILURE);
    2518         }
    2519             psFree(md);
    2520             exit(EXIT_FAILURE);
    2521         }
    2522 
    2523         psFree(md);
    2524     }
    2525 
    2526     {
    2527         psMetadata      *md;
    2528         magicRunRow     *object;
    2529         bool            status;
    2530 
    2531         object = magicRunRowAlloc(-64, "a string", "a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z");
    2532         if (!object) {
    2533             exit(EXIT_FAILURE);
    2534         }
    2535 
    2536         md = magicRunMetadataFromObject(object);
    2537         if (!md) {
    2538             exit(EXIT_FAILURE);
    2539         }
    2540 
    2541         psFree(object);
    2542 
    2543             psFree(md);
    2544             exit(EXIT_FAILURE);
    2545         }
    2546         if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
    2547             psFree(md);
    2548             exit(EXIT_FAILURE);
    2549         }
    2550         if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
    2551             psFree(md);
    2552             exit(EXIT_FAILURE);
    2553         }
    2554         if (strncmp(psMetadataLookupPtr(&status, md, "workdir_state"), "a string", MAX_STRING_LENGTH)) {
    2555             psFree(md);
    2556             exit(EXIT_FAILURE);
    2557         }
    2558         if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
    2559             psFree(md);
    2560             exit(EXIT_FAILURE);
    2561         }
    2562         if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
    2563             psFree(md);
    2564             exit(EXIT_FAILURE);
    2565         }
    2566             psFree(md);
    2567             exit(EXIT_FAILURE);
    2568         }
    2569 
    2570         psFree(md);
    2571     }
    2572 
    2573     {
    2574         psMetadata      *md;
    2575         magicInputSkyfileRow *object;
    2576         bool            status;
    2577 
    2578         object = magicInputSkyfileRowAlloc(-64, -64, "a string");
    2579         if (!object) {
    2580             exit(EXIT_FAILURE);
    2581         }
    2582 
    2583         md = magicInputSkyfileMetadataFromObject(object);
    2584         if (!md) {
    2585             exit(EXIT_FAILURE);
    2586         }
    2587 
    2588         psFree(object);
    2589 
    2590             psFree(md);
    2591             exit(EXIT_FAILURE);
    2592         }
    2593             psFree(md);
    2594             exit(EXIT_FAILURE);
    2595         }
    2596         if (strncmp(psMetadataLookupPtr(&status, md, "node"), "a string", MAX_STRING_LENGTH)) {
    2597             psFree(md);
    2598             exit(EXIT_FAILURE);
    2599         }
    2600 
    2601         psFree(md);
    2602     }
    2603 
    2604     {
    2605         psMetadata      *md;
    2606         magicTreeRow    *object;
    2607         bool            status;
    2608 
    2609         object = magicTreeRowAlloc(-64, "a string", "a string");
    2610         if (!object) {
    2611             exit(EXIT_FAILURE);
    2612         }
    2613 
    2614         md = magicTreeMetadataFromObject(object);
    2615         if (!md) {
    2616             exit(EXIT_FAILURE);
    2617         }
    2618 
    2619         psFree(object);
    2620 
    2621             psFree(md);
    2622             exit(EXIT_FAILURE);
    2623         }
    2624         if (strncmp(psMetadataLookupPtr(&status, md, "node"), "a string", MAX_STRING_LENGTH)) {
    2625             psFree(md);
    2626             exit(EXIT_FAILURE);
    2627         }
    2628         if (strncmp(psMetadataLookupPtr(&status, md, "dep"), "a string", MAX_STRING_LENGTH)) {
    2629             psFree(md);
    2630             exit(EXIT_FAILURE);
    2631         }
    2632 
    2633         psFree(md);
    2634     }
    2635 
    2636     {
    2637         psMetadata      *md;
    2638         magicNodeResultRow *object;
    2639         bool            status;
    2640 
    2641         object = magicNodeResultRowAlloc(-64, "a string", "a string");
    2642         if (!object) {
    2643             exit(EXIT_FAILURE);
    2644         }
    2645 
    2646         md = magicNodeResultMetadataFromObject(object);
    2647         if (!md) {
    2648             exit(EXIT_FAILURE);
    2649         }
    2650 
    2651         psFree(object);
    2652 
    2653             psFree(md);
    2654             exit(EXIT_FAILURE);
    2655         }
    2656         if (strncmp(psMetadataLookupPtr(&status, md, "node"), "a string", MAX_STRING_LENGTH)) {
    2657             psFree(md);
    2658             exit(EXIT_FAILURE);
    2659         }
    2660         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    2661             psFree(md);
    2662             exit(EXIT_FAILURE);
    2663         }
    2664 
    2665         psFree(md);
    2666     }
    2667 
    2668     {
    2669         psMetadata      *md;
    2670         magicMaskRow    *object;
    2671         bool            status;
    2672 
    2673         object = magicMaskRowAlloc(-64, "a string");
    2674         if (!object) {
    2675             exit(EXIT_FAILURE);
    2676         }
    2677 
    2678         md = magicMaskMetadataFromObject(object);
    2679         if (!md) {
    2680             exit(EXIT_FAILURE);
    2681         }
    2682 
    2683         psFree(object);
    2684 
    2685             psFree(md);
    2686             exit(EXIT_FAILURE);
    2687         }
    2688         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    2689             psFree(md);
    2690             exit(EXIT_FAILURE);
    2691         }
    2692 
    2693         psFree(md);
    2694     }
    2695 
    2696     {
    2697         psMetadata      *md;
    2698         magicSkyfileMaskRow *object;
    2699         bool            status;
    2700 
    2701         object = magicSkyfileMaskRowAlloc(-64, -64, "a string");
    2702         if (!object) {
    2703             exit(EXIT_FAILURE);
    2704         }
    2705 
    2706         md = magicSkyfileMaskMetadataFromObject(object);
    2707         if (!md) {
    2708             exit(EXIT_FAILURE);
    2709         }
    2710 
    2711         psFree(object);
    2712 
    2713             psFree(md);
    2714             exit(EXIT_FAILURE);
    2715         }
    2716             psFree(md);
    2717             exit(EXIT_FAILURE);
    2718         }
    2719         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    27202298            psFree(md);
    27212299            exit(EXIT_FAILURE);
  • trunk/ippdb/tests/objectfrommetadata.c

    r15343 r15420  
    1010    {
    1111        psMetadata      *md;
    12         pzDataStoreRow  *object;
    13 
    14         md = psMetadataAlloc();
     12        summitExpRow    *object;
     13
     14        md = psMetadataAlloc();
     15        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_name", 0, NULL, "a string")) {
     16            psFree(md);
     17            exit(EXIT_FAILURE);
     18        }
    1519        if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
    1620            psFree(md);
     
    2125            exit(EXIT_FAILURE);
    2226        }
     27            psFree(md);
     28            exit(EXIT_FAILURE);
     29        }
     30        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_type", 0, NULL, "a string")) {
     31            psFree(md);
     32            exit(EXIT_FAILURE);
     33        }
    2334        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    2435            psFree(md);
    2536            exit(EXIT_FAILURE);
    2637        }
    27 
    28         object = pzDataStoreObjectFromMetadata(md);
    29         if (!object) {
    30             psFree(md);
    31             exit(EXIT_FAILURE);
    32         }
    33 
    34         psFree(md);
    35 
     38        if (!psMetadataAddS32(md, PS_LIST_TAIL, "imfiles", 0, NULL, -32)) {
     39            psFree(md);
     40            exit(EXIT_FAILURE);
     41        }
     42
     43        object = summitExpObjectFromMetadata(md);
     44        if (!object) {
     45            psFree(md);
     46            exit(EXIT_FAILURE);
     47        }
     48
     49        psFree(md);
     50
     51        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
     52            psFree(object);
     53            exit(EXIT_FAILURE);
     54        }
    3655        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    3756            psFree(object);
     
    4261            exit(EXIT_FAILURE);
    4362        }
     63            psFree(object);
     64            exit(EXIT_FAILURE);
     65        }
     66        if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
     67            psFree(object);
     68            exit(EXIT_FAILURE);
     69        }
    4470        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    4571            psFree(object);
    4672            exit(EXIT_FAILURE);
    4773        }
    48 
    49         psFree(object);
    50     }
    51 
    52     {
    53         psMetadata      *md;
    54         summitExpRow    *object;
     74        if (!object->imfiles == -32) {
     75            psFree(object);
     76            exit(EXIT_FAILURE);
     77        }
     78
     79        psFree(object);
     80    }
     81
     82    {
     83        psMetadata      *md;
     84        summitImfileRow *object;
    5585
    5686        md = psMetadataAlloc();
     
    6797            exit(EXIT_FAILURE);
    6898        }
     99        if (!psMetadataAddStr(md, PS_LIST_TAIL, "file_id", 0, NULL, "a string")) {
     100            psFree(md);
     101            exit(EXIT_FAILURE);
     102        }
     103        if (!psMetadataAddS32(md, PS_LIST_TAIL, "bytes", 0, NULL, -32)) {
     104            psFree(md);
     105            exit(EXIT_FAILURE);
     106        }
     107        if (!psMetadataAddStr(md, PS_LIST_TAIL, "md5sum", 0, NULL, "a string")) {
     108            psFree(md);
     109            exit(EXIT_FAILURE);
     110        }
     111        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, "a string")) {
     112            psFree(md);
     113            exit(EXIT_FAILURE);
     114        }
     115        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
     116            psFree(md);
     117            exit(EXIT_FAILURE);
     118        }
     119        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     120            psFree(md);
     121            exit(EXIT_FAILURE);
     122        }
     123
     124        object = summitImfileObjectFromMetadata(md);
     125        if (!object) {
     126            psFree(md);
     127            exit(EXIT_FAILURE);
     128        }
     129
     130        psFree(md);
     131
     132        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
     133            psFree(object);
     134            exit(EXIT_FAILURE);
     135        }
     136        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
     137            psFree(object);
     138            exit(EXIT_FAILURE);
     139        }
     140        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
     141            psFree(object);
     142            exit(EXIT_FAILURE);
     143        }
     144        if (strncmp(object->file_id, "a string", MAX_STRING_LENGTH)) {
     145            psFree(object);
     146            exit(EXIT_FAILURE);
     147        }
     148        if (!object->bytes == -32) {
     149            psFree(object);
     150            exit(EXIT_FAILURE);
     151        }
     152        if (strncmp(object->md5sum, "a string", MAX_STRING_LENGTH)) {
     153            psFree(object);
     154            exit(EXIT_FAILURE);
     155        }
     156        if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
     157            psFree(object);
     158            exit(EXIT_FAILURE);
     159        }
     160        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     161            psFree(object);
     162            exit(EXIT_FAILURE);
     163        }
     164        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     165            psFree(object);
     166            exit(EXIT_FAILURE);
     167        }
     168
     169        psFree(object);
     170    }
     171
     172    {
     173        psMetadata      *md;
     174        pzPendingExpRow *object;
     175
     176        md = psMetadataAlloc();
     177        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_name", 0, NULL, "a string")) {
     178            psFree(md);
     179            exit(EXIT_FAILURE);
     180        }
     181        if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
     182            psFree(md);
     183            exit(EXIT_FAILURE);
     184        }
     185        if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
     186            psFree(md);
     187            exit(EXIT_FAILURE);
     188        }
     189
     190        object = pzPendingExpObjectFromMetadata(md);
     191        if (!object) {
     192            psFree(md);
     193            exit(EXIT_FAILURE);
     194        }
     195
     196        psFree(md);
     197
     198        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
     199            psFree(object);
     200            exit(EXIT_FAILURE);
     201        }
     202        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
     203            psFree(object);
     204            exit(EXIT_FAILURE);
     205        }
     206        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
     207            psFree(object);
     208            exit(EXIT_FAILURE);
     209        }
     210
     211        psFree(object);
     212    }
     213
     214    {
     215        psMetadata      *md;
     216        pzPendingImfileRow *object;
     217
     218        md = psMetadataAlloc();
     219        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_name", 0, NULL, "a string")) {
     220            psFree(md);
     221            exit(EXIT_FAILURE);
     222        }
     223        if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
     224            psFree(md);
     225            exit(EXIT_FAILURE);
     226        }
     227        if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
     228            psFree(md);
     229            exit(EXIT_FAILURE);
     230        }
     231        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, "a string")) {
     232            psFree(md);
     233            exit(EXIT_FAILURE);
     234        }
     235        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
     236            psFree(md);
     237            exit(EXIT_FAILURE);
     238        }
     239            psFree(md);
     240            exit(EXIT_FAILURE);
     241        }
     242
     243        object = pzPendingImfileObjectFromMetadata(md);
     244        if (!object) {
     245            psFree(md);
     246            exit(EXIT_FAILURE);
     247        }
     248
     249        psFree(md);
     250
     251        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
     252            psFree(object);
     253            exit(EXIT_FAILURE);
     254        }
     255        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
     256            psFree(object);
     257            exit(EXIT_FAILURE);
     258        }
     259        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
     260            psFree(object);
     261            exit(EXIT_FAILURE);
     262        }
     263        if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
     264            psFree(object);
     265            exit(EXIT_FAILURE);
     266        }
     267        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     268            psFree(object);
     269            exit(EXIT_FAILURE);
     270        }
     271            psFree(object);
     272            exit(EXIT_FAILURE);
     273        }
     274
     275        psFree(object);
     276    }
     277
     278    {
     279        psMetadata      *md;
     280        pzDoneExpRow    *object;
     281
     282        md = psMetadataAlloc();
     283        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_name", 0, NULL, "a string")) {
     284            psFree(md);
     285            exit(EXIT_FAILURE);
     286        }
     287        if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
     288            psFree(md);
     289            exit(EXIT_FAILURE);
     290        }
     291        if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
     292            psFree(md);
     293            exit(EXIT_FAILURE);
     294        }
     295
     296        object = pzDoneExpObjectFromMetadata(md);
     297        if (!object) {
     298            psFree(md);
     299            exit(EXIT_FAILURE);
     300        }
     301
     302        psFree(md);
     303
     304        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
     305            psFree(object);
     306            exit(EXIT_FAILURE);
     307        }
     308        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
     309            psFree(object);
     310            exit(EXIT_FAILURE);
     311        }
     312        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
     313            psFree(object);
     314            exit(EXIT_FAILURE);
     315        }
     316
     317        psFree(object);
     318    }
     319
     320    {
     321        psMetadata      *md;
     322        pzDoneImfileRow *object;
     323
     324        md = psMetadataAlloc();
     325        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_name", 0, NULL, "a string")) {
     326            psFree(md);
     327            exit(EXIT_FAILURE);
     328        }
     329        if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
     330            psFree(md);
     331            exit(EXIT_FAILURE);
     332        }
     333        if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
     334            psFree(md);
     335            exit(EXIT_FAILURE);
     336        }
     337        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, "a string")) {
     338            psFree(md);
     339            exit(EXIT_FAILURE);
     340        }
     341        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
     342            psFree(md);
     343            exit(EXIT_FAILURE);
     344        }
     345            psFree(md);
     346            exit(EXIT_FAILURE);
     347        }
     348        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     349            psFree(md);
     350            exit(EXIT_FAILURE);
     351        }
     352
     353        object = pzDoneImfileObjectFromMetadata(md);
     354        if (!object) {
     355            psFree(md);
     356            exit(EXIT_FAILURE);
     357        }
     358
     359        psFree(md);
     360
     361        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
     362            psFree(object);
     363            exit(EXIT_FAILURE);
     364        }
     365        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
     366            psFree(object);
     367            exit(EXIT_FAILURE);
     368        }
     369        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
     370            psFree(object);
     371            exit(EXIT_FAILURE);
     372        }
     373        if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
     374            psFree(object);
     375            exit(EXIT_FAILURE);
     376        }
     377        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     378            psFree(object);
     379            exit(EXIT_FAILURE);
     380        }
     381            psFree(object);
     382            exit(EXIT_FAILURE);
     383        }
     384        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     385            psFree(object);
     386            exit(EXIT_FAILURE);
     387        }
     388
     389        psFree(object);
     390    }
     391
     392    {
     393        psMetadata      *md;
     394        newExpRow       *object;
     395
     396        md = psMetadataAlloc();
     397            psFree(md);
     398            exit(EXIT_FAILURE);
     399        }
     400        if (!psMetadataAddStr(md, PS_LIST_TAIL, "tmp_exp_name", 0, NULL, "a string")) {
     401            psFree(md);
     402            exit(EXIT_FAILURE);
     403        }
     404        if (!psMetadataAddStr(md, PS_LIST_TAIL, "tmp_camera", 0, NULL, "a string")) {
     405            psFree(md);
     406            exit(EXIT_FAILURE);
     407        }
     408        if (!psMetadataAddStr(md, PS_LIST_TAIL, "tmp_telescope", 0, NULL, "a string")) {
     409            psFree(md);
     410            exit(EXIT_FAILURE);
     411        }
     412        if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
     413            psFree(md);
     414            exit(EXIT_FAILURE);
     415        }
     416        if (!psMetadataAddS32(md, PS_LIST_TAIL, "imfiles", 0, NULL, -32)) {
     417            psFree(md);
     418            exit(EXIT_FAILURE);
     419        }
     420        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
     421            psFree(md);
     422            exit(EXIT_FAILURE);
     423        }
     424        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir_state", 0, NULL, "a string")) {
     425            psFree(md);
     426            exit(EXIT_FAILURE);
     427        }
     428
     429        object = newExpObjectFromMetadata(md);
     430        if (!object) {
     431            psFree(md);
     432            exit(EXIT_FAILURE);
     433        }
     434
     435        psFree(md);
     436
     437            psFree(object);
     438            exit(EXIT_FAILURE);
     439        }
     440        if (strncmp(object->tmp_exp_name, "a string", MAX_STRING_LENGTH)) {
     441            psFree(object);
     442            exit(EXIT_FAILURE);
     443        }
     444        if (strncmp(object->tmp_camera, "a string", MAX_STRING_LENGTH)) {
     445            psFree(object);
     446            exit(EXIT_FAILURE);
     447        }
     448        if (strncmp(object->tmp_telescope, "a string", MAX_STRING_LENGTH)) {
     449            psFree(object);
     450            exit(EXIT_FAILURE);
     451        }
     452        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     453            psFree(object);
     454            exit(EXIT_FAILURE);
     455        }
     456        if (!object->imfiles == -32) {
     457            psFree(object);
     458            exit(EXIT_FAILURE);
     459        }
     460        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     461            psFree(object);
     462            exit(EXIT_FAILURE);
     463        }
     464        if (strncmp(object->workdir_state, "a string", MAX_STRING_LENGTH)) {
     465            psFree(object);
     466            exit(EXIT_FAILURE);
     467        }
     468
     469        psFree(object);
     470    }
     471
     472    {
     473        psMetadata      *md;
     474        newImfileRow    *object;
     475
     476        md = psMetadataAlloc();
     477            psFree(md);
     478            exit(EXIT_FAILURE);
     479        }
     480        if (!psMetadataAddStr(md, PS_LIST_TAIL, "tmp_class_id", 0, NULL, "a string")) {
     481            psFree(md);
     482            exit(EXIT_FAILURE);
     483        }
     484        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     485            psFree(md);
     486            exit(EXIT_FAILURE);
     487        }
     488
     489        object = newImfileObjectFromMetadata(md);
     490        if (!object) {
     491            psFree(md);
     492            exit(EXIT_FAILURE);
     493        }
     494
     495        psFree(md);
     496
     497            psFree(object);
     498            exit(EXIT_FAILURE);
     499        }
     500        if (strncmp(object->tmp_class_id, "a string", MAX_STRING_LENGTH)) {
     501            psFree(object);
     502            exit(EXIT_FAILURE);
     503        }
     504        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     505            psFree(object);
     506            exit(EXIT_FAILURE);
     507        }
     508
     509        psFree(object);
     510    }
     511
     512    {
     513        psMetadata      *md;
     514        rawExpRow       *object;
     515
     516        md = psMetadataAlloc();
     517            psFree(md);
     518            exit(EXIT_FAILURE);
     519        }
     520        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_name", 0, NULL, "a string")) {
     521            psFree(md);
     522            exit(EXIT_FAILURE);
     523        }
     524        if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
     525            psFree(md);
     526            exit(EXIT_FAILURE);
     527        }
     528        if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
     529            psFree(md);
     530            exit(EXIT_FAILURE);
     531        }
     532            psFree(md);
     533            exit(EXIT_FAILURE);
     534        }
     535        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
    69536            psFree(md);
    70537            exit(EXIT_FAILURE);
     
    74541            exit(EXIT_FAILURE);
    75542        }
     543        if (!psMetadataAddS32(md, PS_LIST_TAIL, "imfiles", 0, NULL, -32)) {
     544            psFree(md);
     545            exit(EXIT_FAILURE);
     546        }
     547        if (!psMetadataAddStr(md, PS_LIST_TAIL, "filelevel", 0, NULL, "a string")) {
     548            psFree(md);
     549            exit(EXIT_FAILURE);
     550        }
     551        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
     552            psFree(md);
     553            exit(EXIT_FAILURE);
     554        }
     555        if (!psMetadataAddStr(md, PS_LIST_TAIL, "filter", 0, NULL, "a string")) {
     556            psFree(md);
     557            exit(EXIT_FAILURE);
     558        }
     559        if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, 32.32)) {
     560            psFree(md);
     561            exit(EXIT_FAILURE);
     562        }
     563        if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, 64.64)) {
     564            psFree(md);
     565            exit(EXIT_FAILURE);
     566        }
     567        if (!psMetadataAddF64(md, PS_LIST_TAIL, "decl", 0, NULL, 64.64)) {
     568            psFree(md);
     569            exit(EXIT_FAILURE);
     570        }
     571        if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time", 0, NULL, 32.32)) {
     572            psFree(md);
     573            exit(EXIT_FAILURE);
     574        }
     575        if (!psMetadataAddF32(md, PS_LIST_TAIL, "sat_pixel_frac", 0, NULL, 32.32)) {
     576            psFree(md);
     577            exit(EXIT_FAILURE);
     578        }
     579        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     580            psFree(md);
     581            exit(EXIT_FAILURE);
     582        }
     583        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     584            psFree(md);
     585            exit(EXIT_FAILURE);
     586        }
     587        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     588            psFree(md);
     589            exit(EXIT_FAILURE);
     590        }
     591        if (!psMetadataAddF64(md, PS_LIST_TAIL, "alt", 0, NULL, 64.64)) {
     592            psFree(md);
     593            exit(EXIT_FAILURE);
     594        }
     595        if (!psMetadataAddF64(md, PS_LIST_TAIL, "az", 0, NULL, 64.64)) {
     596            psFree(md);
     597            exit(EXIT_FAILURE);
     598        }
     599        if (!psMetadataAddF32(md, PS_LIST_TAIL, "ccd_temp", 0, NULL, 32.32)) {
     600            psFree(md);
     601            exit(EXIT_FAILURE);
     602        }
     603        if (!psMetadataAddF64(md, PS_LIST_TAIL, "posang", 0, NULL, 64.64)) {
     604            psFree(md);
     605            exit(EXIT_FAILURE);
     606        }
     607        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
     608            psFree(md);
     609            exit(EXIT_FAILURE);
     610        }
     611        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
     612            psFree(md);
     613            exit(EXIT_FAILURE);
     614        }
     615        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
     616            psFree(md);
     617            exit(EXIT_FAILURE);
     618        }
     619        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
     620            psFree(md);
     621            exit(EXIT_FAILURE);
     622        }
     623        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
     624            psFree(md);
     625            exit(EXIT_FAILURE);
     626        }
     627        if (!psMetadataAddStr(md, PS_LIST_TAIL, "object", 0, NULL, "a string")) {
     628            psFree(md);
     629            exit(EXIT_FAILURE);
     630        }
     631        if (!psMetadataAddF32(md, PS_LIST_TAIL, "solang", 0, NULL, 32.32)) {
     632            psFree(md);
     633            exit(EXIT_FAILURE);
     634        }
     635            psFree(md);
     636            exit(EXIT_FAILURE);
     637        }
     638
     639        object = rawExpObjectFromMetadata(md);
     640        if (!object) {
     641            psFree(md);
     642            exit(EXIT_FAILURE);
     643        }
     644
     645        psFree(md);
     646
     647            psFree(object);
     648            exit(EXIT_FAILURE);
     649        }
     650        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
     651            psFree(object);
     652            exit(EXIT_FAILURE);
     653        }
     654        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
     655            psFree(object);
     656            exit(EXIT_FAILURE);
     657        }
     658        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
     659            psFree(object);
     660            exit(EXIT_FAILURE);
     661        }
     662            psFree(object);
     663            exit(EXIT_FAILURE);
     664        }
     665        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
     666            psFree(object);
     667            exit(EXIT_FAILURE);
     668        }
     669        if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
     670            psFree(object);
     671            exit(EXIT_FAILURE);
     672        }
     673        if (!object->imfiles == -32) {
     674            psFree(object);
     675            exit(EXIT_FAILURE);
     676        }
     677        if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
     678            psFree(object);
     679            exit(EXIT_FAILURE);
     680        }
     681        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     682            psFree(object);
     683            exit(EXIT_FAILURE);
     684        }
     685        if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
     686            psFree(object);
     687            exit(EXIT_FAILURE);
     688        }
     689        if (!object->airmass == 32.32) {
     690            psFree(object);
     691            exit(EXIT_FAILURE);
     692        }
     693        if (!object->ra == 64.64) {
     694            psFree(object);
     695            exit(EXIT_FAILURE);
     696        }
     697        if (!object->decl == 64.64) {
     698            psFree(object);
     699            exit(EXIT_FAILURE);
     700        }
     701        if (!object->exp_time == 32.32) {
     702            psFree(object);
     703            exit(EXIT_FAILURE);
     704        }
     705        if (!object->sat_pixel_frac == 32.32) {
     706            psFree(object);
     707            exit(EXIT_FAILURE);
     708        }
     709        if (!object->bg == 64.64) {
     710            psFree(object);
     711            exit(EXIT_FAILURE);
     712        }
     713        if (!object->bg_stdev == 64.64) {
     714            psFree(object);
     715            exit(EXIT_FAILURE);
     716        }
     717        if (!object->bg_mean_stdev == 64.64) {
     718            psFree(object);
     719            exit(EXIT_FAILURE);
     720        }
     721        if (!object->alt == 64.64) {
     722            psFree(object);
     723            exit(EXIT_FAILURE);
     724        }
     725        if (!object->az == 64.64) {
     726            psFree(object);
     727            exit(EXIT_FAILURE);
     728        }
     729        if (!object->ccd_temp == 32.32) {
     730            psFree(object);
     731            exit(EXIT_FAILURE);
     732        }
     733        if (!object->posang == 64.64) {
     734            psFree(object);
     735            exit(EXIT_FAILURE);
     736        }
     737        if (!object->user_1 == 64.64) {
     738            psFree(object);
     739            exit(EXIT_FAILURE);
     740        }
     741        if (!object->user_2 == 64.64) {
     742            psFree(object);
     743            exit(EXIT_FAILURE);
     744        }
     745        if (!object->user_3 == 64.64) {
     746            psFree(object);
     747            exit(EXIT_FAILURE);
     748        }
     749        if (!object->user_4 == 64.64) {
     750            psFree(object);
     751            exit(EXIT_FAILURE);
     752        }
     753        if (!object->user_5 == 64.64) {
     754            psFree(object);
     755            exit(EXIT_FAILURE);
     756        }
     757        if (strncmp(object->object, "a string", MAX_STRING_LENGTH)) {
     758            psFree(object);
     759            exit(EXIT_FAILURE);
     760        }
     761        if (!object->solang == 32.32) {
     762            psFree(object);
     763            exit(EXIT_FAILURE);
     764        }
     765            psFree(object);
     766            exit(EXIT_FAILURE);
     767        }
     768
     769        psFree(object);
     770    }
     771
     772    {
     773        psMetadata      *md;
     774        rawImfileRow    *object;
     775
     776        md = psMetadataAlloc();
     777            psFree(md);
     778            exit(EXIT_FAILURE);
     779        }
     780        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_name", 0, NULL, "a string")) {
     781            psFree(md);
     782            exit(EXIT_FAILURE);
     783        }
     784        if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
     785            psFree(md);
     786            exit(EXIT_FAILURE);
     787        }
     788        if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
     789            psFree(md);
     790            exit(EXIT_FAILURE);
     791        }
     792            psFree(md);
     793            exit(EXIT_FAILURE);
     794        }
     795        if (!psMetadataAddStr(md, PS_LIST_TAIL, "tmp_class_id", 0, NULL, "a string")) {
     796            psFree(md);
     797            exit(EXIT_FAILURE);
     798        }
     799        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
     800            psFree(md);
     801            exit(EXIT_FAILURE);
     802        }
    76803        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    77804            psFree(md);
    78805            exit(EXIT_FAILURE);
    79806        }
    80         if (!psMetadataAddS32(md, PS_LIST_TAIL, "imfiles", 0, NULL, -32)) {
    81             psFree(md);
    82             exit(EXIT_FAILURE);
    83         }
    84 
    85         object = summitExpObjectFromMetadata(md);
    86         if (!object) {
    87             psFree(md);
    88             exit(EXIT_FAILURE);
    89         }
    90 
    91         psFree(md);
    92 
     807        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_type", 0, NULL, "a string")) {
     808            psFree(md);
     809            exit(EXIT_FAILURE);
     810        }
     811        if (!psMetadataAddStr(md, PS_LIST_TAIL, "filelevel", 0, NULL, "a string")) {
     812            psFree(md);
     813            exit(EXIT_FAILURE);
     814        }
     815        if (!psMetadataAddStr(md, PS_LIST_TAIL, "filter", 0, NULL, "a string")) {
     816            psFree(md);
     817            exit(EXIT_FAILURE);
     818        }
     819        if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, 32.32)) {
     820            psFree(md);
     821            exit(EXIT_FAILURE);
     822        }
     823        if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, 64.64)) {
     824            psFree(md);
     825            exit(EXIT_FAILURE);
     826        }
     827        if (!psMetadataAddF64(md, PS_LIST_TAIL, "decl", 0, NULL, 64.64)) {
     828            psFree(md);
     829            exit(EXIT_FAILURE);
     830        }
     831        if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time", 0, NULL, 32.32)) {
     832            psFree(md);
     833            exit(EXIT_FAILURE);
     834        }
     835        if (!psMetadataAddF32(md, PS_LIST_TAIL, "sat_pixel_frac", 0, NULL, 32.32)) {
     836            psFree(md);
     837            exit(EXIT_FAILURE);
     838        }
     839        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     840            psFree(md);
     841            exit(EXIT_FAILURE);
     842        }
     843        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     844            psFree(md);
     845            exit(EXIT_FAILURE);
     846        }
     847        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     848            psFree(md);
     849            exit(EXIT_FAILURE);
     850        }
     851        if (!psMetadataAddF64(md, PS_LIST_TAIL, "alt", 0, NULL, 64.64)) {
     852            psFree(md);
     853            exit(EXIT_FAILURE);
     854        }
     855        if (!psMetadataAddF64(md, PS_LIST_TAIL, "az", 0, NULL, 64.64)) {
     856            psFree(md);
     857            exit(EXIT_FAILURE);
     858        }
     859        if (!psMetadataAddF32(md, PS_LIST_TAIL, "ccd_temp", 0, NULL, 32.32)) {
     860            psFree(md);
     861            exit(EXIT_FAILURE);
     862        }
     863        if (!psMetadataAddF64(md, PS_LIST_TAIL, "posang", 0, NULL, 64.64)) {
     864            psFree(md);
     865            exit(EXIT_FAILURE);
     866        }
     867        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
     868            psFree(md);
     869            exit(EXIT_FAILURE);
     870        }
     871        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
     872            psFree(md);
     873            exit(EXIT_FAILURE);
     874        }
     875        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
     876            psFree(md);
     877            exit(EXIT_FAILURE);
     878        }
     879        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
     880            psFree(md);
     881            exit(EXIT_FAILURE);
     882        }
     883        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
     884            psFree(md);
     885            exit(EXIT_FAILURE);
     886        }
     887        if (!psMetadataAddStr(md, PS_LIST_TAIL, "object", 0, NULL, "a string")) {
     888            psFree(md);
     889            exit(EXIT_FAILURE);
     890        }
     891            psFree(md);
     892            exit(EXIT_FAILURE);
     893        }
     894
     895        object = rawImfileObjectFromMetadata(md);
     896        if (!object) {
     897            psFree(md);
     898            exit(EXIT_FAILURE);
     899        }
     900
     901        psFree(md);
     902
     903            psFree(object);
     904            exit(EXIT_FAILURE);
     905        }
    93906        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    94907            psFree(object);
     
    106919            exit(EXIT_FAILURE);
    107920        }
     921        if (strncmp(object->tmp_class_id, "a string", MAX_STRING_LENGTH)) {
     922            psFree(object);
     923            exit(EXIT_FAILURE);
     924        }
     925        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     926            psFree(object);
     927            exit(EXIT_FAILURE);
     928        }
     929        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     930            psFree(object);
     931            exit(EXIT_FAILURE);
     932        }
    108933        if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
    109934            psFree(object);
    110935            exit(EXIT_FAILURE);
    111936        }
     937        if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
     938            psFree(object);
     939            exit(EXIT_FAILURE);
     940        }
     941        if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
     942            psFree(object);
     943            exit(EXIT_FAILURE);
     944        }
     945        if (!object->airmass == 32.32) {
     946            psFree(object);
     947            exit(EXIT_FAILURE);
     948        }
     949        if (!object->ra == 64.64) {
     950            psFree(object);
     951            exit(EXIT_FAILURE);
     952        }
     953        if (!object->decl == 64.64) {
     954            psFree(object);
     955            exit(EXIT_FAILURE);
     956        }
     957        if (!object->exp_time == 32.32) {
     958            psFree(object);
     959            exit(EXIT_FAILURE);
     960        }
     961        if (!object->sat_pixel_frac == 32.32) {
     962            psFree(object);
     963            exit(EXIT_FAILURE);
     964        }
     965        if (!object->bg == 64.64) {
     966            psFree(object);
     967            exit(EXIT_FAILURE);
     968        }
     969        if (!object->bg_stdev == 64.64) {
     970            psFree(object);
     971            exit(EXIT_FAILURE);
     972        }
     973        if (!object->bg_mean_stdev == 64.64) {
     974            psFree(object);
     975            exit(EXIT_FAILURE);
     976        }
     977        if (!object->alt == 64.64) {
     978            psFree(object);
     979            exit(EXIT_FAILURE);
     980        }
     981        if (!object->az == 64.64) {
     982            psFree(object);
     983            exit(EXIT_FAILURE);
     984        }
     985        if (!object->ccd_temp == 32.32) {
     986            psFree(object);
     987            exit(EXIT_FAILURE);
     988        }
     989        if (!object->posang == 64.64) {
     990            psFree(object);
     991            exit(EXIT_FAILURE);
     992        }
     993        if (!object->user_1 == 64.64) {
     994            psFree(object);
     995            exit(EXIT_FAILURE);
     996        }
     997        if (!object->user_2 == 64.64) {
     998            psFree(object);
     999            exit(EXIT_FAILURE);
     1000        }
     1001        if (!object->user_3 == 64.64) {
     1002            psFree(object);
     1003            exit(EXIT_FAILURE);
     1004        }
     1005        if (!object->user_4 == 64.64) {
     1006            psFree(object);
     1007            exit(EXIT_FAILURE);
     1008        }
     1009        if (!object->user_5 == 64.64) {
     1010            psFree(object);
     1011            exit(EXIT_FAILURE);
     1012        }
     1013        if (strncmp(object->object, "a string", MAX_STRING_LENGTH)) {
     1014            psFree(object);
     1015            exit(EXIT_FAILURE);
     1016        }
     1017            psFree(object);
     1018            exit(EXIT_FAILURE);
     1019        }
     1020
     1021        psFree(object);
     1022    }
     1023
     1024    {
     1025        psMetadata      *md;
     1026        guidePendingExpRow *object;
     1027
     1028        md = psMetadataAlloc();
     1029            psFree(md);
     1030            exit(EXIT_FAILURE);
     1031        }
     1032            psFree(md);
     1033            exit(EXIT_FAILURE);
     1034        }
     1035        if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
     1036            psFree(md);
     1037            exit(EXIT_FAILURE);
     1038        }
     1039
     1040        object = guidePendingExpObjectFromMetadata(md);
     1041        if (!object) {
     1042            psFree(md);
     1043            exit(EXIT_FAILURE);
     1044        }
     1045
     1046        psFree(md);
     1047
     1048            psFree(object);
     1049            exit(EXIT_FAILURE);
     1050        }
     1051            psFree(object);
     1052            exit(EXIT_FAILURE);
     1053        }
     1054        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     1055            psFree(object);
     1056            exit(EXIT_FAILURE);
     1057        }
     1058
     1059        psFree(object);
     1060    }
     1061
     1062    {
     1063        psMetadata      *md;
     1064        chipRunRow      *object;
     1065
     1066        md = psMetadataAlloc();
     1067            psFree(md);
     1068            exit(EXIT_FAILURE);
     1069        }
     1070        if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
     1071            psFree(md);
     1072            exit(EXIT_FAILURE);
     1073        }
     1074        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
     1075            psFree(md);
     1076            exit(EXIT_FAILURE);
     1077        }
     1078        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir_state", 0, NULL, "a string")) {
     1079            psFree(md);
     1080            exit(EXIT_FAILURE);
     1081        }
     1082        if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
     1083            psFree(md);
     1084            exit(EXIT_FAILURE);
     1085        }
     1086        if (!psMetadataAddStr(md, PS_LIST_TAIL, "reduction", 0, NULL, "a string")) {
     1087            psFree(md);
     1088            exit(EXIT_FAILURE);
     1089        }
     1090        if (!psMetadataAddStr(md, PS_LIST_TAIL, "expgroup", 0, NULL, "a string")) {
     1091            psFree(md);
     1092            exit(EXIT_FAILURE);
     1093        }
     1094        if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
     1095            psFree(md);
     1096            exit(EXIT_FAILURE);
     1097        }
     1098
     1099        object = chipRunObjectFromMetadata(md);
     1100        if (!object) {
     1101            psFree(md);
     1102            exit(EXIT_FAILURE);
     1103        }
     1104
     1105        psFree(md);
     1106
     1107            psFree(object);
     1108            exit(EXIT_FAILURE);
     1109        }
     1110        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     1111            psFree(object);
     1112            exit(EXIT_FAILURE);
     1113        }
     1114        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     1115            psFree(object);
     1116            exit(EXIT_FAILURE);
     1117        }
     1118        if (strncmp(object->workdir_state, "a string", MAX_STRING_LENGTH)) {
     1119            psFree(object);
     1120            exit(EXIT_FAILURE);
     1121        }
     1122        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     1123            psFree(object);
     1124            exit(EXIT_FAILURE);
     1125        }
     1126        if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
     1127            psFree(object);
     1128            exit(EXIT_FAILURE);
     1129        }
     1130        if (strncmp(object->expgroup, "a string", MAX_STRING_LENGTH)) {
     1131            psFree(object);
     1132            exit(EXIT_FAILURE);
     1133        }
     1134        if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
     1135            psFree(object);
     1136            exit(EXIT_FAILURE);
     1137        }
     1138
     1139        psFree(object);
     1140    }
     1141
     1142    {
     1143        psMetadata      *md;
     1144        chipInputImfileRow *object;
     1145
     1146        md = psMetadataAlloc();
     1147            psFree(md);
     1148            exit(EXIT_FAILURE);
     1149        }
     1150            psFree(md);
     1151            exit(EXIT_FAILURE);
     1152        }
     1153        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
     1154            psFree(md);
     1155            exit(EXIT_FAILURE);
     1156        }
     1157
     1158        object = chipInputImfileObjectFromMetadata(md);
     1159        if (!object) {
     1160            psFree(md);
     1161            exit(EXIT_FAILURE);
     1162        }
     1163
     1164        psFree(md);
     1165
     1166            psFree(object);
     1167            exit(EXIT_FAILURE);
     1168        }
     1169            psFree(object);
     1170            exit(EXIT_FAILURE);
     1171        }
     1172        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     1173            psFree(object);
     1174            exit(EXIT_FAILURE);
     1175        }
     1176
     1177        psFree(object);
     1178    }
     1179
     1180    {
     1181        psMetadata      *md;
     1182        chipProcessedImfileRow *object;
     1183
     1184        md = psMetadataAlloc();
     1185            psFree(md);
     1186            exit(EXIT_FAILURE);
     1187        }
     1188            psFree(md);
     1189            exit(EXIT_FAILURE);
     1190        }
     1191        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
     1192            psFree(md);
     1193            exit(EXIT_FAILURE);
     1194        }
     1195        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     1196            psFree(md);
     1197            exit(EXIT_FAILURE);
     1198        }
     1199        if (!psMetadataAddF32(md, PS_LIST_TAIL, "bg", 0, NULL, 32.32)) {
     1200            psFree(md);
     1201            exit(EXIT_FAILURE);
     1202        }
     1203        if (!psMetadataAddF32(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 32.32)) {
     1204            psFree(md);
     1205            exit(EXIT_FAILURE);
     1206        }
     1207        if (!psMetadataAddF32(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 32.32)) {
     1208            psFree(md);
     1209            exit(EXIT_FAILURE);
     1210        }
     1211        if (!psMetadataAddF32(md, PS_LIST_TAIL, "bias", 0, NULL, 32.32)) {
     1212            psFree(md);
     1213            exit(EXIT_FAILURE);
     1214        }
     1215        if (!psMetadataAddF32(md, PS_LIST_TAIL, "bias_stdev", 0, NULL, 32.32)) {
     1216            psFree(md);
     1217            exit(EXIT_FAILURE);
     1218        }
     1219        if (!psMetadataAddF32(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 32.32)) {
     1220            psFree(md);
     1221            exit(EXIT_FAILURE);
     1222        }
     1223        if (!psMetadataAddF32(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 32.32)) {
     1224            psFree(md);
     1225            exit(EXIT_FAILURE);
     1226        }
     1227        if (!psMetadataAddF32(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 32.32)) {
     1228            psFree(md);
     1229            exit(EXIT_FAILURE);
     1230        }
     1231        if (!psMetadataAddF32(md, PS_LIST_TAIL, "sigma_ra", 0, NULL, 32.32)) {
     1232            psFree(md);
     1233            exit(EXIT_FAILURE);
     1234        }
     1235        if (!psMetadataAddF32(md, PS_LIST_TAIL, "sigma_dec", 0, NULL, 32.32)) {
     1236            psFree(md);
     1237            exit(EXIT_FAILURE);
     1238        }
     1239        if (!psMetadataAddF32(md, PS_LIST_TAIL, "ap_resid", 0, NULL, 32.32)) {
     1240            psFree(md);
     1241            exit(EXIT_FAILURE);
     1242        }
     1243        if (!psMetadataAddF32(md, PS_LIST_TAIL, "ap_resid_stdev", 0, NULL, 32.32)) {
     1244            psFree(md);
     1245            exit(EXIT_FAILURE);
     1246        }
     1247        if (!psMetadataAddF32(md, PS_LIST_TAIL, "fwhm", 0, NULL, 32.32)) {
     1248            psFree(md);
     1249            exit(EXIT_FAILURE);
     1250        }
     1251        if (!psMetadataAddF32(md, PS_LIST_TAIL, "fwhm_range", 0, NULL, 32.32)) {
     1252            psFree(md);
     1253            exit(EXIT_FAILURE);
     1254        }
     1255        if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_stars", 0, NULL, -32)) {
     1256            psFree(md);
     1257            exit(EXIT_FAILURE);
     1258        }
     1259        if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_extended", 0, NULL, -32)) {
     1260            psFree(md);
     1261            exit(EXIT_FAILURE);
     1262        }
     1263        if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_cr", 0, NULL, -32)) {
     1264            psFree(md);
     1265            exit(EXIT_FAILURE);
     1266        }
     1267        if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_astrom", 0, NULL, -32)) {
     1268            psFree(md);
     1269            exit(EXIT_FAILURE);
     1270        }
     1271        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     1272            psFree(md);
     1273            exit(EXIT_FAILURE);
     1274        }
     1275            psFree(md);
     1276            exit(EXIT_FAILURE);
     1277        }
     1278
     1279        object = chipProcessedImfileObjectFromMetadata(md);
     1280        if (!object) {
     1281            psFree(md);
     1282            exit(EXIT_FAILURE);
     1283        }
     1284
     1285        psFree(md);
     1286
     1287            psFree(object);
     1288            exit(EXIT_FAILURE);
     1289        }
     1290            psFree(object);
     1291            exit(EXIT_FAILURE);
     1292        }
     1293        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     1294            psFree(object);
     1295            exit(EXIT_FAILURE);
     1296        }
    1121297        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    1131298            psFree(object);
    1141299            exit(EXIT_FAILURE);
    1151300        }
    116         if (!object->imfiles == -32) {
    117             psFree(object);
    118             exit(EXIT_FAILURE);
    119         }
    120 
    121         psFree(object);
    122     }
    123 
    124     {
    125         psMetadata      *md;
    126         summitImfileRow *object;
    127 
    128         md = psMetadataAlloc();
    129         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_name", 0, NULL, "a string")) {
     1301        if (!object->bg == 32.32) {
     1302            psFree(object);
     1303            exit(EXIT_FAILURE);
     1304        }
     1305        if (!object->bg_stdev == 32.32) {
     1306            psFree(object);
     1307            exit(EXIT_FAILURE);
     1308        }
     1309        if (!object->bg_mean_stdev == 32.32) {
     1310            psFree(object);
     1311            exit(EXIT_FAILURE);
     1312        }
     1313        if (!object->bias == 32.32) {
     1314            psFree(object);
     1315            exit(EXIT_FAILURE);
     1316        }
     1317        if (!object->bias_stdev == 32.32) {
     1318            psFree(object);
     1319            exit(EXIT_FAILURE);
     1320        }
     1321        if (!object->fringe_0 == 32.32) {
     1322            psFree(object);
     1323            exit(EXIT_FAILURE);
     1324        }
     1325        if (!object->fringe_1 == 32.32) {
     1326            psFree(object);
     1327            exit(EXIT_FAILURE);
     1328        }
     1329        if (!object->fringe_2 == 32.32) {
     1330            psFree(object);
     1331            exit(EXIT_FAILURE);
     1332        }
     1333        if (!object->sigma_ra == 32.32) {
     1334            psFree(object);
     1335            exit(EXIT_FAILURE);
     1336        }
     1337        if (!object->sigma_dec == 32.32) {
     1338            psFree(object);
     1339            exit(EXIT_FAILURE);
     1340        }
     1341        if (!object->ap_resid == 32.32) {
     1342            psFree(object);
     1343            exit(EXIT_FAILURE);
     1344        }
     1345        if (!object->ap_resid_stdev == 32.32) {
     1346            psFree(object);
     1347            exit(EXIT_FAILURE);
     1348        }
     1349        if (!object->fwhm == 32.32) {
     1350            psFree(object);
     1351            exit(EXIT_FAILURE);
     1352        }
     1353        if (!object->fwhm_range == 32.32) {
     1354            psFree(object);
     1355            exit(EXIT_FAILURE);
     1356        }
     1357        if (!object->n_stars == -32) {
     1358            psFree(object);
     1359            exit(EXIT_FAILURE);
     1360        }
     1361        if (!object->n_extended == -32) {
     1362            psFree(object);
     1363            exit(EXIT_FAILURE);
     1364        }
     1365        if (!object->n_cr == -32) {
     1366            psFree(object);
     1367            exit(EXIT_FAILURE);
     1368        }
     1369        if (!object->n_astrom == -32) {
     1370            psFree(object);
     1371            exit(EXIT_FAILURE);
     1372        }
     1373        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1374            psFree(object);
     1375            exit(EXIT_FAILURE);
     1376        }
     1377            psFree(object);
     1378            exit(EXIT_FAILURE);
     1379        }
     1380
     1381        psFree(object);
     1382    }
     1383
     1384    {
     1385        psMetadata      *md;
     1386        chipMaskRow     *object;
     1387
     1388        md = psMetadataAlloc();
     1389        if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
     1390            psFree(md);
     1391            exit(EXIT_FAILURE);
     1392        }
     1393
     1394        object = chipMaskObjectFromMetadata(md);
     1395        if (!object) {
     1396            psFree(md);
     1397            exit(EXIT_FAILURE);
     1398        }
     1399
     1400        psFree(md);
     1401
     1402        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     1403            psFree(object);
     1404            exit(EXIT_FAILURE);
     1405        }
     1406
     1407        psFree(object);
     1408    }
     1409
     1410    {
     1411        psMetadata      *md;
     1412        camRunRow       *object;
     1413
     1414        md = psMetadataAlloc();
     1415            psFree(md);
     1416            exit(EXIT_FAILURE);
     1417        }
     1418            psFree(md);
     1419            exit(EXIT_FAILURE);
     1420        }
     1421        if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
     1422            psFree(md);
     1423            exit(EXIT_FAILURE);
     1424        }
     1425        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
     1426            psFree(md);
     1427            exit(EXIT_FAILURE);
     1428        }
     1429        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir_state", 0, NULL, "a string")) {
     1430            psFree(md);
     1431            exit(EXIT_FAILURE);
     1432        }
     1433        if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
     1434            psFree(md);
     1435            exit(EXIT_FAILURE);
     1436        }
     1437        if (!psMetadataAddStr(md, PS_LIST_TAIL, "reduction", 0, NULL, "a string")) {
     1438            psFree(md);
     1439            exit(EXIT_FAILURE);
     1440        }
     1441        if (!psMetadataAddStr(md, PS_LIST_TAIL, "expgroup", 0, NULL, "a string")) {
     1442            psFree(md);
     1443            exit(EXIT_FAILURE);
     1444        }
     1445        if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
     1446            psFree(md);
     1447            exit(EXIT_FAILURE);
     1448        }
     1449
     1450        object = camRunObjectFromMetadata(md);
     1451        if (!object) {
     1452            psFree(md);
     1453            exit(EXIT_FAILURE);
     1454        }
     1455
     1456        psFree(md);
     1457
     1458            psFree(object);
     1459            exit(EXIT_FAILURE);
     1460        }
     1461            psFree(object);
     1462            exit(EXIT_FAILURE);
     1463        }
     1464        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     1465            psFree(object);
     1466            exit(EXIT_FAILURE);
     1467        }
     1468        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     1469            psFree(object);
     1470            exit(EXIT_FAILURE);
     1471        }
     1472        if (strncmp(object->workdir_state, "a string", MAX_STRING_LENGTH)) {
     1473            psFree(object);
     1474            exit(EXIT_FAILURE);
     1475        }
     1476        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     1477            psFree(object);
     1478            exit(EXIT_FAILURE);
     1479        }
     1480        if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
     1481            psFree(object);
     1482            exit(EXIT_FAILURE);
     1483        }
     1484        if (strncmp(object->expgroup, "a string", MAX_STRING_LENGTH)) {
     1485            psFree(object);
     1486            exit(EXIT_FAILURE);
     1487        }
     1488        if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
     1489            psFree(object);
     1490            exit(EXIT_FAILURE);
     1491        }
     1492
     1493        psFree(object);
     1494    }
     1495
     1496    {
     1497        psMetadata      *md;
     1498        camProcessedExpRow *object;
     1499
     1500        md = psMetadataAlloc();
     1501            psFree(md);
     1502            exit(EXIT_FAILURE);
     1503        }
     1504            psFree(md);
     1505            exit(EXIT_FAILURE);
     1506        }
     1507        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     1508            psFree(md);
     1509            exit(EXIT_FAILURE);
     1510        }
     1511        if (!psMetadataAddF32(md, PS_LIST_TAIL, "bg", 0, NULL, 32.32)) {
     1512            psFree(md);
     1513            exit(EXIT_FAILURE);
     1514        }
     1515        if (!psMetadataAddF32(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 32.32)) {
     1516            psFree(md);
     1517            exit(EXIT_FAILURE);
     1518        }
     1519        if (!psMetadataAddF32(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 32.32)) {
     1520            psFree(md);
     1521            exit(EXIT_FAILURE);
     1522        }
     1523        if (!psMetadataAddF32(md, PS_LIST_TAIL, "sigma_ra", 0, NULL, 32.32)) {
     1524            psFree(md);
     1525            exit(EXIT_FAILURE);
     1526        }
     1527        if (!psMetadataAddF32(md, PS_LIST_TAIL, "sigma_dec", 0, NULL, 32.32)) {
     1528            psFree(md);
     1529            exit(EXIT_FAILURE);
     1530        }
     1531        if (!psMetadataAddF32(md, PS_LIST_TAIL, "zp_mean", 0, NULL, 32.32)) {
     1532            psFree(md);
     1533            exit(EXIT_FAILURE);
     1534        }
     1535        if (!psMetadataAddF32(md, PS_LIST_TAIL, "zp_stdev", 0, NULL, 32.32)) {
     1536            psFree(md);
     1537            exit(EXIT_FAILURE);
     1538        }
     1539        if (!psMetadataAddF32(md, PS_LIST_TAIL, "fwhm", 0, NULL, 32.32)) {
     1540            psFree(md);
     1541            exit(EXIT_FAILURE);
     1542        }
     1543        if (!psMetadataAddF32(md, PS_LIST_TAIL, "fwhm_range", 0, NULL, 32.32)) {
     1544            psFree(md);
     1545            exit(EXIT_FAILURE);
     1546        }
     1547        if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_stars", 0, NULL, -32)) {
     1548            psFree(md);
     1549            exit(EXIT_FAILURE);
     1550        }
     1551        if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_extended", 0, NULL, -32)) {
     1552            psFree(md);
     1553            exit(EXIT_FAILURE);
     1554        }
     1555        if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_cr", 0, NULL, -32)) {
     1556            psFree(md);
     1557            exit(EXIT_FAILURE);
     1558        }
     1559        if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_astrom", 0, NULL, -32)) {
     1560            psFree(md);
     1561            exit(EXIT_FAILURE);
     1562        }
     1563        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     1564            psFree(md);
     1565            exit(EXIT_FAILURE);
     1566        }
     1567            psFree(md);
     1568            exit(EXIT_FAILURE);
     1569        }
     1570
     1571        object = camProcessedExpObjectFromMetadata(md);
     1572        if (!object) {
     1573            psFree(md);
     1574            exit(EXIT_FAILURE);
     1575        }
     1576
     1577        psFree(md);
     1578
     1579            psFree(object);
     1580            exit(EXIT_FAILURE);
     1581        }
     1582            psFree(object);
     1583            exit(EXIT_FAILURE);
     1584        }
     1585        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     1586            psFree(object);
     1587            exit(EXIT_FAILURE);
     1588        }
     1589        if (!object->bg == 32.32) {
     1590            psFree(object);
     1591            exit(EXIT_FAILURE);
     1592        }
     1593        if (!object->bg_stdev == 32.32) {
     1594            psFree(object);
     1595            exit(EXIT_FAILURE);
     1596        }
     1597        if (!object->bg_mean_stdev == 32.32) {
     1598            psFree(object);
     1599            exit(EXIT_FAILURE);
     1600        }
     1601        if (!object->sigma_ra == 32.32) {
     1602            psFree(object);
     1603            exit(EXIT_FAILURE);
     1604        }
     1605        if (!object->sigma_dec == 32.32) {
     1606            psFree(object);
     1607            exit(EXIT_FAILURE);
     1608        }
     1609        if (!object->zp_mean == 32.32) {
     1610            psFree(object);
     1611            exit(EXIT_FAILURE);
     1612        }
     1613        if (!object->zp_stdev == 32.32) {
     1614            psFree(object);
     1615            exit(EXIT_FAILURE);
     1616        }
     1617        if (!object->fwhm == 32.32) {
     1618            psFree(object);
     1619            exit(EXIT_FAILURE);
     1620        }
     1621        if (!object->fwhm_range == 32.32) {
     1622            psFree(object);
     1623            exit(EXIT_FAILURE);
     1624        }
     1625        if (!object->n_stars == -32) {
     1626            psFree(object);
     1627            exit(EXIT_FAILURE);
     1628        }
     1629        if (!object->n_extended == -32) {
     1630            psFree(object);
     1631            exit(EXIT_FAILURE);
     1632        }
     1633        if (!object->n_cr == -32) {
     1634            psFree(object);
     1635            exit(EXIT_FAILURE);
     1636        }
     1637        if (!object->n_astrom == -32) {
     1638            psFree(object);
     1639            exit(EXIT_FAILURE);
     1640        }
     1641        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1642            psFree(object);
     1643            exit(EXIT_FAILURE);
     1644        }
     1645            psFree(object);
     1646            exit(EXIT_FAILURE);
     1647        }
     1648
     1649        psFree(object);
     1650    }
     1651
     1652    {
     1653        psMetadata      *md;
     1654        camMaskRow      *object;
     1655
     1656        md = psMetadataAlloc();
     1657        if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
     1658            psFree(md);
     1659            exit(EXIT_FAILURE);
     1660        }
     1661
     1662        object = camMaskObjectFromMetadata(md);
     1663        if (!object) {
     1664            psFree(md);
     1665            exit(EXIT_FAILURE);
     1666        }
     1667
     1668        psFree(md);
     1669
     1670        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     1671            psFree(object);
     1672            exit(EXIT_FAILURE);
     1673        }
     1674
     1675        psFree(object);
     1676    }
     1677
     1678    {
     1679        psMetadata      *md;
     1680        warpRunRow      *object;
     1681
     1682        md = psMetadataAlloc();
     1683            psFree(md);
     1684            exit(EXIT_FAILURE);
     1685        }
     1686        if (!psMetadataAddStr(md, PS_LIST_TAIL, "mode", 0, NULL, "a string")) {
     1687            psFree(md);
     1688            exit(EXIT_FAILURE);
     1689        }
     1690        if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
     1691            psFree(md);
     1692            exit(EXIT_FAILURE);
     1693        }
     1694        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
     1695            psFree(md);
     1696            exit(EXIT_FAILURE);
     1697        }
     1698        if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
     1699            psFree(md);
     1700            exit(EXIT_FAILURE);
     1701        }
     1702            psFree(md);
     1703            exit(EXIT_FAILURE);
     1704        }
     1705
     1706        object = warpRunObjectFromMetadata(md);
     1707        if (!object) {
     1708            psFree(md);
     1709            exit(EXIT_FAILURE);
     1710        }
     1711
     1712        psFree(md);
     1713
     1714            psFree(object);
     1715            exit(EXIT_FAILURE);
     1716        }
     1717        if (strncmp(object->mode, "a string", MAX_STRING_LENGTH)) {
     1718            psFree(object);
     1719            exit(EXIT_FAILURE);
     1720        }
     1721        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     1722            psFree(object);
     1723            exit(EXIT_FAILURE);
     1724        }
     1725        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     1726            psFree(object);
     1727            exit(EXIT_FAILURE);
     1728        }
     1729        if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
     1730            psFree(object);
     1731            exit(EXIT_FAILURE);
     1732        }
     1733            psFree(object);
     1734            exit(EXIT_FAILURE);
     1735        }
     1736
     1737        psFree(object);
     1738    }
     1739
     1740    {
     1741        psMetadata      *md;
     1742        warpInputExpRow *object;
     1743
     1744        md = psMetadataAlloc();
     1745            psFree(md);
     1746            exit(EXIT_FAILURE);
     1747        }
     1748            psFree(md);
     1749            exit(EXIT_FAILURE);
     1750        }
     1751        if (!psMetadataAdd(md, PS_LIST_TAIL, "magiced", PS_DATA_BOOL, NULL, true)) {
     1752            psFree(md);
     1753            exit(EXIT_FAILURE);
     1754        }
     1755
     1756        object = warpInputExpObjectFromMetadata(md);
     1757        if (!object) {
     1758            psFree(md);
     1759            exit(EXIT_FAILURE);
     1760        }
     1761
     1762        psFree(md);
     1763
     1764            psFree(object);
     1765            exit(EXIT_FAILURE);
     1766        }
     1767            psFree(object);
     1768            exit(EXIT_FAILURE);
     1769        }
     1770        if (!object->magiced == true) {
     1771            psFree(object);
     1772            exit(EXIT_FAILURE);
     1773        }
     1774
     1775        psFree(object);
     1776    }
     1777
     1778    {
     1779        psMetadata      *md;
     1780        warpSkyCellMapRow *object;
     1781
     1782        md = psMetadataAlloc();
     1783            psFree(md);
     1784            exit(EXIT_FAILURE);
     1785        }
     1786        if (!psMetadataAddStr(md, PS_LIST_TAIL, "skycell_id", 0, NULL, "a string")) {
     1787            psFree(md);
     1788            exit(EXIT_FAILURE);
     1789        }
     1790        if (!psMetadataAddStr(md, PS_LIST_TAIL, "tess_id", 0, NULL, "a string")) {
     1791            psFree(md);
     1792            exit(EXIT_FAILURE);
     1793        }
     1794            psFree(md);
     1795            exit(EXIT_FAILURE);
     1796        }
     1797        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
     1798            psFree(md);
     1799            exit(EXIT_FAILURE);
     1800        }
     1801            psFree(md);
     1802            exit(EXIT_FAILURE);
     1803        }
     1804
     1805        object = warpSkyCellMapObjectFromMetadata(md);
     1806        if (!object) {
     1807            psFree(md);
     1808            exit(EXIT_FAILURE);
     1809        }
     1810
     1811        psFree(md);
     1812
     1813            psFree(object);
     1814            exit(EXIT_FAILURE);
     1815        }
     1816        if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
     1817            psFree(object);
     1818            exit(EXIT_FAILURE);
     1819        }
     1820        if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
     1821            psFree(object);
     1822            exit(EXIT_FAILURE);
     1823        }
     1824            psFree(object);
     1825            exit(EXIT_FAILURE);
     1826        }
     1827        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     1828            psFree(object);
     1829            exit(EXIT_FAILURE);
     1830        }
     1831            psFree(object);
     1832            exit(EXIT_FAILURE);
     1833        }
     1834
     1835        psFree(object);
     1836    }
     1837
     1838    {
     1839        psMetadata      *md;
     1840        warpSkyfileRow  *object;
     1841
     1842        md = psMetadataAlloc();
     1843            psFree(md);
     1844            exit(EXIT_FAILURE);
     1845        }
     1846        if (!psMetadataAddStr(md, PS_LIST_TAIL, "skycell_id", 0, NULL, "a string")) {
     1847            psFree(md);
     1848            exit(EXIT_FAILURE);
     1849        }
     1850        if (!psMetadataAddStr(md, PS_LIST_TAIL, "tess_id", 0, NULL, "a string")) {
     1851            psFree(md);
     1852            exit(EXIT_FAILURE);
     1853        }
     1854        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     1855            psFree(md);
     1856            exit(EXIT_FAILURE);
     1857        }
     1858        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     1859            psFree(md);
     1860            exit(EXIT_FAILURE);
     1861        }
     1862        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     1863            psFree(md);
     1864            exit(EXIT_FAILURE);
     1865        }
     1866        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     1867            psFree(md);
     1868            exit(EXIT_FAILURE);
     1869        }
     1870
     1871        object = warpSkyfileObjectFromMetadata(md);
     1872        if (!object) {
     1873            psFree(md);
     1874            exit(EXIT_FAILURE);
     1875        }
     1876
     1877        psFree(md);
     1878
     1879            psFree(object);
     1880            exit(EXIT_FAILURE);
     1881        }
     1882        if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
     1883            psFree(object);
     1884            exit(EXIT_FAILURE);
     1885        }
     1886        if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
     1887            psFree(object);
     1888            exit(EXIT_FAILURE);
     1889        }
     1890        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     1891            psFree(object);
     1892            exit(EXIT_FAILURE);
     1893        }
     1894        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1895            psFree(object);
     1896            exit(EXIT_FAILURE);
     1897        }
     1898        if (!object->bg == 64.64) {
     1899            psFree(object);
     1900            exit(EXIT_FAILURE);
     1901        }
     1902        if (!object->bg_stdev == 64.64) {
     1903            psFree(object);
     1904            exit(EXIT_FAILURE);
     1905        }
     1906
     1907        psFree(object);
     1908    }
     1909
     1910    {
     1911        psMetadata      *md;
     1912        diffRunRow      *object;
     1913
     1914        md = psMetadataAlloc();
     1915            psFree(md);
     1916            exit(EXIT_FAILURE);
     1917        }
     1918        if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
     1919            psFree(md);
     1920            exit(EXIT_FAILURE);
     1921        }
     1922        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
     1923            psFree(md);
     1924            exit(EXIT_FAILURE);
     1925        }
     1926        if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
     1927            psFree(md);
     1928            exit(EXIT_FAILURE);
     1929        }
     1930            psFree(md);
     1931            exit(EXIT_FAILURE);
     1932        }
     1933        if (!psMetadataAddStr(md, PS_LIST_TAIL, "skycell_id", 0, NULL, "a string")) {
     1934            psFree(md);
     1935            exit(EXIT_FAILURE);
     1936        }
     1937        if (!psMetadataAddStr(md, PS_LIST_TAIL, "tess_id", 0, NULL, "a string")) {
     1938            psFree(md);
     1939            exit(EXIT_FAILURE);
     1940        }
     1941
     1942        object = diffRunObjectFromMetadata(md);
     1943        if (!object) {
     1944            psFree(md);
     1945            exit(EXIT_FAILURE);
     1946        }
     1947
     1948        psFree(md);
     1949
     1950            psFree(object);
     1951            exit(EXIT_FAILURE);
     1952        }
     1953        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     1954            psFree(object);
     1955            exit(EXIT_FAILURE);
     1956        }
     1957        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     1958            psFree(object);
     1959            exit(EXIT_FAILURE);
     1960        }
     1961        if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
     1962            psFree(object);
     1963            exit(EXIT_FAILURE);
     1964        }
     1965            psFree(object);
     1966            exit(EXIT_FAILURE);
     1967        }
     1968        if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
     1969            psFree(object);
     1970            exit(EXIT_FAILURE);
     1971        }
     1972        if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
     1973            psFree(object);
     1974            exit(EXIT_FAILURE);
     1975        }
     1976
     1977        psFree(object);
     1978    }
     1979
     1980    {
     1981        psMetadata      *md;
     1982        diffInputSkyfileRow *object;
     1983
     1984        md = psMetadataAlloc();
     1985            psFree(md);
     1986            exit(EXIT_FAILURE);
     1987        }
     1988            psFree(md);
     1989            exit(EXIT_FAILURE);
     1990        }
     1991        if (!psMetadataAddStr(md, PS_LIST_TAIL, "skycell_id", 0, NULL, "a string")) {
     1992            psFree(md);
     1993            exit(EXIT_FAILURE);
     1994        }
     1995        if (!psMetadataAddStr(md, PS_LIST_TAIL, "tess_id", 0, NULL, "a string")) {
     1996            psFree(md);
     1997            exit(EXIT_FAILURE);
     1998        }
     1999        if (!psMetadataAddStr(md, PS_LIST_TAIL, "kind", 0, NULL, "a string")) {
     2000            psFree(md);
     2001            exit(EXIT_FAILURE);
     2002        }
     2003        if (!psMetadataAdd(md, PS_LIST_TAIL, "template", PS_DATA_BOOL, NULL, true)) {
     2004            psFree(md);
     2005            exit(EXIT_FAILURE);
     2006        }
     2007
     2008        object = diffInputSkyfileObjectFromMetadata(md);
     2009        if (!object) {
     2010            psFree(md);
     2011            exit(EXIT_FAILURE);
     2012        }
     2013
     2014        psFree(md);
     2015
     2016            psFree(object);
     2017            exit(EXIT_FAILURE);
     2018        }
     2019            psFree(object);
     2020            exit(EXIT_FAILURE);
     2021        }
     2022        if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
     2023            psFree(object);
     2024            exit(EXIT_FAILURE);
     2025        }
     2026        if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
     2027            psFree(object);
     2028            exit(EXIT_FAILURE);
     2029        }
     2030        if (strncmp(object->kind, "a string", MAX_STRING_LENGTH)) {
     2031            psFree(object);
     2032            exit(EXIT_FAILURE);
     2033        }
     2034        if (!object->template == true) {
     2035            psFree(object);
     2036            exit(EXIT_FAILURE);
     2037        }
     2038
     2039        psFree(object);
     2040    }
     2041
     2042    {
     2043        psMetadata      *md;
     2044        diffSkyfileRow  *object;
     2045
     2046        md = psMetadataAlloc();
     2047            psFree(md);
     2048            exit(EXIT_FAILURE);
     2049        }
     2050        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     2051            psFree(md);
     2052            exit(EXIT_FAILURE);
     2053        }
     2054        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     2055            psFree(md);
     2056            exit(EXIT_FAILURE);
     2057        }
     2058        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     2059            psFree(md);
     2060            exit(EXIT_FAILURE);
     2061        }
     2062        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     2063            psFree(md);
     2064            exit(EXIT_FAILURE);
     2065        }
     2066
     2067        object = diffSkyfileObjectFromMetadata(md);
     2068        if (!object) {
     2069            psFree(md);
     2070            exit(EXIT_FAILURE);
     2071        }
     2072
     2073        psFree(md);
     2074
     2075            psFree(object);
     2076            exit(EXIT_FAILURE);
     2077        }
     2078        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     2079            psFree(object);
     2080            exit(EXIT_FAILURE);
     2081        }
     2082        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     2083            psFree(object);
     2084            exit(EXIT_FAILURE);
     2085        }
     2086        if (!object->bg == 64.64) {
     2087            psFree(object);
     2088            exit(EXIT_FAILURE);
     2089        }
     2090        if (!object->bg_stdev == 64.64) {
     2091            psFree(object);
     2092            exit(EXIT_FAILURE);
     2093        }
     2094
     2095        psFree(object);
     2096    }
     2097
     2098    {
     2099        psMetadata      *md;
     2100        stackRunRow     *object;
     2101
     2102        md = psMetadataAlloc();
     2103            psFree(md);
     2104            exit(EXIT_FAILURE);
     2105        }
     2106        if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
     2107            psFree(md);
     2108            exit(EXIT_FAILURE);
     2109        }
     2110        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
     2111            psFree(md);
     2112            exit(EXIT_FAILURE);
     2113        }
     2114        if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
     2115            psFree(md);
     2116            exit(EXIT_FAILURE);
     2117        }
     2118            psFree(md);
     2119            exit(EXIT_FAILURE);
     2120        }
     2121        if (!psMetadataAddStr(md, PS_LIST_TAIL, "skycell_id", 0, NULL, "a string")) {
     2122            psFree(md);
     2123            exit(EXIT_FAILURE);
     2124        }
     2125        if (!psMetadataAddStr(md, PS_LIST_TAIL, "tess_id", 0, NULL, "a string")) {
     2126            psFree(md);
     2127            exit(EXIT_FAILURE);
     2128        }
     2129
     2130        object = stackRunObjectFromMetadata(md);
     2131        if (!object) {
     2132            psFree(md);
     2133            exit(EXIT_FAILURE);
     2134        }
     2135
     2136        psFree(md);
     2137
     2138            psFree(object);
     2139            exit(EXIT_FAILURE);
     2140        }
     2141        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     2142            psFree(object);
     2143            exit(EXIT_FAILURE);
     2144        }
     2145        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     2146            psFree(object);
     2147            exit(EXIT_FAILURE);
     2148        }
     2149        if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
     2150            psFree(object);
     2151            exit(EXIT_FAILURE);
     2152        }
     2153            psFree(object);
     2154            exit(EXIT_FAILURE);
     2155        }
     2156        if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
     2157            psFree(object);
     2158            exit(EXIT_FAILURE);
     2159        }
     2160        if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
     2161            psFree(object);
     2162            exit(EXIT_FAILURE);
     2163        }
     2164
     2165        psFree(object);
     2166    }
     2167
     2168    {
     2169        psMetadata      *md;
     2170        stackInputSkyfileRow *object;
     2171
     2172        md = psMetadataAlloc();
     2173            psFree(md);
     2174            exit(EXIT_FAILURE);
     2175        }
     2176            psFree(md);
     2177            exit(EXIT_FAILURE);
     2178        }
     2179
     2180        object = stackInputSkyfileObjectFromMetadata(md);
     2181        if (!object) {
     2182            psFree(md);
     2183            exit(EXIT_FAILURE);
     2184        }
     2185
     2186        psFree(md);
     2187
     2188            psFree(object);
     2189            exit(EXIT_FAILURE);
     2190        }
     2191            psFree(object);
     2192            exit(EXIT_FAILURE);
     2193        }
     2194
     2195        psFree(object);
     2196    }
     2197
     2198    {
     2199        psMetadata      *md;
     2200        stackSumSkyfileRow *object;
     2201
     2202        md = psMetadataAlloc();
     2203            psFree(md);
     2204            exit(EXIT_FAILURE);
     2205        }
     2206        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     2207            psFree(md);
     2208            exit(EXIT_FAILURE);
     2209        }
     2210        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     2211            psFree(md);
     2212            exit(EXIT_FAILURE);
     2213        }
     2214        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     2215            psFree(md);
     2216            exit(EXIT_FAILURE);
     2217        }
     2218        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     2219            psFree(md);
     2220            exit(EXIT_FAILURE);
     2221        }
     2222
     2223        object = stackSumSkyfileObjectFromMetadata(md);
     2224        if (!object) {
     2225            psFree(md);
     2226            exit(EXIT_FAILURE);
     2227        }
     2228
     2229        psFree(md);
     2230
     2231            psFree(object);
     2232            exit(EXIT_FAILURE);
     2233        }
     2234        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     2235            psFree(object);
     2236            exit(EXIT_FAILURE);
     2237        }
     2238        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     2239            psFree(object);
     2240            exit(EXIT_FAILURE);
     2241        }
     2242        if (!object->bg == 64.64) {
     2243            psFree(object);
     2244            exit(EXIT_FAILURE);
     2245        }
     2246        if (!object->bg_stdev == 64.64) {
     2247            psFree(object);
     2248            exit(EXIT_FAILURE);
     2249        }
     2250
     2251        psFree(object);
     2252    }
     2253
     2254    {
     2255        psMetadata      *md;
     2256        detRunRow       *object;
     2257
     2258        md = psMetadataAlloc();
     2259            psFree(md);
     2260            exit(EXIT_FAILURE);
     2261        }
     2262        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
     2263            psFree(md);
     2264            exit(EXIT_FAILURE);
     2265        }
     2266        if (!psMetadataAddStr(md, PS_LIST_TAIL, "det_type", 0, NULL, "a string")) {
     2267            psFree(md);
     2268            exit(EXIT_FAILURE);
     2269        }
     2270        if (!psMetadataAddStr(md, PS_LIST_TAIL, "mode", 0, NULL, "a string")) {
     2271            psFree(md);
     2272            exit(EXIT_FAILURE);
     2273        }
     2274        if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
     2275            psFree(md);
     2276            exit(EXIT_FAILURE);
     2277        }
     2278        if (!psMetadataAddStr(md, PS_LIST_TAIL, "filelevel", 0, NULL, "a string")) {
     2279            psFree(md);
     2280            exit(EXIT_FAILURE);
     2281        }
     2282        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
    1302283            psFree(md);
    1312284            exit(EXIT_FAILURE);
     
    1392292            exit(EXIT_FAILURE);
    1402293        }
    141         if (!psMetadataAddStr(md, PS_LIST_TAIL, "file_id", 0, NULL, "a string")) {
    142             psFree(md);
    143             exit(EXIT_FAILURE);
    144         }
    145         if (!psMetadataAddS32(md, PS_LIST_TAIL, "bytes", 0, NULL, -32)) {
    146             psFree(md);
    147             exit(EXIT_FAILURE);
    148         }
    149         if (!psMetadataAddStr(md, PS_LIST_TAIL, "md5sum", 0, NULL, "a string")) {
    150             psFree(md);
    151             exit(EXIT_FAILURE);
    152         }
    153         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, "a string")) {
     2294        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_type", 0, NULL, "a string")) {
     2295            psFree(md);
     2296            exit(EXIT_FAILURE);
     2297        }
     2298        if (!psMetadataAddStr(md, PS_LIST_TAIL, "reduction", 0, NULL, "a string")) {
     2299            psFree(md);
     2300            exit(EXIT_FAILURE);
     2301        }
     2302        if (!psMetadataAddStr(md, PS_LIST_TAIL, "filter", 0, NULL, "a string")) {
     2303            psFree(md);
     2304            exit(EXIT_FAILURE);
     2305        }
     2306        if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass_min", 0, NULL, 32.32)) {
     2307            psFree(md);
     2308            exit(EXIT_FAILURE);
     2309        }
     2310        if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass_max", 0, NULL, 32.32)) {
     2311            psFree(md);
     2312            exit(EXIT_FAILURE);
     2313        }
     2314        if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time_min", 0, NULL, 32.32)) {
     2315            psFree(md);
     2316            exit(EXIT_FAILURE);
     2317        }
     2318        if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time_max", 0, NULL, 32.32)) {
     2319            psFree(md);
     2320            exit(EXIT_FAILURE);
     2321        }
     2322        if (!psMetadataAddF32(md, PS_LIST_TAIL, "ccd_temp_min", 0, NULL, 32.32)) {
     2323            psFree(md);
     2324            exit(EXIT_FAILURE);
     2325        }
     2326        if (!psMetadataAddF32(md, PS_LIST_TAIL, "ccd_temp_max", 0, NULL, 32.32)) {
     2327            psFree(md);
     2328            exit(EXIT_FAILURE);
     2329        }
     2330        if (!psMetadataAddF64(md, PS_LIST_TAIL, "posang_min", 0, NULL, 64.64)) {
     2331            psFree(md);
     2332            exit(EXIT_FAILURE);
     2333        }
     2334        if (!psMetadataAddF64(md, PS_LIST_TAIL, "posang_max", 0, NULL, 64.64)) {
     2335            psFree(md);
     2336            exit(EXIT_FAILURE);
     2337        }
     2338            psFree(md);
     2339            exit(EXIT_FAILURE);
     2340        }
     2341            psFree(md);
     2342            exit(EXIT_FAILURE);
     2343        }
     2344            psFree(md);
     2345            exit(EXIT_FAILURE);
     2346        }
     2347            psFree(md);
     2348            exit(EXIT_FAILURE);
     2349        }
     2350            psFree(md);
     2351            exit(EXIT_FAILURE);
     2352        }
     2353        if (!psMetadataAddF32(md, PS_LIST_TAIL, "solang_min", 0, NULL, 32.32)) {
     2354            psFree(md);
     2355            exit(EXIT_FAILURE);
     2356        }
     2357        if (!psMetadataAddF32(md, PS_LIST_TAIL, "solang_max", 0, NULL, 32.32)) {
     2358            psFree(md);
     2359            exit(EXIT_FAILURE);
     2360        }
     2361        if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
     2362            psFree(md);
     2363            exit(EXIT_FAILURE);
     2364        }
     2365        if (!psMetadataAddS32(md, PS_LIST_TAIL, "parent", 0, NULL, -32)) {
     2366            psFree(md);
     2367            exit(EXIT_FAILURE);
     2368        }
     2369
     2370        object = detRunObjectFromMetadata(md);
     2371        if (!object) {
     2372            psFree(md);
     2373            exit(EXIT_FAILURE);
     2374        }
     2375
     2376        psFree(md);
     2377
     2378            psFree(object);
     2379            exit(EXIT_FAILURE);
     2380        }
     2381        if (!object->iteration == -32) {
     2382            psFree(object);
     2383            exit(EXIT_FAILURE);
     2384        }
     2385        if (strncmp(object->det_type, "a string", MAX_STRING_LENGTH)) {
     2386            psFree(object);
     2387            exit(EXIT_FAILURE);
     2388        }
     2389        if (strncmp(object->mode, "a string", MAX_STRING_LENGTH)) {
     2390            psFree(object);
     2391            exit(EXIT_FAILURE);
     2392        }
     2393        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     2394            psFree(object);
     2395            exit(EXIT_FAILURE);
     2396        }
     2397        if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
     2398            psFree(object);
     2399            exit(EXIT_FAILURE);
     2400        }
     2401        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     2402            psFree(object);
     2403            exit(EXIT_FAILURE);
     2404        }
     2405        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
     2406            psFree(object);
     2407            exit(EXIT_FAILURE);
     2408        }
     2409        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
     2410            psFree(object);
     2411            exit(EXIT_FAILURE);
     2412        }
     2413        if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
     2414            psFree(object);
     2415            exit(EXIT_FAILURE);
     2416        }
     2417        if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
     2418            psFree(object);
     2419            exit(EXIT_FAILURE);
     2420        }
     2421        if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
     2422            psFree(object);
     2423            exit(EXIT_FAILURE);
     2424        }
     2425        if (!object->airmass_min == 32.32) {
     2426            psFree(object);
     2427            exit(EXIT_FAILURE);
     2428        }
     2429        if (!object->airmass_max == 32.32) {
     2430            psFree(object);
     2431            exit(EXIT_FAILURE);
     2432        }
     2433        if (!object->exp_time_min == 32.32) {
     2434            psFree(object);
     2435            exit(EXIT_FAILURE);
     2436        }
     2437        if (!object->exp_time_max == 32.32) {
     2438            psFree(object);
     2439            exit(EXIT_FAILURE);
     2440        }
     2441        if (!object->ccd_temp_min == 32.32) {
     2442            psFree(object);
     2443            exit(EXIT_FAILURE);
     2444        }
     2445        if (!object->ccd_temp_max == 32.32) {
     2446            psFree(object);
     2447            exit(EXIT_FAILURE);
     2448        }
     2449        if (!object->posang_min == 64.64) {
     2450            psFree(object);
     2451            exit(EXIT_FAILURE);
     2452        }
     2453        if (!object->posang_max == 64.64) {
     2454            psFree(object);
     2455            exit(EXIT_FAILURE);
     2456        }
     2457            psFree(object);
     2458            exit(EXIT_FAILURE);
     2459        }
     2460            psFree(object);
     2461            exit(EXIT_FAILURE);
     2462        }
     2463            psFree(object);
     2464            exit(EXIT_FAILURE);
     2465        }
     2466            psFree(object);
     2467            exit(EXIT_FAILURE);
     2468        }
     2469            psFree(object);
     2470            exit(EXIT_FAILURE);
     2471        }
     2472        if (!object->solang_min == 32.32) {
     2473            psFree(object);
     2474            exit(EXIT_FAILURE);
     2475        }
     2476        if (!object->solang_max == 32.32) {
     2477            psFree(object);
     2478            exit(EXIT_FAILURE);
     2479        }
     2480        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     2481            psFree(object);
     2482            exit(EXIT_FAILURE);
     2483        }
     2484        if (!object->parent == -32) {
     2485            psFree(object);
     2486            exit(EXIT_FAILURE);
     2487        }
     2488
     2489        psFree(object);
     2490    }
     2491
     2492    {
     2493        psMetadata      *md;
     2494        detInputExpRow  *object;
     2495
     2496        md = psMetadataAlloc();
     2497            psFree(md);
     2498            exit(EXIT_FAILURE);
     2499        }
     2500        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
     2501            psFree(md);
     2502            exit(EXIT_FAILURE);
     2503        }
     2504            psFree(md);
     2505            exit(EXIT_FAILURE);
     2506        }
     2507        if (!psMetadataAdd(md, PS_LIST_TAIL, "include", PS_DATA_BOOL, NULL, true)) {
     2508            psFree(md);
     2509            exit(EXIT_FAILURE);
     2510        }
     2511
     2512        object = detInputExpObjectFromMetadata(md);
     2513        if (!object) {
     2514            psFree(md);
     2515            exit(EXIT_FAILURE);
     2516        }
     2517
     2518        psFree(md);
     2519
     2520            psFree(object);
     2521            exit(EXIT_FAILURE);
     2522        }
     2523        if (!object->iteration == -32) {
     2524            psFree(object);
     2525            exit(EXIT_FAILURE);
     2526        }
     2527            psFree(object);
     2528            exit(EXIT_FAILURE);
     2529        }
     2530        if (!object->include == true) {
     2531            psFree(object);
     2532            exit(EXIT_FAILURE);
     2533        }
     2534
     2535        psFree(object);
     2536    }
     2537
     2538    {
     2539        psMetadata      *md;
     2540        detProcessedImfileRow *object;
     2541
     2542        md = psMetadataAlloc();
     2543            psFree(md);
     2544            exit(EXIT_FAILURE);
     2545        }
    1542546            psFree(md);
    1552547            exit(EXIT_FAILURE);
     
    1632555            exit(EXIT_FAILURE);
    1642556        }
    165 
    166         object = summitImfileObjectFromMetadata(md);
    167         if (!object) {
    168             psFree(md);
    169             exit(EXIT_FAILURE);
    170         }
    171 
    172         psFree(md);
    173 
    174         if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    175             psFree(object);
    176             exit(EXIT_FAILURE);
    177         }
    178         if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    179             psFree(object);
    180             exit(EXIT_FAILURE);
    181         }
    182         if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
    183             psFree(object);
    184             exit(EXIT_FAILURE);
    185         }
    186         if (strncmp(object->file_id, "a string", MAX_STRING_LENGTH)) {
    187             psFree(object);
    188             exit(EXIT_FAILURE);
    189         }
    190         if (!object->bytes == -32) {
    191             psFree(object);
    192             exit(EXIT_FAILURE);
    193         }
    194         if (strncmp(object->md5sum, "a string", MAX_STRING_LENGTH)) {
    195             psFree(object);
    196             exit(EXIT_FAILURE);
    197         }
    198         if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
     2557        if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
     2558            psFree(md);
     2559            exit(EXIT_FAILURE);
     2560        }
     2561        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     2562            psFree(md);
     2563            exit(EXIT_FAILURE);
     2564        }
     2565        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     2566            psFree(md);
     2567            exit(EXIT_FAILURE);
     2568        }
     2569        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     2570            psFree(md);
     2571            exit(EXIT_FAILURE);
     2572        }
     2573        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 64.64)) {
     2574            psFree(md);
     2575            exit(EXIT_FAILURE);
     2576        }
     2577        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 64.64)) {
     2578            psFree(md);
     2579            exit(EXIT_FAILURE);
     2580        }
     2581        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 64.64)) {
     2582            psFree(md);
     2583            exit(EXIT_FAILURE);
     2584        }
     2585        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
     2586            psFree(md);
     2587            exit(EXIT_FAILURE);
     2588        }
     2589        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
     2590            psFree(md);
     2591            exit(EXIT_FAILURE);
     2592        }
     2593        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
     2594            psFree(md);
     2595            exit(EXIT_FAILURE);
     2596        }
     2597        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
     2598            psFree(md);
     2599            exit(EXIT_FAILURE);
     2600        }
     2601        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
     2602            psFree(md);
     2603            exit(EXIT_FAILURE);
     2604        }
     2605        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     2606            psFree(md);
     2607            exit(EXIT_FAILURE);
     2608        }
     2609            psFree(md);
     2610            exit(EXIT_FAILURE);
     2611        }
     2612
     2613        object = detProcessedImfileObjectFromMetadata(md);
     2614        if (!object) {
     2615            psFree(md);
     2616            exit(EXIT_FAILURE);
     2617        }
     2618
     2619        psFree(md);
     2620
     2621            psFree(object);
     2622            exit(EXIT_FAILURE);
     2623        }
    1992624            psFree(object);
    2002625            exit(EXIT_FAILURE);
     
    2082633            exit(EXIT_FAILURE);
    2092634        }
    210 
    211         psFree(object);
    212     }
    213 
    214     {
    215         psMetadata      *md;
    216         pzPendingExpRow *object;
    217 
    218         md = psMetadataAlloc();
    219         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_name", 0, NULL, "a string")) {
    220             psFree(md);
    221             exit(EXIT_FAILURE);
    222         }
    223         if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
    224             psFree(md);
    225             exit(EXIT_FAILURE);
    226         }
    227         if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
    228             psFree(md);
    229             exit(EXIT_FAILURE);
    230         }
    231 
    232         object = pzPendingExpObjectFromMetadata(md);
    233         if (!object) {
    234             psFree(md);
    235             exit(EXIT_FAILURE);
    236         }
    237 
    238         psFree(md);
    239 
    240         if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    241             psFree(object);
    242             exit(EXIT_FAILURE);
    243         }
    244         if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    245             psFree(object);
    246             exit(EXIT_FAILURE);
    247         }
    248         if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
    249             psFree(object);
    250             exit(EXIT_FAILURE);
    251         }
    252 
    253         psFree(object);
    254     }
    255 
    256     {
    257         psMetadata      *md;
    258         pzPendingImfileRow *object;
    259 
    260         md = psMetadataAlloc();
    261         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_name", 0, NULL, "a string")) {
    262             psFree(md);
    263             exit(EXIT_FAILURE);
    264         }
    265         if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
    266             psFree(md);
    267             exit(EXIT_FAILURE);
    268         }
    269         if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
    270             psFree(md);
    271             exit(EXIT_FAILURE);
    272         }
    273         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, "a string")) {
     2635        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     2636            psFree(object);
     2637            exit(EXIT_FAILURE);
     2638        }
     2639        if (!object->bg == 64.64) {
     2640            psFree(object);
     2641            exit(EXIT_FAILURE);
     2642        }
     2643        if (!object->bg_stdev == 64.64) {
     2644            psFree(object);
     2645            exit(EXIT_FAILURE);
     2646        }
     2647        if (!object->bg_mean_stdev == 64.64) {
     2648            psFree(object);
     2649            exit(EXIT_FAILURE);
     2650        }
     2651        if (!object->fringe_0 == 64.64) {
     2652            psFree(object);
     2653            exit(EXIT_FAILURE);
     2654        }
     2655        if (!object->fringe_1 == 64.64) {
     2656            psFree(object);
     2657            exit(EXIT_FAILURE);
     2658        }
     2659        if (!object->fringe_2 == 64.64) {
     2660            psFree(object);
     2661            exit(EXIT_FAILURE);
     2662        }
     2663        if (!object->user_1 == 64.64) {
     2664            psFree(object);
     2665            exit(EXIT_FAILURE);
     2666        }
     2667        if (!object->user_2 == 64.64) {
     2668            psFree(object);
     2669            exit(EXIT_FAILURE);
     2670        }
     2671        if (!object->user_3 == 64.64) {
     2672            psFree(object);
     2673            exit(EXIT_FAILURE);
     2674        }
     2675        if (!object->user_4 == 64.64) {
     2676            psFree(object);
     2677            exit(EXIT_FAILURE);
     2678        }
     2679        if (!object->user_5 == 64.64) {
     2680            psFree(object);
     2681            exit(EXIT_FAILURE);
     2682        }
     2683        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     2684            psFree(object);
     2685            exit(EXIT_FAILURE);
     2686        }
     2687            psFree(object);
     2688            exit(EXIT_FAILURE);
     2689        }
     2690
     2691        psFree(object);
     2692    }
     2693
     2694    {
     2695        psMetadata      *md;
     2696        detProcessedExpRow *object;
     2697
     2698        md = psMetadataAlloc();
     2699            psFree(md);
     2700            exit(EXIT_FAILURE);
     2701        }
     2702            psFree(md);
     2703            exit(EXIT_FAILURE);
     2704        }
     2705        if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
     2706            psFree(md);
     2707            exit(EXIT_FAILURE);
     2708        }
     2709        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     2710            psFree(md);
     2711            exit(EXIT_FAILURE);
     2712        }
     2713        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     2714            psFree(md);
     2715            exit(EXIT_FAILURE);
     2716        }
     2717        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     2718            psFree(md);
     2719            exit(EXIT_FAILURE);
     2720        }
     2721        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 64.64)) {
     2722            psFree(md);
     2723            exit(EXIT_FAILURE);
     2724        }
     2725        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 64.64)) {
     2726            psFree(md);
     2727            exit(EXIT_FAILURE);
     2728        }
     2729        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 64.64)) {
     2730            psFree(md);
     2731            exit(EXIT_FAILURE);
     2732        }
     2733        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
     2734            psFree(md);
     2735            exit(EXIT_FAILURE);
     2736        }
     2737        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
     2738            psFree(md);
     2739            exit(EXIT_FAILURE);
     2740        }
     2741        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
     2742            psFree(md);
     2743            exit(EXIT_FAILURE);
     2744        }
     2745        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
     2746            psFree(md);
     2747            exit(EXIT_FAILURE);
     2748        }
     2749        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
     2750            psFree(md);
     2751            exit(EXIT_FAILURE);
     2752        }
     2753        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     2754            psFree(md);
     2755            exit(EXIT_FAILURE);
     2756        }
     2757            psFree(md);
     2758            exit(EXIT_FAILURE);
     2759        }
     2760
     2761        object = detProcessedExpObjectFromMetadata(md);
     2762        if (!object) {
     2763            psFree(md);
     2764            exit(EXIT_FAILURE);
     2765        }
     2766
     2767        psFree(md);
     2768
     2769            psFree(object);
     2770            exit(EXIT_FAILURE);
     2771        }
     2772            psFree(object);
     2773            exit(EXIT_FAILURE);
     2774        }
     2775        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     2776            psFree(object);
     2777            exit(EXIT_FAILURE);
     2778        }
     2779        if (!object->bg == 64.64) {
     2780            psFree(object);
     2781            exit(EXIT_FAILURE);
     2782        }
     2783        if (!object->bg_stdev == 64.64) {
     2784            psFree(object);
     2785            exit(EXIT_FAILURE);
     2786        }
     2787        if (!object->bg_mean_stdev == 64.64) {
     2788            psFree(object);
     2789            exit(EXIT_FAILURE);
     2790        }
     2791        if (!object->fringe_0 == 64.64) {
     2792            psFree(object);
     2793            exit(EXIT_FAILURE);
     2794        }
     2795        if (!object->fringe_1 == 64.64) {
     2796            psFree(object);
     2797            exit(EXIT_FAILURE);
     2798        }
     2799        if (!object->fringe_2 == 64.64) {
     2800            psFree(object);
     2801            exit(EXIT_FAILURE);
     2802        }
     2803        if (!object->user_1 == 64.64) {
     2804            psFree(object);
     2805            exit(EXIT_FAILURE);
     2806        }
     2807        if (!object->user_2 == 64.64) {
     2808            psFree(object);
     2809            exit(EXIT_FAILURE);
     2810        }
     2811        if (!object->user_3 == 64.64) {
     2812            psFree(object);
     2813            exit(EXIT_FAILURE);
     2814        }
     2815        if (!object->user_4 == 64.64) {
     2816            psFree(object);
     2817            exit(EXIT_FAILURE);
     2818        }
     2819        if (!object->user_5 == 64.64) {
     2820            psFree(object);
     2821            exit(EXIT_FAILURE);
     2822        }
     2823        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     2824            psFree(object);
     2825            exit(EXIT_FAILURE);
     2826        }
     2827            psFree(object);
     2828            exit(EXIT_FAILURE);
     2829        }
     2830
     2831        psFree(object);
     2832    }
     2833
     2834    {
     2835        psMetadata      *md;
     2836        detStackedImfileRow *object;
     2837
     2838        md = psMetadataAlloc();
     2839            psFree(md);
     2840            exit(EXIT_FAILURE);
     2841        }
     2842        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
    2742843            psFree(md);
    2752844            exit(EXIT_FAILURE);
     
    2792848            exit(EXIT_FAILURE);
    2802849        }
    281 
    282         object = pzPendingImfileObjectFromMetadata(md);
    283         if (!object) {
    284             psFree(md);
    285             exit(EXIT_FAILURE);
    286         }
    287 
    288         psFree(md);
    289 
    290         if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    291             psFree(object);
    292             exit(EXIT_FAILURE);
    293         }
    294         if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    295             psFree(object);
    296             exit(EXIT_FAILURE);
    297         }
    298         if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
    299             psFree(object);
    300             exit(EXIT_FAILURE);
    301         }
    302         if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
     2850        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     2851            psFree(md);
     2852            exit(EXIT_FAILURE);
     2853        }
     2854        if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
     2855            psFree(md);
     2856            exit(EXIT_FAILURE);
     2857        }
     2858        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     2859            psFree(md);
     2860            exit(EXIT_FAILURE);
     2861        }
     2862        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     2863            psFree(md);
     2864            exit(EXIT_FAILURE);
     2865        }
     2866        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     2867            psFree(md);
     2868            exit(EXIT_FAILURE);
     2869        }
     2870        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
     2871            psFree(md);
     2872            exit(EXIT_FAILURE);
     2873        }
     2874        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
     2875            psFree(md);
     2876            exit(EXIT_FAILURE);
     2877        }
     2878        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
     2879            psFree(md);
     2880            exit(EXIT_FAILURE);
     2881        }
     2882        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
     2883            psFree(md);
     2884            exit(EXIT_FAILURE);
     2885        }
     2886        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
     2887            psFree(md);
     2888            exit(EXIT_FAILURE);
     2889        }
     2890            psFree(md);
     2891            exit(EXIT_FAILURE);
     2892        }
     2893
     2894        object = detStackedImfileObjectFromMetadata(md);
     2895        if (!object) {
     2896            psFree(md);
     2897            exit(EXIT_FAILURE);
     2898        }
     2899
     2900        psFree(md);
     2901
     2902            psFree(object);
     2903            exit(EXIT_FAILURE);
     2904        }
     2905        if (!object->iteration == -32) {
    3032906            psFree(object);
    3042907            exit(EXIT_FAILURE);
     
    3082911            exit(EXIT_FAILURE);
    3092912        }
    310 
    311         psFree(object);
    312     }
    313 
    314     {
    315         psMetadata      *md;
    316         pzDoneExpRow    *object;
    317 
    318         md = psMetadataAlloc();
    319         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_name", 0, NULL, "a string")) {
    320             psFree(md);
    321             exit(EXIT_FAILURE);
    322         }
    323         if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
    324             psFree(md);
    325             exit(EXIT_FAILURE);
    326         }
    327         if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
    328             psFree(md);
    329             exit(EXIT_FAILURE);
    330         }
    331 
    332         object = pzDoneExpObjectFromMetadata(md);
    333         if (!object) {
    334             psFree(md);
    335             exit(EXIT_FAILURE);
    336         }
    337 
    338         psFree(md);
    339 
    340         if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    341             psFree(object);
    342             exit(EXIT_FAILURE);
    343         }
    344         if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    345             psFree(object);
    346             exit(EXIT_FAILURE);
    347         }
    348         if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
    349             psFree(object);
    350             exit(EXIT_FAILURE);
    351         }
    352 
    353         psFree(object);
    354     }
    355 
    356     {
    357         psMetadata      *md;
    358         pzDoneImfileRow *object;
    359 
    360         md = psMetadataAlloc();
    361         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_name", 0, NULL, "a string")) {
    362             psFree(md);
    363             exit(EXIT_FAILURE);
    364         }
    365         if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
    366             psFree(md);
    367             exit(EXIT_FAILURE);
    368         }
    369         if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
    370             psFree(md);
    371             exit(EXIT_FAILURE);
    372         }
    373         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, "a string")) {
     2913        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     2914            psFree(object);
     2915            exit(EXIT_FAILURE);
     2916        }
     2917        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     2918            psFree(object);
     2919            exit(EXIT_FAILURE);
     2920        }
     2921        if (!object->bg == 64.64) {
     2922            psFree(object);
     2923            exit(EXIT_FAILURE);
     2924        }
     2925        if (!object->bg_stdev == 64.64) {
     2926            psFree(object);
     2927            exit(EXIT_FAILURE);
     2928        }
     2929        if (!object->bg_mean_stdev == 64.64) {
     2930            psFree(object);
     2931            exit(EXIT_FAILURE);
     2932        }
     2933        if (!object->user_1 == 64.64) {
     2934            psFree(object);
     2935            exit(EXIT_FAILURE);
     2936        }
     2937        if (!object->user_2 == 64.64) {
     2938            psFree(object);
     2939            exit(EXIT_FAILURE);
     2940        }
     2941        if (!object->user_3 == 64.64) {
     2942            psFree(object);
     2943            exit(EXIT_FAILURE);
     2944        }
     2945        if (!object->user_4 == 64.64) {
     2946            psFree(object);
     2947            exit(EXIT_FAILURE);
     2948        }
     2949        if (!object->user_5 == 64.64) {
     2950            psFree(object);
     2951            exit(EXIT_FAILURE);
     2952        }
     2953            psFree(object);
     2954            exit(EXIT_FAILURE);
     2955        }
     2956
     2957        psFree(object);
     2958    }
     2959
     2960    {
     2961        psMetadata      *md;
     2962        detNormalizedStatImfileRow *object;
     2963
     2964        md = psMetadataAlloc();
     2965            psFree(md);
     2966            exit(EXIT_FAILURE);
     2967        }
     2968        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
    3742969            psFree(md);
    3752970            exit(EXIT_FAILURE);
     
    3792974            exit(EXIT_FAILURE);
    3802975        }
     2976        if (!psMetadataAddF32(md, PS_LIST_TAIL, "norm", 0, NULL, 32.32)) {
     2977            psFree(md);
     2978            exit(EXIT_FAILURE);
     2979        }
     2980            psFree(md);
     2981            exit(EXIT_FAILURE);
     2982        }
     2983
     2984        object = detNormalizedStatImfileObjectFromMetadata(md);
     2985        if (!object) {
     2986            psFree(md);
     2987            exit(EXIT_FAILURE);
     2988        }
     2989
     2990        psFree(md);
     2991
     2992            psFree(object);
     2993            exit(EXIT_FAILURE);
     2994        }
     2995        if (!object->iteration == -32) {
     2996            psFree(object);
     2997            exit(EXIT_FAILURE);
     2998        }
     2999        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     3000            psFree(object);
     3001            exit(EXIT_FAILURE);
     3002        }
     3003        if (!object->norm == 32.32) {
     3004            psFree(object);
     3005            exit(EXIT_FAILURE);
     3006        }
     3007            psFree(object);
     3008            exit(EXIT_FAILURE);
     3009        }
     3010
     3011        psFree(object);
     3012    }
     3013
     3014    {
     3015        psMetadata      *md;
     3016        detNormalizedImfileRow *object;
     3017
     3018        md = psMetadataAlloc();
     3019            psFree(md);
     3020            exit(EXIT_FAILURE);
     3021        }
     3022        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
     3023            psFree(md);
     3024            exit(EXIT_FAILURE);
     3025        }
     3026        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
     3027            psFree(md);
     3028            exit(EXIT_FAILURE);
     3029        }
    3813030        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    3823031            psFree(md);
    3833032            exit(EXIT_FAILURE);
    3843033        }
    385 
    386         object = pzDoneImfileObjectFromMetadata(md);
    387         if (!object) {
    388             psFree(md);
    389             exit(EXIT_FAILURE);
    390         }
    391 
    392         psFree(md);
    393 
    394         if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    395             psFree(object);
    396             exit(EXIT_FAILURE);
    397         }
    398         if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    399             psFree(object);
    400             exit(EXIT_FAILURE);
    401         }
    402         if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
    403             psFree(object);
    404             exit(EXIT_FAILURE);
    405         }
    406         if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
     3034        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     3035            psFree(md);
     3036            exit(EXIT_FAILURE);
     3037        }
     3038        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     3039            psFree(md);
     3040            exit(EXIT_FAILURE);
     3041        }
     3042        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     3043            psFree(md);
     3044            exit(EXIT_FAILURE);
     3045        }
     3046        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
     3047            psFree(md);
     3048            exit(EXIT_FAILURE);
     3049        }
     3050        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
     3051            psFree(md);
     3052            exit(EXIT_FAILURE);
     3053        }
     3054        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
     3055            psFree(md);
     3056            exit(EXIT_FAILURE);
     3057        }
     3058        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
     3059            psFree(md);
     3060            exit(EXIT_FAILURE);
     3061        }
     3062        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
     3063            psFree(md);
     3064            exit(EXIT_FAILURE);
     3065        }
     3066        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     3067            psFree(md);
     3068            exit(EXIT_FAILURE);
     3069        }
     3070            psFree(md);
     3071            exit(EXIT_FAILURE);
     3072        }
     3073
     3074        object = detNormalizedImfileObjectFromMetadata(md);
     3075        if (!object) {
     3076            psFree(md);
     3077            exit(EXIT_FAILURE);
     3078        }
     3079
     3080        psFree(md);
     3081
     3082            psFree(object);
     3083            exit(EXIT_FAILURE);
     3084        }
     3085        if (!object->iteration == -32) {
    4073086            psFree(object);
    4083087            exit(EXIT_FAILURE);
     
    4163095            exit(EXIT_FAILURE);
    4173096        }
    418 
    419         psFree(object);
    420     }
    421 
    422     {
    423         psMetadata      *md;
    424         newExpRow       *object;
    425 
    426         md = psMetadataAlloc();
    427             psFree(md);
    428             exit(EXIT_FAILURE);
    429         }
    430         if (!psMetadataAddStr(md, PS_LIST_TAIL, "tmp_exp_name", 0, NULL, "a string")) {
    431             psFree(md);
    432             exit(EXIT_FAILURE);
    433         }
    434         if (!psMetadataAddStr(md, PS_LIST_TAIL, "tmp_camera", 0, NULL, "a string")) {
    435             psFree(md);
    436             exit(EXIT_FAILURE);
    437         }
    438         if (!psMetadataAddStr(md, PS_LIST_TAIL, "tmp_telescope", 0, NULL, "a string")) {
    439             psFree(md);
    440             exit(EXIT_FAILURE);
    441         }
    442         if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
    443             psFree(md);
    444             exit(EXIT_FAILURE);
    445         }
    446         if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
    447             psFree(md);
    448             exit(EXIT_FAILURE);
    449         }
    450         if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir_state", 0, NULL, "a string")) {
    451             psFree(md);
    452             exit(EXIT_FAILURE);
    453         }
    454         if (!psMetadataAddStr(md, PS_LIST_TAIL, "reduction", 0, NULL, "a string")) {
    455             psFree(md);
    456             exit(EXIT_FAILURE);
    457         }
    458 
    459         object = newExpObjectFromMetadata(md);
    460         if (!object) {
    461             psFree(md);
    462             exit(EXIT_FAILURE);
    463         }
    464 
    465         psFree(md);
    466 
    467             psFree(object);
    468             exit(EXIT_FAILURE);
    469         }
    470         if (strncmp(object->tmp_exp_name, "a string", MAX_STRING_LENGTH)) {
    471             psFree(object);
    472             exit(EXIT_FAILURE);
    473         }
    474         if (strncmp(object->tmp_camera, "a string", MAX_STRING_LENGTH)) {
    475             psFree(object);
    476             exit(EXIT_FAILURE);
    477         }
    478         if (strncmp(object->tmp_telescope, "a string", MAX_STRING_LENGTH)) {
    479             psFree(object);
    480             exit(EXIT_FAILURE);
    481         }
    482         if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    483             psFree(object);
    484             exit(EXIT_FAILURE);
    485         }
    486         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    487             psFree(object);
    488             exit(EXIT_FAILURE);
    489         }
    490         if (strncmp(object->workdir_state, "a string", MAX_STRING_LENGTH)) {
    491             psFree(object);
    492             exit(EXIT_FAILURE);
    493         }
    494         if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
    495             psFree(object);
    496             exit(EXIT_FAILURE);
    497         }
    498 
    499         psFree(object);
    500     }
    501 
    502     {
    503         psMetadata      *md;
    504         newImfileRow    *object;
    505 
    506         md = psMetadataAlloc();
    507             psFree(md);
    508             exit(EXIT_FAILURE);
    509         }
    510         if (!psMetadataAddStr(md, PS_LIST_TAIL, "tmp_class_id", 0, NULL, "a string")) {
     3097        if (!object->bg == 64.64) {
     3098            psFree(object);
     3099            exit(EXIT_FAILURE);
     3100        }
     3101        if (!object->bg_stdev == 64.64) {
     3102            psFree(object);
     3103            exit(EXIT_FAILURE);
     3104        }
     3105        if (!object->bg_mean_stdev == 64.64) {
     3106            psFree(object);
     3107            exit(EXIT_FAILURE);
     3108        }
     3109        if (!object->user_1 == 64.64) {
     3110            psFree(object);
     3111            exit(EXIT_FAILURE);
     3112        }
     3113        if (!object->user_2 == 64.64) {
     3114            psFree(object);
     3115            exit(EXIT_FAILURE);
     3116        }
     3117        if (!object->user_3 == 64.64) {
     3118            psFree(object);
     3119            exit(EXIT_FAILURE);
     3120        }
     3121        if (!object->user_4 == 64.64) {
     3122            psFree(object);
     3123            exit(EXIT_FAILURE);
     3124        }
     3125        if (!object->user_5 == 64.64) {
     3126            psFree(object);
     3127            exit(EXIT_FAILURE);
     3128        }
     3129        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     3130            psFree(object);
     3131            exit(EXIT_FAILURE);
     3132        }
     3133            psFree(object);
     3134            exit(EXIT_FAILURE);
     3135        }
     3136
     3137        psFree(object);
     3138    }
     3139
     3140    {
     3141        psMetadata      *md;
     3142        detNormalizedExpRow *object;
     3143
     3144        md = psMetadataAlloc();
     3145            psFree(md);
     3146            exit(EXIT_FAILURE);
     3147        }
     3148        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
     3149            psFree(md);
     3150            exit(EXIT_FAILURE);
     3151        }
     3152        if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
     3153            psFree(md);
     3154            exit(EXIT_FAILURE);
     3155        }
     3156        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     3157            psFree(md);
     3158            exit(EXIT_FAILURE);
     3159        }
     3160        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     3161            psFree(md);
     3162            exit(EXIT_FAILURE);
     3163        }
     3164        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     3165            psFree(md);
     3166            exit(EXIT_FAILURE);
     3167        }
     3168        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
     3169            psFree(md);
     3170            exit(EXIT_FAILURE);
     3171        }
     3172        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
     3173            psFree(md);
     3174            exit(EXIT_FAILURE);
     3175        }
     3176        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
     3177            psFree(md);
     3178            exit(EXIT_FAILURE);
     3179        }
     3180        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
     3181            psFree(md);
     3182            exit(EXIT_FAILURE);
     3183        }
     3184        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
     3185            psFree(md);
     3186            exit(EXIT_FAILURE);
     3187        }
     3188        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     3189            psFree(md);
     3190            exit(EXIT_FAILURE);
     3191        }
     3192            psFree(md);
     3193            exit(EXIT_FAILURE);
     3194        }
     3195
     3196        object = detNormalizedExpObjectFromMetadata(md);
     3197        if (!object) {
     3198            psFree(md);
     3199            exit(EXIT_FAILURE);
     3200        }
     3201
     3202        psFree(md);
     3203
     3204            psFree(object);
     3205            exit(EXIT_FAILURE);
     3206        }
     3207        if (!object->iteration == -32) {
     3208            psFree(object);
     3209            exit(EXIT_FAILURE);
     3210        }
     3211        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     3212            psFree(object);
     3213            exit(EXIT_FAILURE);
     3214        }
     3215        if (!object->bg == 64.64) {
     3216            psFree(object);
     3217            exit(EXIT_FAILURE);
     3218        }
     3219        if (!object->bg_stdev == 64.64) {
     3220            psFree(object);
     3221            exit(EXIT_FAILURE);
     3222        }
     3223        if (!object->bg_mean_stdev == 64.64) {
     3224            psFree(object);
     3225            exit(EXIT_FAILURE);
     3226        }
     3227        if (!object->user_1 == 64.64) {
     3228            psFree(object);
     3229            exit(EXIT_FAILURE);
     3230        }
     3231        if (!object->user_2 == 64.64) {
     3232            psFree(object);
     3233            exit(EXIT_FAILURE);
     3234        }
     3235        if (!object->user_3 == 64.64) {
     3236            psFree(object);
     3237            exit(EXIT_FAILURE);
     3238        }
     3239        if (!object->user_4 == 64.64) {
     3240            psFree(object);
     3241            exit(EXIT_FAILURE);
     3242        }
     3243        if (!object->user_5 == 64.64) {
     3244            psFree(object);
     3245            exit(EXIT_FAILURE);
     3246        }
     3247        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     3248            psFree(object);
     3249            exit(EXIT_FAILURE);
     3250        }
     3251            psFree(object);
     3252            exit(EXIT_FAILURE);
     3253        }
     3254
     3255        psFree(object);
     3256    }
     3257
     3258    {
     3259        psMetadata      *md;
     3260        detResidImfileRow *object;
     3261
     3262        md = psMetadataAlloc();
     3263            psFree(md);
     3264            exit(EXIT_FAILURE);
     3265        }
     3266        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
     3267            psFree(md);
     3268            exit(EXIT_FAILURE);
     3269        }
     3270            psFree(md);
     3271            exit(EXIT_FAILURE);
     3272        }
     3273        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
    5113274            psFree(md);
    5123275            exit(EXIT_FAILURE);
     
    5163279            exit(EXIT_FAILURE);
    5173280        }
    518 
    519         object = newImfileObjectFromMetadata(md);
    520         if (!object) {
    521             psFree(md);
    522             exit(EXIT_FAILURE);
    523         }
    524 
    525         psFree(md);
    526 
    527             psFree(object);
    528             exit(EXIT_FAILURE);
    529         }
    530         if (strncmp(object->tmp_class_id, "a string", MAX_STRING_LENGTH)) {
     3281        if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
     3282            psFree(md);
     3283            exit(EXIT_FAILURE);
     3284        }
     3285        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     3286            psFree(md);
     3287            exit(EXIT_FAILURE);
     3288        }
     3289        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     3290            psFree(md);
     3291            exit(EXIT_FAILURE);
     3292        }
     3293        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     3294            psFree(md);
     3295            exit(EXIT_FAILURE);
     3296        }
     3297        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bin_stdev", 0, NULL, 64.64)) {
     3298            psFree(md);
     3299            exit(EXIT_FAILURE);
     3300        }
     3301        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 64.64)) {
     3302            psFree(md);
     3303            exit(EXIT_FAILURE);
     3304        }
     3305        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 64.64)) {
     3306            psFree(md);
     3307            exit(EXIT_FAILURE);
     3308        }
     3309        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 64.64)) {
     3310            psFree(md);
     3311            exit(EXIT_FAILURE);
     3312        }
     3313        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
     3314            psFree(md);
     3315            exit(EXIT_FAILURE);
     3316        }
     3317        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
     3318            psFree(md);
     3319            exit(EXIT_FAILURE);
     3320        }
     3321        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
     3322            psFree(md);
     3323            exit(EXIT_FAILURE);
     3324        }
     3325        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
     3326            psFree(md);
     3327            exit(EXIT_FAILURE);
     3328        }
     3329        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
     3330            psFree(md);
     3331            exit(EXIT_FAILURE);
     3332        }
     3333        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     3334            psFree(md);
     3335            exit(EXIT_FAILURE);
     3336        }
     3337            psFree(md);
     3338            exit(EXIT_FAILURE);
     3339        }
     3340
     3341        object = detResidImfileObjectFromMetadata(md);
     3342        if (!object) {
     3343            psFree(md);
     3344            exit(EXIT_FAILURE);
     3345        }
     3346
     3347        psFree(md);
     3348
     3349            psFree(object);
     3350            exit(EXIT_FAILURE);
     3351        }
     3352        if (!object->iteration == -32) {
     3353            psFree(object);
     3354            exit(EXIT_FAILURE);
     3355        }
     3356            psFree(object);
     3357            exit(EXIT_FAILURE);
     3358        }
     3359        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    5313360            psFree(object);
    5323361            exit(EXIT_FAILURE);
     
    5363365            exit(EXIT_FAILURE);
    5373366        }
    538 
    539         psFree(object);
    540     }
    541 
    542     {
    543         psMetadata      *md;
    544         rawExpRow       *object;
    545 
    546         md = psMetadataAlloc();
    547             psFree(md);
    548             exit(EXIT_FAILURE);
    549         }
    550         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_name", 0, NULL, "a string")) {
    551             psFree(md);
    552             exit(EXIT_FAILURE);
    553         }
    554         if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
    555             psFree(md);
    556             exit(EXIT_FAILURE);
    557         }
    558         if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
    559             psFree(md);
    560             exit(EXIT_FAILURE);
    561         }
    562             psFree(md);
    563             exit(EXIT_FAILURE);
    564         }
    565         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
    566             psFree(md);
    567             exit(EXIT_FAILURE);
    568         }
    569         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_type", 0, NULL, "a string")) {
    570             psFree(md);
    571             exit(EXIT_FAILURE);
    572         }
    573         if (!psMetadataAddStr(md, PS_LIST_TAIL, "filelevel", 0, NULL, "a string")) {
    574             psFree(md);
    575             exit(EXIT_FAILURE);
    576         }
    577         if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
    578             psFree(md);
    579             exit(EXIT_FAILURE);
    580         }
    581         if (!psMetadataAddStr(md, PS_LIST_TAIL, "reduction", 0, NULL, "a string")) {
    582             psFree(md);
    583             exit(EXIT_FAILURE);
    584         }
    585         if (!psMetadataAddStr(md, PS_LIST_TAIL, "filter", 0, NULL, "a string")) {
    586             psFree(md);
    587             exit(EXIT_FAILURE);
    588         }
    589         if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, 32.32)) {
    590             psFree(md);
    591             exit(EXIT_FAILURE);
    592         }
    593         if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, 64.64)) {
    594             psFree(md);
    595             exit(EXIT_FAILURE);
    596         }
    597         if (!psMetadataAddF64(md, PS_LIST_TAIL, "decl", 0, NULL, 64.64)) {
    598             psFree(md);
    599             exit(EXIT_FAILURE);
    600         }
    601         if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time", 0, NULL, 32.32)) {
    602             psFree(md);
    603             exit(EXIT_FAILURE);
    604         }
    605         if (!psMetadataAddF32(md, PS_LIST_TAIL, "sat_pixel_frac", 0, NULL, 32.32)) {
     3367        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     3368            psFree(object);
     3369            exit(EXIT_FAILURE);
     3370        }
     3371        if (!object->bg == 64.64) {
     3372            psFree(object);
     3373            exit(EXIT_FAILURE);
     3374        }
     3375        if (!object->bg_stdev == 64.64) {
     3376            psFree(object);
     3377            exit(EXIT_FAILURE);
     3378        }
     3379        if (!object->bg_mean_stdev == 64.64) {
     3380            psFree(object);
     3381            exit(EXIT_FAILURE);
     3382        }
     3383        if (!object->bin_stdev == 64.64) {
     3384            psFree(object);
     3385            exit(EXIT_FAILURE);
     3386        }
     3387        if (!object->fringe_0 == 64.64) {
     3388            psFree(object);
     3389            exit(EXIT_FAILURE);
     3390        }
     3391        if (!object->fringe_1 == 64.64) {
     3392            psFree(object);
     3393            exit(EXIT_FAILURE);
     3394        }
     3395        if (!object->fringe_2 == 64.64) {
     3396            psFree(object);
     3397            exit(EXIT_FAILURE);
     3398        }
     3399        if (!object->user_1 == 64.64) {
     3400            psFree(object);
     3401            exit(EXIT_FAILURE);
     3402        }
     3403        if (!object->user_2 == 64.64) {
     3404            psFree(object);
     3405            exit(EXIT_FAILURE);
     3406        }
     3407        if (!object->user_3 == 64.64) {
     3408            psFree(object);
     3409            exit(EXIT_FAILURE);
     3410        }
     3411        if (!object->user_4 == 64.64) {
     3412            psFree(object);
     3413            exit(EXIT_FAILURE);
     3414        }
     3415        if (!object->user_5 == 64.64) {
     3416            psFree(object);
     3417            exit(EXIT_FAILURE);
     3418        }
     3419        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     3420            psFree(object);
     3421            exit(EXIT_FAILURE);
     3422        }
     3423            psFree(object);
     3424            exit(EXIT_FAILURE);
     3425        }
     3426
     3427        psFree(object);
     3428    }
     3429
     3430    {
     3431        psMetadata      *md;
     3432        detResidExpRow  *object;
     3433
     3434        md = psMetadataAlloc();
     3435            psFree(md);
     3436            exit(EXIT_FAILURE);
     3437        }
     3438        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
     3439            psFree(md);
     3440            exit(EXIT_FAILURE);
     3441        }
     3442            psFree(md);
     3443            exit(EXIT_FAILURE);
     3444        }
     3445        if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
    6063446            psFree(md);
    6073447            exit(EXIT_FAILURE);
     
    6193459            exit(EXIT_FAILURE);
    6203460        }
    621         if (!psMetadataAddF64(md, PS_LIST_TAIL, "alt", 0, NULL, 64.64)) {
    622             psFree(md);
    623             exit(EXIT_FAILURE);
    624         }
    625         if (!psMetadataAddF64(md, PS_LIST_TAIL, "az", 0, NULL, 64.64)) {
    626             psFree(md);
    627             exit(EXIT_FAILURE);
    628         }
    629         if (!psMetadataAddF32(md, PS_LIST_TAIL, "ccd_temp", 0, NULL, 32.32)) {
    630             psFree(md);
    631             exit(EXIT_FAILURE);
    632         }
    633         if (!psMetadataAddF64(md, PS_LIST_TAIL, "posang", 0, NULL, 64.64)) {
     3461        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bin_stdev", 0, NULL, 64.64)) {
     3462            psFree(md);
     3463            exit(EXIT_FAILURE);
     3464        }
     3465        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 64.64)) {
     3466            psFree(md);
     3467            exit(EXIT_FAILURE);
     3468        }
     3469        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 64.64)) {
     3470            psFree(md);
     3471            exit(EXIT_FAILURE);
     3472        }
     3473        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 64.64)) {
    6343474            psFree(md);
    6353475            exit(EXIT_FAILURE);
     
    6553495            exit(EXIT_FAILURE);
    6563496        }
    657         if (!psMetadataAddStr(md, PS_LIST_TAIL, "object", 0, NULL, "a string")) {
    658             psFree(md);
    659             exit(EXIT_FAILURE);
    660         }
    661         if (!psMetadataAddF32(md, PS_LIST_TAIL, "solang", 0, NULL, 32.32)) {
    662             psFree(md);
    663             exit(EXIT_FAILURE);
    664         }
    665             psFree(md);
    666             exit(EXIT_FAILURE);
    667         }
    668 
    669         object = rawExpObjectFromMetadata(md);
    670         if (!object) {
    671             psFree(md);
    672             exit(EXIT_FAILURE);
    673         }
    674 
    675         psFree(md);
    676 
    677             psFree(object);
    678             exit(EXIT_FAILURE);
    679         }
    680         if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    681             psFree(object);
    682             exit(EXIT_FAILURE);
    683         }
    684         if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    685             psFree(object);
    686             exit(EXIT_FAILURE);
    687         }
    688         if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
    689             psFree(object);
    690             exit(EXIT_FAILURE);
    691         }
    692             psFree(object);
    693             exit(EXIT_FAILURE);
    694         }
    695         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    696             psFree(object);
    697             exit(EXIT_FAILURE);
    698         }
    699         if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
    700             psFree(object);
    701             exit(EXIT_FAILURE);
    702         }
    703         if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
    704             psFree(object);
    705             exit(EXIT_FAILURE);
    706         }
    707         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    708             psFree(object);
    709             exit(EXIT_FAILURE);
    710         }
    711         if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
    712             psFree(object);
    713             exit(EXIT_FAILURE);
    714         }
    715         if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
    716             psFree(object);
    717             exit(EXIT_FAILURE);
    718         }
    719         if (!object->airmass == 32.32) {
    720             psFree(object);
    721             exit(EXIT_FAILURE);
    722         }
    723         if (!object->ra == 64.64) {
    724             psFree(object);
    725             exit(EXIT_FAILURE);
    726         }
    727         if (!object->decl == 64.64) {
    728             psFree(object);
    729             exit(EXIT_FAILURE);
    730         }
    731         if (!object->exp_time == 32.32) {
    732             psFree(object);
    733             exit(EXIT_FAILURE);
    734         }
    735         if (!object->sat_pixel_frac == 32.32) {
     3497        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     3498            psFree(md);
     3499            exit(EXIT_FAILURE);
     3500        }
     3501        if (!psMetadataAdd(md, PS_LIST_TAIL, "accept", PS_DATA_BOOL, NULL, true)) {
     3502            psFree(md);
     3503            exit(EXIT_FAILURE);
     3504        }
     3505            psFree(md);
     3506            exit(EXIT_FAILURE);
     3507        }
     3508
     3509        object = detResidExpObjectFromMetadata(md);
     3510        if (!object) {
     3511            psFree(md);
     3512            exit(EXIT_FAILURE);
     3513        }
     3514
     3515        psFree(md);
     3516
     3517            psFree(object);
     3518            exit(EXIT_FAILURE);
     3519        }
     3520        if (!object->iteration == -32) {
     3521            psFree(object);
     3522            exit(EXIT_FAILURE);
     3523        }
     3524            psFree(object);
     3525            exit(EXIT_FAILURE);
     3526        }
     3527        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    7363528            psFree(object);
    7373529            exit(EXIT_FAILURE);
     
    7493541            exit(EXIT_FAILURE);
    7503542        }
    751         if (!object->alt == 64.64) {
    752             psFree(object);
    753             exit(EXIT_FAILURE);
    754         }
    755         if (!object->az == 64.64) {
    756             psFree(object);
    757             exit(EXIT_FAILURE);
    758         }
    759         if (!object->ccd_temp == 32.32) {
    760             psFree(object);
    761             exit(EXIT_FAILURE);
    762         }
    763         if (!object->posang == 64.64) {
     3543        if (!object->bin_stdev == 64.64) {
     3544            psFree(object);
     3545            exit(EXIT_FAILURE);
     3546        }
     3547        if (!object->fringe_0 == 64.64) {
     3548            psFree(object);
     3549            exit(EXIT_FAILURE);
     3550        }
     3551        if (!object->fringe_1 == 64.64) {
     3552            psFree(object);
     3553            exit(EXIT_FAILURE);
     3554        }
     3555        if (!object->fringe_2 == 64.64) {
    7643556            psFree(object);
    7653557            exit(EXIT_FAILURE);
     
    7853577            exit(EXIT_FAILURE);
    7863578        }
    787         if (strncmp(object->object, "a string", MAX_STRING_LENGTH)) {
    788             psFree(object);
    789             exit(EXIT_FAILURE);
    790         }
    791         if (!object->solang == 32.32) {
    792             psFree(object);
    793             exit(EXIT_FAILURE);
    794         }
    795             psFree(object);
    796             exit(EXIT_FAILURE);
    797         }
    798 
    799         psFree(object);
    800     }
    801 
    802     {
    803         psMetadata      *md;
    804         rawImfileRow    *object;
    805 
    806         md = psMetadataAlloc();
    807             psFree(md);
    808             exit(EXIT_FAILURE);
    809         }
    810         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_name", 0, NULL, "a string")) {
    811             psFree(md);
    812             exit(EXIT_FAILURE);
    813         }
    814         if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
    815             psFree(md);
    816             exit(EXIT_FAILURE);
    817         }
    818         if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
    819             psFree(md);
    820             exit(EXIT_FAILURE);
    821         }
    822             psFree(md);
    823             exit(EXIT_FAILURE);
    824         }
    825         if (!psMetadataAddStr(md, PS_LIST_TAIL, "tmp_class_id", 0, NULL, "a string")) {
    826             psFree(md);
    827             exit(EXIT_FAILURE);
    828         }
    829         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
    830             psFree(md);
    831             exit(EXIT_FAILURE);
    832         }
    833         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    834             psFree(md);
    835             exit(EXIT_FAILURE);
    836         }
    837         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_type", 0, NULL, "a string")) {
    838             psFree(md);
    839             exit(EXIT_FAILURE);
    840         }
    841         if (!psMetadataAddStr(md, PS_LIST_TAIL, "filelevel", 0, NULL, "a string")) {
    842             psFree(md);
    843             exit(EXIT_FAILURE);
    844         }
    845         if (!psMetadataAddStr(md, PS_LIST_TAIL, "filter", 0, NULL, "a string")) {
    846             psFree(md);
    847             exit(EXIT_FAILURE);
    848         }
    849         if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, 32.32)) {
    850             psFree(md);
    851             exit(EXIT_FAILURE);
    852         }
    853         if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, 64.64)) {
    854             psFree(md);
    855             exit(EXIT_FAILURE);
    856         }
    857         if (!psMetadataAddF64(md, PS_LIST_TAIL, "decl", 0, NULL, 64.64)) {
    858             psFree(md);
    859             exit(EXIT_FAILURE);
    860         }
    861         if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time", 0, NULL, 32.32)) {
    862             psFree(md);
    863             exit(EXIT_FAILURE);
    864         }
    865         if (!psMetadataAddF32(md, PS_LIST_TAIL, "sat_pixel_frac", 0, NULL, 32.32)) {
     3579        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     3580            psFree(object);
     3581            exit(EXIT_FAILURE);
     3582        }
     3583        if (!object->accept == true) {
     3584            psFree(object);
     3585            exit(EXIT_FAILURE);
     3586        }
     3587            psFree(object);
     3588            exit(EXIT_FAILURE);
     3589        }
     3590
     3591        psFree(object);
     3592    }
     3593
     3594    {
     3595        psMetadata      *md;
     3596        detRunSummaryRow *object;
     3597
     3598        md = psMetadataAlloc();
     3599            psFree(md);
     3600            exit(EXIT_FAILURE);
     3601        }
     3602        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
    8663603            psFree(md);
    8673604            exit(EXIT_FAILURE);
     
    8793616            exit(EXIT_FAILURE);
    8803617        }
    881         if (!psMetadataAddF64(md, PS_LIST_TAIL, "alt", 0, NULL, 64.64)) {
    882             psFree(md);
    883             exit(EXIT_FAILURE);
    884         }
    885         if (!psMetadataAddF64(md, PS_LIST_TAIL, "az", 0, NULL, 64.64)) {
    886             psFree(md);
    887             exit(EXIT_FAILURE);
    888         }
    889         if (!psMetadataAddF32(md, PS_LIST_TAIL, "ccd_temp", 0, NULL, 32.32)) {
    890             psFree(md);
    891             exit(EXIT_FAILURE);
    892         }
    893         if (!psMetadataAddF64(md, PS_LIST_TAIL, "posang", 0, NULL, 64.64)) {
    894             psFree(md);
    895             exit(EXIT_FAILURE);
    896         }
    897         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
    898             psFree(md);
    899             exit(EXIT_FAILURE);
    900         }
    901         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
    902             psFree(md);
    903             exit(EXIT_FAILURE);
    904         }
    905         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
    906             psFree(md);
    907             exit(EXIT_FAILURE);
    908         }
    909         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
    910             psFree(md);
    911             exit(EXIT_FAILURE);
    912         }
    913         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
    914             psFree(md);
    915             exit(EXIT_FAILURE);
    916         }
    917         if (!psMetadataAddStr(md, PS_LIST_TAIL, "object", 0, NULL, "a string")) {
    918             psFree(md);
    919             exit(EXIT_FAILURE);
    920         }
    921             psFree(md);
    922             exit(EXIT_FAILURE);
    923         }
    924 
    925         object = rawImfileObjectFromMetadata(md);
    926         if (!object) {
    927             psFree(md);
    928             exit(EXIT_FAILURE);
    929         }
    930 
    931         psFree(md);
    932 
    933             psFree(object);
    934             exit(EXIT_FAILURE);
    935         }
    936         if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    937             psFree(object);
    938             exit(EXIT_FAILURE);
    939         }
    940         if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    941             psFree(object);
    942             exit(EXIT_FAILURE);
    943         }
    944         if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
    945             psFree(object);
    946             exit(EXIT_FAILURE);
    947         }
    948             psFree(object);
    949             exit(EXIT_FAILURE);
    950         }
    951         if (strncmp(object->tmp_class_id, "a string", MAX_STRING_LENGTH)) {
    952             psFree(object);
    953             exit(EXIT_FAILURE);
    954         }
    955         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    956             psFree(object);
    957             exit(EXIT_FAILURE);
    958         }
    959         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    960             psFree(object);
    961             exit(EXIT_FAILURE);
    962         }
    963         if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
    964             psFree(object);
    965             exit(EXIT_FAILURE);
    966         }
    967         if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
    968             psFree(object);
    969             exit(EXIT_FAILURE);
    970         }
    971         if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
    972             psFree(object);
    973             exit(EXIT_FAILURE);
    974         }
    975         if (!object->airmass == 32.32) {
    976             psFree(object);
    977             exit(EXIT_FAILURE);
    978         }
    979         if (!object->ra == 64.64) {
    980             psFree(object);
    981             exit(EXIT_FAILURE);
    982         }
    983         if (!object->decl == 64.64) {
    984             psFree(object);
    985             exit(EXIT_FAILURE);
    986         }
    987         if (!object->exp_time == 32.32) {
    988             psFree(object);
    989             exit(EXIT_FAILURE);
    990         }
    991         if (!object->sat_pixel_frac == 32.32) {
     3618        if (!psMetadataAdd(md, PS_LIST_TAIL, "accept", PS_DATA_BOOL, NULL, true)) {
     3619            psFree(md);
     3620            exit(EXIT_FAILURE);
     3621        }
     3622            psFree(md);
     3623            exit(EXIT_FAILURE);
     3624        }
     3625
     3626        object = detRunSummaryObjectFromMetadata(md);
     3627        if (!object) {
     3628            psFree(md);
     3629            exit(EXIT_FAILURE);
     3630        }
     3631
     3632        psFree(md);
     3633
     3634            psFree(object);
     3635            exit(EXIT_FAILURE);
     3636        }
     3637        if (!object->iteration == -32) {
    9923638            psFree(object);
    9933639            exit(EXIT_FAILURE);
     
    10053651            exit(EXIT_FAILURE);
    10063652        }
    1007         if (!object->alt == 64.64) {
    1008             psFree(object);
    1009             exit(EXIT_FAILURE);
    1010         }
    1011         if (!object->az == 64.64) {
    1012             psFree(object);
    1013             exit(EXIT_FAILURE);
    1014         }
    1015         if (!object->ccd_temp == 32.32) {
    1016             psFree(object);
    1017             exit(EXIT_FAILURE);
    1018         }
    1019         if (!object->posang == 64.64) {
    1020             psFree(object);
    1021             exit(EXIT_FAILURE);
    1022         }
    1023         if (!object->user_1 == 64.64) {
    1024             psFree(object);
    1025             exit(EXIT_FAILURE);
    1026         }
    1027         if (!object->user_2 == 64.64) {
    1028             psFree(object);
    1029             exit(EXIT_FAILURE);
    1030         }
    1031         if (!object->user_3 == 64.64) {
    1032             psFree(object);
    1033             exit(EXIT_FAILURE);
    1034         }
    1035         if (!object->user_4 == 64.64) {
    1036             psFree(object);
    1037             exit(EXIT_FAILURE);
    1038         }
    1039         if (!object->user_5 == 64.64) {
    1040             psFree(object);
    1041             exit(EXIT_FAILURE);
    1042         }
    1043         if (strncmp(object->object, "a string", MAX_STRING_LENGTH)) {
    1044             psFree(object);
    1045             exit(EXIT_FAILURE);
    1046         }
    1047             psFree(object);
    1048             exit(EXIT_FAILURE);
    1049         }
    1050 
    1051         psFree(object);
    1052     }
    1053 
    1054     {
    1055         psMetadata      *md;
    1056         guidePendingExpRow *object;
    1057 
    1058         md = psMetadataAlloc();
    1059             psFree(md);
    1060             exit(EXIT_FAILURE);
    1061         }
    1062             psFree(md);
    1063             exit(EXIT_FAILURE);
    1064         }
    1065         if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
    1066             psFree(md);
    1067             exit(EXIT_FAILURE);
    1068         }
    1069 
    1070         object = guidePendingExpObjectFromMetadata(md);
    1071         if (!object) {
    1072             psFree(md);
    1073             exit(EXIT_FAILURE);
    1074         }
    1075 
    1076         psFree(md);
    1077 
    1078             psFree(object);
    1079             exit(EXIT_FAILURE);
    1080         }
    1081             psFree(object);
    1082             exit(EXIT_FAILURE);
    1083         }
    1084         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    1085             psFree(object);
    1086             exit(EXIT_FAILURE);
    1087         }
    1088 
    1089         psFree(object);
    1090     }
    1091 
    1092     {
    1093         psMetadata      *md;
    1094         chipRunRow      *object;
    1095 
    1096         md = psMetadataAlloc();
    1097             psFree(md);
    1098             exit(EXIT_FAILURE);
    1099         }
    1100             psFree(md);
    1101             exit(EXIT_FAILURE);
    1102         }
    1103         if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
    1104             psFree(md);
    1105             exit(EXIT_FAILURE);
    1106         }
    1107         if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
    1108             psFree(md);
    1109             exit(EXIT_FAILURE);
    1110         }
    1111         if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir_state", 0, NULL, "a string")) {
    1112             psFree(md);
    1113             exit(EXIT_FAILURE);
    1114         }
    1115         if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
    1116             psFree(md);
    1117             exit(EXIT_FAILURE);
    1118         }
    1119         if (!psMetadataAddStr(md, PS_LIST_TAIL, "reduction", 0, NULL, "a string")) {
    1120             psFree(md);
    1121             exit(EXIT_FAILURE);
    1122         }
    1123         if (!psMetadataAddStr(md, PS_LIST_TAIL, "expgroup", 0, NULL, "a string")) {
    1124             psFree(md);
    1125             exit(EXIT_FAILURE);
    1126         }
    1127         if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
    1128             psFree(md);
    1129             exit(EXIT_FAILURE);
    1130         }
    1131 
    1132         object = chipRunObjectFromMetadata(md);
    1133         if (!object) {
    1134             psFree(md);
    1135             exit(EXIT_FAILURE);
    1136         }
    1137 
    1138         psFree(md);
    1139 
    1140             psFree(object);
    1141             exit(EXIT_FAILURE);
    1142         }
    1143             psFree(object);
    1144             exit(EXIT_FAILURE);
    1145         }
    1146         if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    1147             psFree(object);
    1148             exit(EXIT_FAILURE);
    1149         }
    1150         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    1151             psFree(object);
    1152             exit(EXIT_FAILURE);
    1153         }
    1154         if (strncmp(object->workdir_state, "a string", MAX_STRING_LENGTH)) {
    1155             psFree(object);
    1156             exit(EXIT_FAILURE);
    1157         }
    1158         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    1159             psFree(object);
    1160             exit(EXIT_FAILURE);
    1161         }
    1162         if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
    1163             psFree(object);
    1164             exit(EXIT_FAILURE);
    1165         }
    1166         if (strncmp(object->expgroup, "a string", MAX_STRING_LENGTH)) {
    1167             psFree(object);
    1168             exit(EXIT_FAILURE);
    1169         }
    1170         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    1171             psFree(object);
    1172             exit(EXIT_FAILURE);
    1173         }
    1174 
    1175         psFree(object);
    1176     }
    1177 
    1178     {
    1179         psMetadata      *md;
    1180         chipProcessedImfileRow *object;
    1181 
    1182         md = psMetadataAlloc();
    1183             psFree(md);
    1184             exit(EXIT_FAILURE);
    1185         }
    1186             psFree(md);
    1187             exit(EXIT_FAILURE);
    1188         }
    1189         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
    1190             psFree(md);
    1191             exit(EXIT_FAILURE);
    1192         }
    1193         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    1194             psFree(md);
    1195             exit(EXIT_FAILURE);
    1196         }
    1197         if (!psMetadataAddF32(md, PS_LIST_TAIL, "bg", 0, NULL, 32.32)) {
    1198             psFree(md);
    1199             exit(EXIT_FAILURE);
    1200         }
    1201         if (!psMetadataAddF32(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 32.32)) {
    1202             psFree(md);
    1203             exit(EXIT_FAILURE);
    1204         }
    1205         if (!psMetadataAddF32(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 32.32)) {
    1206             psFree(md);
    1207             exit(EXIT_FAILURE);
    1208         }
    1209         if (!psMetadataAddF32(md, PS_LIST_TAIL, "bias", 0, NULL, 32.32)) {
    1210             psFree(md);
    1211             exit(EXIT_FAILURE);
    1212         }
    1213         if (!psMetadataAddF32(md, PS_LIST_TAIL, "bias_stdev", 0, NULL, 32.32)) {
    1214             psFree(md);
    1215             exit(EXIT_FAILURE);
    1216         }
    1217         if (!psMetadataAddF32(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 32.32)) {
    1218             psFree(md);
    1219             exit(EXIT_FAILURE);
    1220         }
    1221         if (!psMetadataAddF32(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 32.32)) {
    1222             psFree(md);
    1223             exit(EXIT_FAILURE);
    1224         }
    1225         if (!psMetadataAddF32(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 32.32)) {
    1226             psFree(md);
    1227             exit(EXIT_FAILURE);
    1228         }
    1229         if (!psMetadataAddF32(md, PS_LIST_TAIL, "sigma_ra", 0, NULL, 32.32)) {
    1230             psFree(md);
    1231             exit(EXIT_FAILURE);
    1232         }
    1233         if (!psMetadataAddF32(md, PS_LIST_TAIL, "sigma_dec", 0, NULL, 32.32)) {
    1234             psFree(md);
    1235             exit(EXIT_FAILURE);
    1236         }
    1237         if (!psMetadataAddF32(md, PS_LIST_TAIL, "ap_resid", 0, NULL, 32.32)) {
    1238             psFree(md);
    1239             exit(EXIT_FAILURE);
    1240         }
    1241         if (!psMetadataAddF32(md, PS_LIST_TAIL, "ap_resid_stdev", 0, NULL, 32.32)) {
    1242             psFree(md);
    1243             exit(EXIT_FAILURE);
    1244         }
    1245         if (!psMetadataAddF32(md, PS_LIST_TAIL, "fwhm", 0, NULL, 32.32)) {
    1246             psFree(md);
    1247             exit(EXIT_FAILURE);
    1248         }
    1249         if (!psMetadataAddF32(md, PS_LIST_TAIL, "fwhm_range", 0, NULL, 32.32)) {
    1250             psFree(md);
    1251             exit(EXIT_FAILURE);
    1252         }
    1253         if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_stars", 0, NULL, -32)) {
    1254             psFree(md);
    1255             exit(EXIT_FAILURE);
    1256         }
    1257         if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_extended", 0, NULL, -32)) {
    1258             psFree(md);
    1259             exit(EXIT_FAILURE);
    1260         }
    1261         if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_cr", 0, NULL, -32)) {
    1262             psFree(md);
    1263             exit(EXIT_FAILURE);
    1264         }
    1265         if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_astrom", 0, NULL, -32)) {
    1266             psFree(md);
    1267             exit(EXIT_FAILURE);
    1268         }
    1269         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    1270             psFree(md);
    1271             exit(EXIT_FAILURE);
    1272         }
    1273             psFree(md);
    1274             exit(EXIT_FAILURE);
    1275         }
    1276 
    1277         object = chipProcessedImfileObjectFromMetadata(md);
    1278         if (!object) {
    1279             psFree(md);
    1280             exit(EXIT_FAILURE);
    1281         }
    1282 
    1283         psFree(md);
    1284 
    1285             psFree(object);
    1286             exit(EXIT_FAILURE);
    1287         }
    1288             psFree(object);
    1289             exit(EXIT_FAILURE);
    1290         }
    1291         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    1292             psFree(object);
    1293             exit(EXIT_FAILURE);
    1294         }
    1295         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    1296             psFree(object);
    1297             exit(EXIT_FAILURE);
    1298         }
    1299         if (!object->bg == 32.32) {
    1300             psFree(object);
    1301             exit(EXIT_FAILURE);
    1302         }
    1303         if (!object->bg_stdev == 32.32) {
    1304             psFree(object);
    1305             exit(EXIT_FAILURE);
    1306         }
    1307         if (!object->bg_mean_stdev == 32.32) {
    1308             psFree(object);
    1309             exit(EXIT_FAILURE);
    1310         }
    1311         if (!object->bias == 32.32) {
    1312             psFree(object);
    1313             exit(EXIT_FAILURE);
    1314         }
    1315         if (!object->bias_stdev == 32.32) {
    1316             psFree(object);
    1317             exit(EXIT_FAILURE);
    1318         }
    1319         if (!object->fringe_0 == 32.32) {
    1320             psFree(object);
    1321             exit(EXIT_FAILURE);
    1322         }
    1323         if (!object->fringe_1 == 32.32) {
    1324             psFree(object);
    1325             exit(EXIT_FAILURE);
    1326         }
    1327         if (!object->fringe_2 == 32.32) {
    1328             psFree(object);
    1329             exit(EXIT_FAILURE);
    1330         }
    1331         if (!object->sigma_ra == 32.32) {
    1332             psFree(object);
    1333             exit(EXIT_FAILURE);
    1334         }
    1335         if (!object->sigma_dec == 32.32) {
    1336             psFree(object);
    1337             exit(EXIT_FAILURE);
    1338         }
    1339         if (!object->ap_resid == 32.32) {
    1340             psFree(object);
    1341             exit(EXIT_FAILURE);
    1342         }
    1343         if (!object->ap_resid_stdev == 32.32) {
    1344             psFree(object);
    1345             exit(EXIT_FAILURE);
    1346         }
    1347         if (!object->fwhm == 32.32) {
    1348             psFree(object);
    1349             exit(EXIT_FAILURE);
    1350         }
    1351         if (!object->fwhm_range == 32.32) {
    1352             psFree(object);
    1353             exit(EXIT_FAILURE);
    1354         }
    1355         if (!object->n_stars == -32) {
    1356             psFree(object);
    1357             exit(EXIT_FAILURE);
    1358         }
    1359         if (!object->n_extended == -32) {
    1360             psFree(object);
    1361             exit(EXIT_FAILURE);
    1362         }
    1363         if (!object->n_cr == -32) {
    1364             psFree(object);
    1365             exit(EXIT_FAILURE);
    1366         }
    1367         if (!object->n_astrom == -32) {
    1368             psFree(object);
    1369             exit(EXIT_FAILURE);
    1370         }
    1371         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    1372             psFree(object);
    1373             exit(EXIT_FAILURE);
    1374         }
    1375             psFree(object);
    1376             exit(EXIT_FAILURE);
    1377         }
    1378 
    1379         psFree(object);
    1380     }
    1381 
    1382     {
    1383         psMetadata      *md;
    1384         chipMaskRow     *object;
    1385 
    1386         md = psMetadataAlloc();
    1387         if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
    1388             psFree(md);
    1389             exit(EXIT_FAILURE);
    1390         }
    1391 
    1392         object = chipMaskObjectFromMetadata(md);
    1393         if (!object) {
    1394             psFree(md);
    1395             exit(EXIT_FAILURE);
    1396         }
    1397 
    1398         psFree(md);
    1399 
    1400         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    1401             psFree(object);
    1402             exit(EXIT_FAILURE);
    1403         }
    1404 
    1405         psFree(object);
    1406     }
    1407 
    1408     {
    1409         psMetadata      *md;
    1410         camRunRow       *object;
    1411 
    1412         md = psMetadataAlloc();
    1413             psFree(md);
    1414             exit(EXIT_FAILURE);
    1415         }
    1416             psFree(md);
    1417             exit(EXIT_FAILURE);
    1418         }
    1419         if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
    1420             psFree(md);
    1421             exit(EXIT_FAILURE);
    1422         }
    1423         if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
    1424             psFree(md);
    1425             exit(EXIT_FAILURE);
    1426         }
    1427         if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir_state", 0, NULL, "a string")) {
    1428             psFree(md);
    1429             exit(EXIT_FAILURE);
    1430         }
    1431         if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
    1432             psFree(md);
    1433             exit(EXIT_FAILURE);
    1434         }
    1435         if (!psMetadataAddStr(md, PS_LIST_TAIL, "reduction", 0, NULL, "a string")) {
    1436             psFree(md);
    1437             exit(EXIT_FAILURE);
    1438         }
    1439         if (!psMetadataAddStr(md, PS_LIST_TAIL, "expgroup", 0, NULL, "a string")) {
    1440             psFree(md);
    1441             exit(EXIT_FAILURE);
    1442         }
    1443         if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
    1444             psFree(md);
    1445             exit(EXIT_FAILURE);
    1446         }
    1447 
    1448         object = camRunObjectFromMetadata(md);
    1449         if (!object) {
    1450             psFree(md);
    1451             exit(EXIT_FAILURE);
    1452         }
    1453 
    1454         psFree(md);
    1455 
    1456             psFree(object);
    1457             exit(EXIT_FAILURE);
    1458         }
    1459             psFree(object);
    1460             exit(EXIT_FAILURE);
    1461         }
    1462         if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    1463             psFree(object);
    1464             exit(EXIT_FAILURE);
    1465         }
    1466         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    1467             psFree(object);
    1468             exit(EXIT_FAILURE);
    1469         }
    1470         if (strncmp(object->workdir_state, "a string", MAX_STRING_LENGTH)) {
    1471             psFree(object);
    1472             exit(EXIT_FAILURE);
    1473         }
    1474         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    1475             psFree(object);
    1476             exit(EXIT_FAILURE);
    1477         }
    1478         if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
    1479             psFree(object);
    1480             exit(EXIT_FAILURE);
    1481         }
    1482         if (strncmp(object->expgroup, "a string", MAX_STRING_LENGTH)) {
    1483             psFree(object);
    1484             exit(EXIT_FAILURE);
    1485         }
    1486         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    1487             psFree(object);
    1488             exit(EXIT_FAILURE);
    1489         }
    1490 
    1491         psFree(object);
    1492     }
    1493 
    1494     {
    1495         psMetadata      *md;
    1496         camProcessedExpRow *object;
    1497 
    1498         md = psMetadataAlloc();
    1499             psFree(md);
    1500             exit(EXIT_FAILURE);
    1501         }
    1502             psFree(md);
    1503             exit(EXIT_FAILURE);
    1504         }
    1505         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    1506             psFree(md);
    1507             exit(EXIT_FAILURE);
    1508         }
    1509         if (!psMetadataAddF32(md, PS_LIST_TAIL, "bg", 0, NULL, 32.32)) {
    1510             psFree(md);
    1511             exit(EXIT_FAILURE);
    1512         }
    1513         if (!psMetadataAddF32(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 32.32)) {
    1514             psFree(md);
    1515             exit(EXIT_FAILURE);
    1516         }
    1517         if (!psMetadataAddF32(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 32.32)) {
    1518             psFree(md);
    1519             exit(EXIT_FAILURE);
    1520         }
    1521         if (!psMetadataAddF32(md, PS_LIST_TAIL, "sigma_ra", 0, NULL, 32.32)) {
    1522             psFree(md);
    1523             exit(EXIT_FAILURE);
    1524         }
    1525         if (!psMetadataAddF32(md, PS_LIST_TAIL, "sigma_dec", 0, NULL, 32.32)) {
    1526             psFree(md);
    1527             exit(EXIT_FAILURE);
    1528         }
    1529         if (!psMetadataAddF32(md, PS_LIST_TAIL, "zp_mean", 0, NULL, 32.32)) {
    1530             psFree(md);
    1531             exit(EXIT_FAILURE);
    1532         }
    1533         if (!psMetadataAddF32(md, PS_LIST_TAIL, "zp_stdev", 0, NULL, 32.32)) {
    1534             psFree(md);
    1535             exit(EXIT_FAILURE);
    1536         }
    1537         if (!psMetadataAddF32(md, PS_LIST_TAIL, "fwhm", 0, NULL, 32.32)) {
    1538             psFree(md);
    1539             exit(EXIT_FAILURE);
    1540         }
    1541         if (!psMetadataAddF32(md, PS_LIST_TAIL, "fwhm_range", 0, NULL, 32.32)) {
    1542             psFree(md);
    1543             exit(EXIT_FAILURE);
    1544         }
    1545         if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_stars", 0, NULL, -32)) {
    1546             psFree(md);
    1547             exit(EXIT_FAILURE);
    1548         }
    1549         if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_extended", 0, NULL, -32)) {
    1550             psFree(md);
    1551             exit(EXIT_FAILURE);
    1552         }
    1553         if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_cr", 0, NULL, -32)) {
    1554             psFree(md);
    1555             exit(EXIT_FAILURE);
    1556         }
    1557         if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_astrom", 0, NULL, -32)) {
    1558             psFree(md);
    1559             exit(EXIT_FAILURE);
    1560         }
    1561         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    1562             psFree(md);
    1563             exit(EXIT_FAILURE);
    1564         }
    1565             psFree(md);
    1566             exit(EXIT_FAILURE);
    1567         }
    1568 
    1569         object = camProcessedExpObjectFromMetadata(md);
    1570         if (!object) {
    1571             psFree(md);
    1572             exit(EXIT_FAILURE);
    1573         }
    1574 
    1575         psFree(md);
    1576 
    1577             psFree(object);
    1578             exit(EXIT_FAILURE);
    1579         }
    1580             psFree(object);
    1581             exit(EXIT_FAILURE);
    1582         }
    1583         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    1584             psFree(object);
    1585             exit(EXIT_FAILURE);
    1586         }
    1587         if (!object->bg == 32.32) {
    1588             psFree(object);
    1589             exit(EXIT_FAILURE);
    1590         }
    1591         if (!object->bg_stdev == 32.32) {
    1592             psFree(object);
    1593             exit(EXIT_FAILURE);
    1594         }
    1595         if (!object->bg_mean_stdev == 32.32) {
    1596             psFree(object);
    1597             exit(EXIT_FAILURE);
    1598         }
    1599         if (!object->sigma_ra == 32.32) {
    1600             psFree(object);
    1601             exit(EXIT_FAILURE);
    1602         }
    1603         if (!object->sigma_dec == 32.32) {
    1604             psFree(object);
    1605             exit(EXIT_FAILURE);
    1606         }
    1607         if (!object->zp_mean == 32.32) {
    1608             psFree(object);
    1609             exit(EXIT_FAILURE);
    1610         }
    1611         if (!object->zp_stdev == 32.32) {
    1612             psFree(object);
    1613             exit(EXIT_FAILURE);
    1614         }
    1615         if (!object->fwhm == 32.32) {
    1616             psFree(object);
    1617             exit(EXIT_FAILURE);
    1618         }
    1619         if (!object->fwhm_range == 32.32) {
    1620             psFree(object);
    1621             exit(EXIT_FAILURE);
    1622         }
    1623         if (!object->n_stars == -32) {
    1624             psFree(object);
    1625             exit(EXIT_FAILURE);
    1626         }
    1627         if (!object->n_extended == -32) {
    1628             psFree(object);
    1629             exit(EXIT_FAILURE);
    1630         }
    1631         if (!object->n_cr == -32) {
    1632             psFree(object);
    1633             exit(EXIT_FAILURE);
    1634         }
    1635         if (!object->n_astrom == -32) {
    1636             psFree(object);
    1637             exit(EXIT_FAILURE);
    1638         }
    1639         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    1640             psFree(object);
    1641             exit(EXIT_FAILURE);
    1642         }
    1643             psFree(object);
    1644             exit(EXIT_FAILURE);
    1645         }
    1646 
    1647         psFree(object);
    1648     }
    1649 
    1650     {
    1651         psMetadata      *md;
    1652         camMaskRow      *object;
    1653 
    1654         md = psMetadataAlloc();
    1655         if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
    1656             psFree(md);
    1657             exit(EXIT_FAILURE);
    1658         }
    1659 
    1660         object = camMaskObjectFromMetadata(md);
    1661         if (!object) {
    1662             psFree(md);
    1663             exit(EXIT_FAILURE);
    1664         }
    1665 
    1666         psFree(md);
    1667 
    1668         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    1669             psFree(object);
    1670             exit(EXIT_FAILURE);
    1671         }
    1672 
    1673         psFree(object);
    1674     }
    1675 
    1676     {
    1677         psMetadata      *md;
    1678         warpRunRow      *object;
    1679 
    1680         md = psMetadataAlloc();
    1681             psFree(md);
    1682             exit(EXIT_FAILURE);
    1683         }
    1684         if (!psMetadataAddStr(md, PS_LIST_TAIL, "mode", 0, NULL, "a string")) {
    1685             psFree(md);
    1686             exit(EXIT_FAILURE);
    1687         }
    1688         if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
    1689             psFree(md);
    1690             exit(EXIT_FAILURE);
    1691         }
    1692         if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
    1693             psFree(md);
    1694             exit(EXIT_FAILURE);
    1695         }
    1696         if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
    1697             psFree(md);
    1698             exit(EXIT_FAILURE);
    1699         }
    1700             psFree(md);
    1701             exit(EXIT_FAILURE);
    1702         }
    1703 
    1704         object = warpRunObjectFromMetadata(md);
    1705         if (!object) {
    1706             psFree(md);
    1707             exit(EXIT_FAILURE);
    1708         }
    1709 
    1710         psFree(md);
    1711 
    1712             psFree(object);
    1713             exit(EXIT_FAILURE);
    1714         }
    1715         if (strncmp(object->mode, "a string", MAX_STRING_LENGTH)) {
    1716             psFree(object);
    1717             exit(EXIT_FAILURE);
    1718         }
    1719         if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    1720             psFree(object);
    1721             exit(EXIT_FAILURE);
    1722         }
    1723         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    1724             psFree(object);
    1725             exit(EXIT_FAILURE);
    1726         }
    1727         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    1728             psFree(object);
    1729             exit(EXIT_FAILURE);
    1730         }
    1731             psFree(object);
    1732             exit(EXIT_FAILURE);
    1733         }
    1734 
    1735         psFree(object);
    1736     }
    1737 
    1738     {
    1739         psMetadata      *md;
    1740         warpInputExpRow *object;
    1741 
    1742         md = psMetadataAlloc();
    1743             psFree(md);
    1744             exit(EXIT_FAILURE);
    1745         }
    1746             psFree(md);
    1747             exit(EXIT_FAILURE);
    1748         }
    1749         if (!psMetadataAdd(md, PS_LIST_TAIL, "magiced", PS_DATA_BOOL, NULL, true)) {
    1750             psFree(md);
    1751             exit(EXIT_FAILURE);
    1752         }
    1753 
    1754         object = warpInputExpObjectFromMetadata(md);
    1755         if (!object) {
    1756             psFree(md);
    1757             exit(EXIT_FAILURE);
    1758         }
    1759 
    1760         psFree(md);
    1761 
    1762             psFree(object);
    1763             exit(EXIT_FAILURE);
    1764         }
    1765             psFree(object);
    1766             exit(EXIT_FAILURE);
    1767         }
    1768         if (!object->magiced == true) {
    1769             psFree(object);
    1770             exit(EXIT_FAILURE);
    1771         }
    1772 
    1773         psFree(object);
    1774     }
    1775 
    1776     {
    1777         psMetadata      *md;
    1778         warpSkyCellMapRow *object;
    1779 
    1780         md = psMetadataAlloc();
    1781             psFree(md);
    1782             exit(EXIT_FAILURE);
    1783         }
    1784         if (!psMetadataAddStr(md, PS_LIST_TAIL, "skycell_id", 0, NULL, "a string")) {
    1785             psFree(md);
    1786             exit(EXIT_FAILURE);
    1787         }
    1788         if (!psMetadataAddStr(md, PS_LIST_TAIL, "tess_id", 0, NULL, "a string")) {
    1789             psFree(md);
    1790             exit(EXIT_FAILURE);
    1791         }
    1792             psFree(md);
    1793             exit(EXIT_FAILURE);
    1794         }
    1795         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
    1796             psFree(md);
    1797             exit(EXIT_FAILURE);
    1798         }
    1799             psFree(md);
    1800             exit(EXIT_FAILURE);
    1801         }
    1802 
    1803         object = warpSkyCellMapObjectFromMetadata(md);
    1804         if (!object) {
    1805             psFree(md);
    1806             exit(EXIT_FAILURE);
    1807         }
    1808 
    1809         psFree(md);
    1810 
    1811             psFree(object);
    1812             exit(EXIT_FAILURE);
    1813         }
    1814         if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
    1815             psFree(object);
    1816             exit(EXIT_FAILURE);
    1817         }
    1818         if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
    1819             psFree(object);
    1820             exit(EXIT_FAILURE);
    1821         }
    1822             psFree(object);
    1823             exit(EXIT_FAILURE);
    1824         }
    1825         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    1826             psFree(object);
    1827             exit(EXIT_FAILURE);
    1828         }
    1829             psFree(object);
    1830             exit(EXIT_FAILURE);
    1831         }
    1832 
    1833         psFree(object);
    1834     }
    1835 
    1836     {
    1837         psMetadata      *md;
    1838         warpSkyfileRow  *object;
    1839 
    1840         md = psMetadataAlloc();
    1841             psFree(md);
    1842             exit(EXIT_FAILURE);
    1843         }
    1844         if (!psMetadataAddStr(md, PS_LIST_TAIL, "skycell_id", 0, NULL, "a string")) {
    1845             psFree(md);
    1846             exit(EXIT_FAILURE);
    1847         }
    1848         if (!psMetadataAddStr(md, PS_LIST_TAIL, "tess_id", 0, NULL, "a string")) {
    1849             psFree(md);
    1850             exit(EXIT_FAILURE);
    1851         }
    1852         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    1853             psFree(md);
    1854             exit(EXIT_FAILURE);
    1855         }
    1856         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    1857             psFree(md);
    1858             exit(EXIT_FAILURE);
    1859         }
    1860         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
    1861             psFree(md);
    1862             exit(EXIT_FAILURE);
    1863         }
    1864         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
    1865             psFree(md);
    1866             exit(EXIT_FAILURE);
    1867         }
    1868         if (!psMetadataAddF64(md, PS_LIST_TAIL, "pixel_fill", 0, NULL, 64.64)) {
    1869             psFree(md);
    1870             exit(EXIT_FAILURE);
    1871         }
    1872             psFree(md);
    1873             exit(EXIT_FAILURE);
    1874         }
    1875 
    1876         object = warpSkyfileObjectFromMetadata(md);
    1877         if (!object) {
    1878             psFree(md);
    1879             exit(EXIT_FAILURE);
    1880         }
    1881 
    1882         psFree(md);
    1883 
    1884             psFree(object);
    1885             exit(EXIT_FAILURE);
    1886         }
    1887         if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
    1888             psFree(object);
    1889             exit(EXIT_FAILURE);
    1890         }
    1891         if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
    1892             psFree(object);
    1893             exit(EXIT_FAILURE);
    1894         }
    1895         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    1896             psFree(object);
    1897             exit(EXIT_FAILURE);
    1898         }
    1899         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    1900             psFree(object);
    1901             exit(EXIT_FAILURE);
    1902         }
    1903         if (!object->bg == 64.64) {
    1904             psFree(object);
    1905             exit(EXIT_FAILURE);
    1906         }
    1907         if (!object->bg_stdev == 64.64) {
    1908             psFree(object);
    1909             exit(EXIT_FAILURE);
    1910         }
    1911         if (!object->pixel_fill == 64.64) {
    1912             psFree(object);
    1913             exit(EXIT_FAILURE);
    1914         }
    1915             psFree(object);
    1916             exit(EXIT_FAILURE);
    1917         }
    1918 
    1919         psFree(object);
    1920     }
    1921 
    1922     {
    1923         psMetadata      *md;
    1924         diffRunRow      *object;
    1925 
    1926         md = psMetadataAlloc();
    1927             psFree(md);
    1928             exit(EXIT_FAILURE);
    1929         }
    1930         if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
    1931             psFree(md);
    1932             exit(EXIT_FAILURE);
    1933         }
    1934         if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
    1935             psFree(md);
    1936             exit(EXIT_FAILURE);
    1937         }
    1938         if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
    1939             psFree(md);
    1940             exit(EXIT_FAILURE);
    1941         }
    1942             psFree(md);
    1943             exit(EXIT_FAILURE);
    1944         }
    1945         if (!psMetadataAddStr(md, PS_LIST_TAIL, "skycell_id", 0, NULL, "a string")) {
    1946             psFree(md);
    1947             exit(EXIT_FAILURE);
    1948         }
    1949         if (!psMetadataAddStr(md, PS_LIST_TAIL, "tess_id", 0, NULL, "a string")) {
    1950             psFree(md);
    1951             exit(EXIT_FAILURE);
    1952         }
    1953 
    1954         object = diffRunObjectFromMetadata(md);
    1955         if (!object) {
    1956             psFree(md);
    1957             exit(EXIT_FAILURE);
    1958         }
    1959 
    1960         psFree(md);
    1961 
    1962             psFree(object);
    1963             exit(EXIT_FAILURE);
    1964         }
    1965         if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    1966             psFree(object);
    1967             exit(EXIT_FAILURE);
    1968         }
    1969         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    1970             psFree(object);
    1971             exit(EXIT_FAILURE);
    1972         }
    1973         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    1974             psFree(object);
    1975             exit(EXIT_FAILURE);
    1976         }
    1977             psFree(object);
    1978             exit(EXIT_FAILURE);
    1979         }
    1980         if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
    1981             psFree(object);
    1982             exit(EXIT_FAILURE);
    1983         }
    1984         if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
    1985             psFree(object);
    1986             exit(EXIT_FAILURE);
    1987         }
    1988 
    1989         psFree(object);
    1990     }
    1991 
    1992     {
    1993         psMetadata      *md;
    1994         diffInputSkyfileRow *object;
    1995 
    1996         md = psMetadataAlloc();
    1997             psFree(md);
    1998             exit(EXIT_FAILURE);
    1999         }
    2000         if (!psMetadataAdd(md, PS_LIST_TAIL, "template", PS_DATA_BOOL, NULL, true)) {
    2001             psFree(md);
    2002             exit(EXIT_FAILURE);
    2003         }
    2004             psFree(md);
    2005             exit(EXIT_FAILURE);
    2006         }
    2007             psFree(md);
    2008             exit(EXIT_FAILURE);
    2009         }
    2010         if (!psMetadataAddStr(md, PS_LIST_TAIL, "skycell_id", 0, NULL, "a string")) {
    2011             psFree(md);
    2012             exit(EXIT_FAILURE);
    2013         }
    2014         if (!psMetadataAddStr(md, PS_LIST_TAIL, "tess_id", 0, NULL, "a string")) {
    2015             psFree(md);
    2016             exit(EXIT_FAILURE);
    2017         }
    2018         if (!psMetadataAddStr(md, PS_LIST_TAIL, "kind", 0, NULL, "a string")) {
    2019             psFree(md);
    2020             exit(EXIT_FAILURE);
    2021         }
    2022 
    2023         object = diffInputSkyfileObjectFromMetadata(md);
    2024         if (!object) {
    2025             psFree(md);
    2026             exit(EXIT_FAILURE);
    2027         }
    2028 
    2029         psFree(md);
    2030 
    2031             psFree(object);
    2032             exit(EXIT_FAILURE);
    2033         }
    2034         if (!object->template == true) {
    2035             psFree(object);
    2036             exit(EXIT_FAILURE);
    2037         }
    2038             psFree(object);
    2039             exit(EXIT_FAILURE);
    2040         }
    2041             psFree(object);
    2042             exit(EXIT_FAILURE);
    2043         }
    2044         if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
    2045             psFree(object);
    2046             exit(EXIT_FAILURE);
    2047         }
    2048         if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
    2049             psFree(object);
    2050             exit(EXIT_FAILURE);
    2051         }
    2052         if (strncmp(object->kind, "a string", MAX_STRING_LENGTH)) {
    2053             psFree(object);
    2054             exit(EXIT_FAILURE);
    2055         }
    2056 
    2057         psFree(object);
    2058     }
    2059 
    2060     {
    2061         psMetadata      *md;
    2062         diffSkyfileRow  *object;
    2063 
    2064         md = psMetadataAlloc();
    2065             psFree(md);
    2066             exit(EXIT_FAILURE);
    2067         }
    2068         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    2069             psFree(md);
    2070             exit(EXIT_FAILURE);
    2071         }
    2072         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    2073             psFree(md);
    2074             exit(EXIT_FAILURE);
    2075         }
    2076         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
    2077             psFree(md);
    2078             exit(EXIT_FAILURE);
    2079         }
    2080         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
    2081             psFree(md);
    2082             exit(EXIT_FAILURE);
    2083         }
    2084             psFree(md);
    2085             exit(EXIT_FAILURE);
    2086         }
    2087 
    2088         object = diffSkyfileObjectFromMetadata(md);
    2089         if (!object) {
    2090             psFree(md);
    2091             exit(EXIT_FAILURE);
    2092         }
    2093 
    2094         psFree(md);
    2095 
    2096             psFree(object);
    2097             exit(EXIT_FAILURE);
    2098         }
    2099         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    2100             psFree(object);
    2101             exit(EXIT_FAILURE);
    2102         }
    2103         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    2104             psFree(object);
    2105             exit(EXIT_FAILURE);
    2106         }
    2107         if (!object->bg == 64.64) {
    2108             psFree(object);
    2109             exit(EXIT_FAILURE);
    2110         }
    2111         if (!object->bg_stdev == 64.64) {
    2112             psFree(object);
    2113             exit(EXIT_FAILURE);
    2114         }
    2115             psFree(object);
    2116             exit(EXIT_FAILURE);
    2117         }
    2118 
    2119         psFree(object);
    2120     }
    2121 
    2122     {
    2123         psMetadata      *md;
    2124         stackRunRow     *object;
    2125 
    2126         md = psMetadataAlloc();
    2127             psFree(md);
    2128             exit(EXIT_FAILURE);
    2129         }
    2130         if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
    2131             psFree(md);
    2132             exit(EXIT_FAILURE);
    2133         }
    2134         if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
    2135             psFree(md);
    2136             exit(EXIT_FAILURE);
    2137         }
    2138         if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
    2139             psFree(md);
    2140             exit(EXIT_FAILURE);
    2141         }
    2142             psFree(md);
    2143             exit(EXIT_FAILURE);
    2144         }
    2145         if (!psMetadataAddStr(md, PS_LIST_TAIL, "skycell_id", 0, NULL, "a string")) {
    2146             psFree(md);
    2147             exit(EXIT_FAILURE);
    2148         }
    2149         if (!psMetadataAddStr(md, PS_LIST_TAIL, "tess_id", 0, NULL, "a string")) {
    2150             psFree(md);
    2151             exit(EXIT_FAILURE);
    2152         }
    2153 
    2154         object = stackRunObjectFromMetadata(md);
    2155         if (!object) {
    2156             psFree(md);
    2157             exit(EXIT_FAILURE);
    2158         }
    2159 
    2160         psFree(md);
    2161 
    2162             psFree(object);
    2163             exit(EXIT_FAILURE);
    2164         }
    2165         if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    2166             psFree(object);
    2167             exit(EXIT_FAILURE);
    2168         }
    2169         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    2170             psFree(object);
    2171             exit(EXIT_FAILURE);
    2172         }
    2173         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    2174             psFree(object);
    2175             exit(EXIT_FAILURE);
    2176         }
    2177             psFree(object);
    2178             exit(EXIT_FAILURE);
    2179         }
    2180         if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
    2181             psFree(object);
    2182             exit(EXIT_FAILURE);
    2183         }
    2184         if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
    2185             psFree(object);
    2186             exit(EXIT_FAILURE);
    2187         }
    2188 
    2189         psFree(object);
    2190     }
    2191 
    2192     {
    2193         psMetadata      *md;
    2194         stackInputSkyfileRow *object;
    2195 
    2196         md = psMetadataAlloc();
    2197             psFree(md);
    2198             exit(EXIT_FAILURE);
    2199         }
    2200             psFree(md);
    2201             exit(EXIT_FAILURE);
    2202         }
    2203 
    2204         object = stackInputSkyfileObjectFromMetadata(md);
    2205         if (!object) {
    2206             psFree(md);
    2207             exit(EXIT_FAILURE);
    2208         }
    2209 
    2210         psFree(md);
    2211 
    2212             psFree(object);
    2213             exit(EXIT_FAILURE);
    2214         }
    2215             psFree(object);
    2216             exit(EXIT_FAILURE);
    2217         }
    2218 
    2219         psFree(object);
    2220     }
    2221 
    2222     {
    2223         psMetadata      *md;
    2224         stackSumSkyfileRow *object;
    2225 
    2226         md = psMetadataAlloc();
    2227             psFree(md);
    2228             exit(EXIT_FAILURE);
    2229         }
    2230         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    2231             psFree(md);
    2232             exit(EXIT_FAILURE);
    2233         }
    2234         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    2235             psFree(md);
    2236             exit(EXIT_FAILURE);
    2237         }
    2238         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
    2239             psFree(md);
    2240             exit(EXIT_FAILURE);
    2241         }
    2242         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
    2243             psFree(md);
    2244             exit(EXIT_FAILURE);
    2245         }
    2246             psFree(md);
    2247             exit(EXIT_FAILURE);
    2248         }
    2249 
    2250         object = stackSumSkyfileObjectFromMetadata(md);
    2251         if (!object) {
    2252             psFree(md);
    2253             exit(EXIT_FAILURE);
    2254         }
    2255 
    2256         psFree(md);
    2257 
    2258             psFree(object);
    2259             exit(EXIT_FAILURE);
    2260         }
    2261         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    2262             psFree(object);
    2263             exit(EXIT_FAILURE);
    2264         }
    2265         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    2266             psFree(object);
    2267             exit(EXIT_FAILURE);
    2268         }
    2269         if (!object->bg == 64.64) {
    2270             psFree(object);
    2271             exit(EXIT_FAILURE);
    2272         }
    2273         if (!object->bg_stdev == 64.64) {
    2274             psFree(object);
    2275             exit(EXIT_FAILURE);
    2276         }
    2277             psFree(object);
    2278             exit(EXIT_FAILURE);
    2279         }
    2280 
    2281         psFree(object);
    2282     }
    2283 
    2284     {
    2285         psMetadata      *md;
    2286         detRunRow       *object;
    2287 
    2288         md = psMetadataAlloc();
    2289             psFree(md);
    2290             exit(EXIT_FAILURE);
    2291         }
    2292         if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
    2293             psFree(md);
    2294             exit(EXIT_FAILURE);
    2295         }
    2296         if (!psMetadataAddStr(md, PS_LIST_TAIL, "det_type", 0, NULL, "a string")) {
    2297             psFree(md);
    2298             exit(EXIT_FAILURE);
    2299         }
    2300         if (!psMetadataAddStr(md, PS_LIST_TAIL, "mode", 0, NULL, "a string")) {
    2301             psFree(md);
    2302             exit(EXIT_FAILURE);
    2303         }
    2304         if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
    2305             psFree(md);
    2306             exit(EXIT_FAILURE);
    2307         }
    2308         if (!psMetadataAddStr(md, PS_LIST_TAIL, "filelevel", 0, NULL, "a string")) {
    2309             psFree(md);
    2310             exit(EXIT_FAILURE);
    2311         }
    2312         if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
    2313             psFree(md);
    2314             exit(EXIT_FAILURE);
    2315         }
    2316         if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
    2317             psFree(md);
    2318             exit(EXIT_FAILURE);
    2319         }
    2320         if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
    2321             psFree(md);
    2322             exit(EXIT_FAILURE);
    2323         }
    2324         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_type", 0, NULL, "a string")) {
    2325             psFree(md);
    2326             exit(EXIT_FAILURE);
    2327         }
    2328         if (!psMetadataAddStr(md, PS_LIST_TAIL, "reduction", 0, NULL, "a string")) {
    2329             psFree(md);
    2330             exit(EXIT_FAILURE);
    2331         }
    2332         if (!psMetadataAddStr(md, PS_LIST_TAIL, "filter", 0, NULL, "a string")) {
    2333             psFree(md);
    2334             exit(EXIT_FAILURE);
    2335         }
    2336         if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass_min", 0, NULL, 32.32)) {
    2337             psFree(md);
    2338             exit(EXIT_FAILURE);
    2339         }
    2340         if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass_max", 0, NULL, 32.32)) {
    2341             psFree(md);
    2342             exit(EXIT_FAILURE);
    2343         }
    2344         if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time_min", 0, NULL, 32.32)) {
    2345             psFree(md);
    2346             exit(EXIT_FAILURE);
    2347         }
    2348         if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time_max", 0, NULL, 32.32)) {
    2349             psFree(md);
    2350             exit(EXIT_FAILURE);
    2351         }
    2352         if (!psMetadataAddF32(md, PS_LIST_TAIL, "ccd_temp_min", 0, NULL, 32.32)) {
    2353             psFree(md);
    2354             exit(EXIT_FAILURE);
    2355         }
    2356         if (!psMetadataAddF32(md, PS_LIST_TAIL, "ccd_temp_max", 0, NULL, 32.32)) {
    2357             psFree(md);
    2358             exit(EXIT_FAILURE);
    2359         }
    2360         if (!psMetadataAddF64(md, PS_LIST_TAIL, "posang_min", 0, NULL, 64.64)) {
    2361             psFree(md);
    2362             exit(EXIT_FAILURE);
    2363         }
    2364         if (!psMetadataAddF64(md, PS_LIST_TAIL, "posang_max", 0, NULL, 64.64)) {
    2365             psFree(md);
    2366             exit(EXIT_FAILURE);
    2367         }
    2368             psFree(md);
    2369             exit(EXIT_FAILURE);
    2370         }
    2371             psFree(md);
    2372             exit(EXIT_FAILURE);
    2373         }
    2374             psFree(md);
    2375             exit(EXIT_FAILURE);
    2376         }
    2377             psFree(md);
    2378             exit(EXIT_FAILURE);
    2379         }
    2380             psFree(md);
    2381             exit(EXIT_FAILURE);
    2382         }
    2383         if (!psMetadataAddF32(md, PS_LIST_TAIL, "solang_min", 0, NULL, 32.32)) {
    2384             psFree(md);
    2385             exit(EXIT_FAILURE);
    2386         }
    2387         if (!psMetadataAddF32(md, PS_LIST_TAIL, "solang_max", 0, NULL, 32.32)) {
    2388             psFree(md);
    2389             exit(EXIT_FAILURE);
    2390         }
    2391         if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
    2392             psFree(md);
    2393             exit(EXIT_FAILURE);
    2394         }
    2395         if (!psMetadataAddS32(md, PS_LIST_TAIL, "parent", 0, NULL, -32)) {
    2396             psFree(md);
    2397             exit(EXIT_FAILURE);
    2398         }
    2399 
    2400         object = detRunObjectFromMetadata(md);
    2401         if (!object) {
    2402             psFree(md);
    2403             exit(EXIT_FAILURE);
    2404         }
    2405 
    2406         psFree(md);
    2407 
    2408             psFree(object);
    2409             exit(EXIT_FAILURE);
    2410         }
    2411         if (!object->iteration == -32) {
    2412             psFree(object);
    2413             exit(EXIT_FAILURE);
    2414         }
    2415         if (strncmp(object->det_type, "a string", MAX_STRING_LENGTH)) {
    2416             psFree(object);
    2417             exit(EXIT_FAILURE);
    2418         }
    2419         if (strncmp(object->mode, "a string", MAX_STRING_LENGTH)) {
    2420             psFree(object);
    2421             exit(EXIT_FAILURE);
    2422         }
    2423         if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    2424             psFree(object);
    2425             exit(EXIT_FAILURE);
    2426         }
    2427         if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
    2428             psFree(object);
    2429             exit(EXIT_FAILURE);
    2430         }
    2431         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    2432             psFree(object);
    2433             exit(EXIT_FAILURE);
    2434         }
    2435         if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    2436             psFree(object);
    2437             exit(EXIT_FAILURE);
    2438         }
    2439         if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
    2440             psFree(object);
    2441             exit(EXIT_FAILURE);
    2442         }
    2443         if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
    2444             psFree(object);
    2445             exit(EXIT_FAILURE);
    2446         }
    2447         if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
    2448             psFree(object);
    2449             exit(EXIT_FAILURE);
    2450         }
    2451         if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
    2452             psFree(object);
    2453             exit(EXIT_FAILURE);
    2454         }
    2455         if (!object->airmass_min == 32.32) {
    2456             psFree(object);
    2457             exit(EXIT_FAILURE);
    2458         }
    2459         if (!object->airmass_max == 32.32) {
    2460             psFree(object);
    2461             exit(EXIT_FAILURE);
    2462         }
    2463         if (!object->exp_time_min == 32.32) {
    2464             psFree(object);
    2465             exit(EXIT_FAILURE);
    2466         }
    2467         if (!object->exp_time_max == 32.32) {
    2468             psFree(object);
    2469             exit(EXIT_FAILURE);
    2470         }
    2471         if (!object->ccd_temp_min == 32.32) {
    2472             psFree(object);
    2473             exit(EXIT_FAILURE);
    2474         }
    2475         if (!object->ccd_temp_max == 32.32) {
    2476             psFree(object);
    2477             exit(EXIT_FAILURE);
    2478         }
    2479         if (!object->posang_min == 64.64) {
    2480             psFree(object);
    2481             exit(EXIT_FAILURE);
    2482         }
    2483         if (!object->posang_max == 64.64) {
    2484             psFree(object);
    2485             exit(EXIT_FAILURE);
    2486         }
    2487             psFree(object);
    2488             exit(EXIT_FAILURE);
    2489         }
    2490             psFree(object);
    2491             exit(EXIT_FAILURE);
    2492         }
    2493             psFree(object);
    2494             exit(EXIT_FAILURE);
    2495         }
    2496             psFree(object);
    2497             exit(EXIT_FAILURE);
    2498         }
    2499             psFree(object);
    2500             exit(EXIT_FAILURE);
    2501         }
    2502         if (!object->solang_min == 32.32) {
    2503             psFree(object);
    2504             exit(EXIT_FAILURE);
    2505         }
    2506         if (!object->solang_max == 32.32) {
    2507             psFree(object);
    2508             exit(EXIT_FAILURE);
    2509         }
    2510         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    2511             psFree(object);
    2512             exit(EXIT_FAILURE);
    2513         }
    2514         if (!object->parent == -32) {
    2515             psFree(object);
    2516             exit(EXIT_FAILURE);
    2517         }
    2518 
    2519         psFree(object);
    2520     }
    2521 
    2522     {
    2523         psMetadata      *md;
    2524         detInputExpRow  *object;
    2525 
    2526         md = psMetadataAlloc();
    2527             psFree(md);
    2528             exit(EXIT_FAILURE);
    2529         }
    2530         if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
    2531             psFree(md);
    2532             exit(EXIT_FAILURE);
    2533         }
    2534             psFree(md);
    2535             exit(EXIT_FAILURE);
    2536         }
    2537         if (!psMetadataAdd(md, PS_LIST_TAIL, "include", PS_DATA_BOOL, NULL, true)) {
    2538             psFree(md);
    2539             exit(EXIT_FAILURE);
    2540         }
    2541 
    2542         object = detInputExpObjectFromMetadata(md);
    2543         if (!object) {
    2544             psFree(md);
    2545             exit(EXIT_FAILURE);
    2546         }
    2547 
    2548         psFree(md);
    2549 
    2550             psFree(object);
    2551             exit(EXIT_FAILURE);
    2552         }
    2553         if (!object->iteration == -32) {
    2554             psFree(object);
    2555             exit(EXIT_FAILURE);
    2556         }
    2557             psFree(object);
    2558             exit(EXIT_FAILURE);
    2559         }
    2560         if (!object->include == true) {
    2561             psFree(object);
    2562             exit(EXIT_FAILURE);
    2563         }
    2564 
    2565         psFree(object);
    2566     }
    2567 
    2568     {
    2569         psMetadata      *md;
    2570         detProcessedImfileRow *object;
    2571 
    2572         md = psMetadataAlloc();
    2573             psFree(md);
    2574             exit(EXIT_FAILURE);
    2575         }
    2576             psFree(md);
    2577             exit(EXIT_FAILURE);
    2578         }
    2579         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
    2580             psFree(md);
    2581             exit(EXIT_FAILURE);
    2582         }
    2583         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    2584             psFree(md);
    2585             exit(EXIT_FAILURE);
    2586         }
    2587         if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
    2588             psFree(md);
    2589             exit(EXIT_FAILURE);
    2590         }
    2591         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
    2592             psFree(md);
    2593             exit(EXIT_FAILURE);
    2594         }
    2595         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
    2596             psFree(md);
    2597             exit(EXIT_FAILURE);
    2598         }
    2599         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
    2600             psFree(md);
    2601             exit(EXIT_FAILURE);
    2602         }
    2603         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 64.64)) {
    2604             psFree(md);
    2605             exit(EXIT_FAILURE);
    2606         }
    2607         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 64.64)) {
    2608             psFree(md);
    2609             exit(EXIT_FAILURE);
    2610         }
    2611         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 64.64)) {
    2612             psFree(md);
    2613             exit(EXIT_FAILURE);
    2614         }
    2615         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
    2616             psFree(md);
    2617             exit(EXIT_FAILURE);
    2618         }
    2619         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
    2620             psFree(md);
    2621             exit(EXIT_FAILURE);
    2622         }
    2623         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
    2624             psFree(md);
    2625             exit(EXIT_FAILURE);
    2626         }
    2627         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
    2628             psFree(md);
    2629             exit(EXIT_FAILURE);
    2630         }
    2631         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
    2632             psFree(md);
    2633             exit(EXIT_FAILURE);
    2634         }
    2635         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    2636             psFree(md);
    2637             exit(EXIT_FAILURE);
    2638         }
    2639             psFree(md);
    2640             exit(EXIT_FAILURE);
    2641         }
    2642 
    2643         object = detProcessedImfileObjectFromMetadata(md);
    2644         if (!object) {
    2645             psFree(md);
    2646             exit(EXIT_FAILURE);
    2647         }
    2648 
    2649         psFree(md);
    2650 
    2651             psFree(object);
    2652             exit(EXIT_FAILURE);
    2653         }
    2654             psFree(object);
    2655             exit(EXIT_FAILURE);
    2656         }
    2657         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    2658             psFree(object);
    2659             exit(EXIT_FAILURE);
    2660         }
    2661         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    2662             psFree(object);
    2663             exit(EXIT_FAILURE);
    2664         }
    2665         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    2666             psFree(object);
    2667             exit(EXIT_FAILURE);
    2668         }
    2669         if (!object->bg == 64.64) {
    2670             psFree(object);
    2671             exit(EXIT_FAILURE);
    2672         }
    2673         if (!object->bg_stdev == 64.64) {
    2674             psFree(object);
    2675             exit(EXIT_FAILURE);
    2676         }
    2677         if (!object->bg_mean_stdev == 64.64) {
    2678             psFree(object);
    2679             exit(EXIT_FAILURE);
    2680         }
    2681         if (!object->fringe_0 == 64.64) {
    2682             psFree(object);
    2683             exit(EXIT_FAILURE);
    2684         }
    2685         if (!object->fringe_1 == 64.64) {
    2686             psFree(object);
    2687             exit(EXIT_FAILURE);
    2688         }
    2689         if (!object->fringe_2 == 64.64) {
    2690             psFree(object);
    2691             exit(EXIT_FAILURE);
    2692         }
    2693         if (!object->user_1 == 64.64) {
    2694             psFree(object);
    2695             exit(EXIT_FAILURE);
    2696         }
    2697         if (!object->user_2 == 64.64) {
    2698             psFree(object);
    2699             exit(EXIT_FAILURE);
    2700         }
    2701         if (!object->user_3 == 64.64) {
    2702             psFree(object);
    2703             exit(EXIT_FAILURE);
    2704         }
    2705         if (!object->user_4 == 64.64) {
    2706             psFree(object);
    2707             exit(EXIT_FAILURE);
    2708         }
    2709         if (!object->user_5 == 64.64) {
    2710             psFree(object);
    2711             exit(EXIT_FAILURE);
    2712         }
    2713         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    2714             psFree(object);
    2715             exit(EXIT_FAILURE);
    2716         }
    2717             psFree(object);
    2718             exit(EXIT_FAILURE);
    2719         }
    2720 
    2721         psFree(object);
    2722     }
    2723 
    2724     {
    2725         psMetadata      *md;
    2726         detProcessedExpRow *object;
    2727 
    2728         md = psMetadataAlloc();
    2729             psFree(md);
    2730             exit(EXIT_FAILURE);
    2731         }
    2732             psFree(md);
    2733             exit(EXIT_FAILURE);
    2734         }
    2735         if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
    2736             psFree(md);
    2737             exit(EXIT_FAILURE);
    2738         }
    2739         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
    2740             psFree(md);
    2741             exit(EXIT_FAILURE);
    2742         }
    2743         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
    2744             psFree(md);
    2745             exit(EXIT_FAILURE);
    2746         }
    2747         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
    2748             psFree(md);
    2749             exit(EXIT_FAILURE);
    2750         }
    2751         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 64.64)) {
    2752             psFree(md);
    2753             exit(EXIT_FAILURE);
    2754         }
    2755         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 64.64)) {
    2756             psFree(md);
    2757             exit(EXIT_FAILURE);
    2758         }
    2759         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 64.64)) {
    2760             psFree(md);
    2761             exit(EXIT_FAILURE);
    2762         }
    2763         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
    2764             psFree(md);
    2765             exit(EXIT_FAILURE);
    2766         }
    2767         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
    2768             psFree(md);
    2769             exit(EXIT_FAILURE);
    2770         }
    2771         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
    2772             psFree(md);
    2773             exit(EXIT_FAILURE);
    2774         }
    2775         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
    2776             psFree(md);
    2777             exit(EXIT_FAILURE);
    2778         }
    2779         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
    2780             psFree(md);
    2781             exit(EXIT_FAILURE);
    2782         }
    2783         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    2784             psFree(md);
    2785             exit(EXIT_FAILURE);
    2786         }
    2787             psFree(md);
    2788             exit(EXIT_FAILURE);
    2789         }
    2790 
    2791         object = detProcessedExpObjectFromMetadata(md);
    2792         if (!object) {
    2793             psFree(md);
    2794             exit(EXIT_FAILURE);
    2795         }
    2796 
    2797         psFree(md);
    2798 
    2799             psFree(object);
    2800             exit(EXIT_FAILURE);
    2801         }
    2802             psFree(object);
    2803             exit(EXIT_FAILURE);
    2804         }
    2805         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    2806             psFree(object);
    2807             exit(EXIT_FAILURE);
    2808         }
    2809         if (!object->bg == 64.64) {
    2810             psFree(object);
    2811             exit(EXIT_FAILURE);
    2812         }
    2813         if (!object->bg_stdev == 64.64) {
    2814             psFree(object);
    2815             exit(EXIT_FAILURE);
    2816         }
    2817         if (!object->bg_mean_stdev == 64.64) {
    2818             psFree(object);
    2819             exit(EXIT_FAILURE);
    2820         }
    2821         if (!object->fringe_0 == 64.64) {
    2822             psFree(object);
    2823             exit(EXIT_FAILURE);
    2824         }
    2825         if (!object->fringe_1 == 64.64) {
    2826             psFree(object);
    2827             exit(EXIT_FAILURE);
    2828         }
    2829         if (!object->fringe_2 == 64.64) {
    2830             psFree(object);
    2831             exit(EXIT_FAILURE);
    2832         }
    2833         if (!object->user_1 == 64.64) {
    2834             psFree(object);
    2835             exit(EXIT_FAILURE);
    2836         }
    2837         if (!object->user_2 == 64.64) {
    2838             psFree(object);
    2839             exit(EXIT_FAILURE);
    2840         }
    2841         if (!object->user_3 == 64.64) {
    2842             psFree(object);
    2843             exit(EXIT_FAILURE);
    2844         }
    2845         if (!object->user_4 == 64.64) {
    2846             psFree(object);
    2847             exit(EXIT_FAILURE);
    2848         }
    2849         if (!object->user_5 == 64.64) {
    2850             psFree(object);
    2851             exit(EXIT_FAILURE);
    2852         }
    2853         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    2854             psFree(object);
    2855             exit(EXIT_FAILURE);
    2856         }
    2857             psFree(object);
    2858             exit(EXIT_FAILURE);
    2859         }
    2860 
    2861         psFree(object);
    2862     }
    2863 
    2864     {
    2865         psMetadata      *md;
    2866         detStackedImfileRow *object;
    2867 
    2868         md = psMetadataAlloc();
    2869             psFree(md);
    2870             exit(EXIT_FAILURE);
    2871         }
    2872         if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
    2873             psFree(md);
    2874             exit(EXIT_FAILURE);
    2875         }
    2876         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
    2877             psFree(md);
    2878             exit(EXIT_FAILURE);
    2879         }
    2880         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    2881             psFree(md);
    2882             exit(EXIT_FAILURE);
    2883         }
    2884         if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
    2885             psFree(md);
    2886             exit(EXIT_FAILURE);
    2887         }
    2888         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
    2889             psFree(md);
    2890             exit(EXIT_FAILURE);
    2891         }
    2892         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
    2893             psFree(md);
    2894             exit(EXIT_FAILURE);
    2895         }
    2896         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
    2897             psFree(md);
    2898             exit(EXIT_FAILURE);
    2899         }
    2900         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
    2901             psFree(md);
    2902             exit(EXIT_FAILURE);
    2903         }
    2904         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
    2905             psFree(md);
    2906             exit(EXIT_FAILURE);
    2907         }
    2908         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
    2909             psFree(md);
    2910             exit(EXIT_FAILURE);
    2911         }
    2912         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
    2913             psFree(md);
    2914             exit(EXIT_FAILURE);
    2915         }
    2916         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
    2917             psFree(md);
    2918             exit(EXIT_FAILURE);
    2919         }
    2920             psFree(md);
    2921             exit(EXIT_FAILURE);
    2922         }
    2923 
    2924         object = detStackedImfileObjectFromMetadata(md);
    2925         if (!object) {
    2926             psFree(md);
    2927             exit(EXIT_FAILURE);
    2928         }
    2929 
    2930         psFree(md);
    2931 
    2932             psFree(object);
    2933             exit(EXIT_FAILURE);
    2934         }
    2935         if (!object->iteration == -32) {
    2936             psFree(object);
    2937             exit(EXIT_FAILURE);
    2938         }
    2939         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    2940             psFree(object);
    2941             exit(EXIT_FAILURE);
    2942         }
    2943         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    2944             psFree(object);
    2945             exit(EXIT_FAILURE);
    2946         }
    2947         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    2948             psFree(object);
    2949             exit(EXIT_FAILURE);
    2950         }
    2951         if (!object->bg == 64.64) {
    2952             psFree(object);
    2953             exit(EXIT_FAILURE);
    2954         }
    2955         if (!object->bg_stdev == 64.64) {
    2956             psFree(object);
    2957             exit(EXIT_FAILURE);
    2958         }
    2959         if (!object->bg_mean_stdev == 64.64) {
    2960             psFree(object);
    2961             exit(EXIT_FAILURE);
    2962         }
    2963         if (!object->user_1 == 64.64) {
    2964             psFree(object);
    2965             exit(EXIT_FAILURE);
    2966         }
    2967         if (!object->user_2 == 64.64) {
    2968             psFree(object);
    2969             exit(EXIT_FAILURE);
    2970         }
    2971         if (!object->user_3 == 64.64) {
    2972             psFree(object);
    2973             exit(EXIT_FAILURE);
    2974         }
    2975         if (!object->user_4 == 64.64) {
    2976             psFree(object);
    2977             exit(EXIT_FAILURE);
    2978         }
    2979         if (!object->user_5 == 64.64) {
    2980             psFree(object);
    2981             exit(EXIT_FAILURE);
    2982         }
    2983             psFree(object);
    2984             exit(EXIT_FAILURE);
    2985         }
    2986 
    2987         psFree(object);
    2988     }
    2989 
    2990     {
    2991         psMetadata      *md;
    2992         detNormalizedStatImfileRow *object;
    2993 
    2994         md = psMetadataAlloc();
    2995             psFree(md);
    2996             exit(EXIT_FAILURE);
    2997         }
    2998         if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
    2999             psFree(md);
    3000             exit(EXIT_FAILURE);
    3001         }
    3002         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
    3003             psFree(md);
    3004             exit(EXIT_FAILURE);
    3005         }
    3006         if (!psMetadataAddF32(md, PS_LIST_TAIL, "norm", 0, NULL, 32.32)) {
    3007             psFree(md);
    3008             exit(EXIT_FAILURE);
    3009         }
    3010             psFree(md);
    3011             exit(EXIT_FAILURE);
    3012         }
    3013 
    3014         object = detNormalizedStatImfileObjectFromMetadata(md);
    3015         if (!object) {
    3016             psFree(md);
    3017             exit(EXIT_FAILURE);
    3018         }
    3019 
    3020         psFree(md);
    3021 
    3022             psFree(object);
    3023             exit(EXIT_FAILURE);
    3024         }
    3025         if (!object->iteration == -32) {
    3026             psFree(object);
    3027             exit(EXIT_FAILURE);
    3028         }
    3029         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    3030             psFree(object);
    3031             exit(EXIT_FAILURE);
    3032         }
    3033         if (!object->norm == 32.32) {
    3034             psFree(object);
    3035             exit(EXIT_FAILURE);
    3036         }
    3037             psFree(object);
    3038             exit(EXIT_FAILURE);
    3039         }
    3040 
    3041         psFree(object);
    3042     }
    3043 
    3044     {
    3045         psMetadata      *md;
    3046         detNormalizedImfileRow *object;
    3047 
    3048         md = psMetadataAlloc();
    3049             psFree(md);
    3050             exit(EXIT_FAILURE);
    3051         }
    3052         if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
    3053             psFree(md);
    3054             exit(EXIT_FAILURE);
    3055         }
    3056         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
    3057             psFree(md);
    3058             exit(EXIT_FAILURE);
    3059         }
    3060         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    3061             psFree(md);
    3062             exit(EXIT_FAILURE);
    3063         }
    3064         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
    3065             psFree(md);
    3066             exit(EXIT_FAILURE);
    3067         }
    3068         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
    3069             psFree(md);
    3070             exit(EXIT_FAILURE);
    3071         }
    3072         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
    3073             psFree(md);
    3074             exit(EXIT_FAILURE);
    3075         }
    3076         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
    3077             psFree(md);
    3078             exit(EXIT_FAILURE);
    3079         }
    3080         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
    3081             psFree(md);
    3082             exit(EXIT_FAILURE);
    3083         }
    3084         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
    3085             psFree(md);
    3086             exit(EXIT_FAILURE);
    3087         }
    3088         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
    3089             psFree(md);
    3090             exit(EXIT_FAILURE);
    3091         }
    3092         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
    3093             psFree(md);
    3094             exit(EXIT_FAILURE);
    3095         }
    3096         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    3097             psFree(md);
    3098             exit(EXIT_FAILURE);
    3099         }
    3100             psFree(md);
    3101             exit(EXIT_FAILURE);
    3102         }
    3103 
    3104         object = detNormalizedImfileObjectFromMetadata(md);
    3105         if (!object) {
    3106             psFree(md);
    3107             exit(EXIT_FAILURE);
    3108         }
    3109 
    3110         psFree(md);
    3111 
    3112             psFree(object);
    3113             exit(EXIT_FAILURE);
    3114         }
    3115         if (!object->iteration == -32) {
    3116             psFree(object);
    3117             exit(EXIT_FAILURE);
    3118         }
    3119         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    3120             psFree(object);
    3121             exit(EXIT_FAILURE);
    3122         }
    3123         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    3124             psFree(object);
    3125             exit(EXIT_FAILURE);
    3126         }
    3127         if (!object->bg == 64.64) {
    3128             psFree(object);
    3129             exit(EXIT_FAILURE);
    3130         }
    3131         if (!object->bg_stdev == 64.64) {
    3132             psFree(object);
    3133             exit(EXIT_FAILURE);
    3134         }
    3135         if (!object->bg_mean_stdev == 64.64) {
    3136             psFree(object);
    3137             exit(EXIT_FAILURE);
    3138         }
    3139         if (!object->user_1 == 64.64) {
    3140             psFree(object);
    3141             exit(EXIT_FAILURE);
    3142         }
    3143         if (!object->user_2 == 64.64) {
    3144             psFree(object);
    3145             exit(EXIT_FAILURE);
    3146         }
    3147         if (!object->user_3 == 64.64) {
    3148             psFree(object);
    3149             exit(EXIT_FAILURE);
    3150         }
    3151         if (!object->user_4 == 64.64) {
    3152             psFree(object);
    3153             exit(EXIT_FAILURE);
    3154         }
    3155         if (!object->user_5 == 64.64) {
    3156             psFree(object);
    3157             exit(EXIT_FAILURE);
    3158         }
    3159         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    3160             psFree(object);
    3161             exit(EXIT_FAILURE);
    3162         }
    3163             psFree(object);
    3164             exit(EXIT_FAILURE);
    3165         }
    3166 
    3167         psFree(object);
    3168     }
    3169 
    3170     {
    3171         psMetadata      *md;
    3172         detNormalizedExpRow *object;
    3173 
    3174         md = psMetadataAlloc();
    3175             psFree(md);
    3176             exit(EXIT_FAILURE);
    3177         }
    3178         if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
    3179             psFree(md);
    3180             exit(EXIT_FAILURE);
    3181         }
    3182         if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
    3183             psFree(md);
    3184             exit(EXIT_FAILURE);
    3185         }
    3186         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
    3187             psFree(md);
    3188             exit(EXIT_FAILURE);
    3189         }
    3190         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
    3191             psFree(md);
    3192             exit(EXIT_FAILURE);
    3193         }
    3194         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
    3195             psFree(md);
    3196             exit(EXIT_FAILURE);
    3197         }
    3198         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
    3199             psFree(md);
    3200             exit(EXIT_FAILURE);
    3201         }
    3202         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
    3203             psFree(md);
    3204             exit(EXIT_FAILURE);
    3205         }
    3206         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
    3207             psFree(md);
    3208             exit(EXIT_FAILURE);
    3209         }
    3210         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
    3211             psFree(md);
    3212             exit(EXIT_FAILURE);
    3213         }
    3214         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
    3215             psFree(md);
    3216             exit(EXIT_FAILURE);
    3217         }
    3218         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    3219             psFree(md);
    3220             exit(EXIT_FAILURE);
    3221         }
    3222             psFree(md);
    3223             exit(EXIT_FAILURE);
    3224         }
    3225 
    3226         object = detNormalizedExpObjectFromMetadata(md);
    3227         if (!object) {
    3228             psFree(md);
    3229             exit(EXIT_FAILURE);
    3230         }
    3231 
    3232         psFree(md);
    3233 
    3234             psFree(object);
    3235             exit(EXIT_FAILURE);
    3236         }
    3237         if (!object->iteration == -32) {
    3238             psFree(object);
    3239             exit(EXIT_FAILURE);
    3240         }
    3241         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    3242             psFree(object);
    3243             exit(EXIT_FAILURE);
    3244         }
    3245         if (!object->bg == 64.64) {
    3246             psFree(object);
    3247             exit(EXIT_FAILURE);
    3248         }
    3249         if (!object->bg_stdev == 64.64) {
    3250             psFree(object);
    3251             exit(EXIT_FAILURE);
    3252         }
    3253         if (!object->bg_mean_stdev == 64.64) {
    3254             psFree(object);
    3255             exit(EXIT_FAILURE);
    3256         }
    3257         if (!object->user_1 == 64.64) {
    3258             psFree(object);
    3259             exit(EXIT_FAILURE);
    3260         }
    3261         if (!object->user_2 == 64.64) {
    3262             psFree(object);
    3263             exit(EXIT_FAILURE);
    3264         }
    3265         if (!object->user_3 == 64.64) {
    3266             psFree(object);
    3267             exit(EXIT_FAILURE);
    3268         }
    3269         if (!object->user_4 == 64.64) {
    3270             psFree(object);
    3271             exit(EXIT_FAILURE);
    3272         }
    3273         if (!object->user_5 == 64.64) {
    3274             psFree(object);
    3275             exit(EXIT_FAILURE);
    3276         }
    3277         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    3278             psFree(object);
    3279             exit(EXIT_FAILURE);
    3280         }
    3281             psFree(object);
    3282             exit(EXIT_FAILURE);
    3283         }
    3284 
    3285         psFree(object);
    3286     }
    3287 
    3288     {
    3289         psMetadata      *md;
    3290         detResidImfileRow *object;
    3291 
    3292         md = psMetadataAlloc();
    3293             psFree(md);
    3294             exit(EXIT_FAILURE);
    3295         }
    3296         if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
    3297             psFree(md);
    3298             exit(EXIT_FAILURE);
    3299         }
    3300             psFree(md);
    3301             exit(EXIT_FAILURE);
    3302         }
    3303         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
    3304             psFree(md);
    3305             exit(EXIT_FAILURE);
    3306         }
    3307         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    3308             psFree(md);
    3309             exit(EXIT_FAILURE);
    3310         }
    3311         if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
    3312             psFree(md);
    3313             exit(EXIT_FAILURE);
    3314         }
    3315         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
    3316             psFree(md);
    3317             exit(EXIT_FAILURE);
    3318         }
    3319         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
    3320             psFree(md);
    3321             exit(EXIT_FAILURE);
    3322         }
    3323         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
    3324             psFree(md);
    3325             exit(EXIT_FAILURE);
    3326         }
    3327         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_skewness", 0, NULL, 64.64)) {
    3328             psFree(md);
    3329             exit(EXIT_FAILURE);
    3330         }
    3331         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_kurtosis", 0, NULL, 64.64)) {
    3332             psFree(md);
    3333             exit(EXIT_FAILURE);
    3334         }
    3335         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bin_stdev", 0, NULL, 64.64)) {
    3336             psFree(md);
    3337             exit(EXIT_FAILURE);
    3338         }
    3339         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 64.64)) {
    3340             psFree(md);
    3341             exit(EXIT_FAILURE);
    3342         }
    3343         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 64.64)) {
    3344             psFree(md);
    3345             exit(EXIT_FAILURE);
    3346         }
    3347         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 64.64)) {
    3348             psFree(md);
    3349             exit(EXIT_FAILURE);
    3350         }
    3351         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_resid_0", 0, NULL, 64.64)) {
    3352             psFree(md);
    3353             exit(EXIT_FAILURE);
    3354         }
    3355         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_resid_1", 0, NULL, 64.64)) {
    3356             psFree(md);
    3357             exit(EXIT_FAILURE);
    3358         }
    3359         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_resid_2", 0, NULL, 64.64)) {
    3360             psFree(md);
    3361             exit(EXIT_FAILURE);
    3362         }
    3363         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
    3364             psFree(md);
    3365             exit(EXIT_FAILURE);
    3366         }
    3367         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
    3368             psFree(md);
    3369             exit(EXIT_FAILURE);
    3370         }
    3371         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
    3372             psFree(md);
    3373             exit(EXIT_FAILURE);
    3374         }
    3375         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
    3376             psFree(md);
    3377             exit(EXIT_FAILURE);
    3378         }
    3379         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
    3380             psFree(md);
    3381             exit(EXIT_FAILURE);
    3382         }
    3383         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    3384             psFree(md);
    3385             exit(EXIT_FAILURE);
    3386         }
    3387             psFree(md);
    3388             exit(EXIT_FAILURE);
    3389         }
    3390 
    3391         object = detResidImfileObjectFromMetadata(md);
    3392         if (!object) {
    3393             psFree(md);
    3394             exit(EXIT_FAILURE);
    3395         }
    3396 
    3397         psFree(md);
    3398 
    3399             psFree(object);
    3400             exit(EXIT_FAILURE);
    3401         }
    3402         if (!object->iteration == -32) {
    3403             psFree(object);
    3404             exit(EXIT_FAILURE);
    3405         }
    3406             psFree(object);
    3407             exit(EXIT_FAILURE);
    3408         }
    3409         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    3410             psFree(object);
    3411             exit(EXIT_FAILURE);
    3412         }
    3413         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    3414             psFree(object);
    3415             exit(EXIT_FAILURE);
    3416         }
    3417         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    3418             psFree(object);
    3419             exit(EXIT_FAILURE);
    3420         }
    3421         if (!object->bg == 64.64) {
    3422             psFree(object);
    3423             exit(EXIT_FAILURE);
    3424         }
    3425         if (!object->bg_stdev == 64.64) {
    3426             psFree(object);
    3427             exit(EXIT_FAILURE);
    3428         }
    3429         if (!object->bg_mean_stdev == 64.64) {
    3430             psFree(object);
    3431             exit(EXIT_FAILURE);
    3432         }
    3433         if (!object->bg_skewness == 64.64) {
    3434             psFree(object);
    3435             exit(EXIT_FAILURE);
    3436         }
    3437         if (!object->bg_kurtosis == 64.64) {
    3438             psFree(object);
    3439             exit(EXIT_FAILURE);
    3440         }
    3441         if (!object->bin_stdev == 64.64) {
    3442             psFree(object);
    3443             exit(EXIT_FAILURE);
    3444         }
    3445         if (!object->fringe_0 == 64.64) {
    3446             psFree(object);
    3447             exit(EXIT_FAILURE);
    3448         }
    3449         if (!object->fringe_1 == 64.64) {
    3450             psFree(object);
    3451             exit(EXIT_FAILURE);
    3452         }
    3453         if (!object->fringe_2 == 64.64) {
    3454             psFree(object);
    3455             exit(EXIT_FAILURE);
    3456         }
    3457         if (!object->fringe_resid_0 == 64.64) {
    3458             psFree(object);
    3459             exit(EXIT_FAILURE);
    3460         }
    3461         if (!object->fringe_resid_1 == 64.64) {
    3462             psFree(object);
    3463             exit(EXIT_FAILURE);
    3464         }
    3465         if (!object->fringe_resid_2 == 64.64) {
    3466             psFree(object);
    3467             exit(EXIT_FAILURE);
    3468         }
    3469         if (!object->user_1 == 64.64) {
    3470             psFree(object);
    3471             exit(EXIT_FAILURE);
    3472         }
    3473         if (!object->user_2 == 64.64) {
    3474             psFree(object);
    3475             exit(EXIT_FAILURE);
    3476         }
    3477         if (!object->user_3 == 64.64) {
    3478             psFree(object);
    3479             exit(EXIT_FAILURE);
    3480         }
    3481         if (!object->user_4 == 64.64) {
    3482             psFree(object);
    3483             exit(EXIT_FAILURE);
    3484         }
    3485         if (!object->user_5 == 64.64) {
    3486             psFree(object);
    3487             exit(EXIT_FAILURE);
    3488         }
    3489         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    3490             psFree(object);
    3491             exit(EXIT_FAILURE);
    3492         }
    3493             psFree(object);
    3494             exit(EXIT_FAILURE);
    3495         }
    3496 
    3497         psFree(object);
    3498     }
    3499 
    3500     {
    3501         psMetadata      *md;
    3502         detResidExpRow  *object;
    3503 
    3504         md = psMetadataAlloc();
    3505             psFree(md);
    3506             exit(EXIT_FAILURE);
    3507         }
    3508         if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
    3509             psFree(md);
    3510             exit(EXIT_FAILURE);
    3511         }
    3512             psFree(md);
    3513             exit(EXIT_FAILURE);
    3514         }
    3515         if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
    3516             psFree(md);
    3517             exit(EXIT_FAILURE);
    3518         }
    3519         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
    3520             psFree(md);
    3521             exit(EXIT_FAILURE);
    3522         }
    3523         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
    3524             psFree(md);
    3525             exit(EXIT_FAILURE);
    3526         }
    3527         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
    3528             psFree(md);
    3529             exit(EXIT_FAILURE);
    3530         }
    3531         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_skewness", 0, NULL, 64.64)) {
    3532             psFree(md);
    3533             exit(EXIT_FAILURE);
    3534         }
    3535         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_kurtosis", 0, NULL, 64.64)) {
    3536             psFree(md);
    3537             exit(EXIT_FAILURE);
    3538         }
    3539         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bin_stdev", 0, NULL, 64.64)) {
    3540             psFree(md);
    3541             exit(EXIT_FAILURE);
    3542         }
    3543         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 64.64)) {
    3544             psFree(md);
    3545             exit(EXIT_FAILURE);
    3546         }
    3547         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 64.64)) {
    3548             psFree(md);
    3549             exit(EXIT_FAILURE);
    3550         }
    3551         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 64.64)) {
    3552             psFree(md);
    3553             exit(EXIT_FAILURE);
    3554         }
    3555         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_resid_0", 0, NULL, 64.64)) {
    3556             psFree(md);
    3557             exit(EXIT_FAILURE);
    3558         }
    3559         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_resid_1", 0, NULL, 64.64)) {
    3560             psFree(md);
    3561             exit(EXIT_FAILURE);
    3562         }
    3563         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_resid_2", 0, NULL, 64.64)) {
    3564             psFree(md);
    3565             exit(EXIT_FAILURE);
    3566         }
    3567         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
    3568             psFree(md);
    3569             exit(EXIT_FAILURE);
    3570         }
    3571         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
    3572             psFree(md);
    3573             exit(EXIT_FAILURE);
    3574         }
    3575         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
    3576             psFree(md);
    3577             exit(EXIT_FAILURE);
    3578         }
    3579         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
    3580             psFree(md);
    3581             exit(EXIT_FAILURE);
    3582         }
    3583         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
    3584             psFree(md);
    3585             exit(EXIT_FAILURE);
    3586         }
    3587         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    3588             psFree(md);
    3589             exit(EXIT_FAILURE);
    3590         }
    3591         if (!psMetadataAdd(md, PS_LIST_TAIL, "accept", PS_DATA_BOOL, NULL, true)) {
    3592             psFree(md);
    3593             exit(EXIT_FAILURE);
    3594         }
    3595             psFree(md);
    3596             exit(EXIT_FAILURE);
    3597         }
    3598 
    3599         object = detResidExpObjectFromMetadata(md);
    3600         if (!object) {
    3601             psFree(md);
    3602             exit(EXIT_FAILURE);
    3603         }
    3604 
    3605         psFree(md);
    3606 
    3607             psFree(object);
    3608             exit(EXIT_FAILURE);
    3609         }
    3610         if (!object->iteration == -32) {
    3611             psFree(object);
    3612             exit(EXIT_FAILURE);
    3613         }
    3614             psFree(object);
    3615             exit(EXIT_FAILURE);
    3616         }
    3617         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    3618             psFree(object);
    3619             exit(EXIT_FAILURE);
    3620         }
    3621         if (!object->bg == 64.64) {
    3622             psFree(object);
    3623             exit(EXIT_FAILURE);
    3624         }
    3625         if (!object->bg_stdev == 64.64) {
    3626             psFree(object);
    3627             exit(EXIT_FAILURE);
    3628         }
    3629         if (!object->bg_mean_stdev == 64.64) {
    3630             psFree(object);
    3631             exit(EXIT_FAILURE);
    3632         }
    3633         if (!object->bg_skewness == 64.64) {
    3634             psFree(object);
    3635             exit(EXIT_FAILURE);
    3636         }
    3637         if (!object->bg_kurtosis == 64.64) {
    3638             psFree(object);
    3639             exit(EXIT_FAILURE);
    3640         }
    3641         if (!object->bin_stdev == 64.64) {
    3642             psFree(object);
    3643             exit(EXIT_FAILURE);
    3644         }
    3645         if (!object->fringe_0 == 64.64) {
    3646             psFree(object);
    3647             exit(EXIT_FAILURE);
    3648         }
    3649         if (!object->fringe_1 == 64.64) {
    3650             psFree(object);
    3651             exit(EXIT_FAILURE);
    3652         }
    3653         if (!object->fringe_2 == 64.64) {
    3654             psFree(object);
    3655             exit(EXIT_FAILURE);
    3656         }
    3657         if (!object->fringe_resid_0 == 64.64) {
    3658             psFree(object);
    3659             exit(EXIT_FAILURE);
    3660         }
    3661         if (!object->fringe_resid_1 == 64.64) {
    3662             psFree(object);
    3663             exit(EXIT_FAILURE);
    3664         }
    3665         if (!object->fringe_resid_2 == 64.64) {
    3666             psFree(object);
    3667             exit(EXIT_FAILURE);
    3668         }
    3669         if (!object->user_1 == 64.64) {
    3670             psFree(object);
    3671             exit(EXIT_FAILURE);
    3672         }
    3673         if (!object->user_2 == 64.64) {
    3674             psFree(object);
    3675             exit(EXIT_FAILURE);
    3676         }
    3677         if (!object->user_3 == 64.64) {
    3678             psFree(object);
    3679             exit(EXIT_FAILURE);
    3680         }
    3681         if (!object->user_4 == 64.64) {
    3682             psFree(object);
    3683             exit(EXIT_FAILURE);
    3684         }
    3685         if (!object->user_5 == 64.64) {
    3686             psFree(object);
    3687             exit(EXIT_FAILURE);
    3688         }
    3689         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    3690             psFree(object);
    3691             exit(EXIT_FAILURE);
    3692         }
    36933653        if (!object->accept == true) {
    36943654            psFree(object);
    36953655            exit(EXIT_FAILURE);
    36963656        }
    3697             psFree(object);
    3698             exit(EXIT_FAILURE);
    3699         }
    3700 
    3701         psFree(object);
    3702     }
    3703 
    3704     {
    3705         psMetadata      *md;
    3706         detRunSummaryRow *object;
    3707 
    3708         md = psMetadataAlloc();
    3709             psFree(md);
    3710             exit(EXIT_FAILURE);
    3711         }
    3712         if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
    3713             psFree(md);
    3714             exit(EXIT_FAILURE);
    3715         }
    3716         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
    3717             psFree(md);
    3718             exit(EXIT_FAILURE);
    3719         }
    3720         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
    3721             psFree(md);
    3722             exit(EXIT_FAILURE);
    3723         }
    3724         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
    3725             psFree(md);
    3726             exit(EXIT_FAILURE);
    3727         }
    3728         if (!psMetadataAdd(md, PS_LIST_TAIL, "accept", PS_DATA_BOOL, NULL, true)) {
    3729             psFree(md);
    3730             exit(EXIT_FAILURE);
    3731         }
    3732             psFree(md);
    3733             exit(EXIT_FAILURE);
    3734         }
    3735 
    3736         object = detRunSummaryObjectFromMetadata(md);
    3737         if (!object) {
    3738             psFree(md);
    3739             exit(EXIT_FAILURE);
    3740         }
    3741 
    3742         psFree(md);
    3743 
    3744             psFree(object);
    3745             exit(EXIT_FAILURE);
    3746         }
    3747         if (!object->iteration == -32) {
    3748             psFree(object);
    3749             exit(EXIT_FAILURE);
    3750         }
    3751         if (!object->bg == 64.64) {
    3752             psFree(object);
    3753             exit(EXIT_FAILURE);
    3754         }
    3755         if (!object->bg_stdev == 64.64) {
    3756             psFree(object);
    3757             exit(EXIT_FAILURE);
    3758         }
    3759         if (!object->bg_mean_stdev == 64.64) {
    3760             psFree(object);
    3761             exit(EXIT_FAILURE);
    3762         }
    3763         if (!object->accept == true) {
    3764             psFree(object);
    3765             exit(EXIT_FAILURE);
    3766         }
    3767             psFree(object);
    3768             exit(EXIT_FAILURE);
    3769         }
    3770 
    3771         psFree(object);
    3772     }
    3773 
    3774     {
    3775         psMetadata      *md;
    3776         detRegisteredImfileRow *object;
    3777 
    3778         md = psMetadataAlloc();
    3779             psFree(md);
    3780             exit(EXIT_FAILURE);
    3781         }
    3782         if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
    3783             psFree(md);
    3784             exit(EXIT_FAILURE);
    3785         }
    3786         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
    3787             psFree(md);
    3788             exit(EXIT_FAILURE);
    3789         }
    3790         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    3791             psFree(md);
    3792             exit(EXIT_FAILURE);
    3793         }
    3794         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
    3795             psFree(md);
    3796             exit(EXIT_FAILURE);
    3797         }
    3798         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
    3799             psFree(md);
    3800             exit(EXIT_FAILURE);
    3801         }
    3802         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
    3803             psFree(md);
    3804             exit(EXIT_FAILURE);
    3805         }
    3806         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
    3807             psFree(md);
    3808             exit(EXIT_FAILURE);
    3809         }
    3810         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
    3811             psFree(md);
    3812             exit(EXIT_FAILURE);
    3813         }
    3814         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
    3815             psFree(md);
    3816             exit(EXIT_FAILURE);
    3817         }
    3818         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
    3819             psFree(md);
    3820             exit(EXIT_FAILURE);
    3821         }
    3822         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
    3823             psFree(md);
    3824             exit(EXIT_FAILURE);
    3825         }
    3826         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    3827             psFree(md);
    3828             exit(EXIT_FAILURE);
    3829         }
    3830             psFree(md);
    3831             exit(EXIT_FAILURE);
    3832         }
    3833 
    3834         object = detRegisteredImfileObjectFromMetadata(md);
    3835         if (!object) {
    3836             psFree(md);
    3837             exit(EXIT_FAILURE);
    3838         }
    3839 
    3840         psFree(md);
    3841 
    3842             psFree(object);
    3843             exit(EXIT_FAILURE);
    3844         }
    3845         if (!object->iteration == -32) {
    3846             psFree(object);
    3847             exit(EXIT_FAILURE);
    3848         }
    3849         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    3850             psFree(object);
    3851             exit(EXIT_FAILURE);
    3852         }
    3853         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    3854             psFree(object);
    3855             exit(EXIT_FAILURE);
    3856         }
    3857         if (!object->bg == 64.64) {
    3858             psFree(object);
    3859             exit(EXIT_FAILURE);
    3860         }
    3861         if (!object->bg_stdev == 64.64) {
    3862             psFree(object);
    3863             exit(EXIT_FAILURE);
    3864         }
    3865         if (!object->bg_mean_stdev == 64.64) {
    3866             psFree(object);
    3867             exit(EXIT_FAILURE);
    3868         }
    3869         if (!object->user_1 == 64.64) {
    3870             psFree(object);
    3871             exit(EXIT_FAILURE);
    3872         }
    3873         if (!object->user_2 == 64.64) {
    3874             psFree(object);
    3875             exit(EXIT_FAILURE);
    3876         }
    3877         if (!object->user_3 == 64.64) {
    3878             psFree(object);
    3879             exit(EXIT_FAILURE);
    3880         }
    3881         if (!object->user_4 == 64.64) {
    3882             psFree(object);
    3883             exit(EXIT_FAILURE);
    3884         }
    3885         if (!object->user_5 == 64.64) {
    3886             psFree(object);
    3887             exit(EXIT_FAILURE);
    3888         }
    3889         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    3890             psFree(object);
    3891             exit(EXIT_FAILURE);
    3892         }
    3893             psFree(object);
    3894             exit(EXIT_FAILURE);
    3895         }
    3896 
    3897         psFree(object);
    3898     }
    3899 
    3900     {
    3901         psMetadata      *md;
    3902         detCorrectedExpRow *object;
    3903 
    3904         md = psMetadataAlloc();
    3905             psFree(md);
    3906             exit(EXIT_FAILURE);
    3907         }
    3908             psFree(md);
    3909             exit(EXIT_FAILURE);
    3910         }
    3911         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    3912             psFree(md);
    3913             exit(EXIT_FAILURE);
    3914         }
    3915             psFree(md);
    3916             exit(EXIT_FAILURE);
    3917         }
    3918         if (!psMetadataAddStr(md, PS_LIST_TAIL, "corr_type", 0, NULL, "a string")) {
    3919             psFree(md);
    3920             exit(EXIT_FAILURE);
    3921         }
    3922         if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
    3923             psFree(md);
    3924             exit(EXIT_FAILURE);
    3925         }
    3926         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    3927             psFree(md);
    3928             exit(EXIT_FAILURE);
    3929         }
    3930             psFree(md);
    3931             exit(EXIT_FAILURE);
    3932         }
    3933 
    3934         object = detCorrectedExpObjectFromMetadata(md);
    3935         if (!object) {
    3936             psFree(md);
    3937             exit(EXIT_FAILURE);
    3938         }
    3939 
    3940         psFree(md);
    3941 
    3942             psFree(object);
    3943             exit(EXIT_FAILURE);
    3944         }
    3945             psFree(object);
    3946             exit(EXIT_FAILURE);
    3947         }
    3948         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    3949             psFree(object);
    3950             exit(EXIT_FAILURE);
    3951         }
    3952             psFree(object);
    3953             exit(EXIT_FAILURE);
    3954         }
    3955         if (strncmp(object->corr_type, "a string", MAX_STRING_LENGTH)) {
    3956             psFree(object);
    3957             exit(EXIT_FAILURE);
    3958         }
    3959         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    3960             psFree(object);
    3961             exit(EXIT_FAILURE);
    3962         }
    3963         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    3964             psFree(object);
    3965             exit(EXIT_FAILURE);
    3966         }
    3967             psFree(object);
    3968             exit(EXIT_FAILURE);
    3969         }
    3970 
    3971         psFree(object);
    3972     }
    3973 
    3974     {
    3975         psMetadata      *md;
    3976         detCorrectedImfileRow *object;
    3977 
    3978         md = psMetadataAlloc();
    3979             psFree(md);
    3980             exit(EXIT_FAILURE);
    3981         }
    3982             psFree(md);
    3983             exit(EXIT_FAILURE);
    3984         }
    3985         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
    3986             psFree(md);
    3987             exit(EXIT_FAILURE);
    3988         }
    3989         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    3990             psFree(md);
    3991             exit(EXIT_FAILURE);
    3992         }
    3993         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    3994             psFree(md);
    3995             exit(EXIT_FAILURE);
    3996         }
    3997             psFree(md);
    3998             exit(EXIT_FAILURE);
    3999         }
    4000 
    4001         object = detCorrectedImfileObjectFromMetadata(md);
    4002         if (!object) {
    4003             psFree(md);
    4004             exit(EXIT_FAILURE);
    4005         }
    4006 
    4007         psFree(md);
    4008 
    4009             psFree(object);
    4010             exit(EXIT_FAILURE);
    4011         }
    4012             psFree(object);
    4013             exit(EXIT_FAILURE);
    4014         }
    4015         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    4016             psFree(object);
    4017             exit(EXIT_FAILURE);
    4018         }
    4019         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    4020             psFree(object);
    4021             exit(EXIT_FAILURE);
    4022         }
    4023         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    4024             psFree(object);
    4025             exit(EXIT_FAILURE);
    4026         }
    4027             psFree(object);
    4028             exit(EXIT_FAILURE);
    4029         }
    4030 
    4031         psFree(object);
    4032     }
    4033 
    4034     {
    4035         psMetadata      *md;
    4036         magicRunRow     *object;
    4037 
    4038         md = psMetadataAlloc();
    4039             psFree(md);
    4040             exit(EXIT_FAILURE);
    4041         }
    4042         if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
    4043             psFree(md);
    4044             exit(EXIT_FAILURE);
    4045         }
    4046         if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
    4047             psFree(md);
    4048             exit(EXIT_FAILURE);
    4049         }
    4050         if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir_state", 0, NULL, "a string")) {
    4051             psFree(md);
    4052             exit(EXIT_FAILURE);
    4053         }
    4054         if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
    4055             psFree(md);
    4056             exit(EXIT_FAILURE);
    4057         }
    4058         if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
    4059             psFree(md);
    4060             exit(EXIT_FAILURE);
    4061         }
    4062             psFree(md);
    4063             exit(EXIT_FAILURE);
    4064         }
    4065 
    4066         object = magicRunObjectFromMetadata(md);
    4067         if (!object) {
    4068             psFree(md);
    4069             exit(EXIT_FAILURE);
    4070         }
    4071 
    4072         psFree(md);
    4073 
    4074             psFree(object);
    4075             exit(EXIT_FAILURE);
    4076         }
    4077         if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    4078             psFree(object);
    4079             exit(EXIT_FAILURE);
    4080         }
    4081         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    4082             psFree(object);
    4083             exit(EXIT_FAILURE);
    4084         }
    4085         if (strncmp(object->workdir_state, "a string", MAX_STRING_LENGTH)) {
    4086             psFree(object);
    4087             exit(EXIT_FAILURE);
    4088         }
    4089         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    4090             psFree(object);
    4091             exit(EXIT_FAILURE);
    4092         }
    4093         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    4094             psFree(object);
    4095             exit(EXIT_FAILURE);
    4096         }
    4097             psFree(object);
    4098             exit(EXIT_FAILURE);
    4099         }
    4100 
    4101         psFree(object);
    4102     }
    4103 
    4104     {
    4105         psMetadata      *md;
    4106         magicInputSkyfileRow *object;
    4107 
    4108         md = psMetadataAlloc();
    4109             psFree(md);
    4110             exit(EXIT_FAILURE);
    4111         }
    4112             psFree(md);
    4113             exit(EXIT_FAILURE);
    4114         }
    4115         if (!psMetadataAddStr(md, PS_LIST_TAIL, "node", 0, NULL, "a string")) {
    4116             psFree(md);
    4117             exit(EXIT_FAILURE);
    4118         }
    4119 
    4120         object = magicInputSkyfileObjectFromMetadata(md);
    4121         if (!object) {
    4122             psFree(md);
    4123             exit(EXIT_FAILURE);
    4124         }
    4125 
    4126         psFree(md);
    4127 
    4128             psFree(object);
    4129             exit(EXIT_FAILURE);
    4130         }
    4131             psFree(object);
    4132             exit(EXIT_FAILURE);
    4133         }
    4134         if (strncmp(object->node, "a string", MAX_STRING_LENGTH)) {
    4135             psFree(object);
    4136             exit(EXIT_FAILURE);
    4137         }
    4138 
    4139         psFree(object);
    4140     }
    4141 
    4142     {
    4143         psMetadata      *md;
    4144         magicTreeRow    *object;
    4145 
    4146         md = psMetadataAlloc();
    4147             psFree(md);
    4148             exit(EXIT_FAILURE);
    4149         }
    4150         if (!psMetadataAddStr(md, PS_LIST_TAIL, "node", 0, NULL, "a string")) {
    4151             psFree(md);
    4152             exit(EXIT_FAILURE);
    4153         }
    4154         if (!psMetadataAddStr(md, PS_LIST_TAIL, "dep", 0, NULL, "a string")) {
    4155             psFree(md);
    4156             exit(EXIT_FAILURE);
    4157         }
    4158 
    4159         object = magicTreeObjectFromMetadata(md);
    4160         if (!object) {
    4161             psFree(md);
    4162             exit(EXIT_FAILURE);
    4163         }
    4164 
    4165         psFree(md);
    4166 
    4167             psFree(object);
    4168             exit(EXIT_FAILURE);
    4169         }
    4170         if (strncmp(object->node, "a string", MAX_STRING_LENGTH)) {
    4171             psFree(object);
    4172             exit(EXIT_FAILURE);
    4173         }
    4174         if (strncmp(object->dep, "a string", MAX_STRING_LENGTH)) {
    4175             psFree(object);
    4176             exit(EXIT_FAILURE);
    4177         }
    4178 
    4179         psFree(object);
    4180     }
    4181 
    4182     {
    4183         psMetadata      *md;
    4184         magicNodeResultRow *object;
    4185 
    4186         md = psMetadataAlloc();
    4187             psFree(md);
    4188             exit(EXIT_FAILURE);
    4189         }
    4190         if (!psMetadataAddStr(md, PS_LIST_TAIL, "node", 0, NULL, "a string")) {
    4191             psFree(md);
    4192             exit(EXIT_FAILURE);
    4193         }
    4194         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    4195             psFree(md);
    4196             exit(EXIT_FAILURE);
    4197         }
    4198 
    4199         object = magicNodeResultObjectFromMetadata(md);
    4200         if (!object) {
    4201             psFree(md);
    4202             exit(EXIT_FAILURE);
    4203         }
    4204 
    4205         psFree(md);
    4206 
    4207             psFree(object);
    4208             exit(EXIT_FAILURE);
    4209         }
    4210         if (strncmp(object->node, "a string", MAX_STRING_LENGTH)) {
    4211             psFree(object);
    4212             exit(EXIT_FAILURE);
    4213         }
    4214         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    4215             psFree(object);
    4216             exit(EXIT_FAILURE);
    4217         }
    4218 
    4219         psFree(object);
    4220     }
    4221 
    4222     {
    4223         psMetadata      *md;
    4224         magicMaskRow    *object;
    4225 
    4226         md = psMetadataAlloc();
    4227             psFree(md);
    4228             exit(EXIT_FAILURE);
    4229         }
    4230         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    4231             psFree(md);
    4232             exit(EXIT_FAILURE);
    4233         }
    4234 
    4235         object = magicMaskObjectFromMetadata(md);
    4236         if (!object) {
    4237             psFree(md);
    4238             exit(EXIT_FAILURE);
    4239         }
    4240 
    4241         psFree(md);
    4242 
    4243             psFree(object);
    4244             exit(EXIT_FAILURE);
    4245         }
    4246         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    4247             psFree(object);
    4248             exit(EXIT_FAILURE);
    4249         }
    4250 
    4251         psFree(object);
    4252     }
    4253 
    4254     {
    4255         psMetadata      *md;
    4256         magicSkyfileMaskRow *object;
    4257 
    4258         md = psMetadataAlloc();
    4259             psFree(md);
    4260             exit(EXIT_FAILURE);
    4261         }
    4262             psFree(md);
    4263             exit(EXIT_FAILURE);
    4264         }
    4265         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    4266             psFree(md);
    4267             exit(EXIT_FAILURE);
    4268         }
    4269 
    4270         object = magicSkyfileMaskObjectFromMetadata(md);
    4271         if (!object) {
    4272             psFree(md);
    4273             exit(EXIT_FAILURE);
    4274         }
    4275 
    4276         psFree(md);
    4277 
    4278             psFree(object);
    4279             exit(EXIT_FAILURE);
    4280         }
    4281             psFree(object);
    4282             exit(EXIT_FAILURE);
    4283         }
    4284         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    42853657            psFree(object);
    42863658            exit(EXIT_FAILURE);
  • trunk/ippdb/tests/selectrowsfits.c

    r15343 r15420  
    2121        }
    2222
    23         if (!pzDataStoreSelectRowsFits(dbh, fits, NULL, 1)) {
    24             exit(EXIT_FAILURE);
    25         }
    26 
    27         psFree(fits);
    28         psDBCleanup(dbh);
    29     }
    30 
    31     {
    32         psDB            *dbh;
    33         psFits          *fits;
    34 
    35         dbh = psDBInit("localhost", "test", NULL, "test");
    36         if (!dbh) {
    37             exit(EXIT_FAILURE);
    38         }
    39 
    40         fits = psFitsOpen(TMP_FILENAME, "w");
    41         if (!fits) {
    42             exit(EXIT_FAILURE);
    43         }
    44 
    4523        if (!summitExpSelectRowsFits(dbh, fits, NULL, 1)) {
    4624            exit(EXIT_FAILURE);
     
    307285        }
    308286
     287        if (!chipInputImfileSelectRowsFits(dbh, fits, NULL, 1)) {
     288            exit(EXIT_FAILURE);
     289        }
     290
     291        psFree(fits);
     292        psDBCleanup(dbh);
     293    }
     294
     295    {
     296        psDB            *dbh;
     297        psFits          *fits;
     298
     299        dbh = psDBInit("localhost", "test", NULL, "test");
     300        if (!dbh) {
     301            exit(EXIT_FAILURE);
     302        }
     303
     304        fits = psFitsOpen(TMP_FILENAME, "w");
     305        if (!fits) {
     306            exit(EXIT_FAILURE);
     307        }
     308
    309309        if (!chipProcessedImfileSelectRowsFits(dbh, fits, NULL, 1)) {
    310310            exit(EXIT_FAILURE);
     
    858858
    859859        if (!detRunSummarySelectRowsFits(dbh, fits, NULL, 1)) {
    860             exit(EXIT_FAILURE);
    861         }
    862 
    863         psFree(fits);
    864         psDBCleanup(dbh);
    865     }
    866 
    867     {
    868         psDB            *dbh;
    869         psFits          *fits;
    870 
    871         dbh = psDBInit("localhost", "test", NULL, "test");
    872         if (!dbh) {
    873             exit(EXIT_FAILURE);
    874         }
    875 
    876         fits = psFitsOpen(TMP_FILENAME, "w");
    877         if (!fits) {
    878             exit(EXIT_FAILURE);
    879         }
    880 
    881         if (!detRegisteredImfileSelectRowsFits(dbh, fits, NULL, 1)) {
    882             exit(EXIT_FAILURE);
    883         }
    884 
    885         psFree(fits);
    886         psDBCleanup(dbh);
    887     }
    888 
    889     {
    890         psDB            *dbh;
    891         psFits          *fits;
    892 
    893         dbh = psDBInit("localhost", "test", NULL, "test");
    894         if (!dbh) {
    895             exit(EXIT_FAILURE);
    896         }
    897 
    898         fits = psFitsOpen(TMP_FILENAME, "w");
    899         if (!fits) {
    900             exit(EXIT_FAILURE);
    901         }
    902 
    903         if (!detCorrectedExpSelectRowsFits(dbh, fits, NULL, 1)) {
    904             exit(EXIT_FAILURE);
    905         }
    906 
    907         psFree(fits);
    908         psDBCleanup(dbh);
    909     }
    910 
    911     {
    912         psDB            *dbh;
    913         psFits          *fits;
    914 
    915         dbh = psDBInit("localhost", "test", NULL, "test");
    916         if (!dbh) {
    917             exit(EXIT_FAILURE);
    918         }
    919 
    920         fits = psFitsOpen(TMP_FILENAME, "w");
    921         if (!fits) {
    922             exit(EXIT_FAILURE);
    923         }
    924 
    925         if (!detCorrectedImfileSelectRowsFits(dbh, fits, NULL, 1)) {
    926             exit(EXIT_FAILURE);
    927         }
    928 
    929         psFree(fits);
    930         psDBCleanup(dbh);
    931     }
    932 
    933     {
    934         psDB            *dbh;
    935         psFits          *fits;
    936 
    937         dbh = psDBInit("localhost", "test", NULL, "test");
    938         if (!dbh) {
    939             exit(EXIT_FAILURE);
    940         }
    941 
    942         fits = psFitsOpen(TMP_FILENAME, "w");
    943         if (!fits) {
    944             exit(EXIT_FAILURE);
    945         }
    946 
    947         if (!magicRunSelectRowsFits(dbh, fits, NULL, 1)) {
    948             exit(EXIT_FAILURE);
    949         }
    950 
    951         psFree(fits);
    952         psDBCleanup(dbh);
    953     }
    954 
    955     {
    956         psDB            *dbh;
    957         psFits          *fits;
    958 
    959         dbh = psDBInit("localhost", "test", NULL, "test");
    960         if (!dbh) {
    961             exit(EXIT_FAILURE);
    962         }
    963 
    964         fits = psFitsOpen(TMP_FILENAME, "w");
    965         if (!fits) {
    966             exit(EXIT_FAILURE);
    967         }
    968 
    969         if (!magicInputSkyfileSelectRowsFits(dbh, fits, NULL, 1)) {
    970             exit(EXIT_FAILURE);
    971         }
    972 
    973         psFree(fits);
    974         psDBCleanup(dbh);
    975     }
    976 
    977     {
    978         psDB            *dbh;
    979         psFits          *fits;
    980 
    981         dbh = psDBInit("localhost", "test", NULL, "test");
    982         if (!dbh) {
    983             exit(EXIT_FAILURE);
    984         }
    985 
    986         fits = psFitsOpen(TMP_FILENAME, "w");
    987         if (!fits) {
    988             exit(EXIT_FAILURE);
    989         }
    990 
    991         if (!magicTreeSelectRowsFits(dbh, fits, NULL, 1)) {
    992             exit(EXIT_FAILURE);
    993         }
    994 
    995         psFree(fits);
    996         psDBCleanup(dbh);
    997     }
    998 
    999     {
    1000         psDB            *dbh;
    1001         psFits          *fits;
    1002 
    1003         dbh = psDBInit("localhost", "test", NULL, "test");
    1004         if (!dbh) {
    1005             exit(EXIT_FAILURE);
    1006         }
    1007 
    1008         fits = psFitsOpen(TMP_FILENAME, "w");
    1009         if (!fits) {
    1010             exit(EXIT_FAILURE);
    1011         }
    1012 
    1013         if (!magicNodeResultSelectRowsFits(dbh, fits, NULL, 1)) {
    1014             exit(EXIT_FAILURE);
    1015         }
    1016 
    1017         psFree(fits);
    1018         psDBCleanup(dbh);
    1019     }
    1020 
    1021     {
    1022         psDB            *dbh;
    1023         psFits          *fits;
    1024 
    1025         dbh = psDBInit("localhost", "test", NULL, "test");
    1026         if (!dbh) {
    1027             exit(EXIT_FAILURE);
    1028         }
    1029 
    1030         fits = psFitsOpen(TMP_FILENAME, "w");
    1031         if (!fits) {
    1032             exit(EXIT_FAILURE);
    1033         }
    1034 
    1035         if (!magicMaskSelectRowsFits(dbh, fits, NULL, 1)) {
    1036             exit(EXIT_FAILURE);
    1037         }
    1038 
    1039         psFree(fits);
    1040         psDBCleanup(dbh);
    1041     }
    1042 
    1043     {
    1044         psDB            *dbh;
    1045         psFits          *fits;
    1046 
    1047         dbh = psDBInit("localhost", "test", NULL, "test");
    1048         if (!dbh) {
    1049             exit(EXIT_FAILURE);
    1050         }
    1051 
    1052         fits = psFitsOpen(TMP_FILENAME, "w");
    1053         if (!fits) {
    1054             exit(EXIT_FAILURE);
    1055         }
    1056 
    1057         if (!magicSkyfileMaskSelectRowsFits(dbh, fits, NULL, 1)) {
    1058860            exit(EXIT_FAILURE);
    1059861        }
Note: See TracChangeset for help on using the changeset viewer.