IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 15421


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

update

Location:
trunk/ippdb
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippdb/Makefile.am

    r15420 r15421  
    1010man_MANS = \
    1111    $(top_builddir)/docs/man/man3/ippdb.3 \
     12    $(top_builddir)/docs/man/man3/pzDataStoreRow.3 \
    1213    $(top_builddir)/docs/man/man3/summitExpRow.3 \
    1314    $(top_builddir)/docs/man/man3/summitImfileRow.3 \
     
    2223    $(top_builddir)/docs/man/man3/guidePendingExpRow.3 \
    2324    $(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
     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
    5160
    5261
    53 docs/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:
     62docs/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:
    5463        $(DOXYGEN)
    5564
  • trunk/ippdb/configure.ac

    r15420 r15421  
    77AC_PREREQ(2.61)
    88
    9 AC_INIT([ippdb], [1.1.23], [pan-starrs.ifa.hawaii.edu])
     9AC_INIT([ippdb], [1.1.28], [pan-starrs.ifa.hawaii.edu])
    1010AC_CONFIG_SRCDIR([ippdb.pc.in])
    1111
  • trunk/ippdb/src/ippdb.c

    r15420 r15421  
    3131#include "ippdb.h"
    3232
     33#define PZDATASTORE_TABLE_NAME "pzDataStore"
    3334#define SUMMITEXP_TABLE_NAME "summitExp"
    3435#define SUMMITIMFILE_TABLE_NAME "summitImfile"
     
    4344#define GUIDEPENDINGEXP_TABLE_NAME "guidePendingExp"
    4445#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"
    7281#define MAX_STRING_LENGTH 1024
    7382
     
    246255}
    247256
     257static void pzDataStoreRowFree(pzDataStoreRow *object);
     258
     259pzDataStoreRow *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
     273static void pzDataStoreRowFree(pzDataStoreRow *object)
     274{
     275    psFree(object->camera);
     276    psFree(object->telescope);
     277    psFree(object->uri);
     278}
     279
     280bool 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
     306bool pzDataStoreDropTable(psDB *dbh)
     307{
     308    return psDBDropTable(dbh, PZDATASTORE_TABLE_NAME);
     309}
     310
     311bool 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
     336long 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}
     350bool pzDataStoreInsertObject(psDB *dbh, pzDataStoreRow *object)
     351{
     352    return pzDataStoreInsert(dbh, object->camera, object->telescope, object->uri);
     353}
     354
     355bool 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
     366bool 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
     401bool 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
     422psMetadata *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
     445pzDataStoreRow *pzDataStoreObjectFromMetadata(psMetadata *md)
     446{
     447
     448bool 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}
     467psArray *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}
     492bool 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}
     510long 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}
     529bool 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}
     560bool 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}
    248575static void summitExpRowFree(summitExpRow *object);
    249576
     
    14201747static void pzPendingImfileRowFree(pzPendingImfileRow *object);
    14211748
    1422 pzPendingImfileRow *pzPendingImfileRowAlloc(const char *exp_name, const char *camera, const char *telescope, const char *class, const char *class_id, psS64 exp_id)
     1749pzPendingImfileRow *pzPendingImfileRowAlloc(const char *exp_name, const char *camera, const char *telescope, const char *class, const char *class_id)
    14231750{
    14241751    pzPendingImfileRow *_object;
     
    14321759    _object->class = psStringCopy(class);
    14331760    _object->class_id = psStringCopy(class_id);
    1434     _object->exp_id = exp_id;
    14351761
    14361762    return _object;
     
    14741800        return false;
    14751801    }
    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     }
    14811802
    14821803    bool status = psDBCreateTable(dbh, PZPENDINGIMFILE_TABLE_NAME, md);
     
    14921813}
    14931814
    1494 bool pzPendingImfileInsert(psDB * dbh, const char *exp_name, const char *camera, const char *telescope, const char *class, const char *class_id, psS64 exp_id)
     1815bool pzPendingImfileInsert(psDB * dbh, const char *exp_name, const char *camera, const char *telescope, const char *class, const char *class_id)
    14951816{
    14961817    psMetadata *md = psMetadataAlloc();
     
    15171838    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, class_id)) {
    15181839        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");
    15241840        psFree(md);
    15251841        return false;
     
    15481864bool pzPendingImfileInsertObject(psDB *dbh, pzPendingImfileRow *object)
    15491865{
    1550     return pzPendingImfileInsert(dbh, object->exp_name, object->camera, object->telescope, object->class, object->class_id, object->exp_id);
     1866    return pzPendingImfileInsert(dbh, object->exp_name, object->camera, object->telescope, object->class, object->class_id);
    15511867}
    15521868
     
    16461962        return false;
    16471963    }
    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     }
    16531964
    16541965
     
    16851996        return false;
    16861997    }
    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);
     1998
     1999    return pzPendingImfileRowAlloc(exp_name, camera, telescope, class, class_id);
    16942000}
    16952001psArray *pzPendingImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    21212427static void pzDoneImfileRowFree(pzDoneImfileRow *object);
    21222428
    2123 pzDoneImfileRow *pzDoneImfileRowAlloc(const char *exp_name, const char *camera, const char *telescope, const char *class, const char *class_id, psS64 exp_id, const char *uri)
     2429pzDoneImfileRow *pzDoneImfileRowAlloc(const char *exp_name, const char *camera, const char *telescope, const char *class, const char *class_id, const char *uri)
    21242430{
    21252431    pzDoneImfileRow *_object;
     
    21332439    _object->class = psStringCopy(class);
    21342440    _object->class_id = psStringCopy(class_id);
    2135     _object->exp_id = exp_id;
    21362441    _object->uri = psStringCopy(uri);
    21372442
     
    21772482        return false;
    21782483    }
    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     }
    21842484    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, "255")) {
    21852485        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     
    22002500}
    22012501
    2202 bool 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)
     2502bool pzDoneImfileInsert(psDB * dbh, const char *exp_name, const char *camera, const char *telescope, const char *class, const char *class_id, const char *uri)
    22032503{
    22042504    psMetadata *md = psMetadataAlloc();
     
    22252525    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, class_id)) {
    22262526        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");
    22322527        psFree(md);
    22332528        return false;
     
    22612556bool pzDoneImfileInsertObject(psDB *dbh, pzDoneImfileRow *object)
    22622557{
    2263     return pzDoneImfileInsert(dbh, object->exp_name, object->camera, object->telescope, object->class, object->class_id, object->exp_id, object->uri);
     2558    return pzDoneImfileInsert(dbh, object->exp_name, object->camera, object->telescope, object->class, object->class_id, object->uri);
    22642559}
    22652560
     
    23592654        return false;
    23602655    }
    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     }
    23662656    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) {
    23672657        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     
    24032693        return false;
    24042694    }
    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     }
    24102695    char* uri = psMetadataLookupPtr(&status, md, "uri");
    24112696    if (!status) {
     
    24142699    }
    24152700
    2416     return pzDoneImfileRowAlloc(exp_name, camera, telescope, class, class_id, exp_id, uri);
     2701    return pzDoneImfileRowAlloc(exp_name, camera, telescope, class, class_id, uri);
    24172702}
    24182703psArray *pzDoneImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    25262811static void newExpRowFree(newExpRow *object);
    25272812
    2528 newExpRow *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)
     2813newExpRow *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)
    25292814{
    25302815    newExpRow       *_object;
     
    25382823    _object->tmp_telescope = psStringCopy(tmp_telescope);
    25392824    _object->state = psStringCopy(state);
    2540     _object->imfiles = imfiles;
    25412825    _object->workdir = psStringCopy(workdir);
    25422826    _object->workdir_state = psStringCopy(workdir_state);
     2827    _object->reduction = psStringCopy(reduction);
    25432828
    25442829    return _object;
     
    25532838    psFree(object->workdir);
    25542839    psFree(object->workdir_state);
     2840    psFree(object->reduction);
    25552841}
    25562842
     
    25832869        return false;
    25842870    }
    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     }
    25902871    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, "destination for output files", "255")) {
    25912872        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
     
    25982879        return false;
    25992880    }
     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    }
    26002886
    26012887    bool status = psDBCreateTable(dbh, NEWEXP_TABLE_NAME, md);
     
    26112897}
    26122898
    2613 bool 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)
     2899bool 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)
    26142900{
    26152901    psMetadata *md = psMetadataAlloc();
     
    26392925        return false;
    26402926    }
    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     }
    26462927    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, workdir)) {
    26472928        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
     
    26512932    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir_state", PS_DATA_STRING, NULL, workdir_state)) {
    26522933        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");
    26532939        psFree(md);
    26542940        return false;
     
    26772963bool newExpInsertObject(psDB *dbh, newExpRow *object)
    26782964{
    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);
     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);
    26802966}
    26812967
     
    27753061        return false;
    27763062    }
    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     }
    27823063    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, object->workdir)) {
    27833064        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
     
    27903071        return false;
    27913072    }
     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    }
    27923078
    27933079
     
    28243110        return false;
    28253111    }
    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     }
    28313112    char* workdir = psMetadataLookupPtr(&status, md, "workdir");
    28323113    if (!status) {
     
    28393120        return false;
    28403121    }
    2841 
    2842     return newExpRowAlloc(exp_id, tmp_exp_name, tmp_camera, tmp_telescope, state, imfiles, workdir, workdir_state);
     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);
    28433129}
    28443130psArray *newExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    32693555static void rawExpRowFree(rawExpRow *object);
    32703556
    3271 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, 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)
     3557rawExpRow *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)
    32723558{
    32733559    rawExpRow       *_object;
     
    32833569    _object->exp_tag = psStringCopy(exp_tag);
    32843570    _object->exp_type = psStringCopy(exp_type);
    3285     _object->imfiles = imfiles;
    32863571    _object->filelevel = psStringCopy(filelevel);
    32873572    _object->workdir = psStringCopy(workdir);
     3573    _object->reduction = psStringCopy(reduction);
    32883574    _object->filter = psStringCopy(filter);
    32893575    _object->airmass = airmass;
     
    33213607    psFree(object->filelevel);
    33223608    psFree(object->workdir);
     3609    psFree(object->reduction);
    33233610    psFree(object->filter);
    33243611    psFree(object->object);
     
    33633650        return false;
    33643651    }
    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     }
    33703652    if (!psMetadataAdd(md, PS_LIST_TAIL, "filelevel", PS_DATA_STRING, NULL, "64")) {
    33713653        psError(PS_ERR_UNKNOWN, false, "failed to add item filelevel");
     
    33783660        return false;
    33793661    }
     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    }
    33803667    if (!psMetadataAdd(md, PS_LIST_TAIL, "filter", PS_DATA_STRING, NULL, "64")) {
    33813668        psError(PS_ERR_UNKNOWN, false, "failed to add item filter");
     
    34963783}
    34973784
    3498 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, 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)
     3785bool 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)
    34993786{
    35003787    psMetadata *md = psMetadataAlloc();
     
    35343821        return false;
    35353822    }
    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     }
    35413823    if (!psMetadataAdd(md, PS_LIST_TAIL, "filelevel", PS_DATA_STRING, NULL, filelevel)) {
    35423824        psError(PS_ERR_UNKNOWN, false, "failed to add item filelevel");
     
    35463828    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, workdir)) {
    35473829        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");
    35483835        psFree(md);
    35493836        return false;
     
    36773964bool rawExpInsertObject(psDB *dbh, rawExpRow *object)
    36783965{
    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);
     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);
    36803967}
    36813968
     
    37854072        return false;
    37864073    }
    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     }
    37924074    if (!psMetadataAdd(md, PS_LIST_TAIL, "filelevel", PS_DATA_STRING, NULL, object->filelevel)) {
    37934075        psError(PS_ERR_UNKNOWN, false, "failed to add item filelevel");
     
    38004082        return false;
    38014083    }
     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    }
    38024089    if (!psMetadataAdd(md, PS_LIST_TAIL, "filter", PS_DATA_STRING, NULL, object->filter)) {
    38034090        psError(PS_ERR_UNKNOWN, false, "failed to add item filter");
     
    39494236        return false;
    39504237    }
    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     }
    39564238    char* filelevel = psMetadataLookupPtr(&status, md, "filelevel");
    39574239    if (!status) {
     
    39644246        return false;
    39654247    }
     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    }
    39664253    char* filter = psMetadataLookupPtr(&status, md, "filter");
    39674254    if (!status) {
     
    40704357    }
    40714358
    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);
     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);
    40734360}
    40744361psArray *rawExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    53915678static void chipRunRowFree(chipRunRow *object);
    53925679
    5393 chipRunRow *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)
     5680chipRunRow *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)
    53945681{
    53955682    chipRunRow      *_object;
     
    53995686
    54005687    _object->chip_id = chip_id;
     5688    _object->exp_id = exp_id;
    54015689    _object->state = psStringCopy(state);
    54025690    _object->workdir = psStringCopy(workdir);
     
    54295717        return false;
    54305718    }
    5431     if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, "key", "64")) {
     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")) {
    54325725        psError(PS_ERR_UNKNOWN, false, "failed to add item state");
    54335726        psFree(md);
     
    54395732        return false;
    54405733    }
    5441     if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir_state", PS_DATA_STRING, "key", "64")) {
     5734    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir_state", PS_DATA_STRING, "Key", "64")) {
    54425735        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir_state");
    54435736        psFree(md);
    54445737        return false;
    54455738    }
    5446     if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, "key", "64")) {
     5739    if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, "Key", "64")) {
    54475740        psError(PS_ERR_UNKNOWN, false, "failed to add item label");
    54485741        psFree(md);
     
    54545747        return false;
    54555748    }
    5456     if (!psMetadataAdd(md, PS_LIST_TAIL, "expgroup", PS_DATA_STRING, "key", "64")) {
     5749    if (!psMetadataAdd(md, PS_LIST_TAIL, "expgroup", PS_DATA_STRING, "Key", "64")) {
    54575750        psError(PS_ERR_UNKNOWN, false, "failed to add item expgroup");
    54585751        psFree(md);
     
    54775770}
    54785771
    5479 bool 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)
     5772bool 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)
    54805773{
    54815774    psMetadata *md = psMetadataAlloc();
    54825775    if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, NULL, chip_id)) {
    54835776        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");
    54845782        psFree(md);
    54855783        return false;
     
    55435841bool chipRunInsertObject(psDB *dbh, chipRunRow *object)
    55445842{
    5545     return chipRunInsert(dbh, object->chip_id, object->state, object->workdir, object->workdir_state, object->label, object->reduction, object->expgroup, object->dvodb);
     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);
    55465844}
    55475845
     
    56215919        return false;
    56225920    }
     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    }
    56235926    if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, NULL, object->state)) {
    56245927        psError(PS_ERR_UNKNOWN, false, "failed to add item state");
     
    56705973        return false;
    56715974    }
     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    }
    56725980    char* state = psMetadataLookupPtr(&status, md, "state");
    56735981    if (!status) {
     
    57066014    }
    57076015
    5708     return chipRunRowAlloc(chip_id, state, workdir, workdir_state, label, reduction, expgroup, dvodb);
     6016    return chipRunRowAlloc(chip_id, exp_id, state, workdir, workdir_state, label, reduction, expgroup, dvodb);
    57096017}
    57106018psArray *chipRunSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    58066114
    58076115    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 }
    5818 static void chipInputImfileRowFree(chipInputImfileRow *object);
    5819 
    5820 chipInputImfileRow *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 
    5834 static void chipInputImfileRowFree(chipInputImfileRow *object)
    5835 {
    5836     psFree(object->class_id);
    5837 }
    5838 
    5839 bool 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 
    5865 bool chipInputImfileDropTable(psDB *dbh)
    5866 {
    5867     return psDBDropTable(dbh, CHIPINPUTIMFILE_TABLE_NAME);
    5868 }
    5869 
    5870 bool 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 
    5895 long 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 }
    5909 bool chipInputImfileInsertObject(psDB *dbh, chipInputImfileRow *object)
    5910 {
    5911     return chipInputImfileInsert(dbh, object->chip_id, object->exp_id, object->class_id);
    5912 }
    5913 
    5914 bool 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 
    5925 bool 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 
    5960 bool 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 
    5981 psMetadata *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 
    6004 chipInputImfileRow *chipInputImfileObjectFromMetadata(psMetadata *md)
    6005 {
    6006 
    6007 bool 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 }
    6026 psArray *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 }
    6051 bool 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 }
    6069 long 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 }
    6088 bool 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 }
    6119 bool chipInputImfilePrintObject(FILE *stream, chipInputImfileRow *object, bool mdcf)
    6120 {
    6121     PS_ASSERT_PTR_NON_NULL(object, false);
    6122 
    6123     psMetadata *md = chipInputImfileMetadataFromObject(object);
    61246116
    61256117    if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
     
    61796171{
    61806172    psMetadata *md = psMetadataAlloc();
    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)) {
     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)) {
    61826174        psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
    61836175        psFree(md);
    61846176        return false;
    61856177    }
    6186     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key", 64)) {
     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)) {
    61876179        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    61886180        psFree(md);
     
    62596251        return false;
    62606252    }
    6261     if (!psMetadataAdd(md, PS_LIST_TAIL, "fwhm", PS_DATA_F32, NULL, 0.0)) {
     6253    if (!psMetadataAdd(md, PS_LIST_TAIL, "fwhm", PS_DATA_F32, "# replace this with fwhm_major", 0.0)) {
    62626254        psError(PS_ERR_UNKNOWN, false, "failed to add item fwhm");
    62636255        psFree(md);
    62646256        return false;
    62656257    }
    6266     if (!psMetadataAdd(md, PS_LIST_TAIL, "fwhm_range", PS_DATA_F32, NULL, 0.0)) {
     6258    if (!psMetadataAdd(md, PS_LIST_TAIL, "fwhm_range", PS_DATA_F32, "# replace this with fwhm_minor", 0.0)) {
    62676259        psError(PS_ERR_UNKNOWN, false, "failed to add item fwhm_range");
    62686260        psFree(md);
     
    72067198        return false;
    72077199    }
    7208     if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, "Primary Key fkey(chip_id) ref chipRun(chip_id)", 0)) {
     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)) {
    72097201        psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
    72107202        psFree(md);
     
    96009592static void warpSkyfileRowFree(warpSkyfileRow *object);
    96019593
    9602 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)
     9594warpSkyfileRow *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 good_frac, psS16 fault)
    96039595{
    96049596    warpSkyfileRow  *_object;
     
    96149606    _object->bg = bg;
    96159607    _object->bg_stdev = bg_stdev;
     9608    _object->good_frac = good_frac;
     9609    _object->fault = fault;
    96169610
    96179611    return _object;
     
    96649658        return false;
    96659659    }
     9660    if (!psMetadataAdd(md, PS_LIST_TAIL, "good_frac", PS_DATA_F64, "Key", 0.0)) {
     9661        psError(PS_ERR_UNKNOWN, false, "failed to add item good_frac");
     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    }
    96669670
    96679671    bool status = psDBCreateTable(dbh, WARPSKYFILE_TABLE_NAME, md);
     
    96779681}
    96789682
    9679 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)
     9683bool 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 good_frac, psS16 fault)
    96809684{
    96819685    psMetadata *md = psMetadataAlloc();
     
    97129716    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_stdev", PS_DATA_F64, NULL, bg_stdev)) {
    97139717        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, "good_frac", PS_DATA_F64, NULL, good_frac)) {
     9722        psError(PS_ERR_UNKNOWN, false, "failed to add item good_frac");
     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");
    97149728        psFree(md);
    97159729        return false;
     
    97389752bool warpSkyfileInsertObject(psDB *dbh, warpSkyfileRow *object)
    97399753{
    9740     return warpSkyfileInsert(dbh, object->warp_id, object->skycell_id, object->tess_id, object->uri, object->path_base, object->bg, object->bg_stdev);
     9754    return warpSkyfileInsert(dbh, object->warp_id, object->skycell_id, object->tess_id, object->uri, object->path_base, object->bg, object->bg_stdev, object->good_frac, object->fault);
    97419755}
    97429756
     
    98469860        return false;
    98479861    }
     9862    if (!psMetadataAdd(md, PS_LIST_TAIL, "good_frac", PS_DATA_F64, NULL, object->good_frac)) {
     9863        psError(PS_ERR_UNKNOWN, false, "failed to add item good_frac");
     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    }
    98489872
    98499873
     
    98909914        return false;
    98919915    }
    9892 
    9893     return warpSkyfileRowAlloc(warp_id, skycell_id, tess_id, uri, path_base, bg, bg_stdev);
     9916    psF64 good_frac = psMetadataLookupF64(&status, md, "good_frac");
     9917    if (!status) {
     9918        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item good_frac");
     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, good_frac, fault);
    98949928}
    98959929psArray *warpSkyfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    1040810442static void diffInputSkyfileRowFree(diffInputSkyfileRow *object);
    1040910443
    10410 diffInputSkyfileRow *diffInputSkyfileRowAlloc(psS64 diff_id, psS64 warp_id, const char *skycell_id, const char *tess_id, const char *kind, bool template)
     10444diffInputSkyfileRow *diffInputSkyfileRowAlloc(psS64 diff_id, bool template, psS64 stack_id, psS64 warp_id, const char *skycell_id, const char *tess_id, const char *kind)
    1041110445{
    1041210446    diffInputSkyfileRow *_object;
     
    1041610450
    1041710451    _object->diff_id = diff_id;
     10452    _object->template = template;
     10453    _object->stack_id = stack_id;
    1041810454    _object->warp_id = warp_id;
    1041910455    _object->skycell_id = psStringCopy(skycell_id);
    1042010456    _object->tess_id = psStringCopy(tess_id);
    1042110457    _object->kind = psStringCopy(kind);
    10422     _object->template = template;
    1042310458
    1042410459    return _object;
     
    1044010475        return false;
    1044110476    }
    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)) {
     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)) {
    1044310488        psError(PS_ERR_UNKNOWN, false, "failed to add item warp_id");
    1044410489        psFree(md);
    1044510490        return false;
    1044610491    }
    10447     if (!psMetadataAdd(md, PS_LIST_TAIL, "skycell_id", PS_DATA_STRING, "Primary Key", "64")) {
     10492    if (!psMetadataAdd(md, PS_LIST_TAIL, "skycell_id", PS_DATA_STRING, "Key", "64")) {
    1044810493        psError(PS_ERR_UNKNOWN, false, "failed to add item skycell_id");
    1044910494        psFree(md);
    1045010495        return false;
    1045110496    }
    10452     if (!psMetadataAdd(md, PS_LIST_TAIL, "tess_id", PS_DATA_STRING, "Primary Key", "64")) {
     10497    if (!psMetadataAdd(md, PS_LIST_TAIL, "tess_id", PS_DATA_STRING, "Key", "64")) {
    1045310498        psError(PS_ERR_UNKNOWN, false, "failed to add item tess_id");
    1045410499        psFree(md);
     
    1046010505        return false;
    1046110506    }
    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     }
    1046710507
    1046810508    bool status = psDBCreateTable(dbh, DIFFINPUTSKYFILE_TABLE_NAME, md);
     
    1047810518}
    1047910519
    10480 bool diffInputSkyfileInsert(psDB * dbh, psS64 diff_id, psS64 warp_id, const char *skycell_id, const char *tess_id, const char *kind, bool template)
     10520bool 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)
    1048110521{
    1048210522    psMetadata *md = psMetadataAlloc();
     
    1048610526        return false;
    1048710527    }
     10528    if (!psMetadataAdd(md, PS_LIST_TAIL, "template", PS_DATA_BOOL, NULL, template)) {
     10529        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    }
    1048810538    if (!psMetadataAdd(md, PS_LIST_TAIL, "warp_id", PS_DATA_S64, NULL, warp_id)) {
    1048910539        psError(PS_ERR_UNKNOWN, false, "failed to add item warp_id");
     
    1050310553    if (!psMetadataAdd(md, PS_LIST_TAIL, "kind", PS_DATA_STRING, NULL, kind)) {
    1050410554        psError(PS_ERR_UNKNOWN, false, "failed to add item kind");
    10505         psFree(md);
    10506         return false;
    10507     }
    10508     if (!psMetadataAdd(md, PS_LIST_TAIL, "template", PS_DATA_BOOL, NULL, template)) {
    10509         psError(PS_ERR_UNKNOWN, false, "failed to add item template");
    1051010555        psFree(md);
    1051110556        return false;
     
    1053410579bool diffInputSkyfileInsertObject(psDB *dbh, diffInputSkyfileRow *object)
    1053510580{
    10536     return diffInputSkyfileInsert(dbh, object->diff_id, object->warp_id, object->skycell_id, object->tess_id, object->kind, object->template);
     10581    return diffInputSkyfileInsert(dbh, object->diff_id, object->template, object->stack_id, object->warp_id, object->skycell_id, object->tess_id, object->kind);
    1053710582}
    1053810583
     
    1061210657        return false;
    1061310658    }
     10659    if (!psMetadataAdd(md, PS_LIST_TAIL, "template", PS_DATA_BOOL, NULL, object->template)) {
     10660        psError(PS_ERR_UNKNOWN, false, "failed to add item template");
     10661        psFree(md);
     10662        return false;
     10663    }
     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    }
    1061410669    if (!psMetadataAdd(md, PS_LIST_TAIL, "warp_id", PS_DATA_S64, NULL, object->warp_id)) {
    1061510670        psError(PS_ERR_UNKNOWN, false, "failed to add item warp_id");
     
    1063210687        return false;
    1063310688    }
    10634     if (!psMetadataAdd(md, PS_LIST_TAIL, "template", PS_DATA_BOOL, NULL, object->template)) {
    10635         psError(PS_ERR_UNKNOWN, false, "failed to add item template");
    10636         psFree(md);
    10637         return false;
    10638     }
    1063910689
    1064010690
     
    1065110701        return false;
    1065210702    }
     10703    bool template = psMetadataLookupBool(&status, md, "template");
     10704    if (!status) {
     10705        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item template");
     10706        return false;
     10707    }
     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    }
    1065310713    psS64 warp_id = psMetadataLookupS64(&status, md, "warp_id");
    1065410714    if (!status) {
     
    1067110731        return false;
    1067210732    }
    10673     bool template = psMetadataLookupBool(&status, md, "template");
    10674     if (!status) {
    10675         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item template");
    10676         return false;
    10677     }
    10678 
    10679     return diffInputSkyfileRowAlloc(diff_id, warp_id, skycell_id, tess_id, kind, template);
     10733
     10734    return diffInputSkyfileRowAlloc(diff_id, template, stack_id, warp_id, skycell_id, tess_id, kind);
    1068010735}
    1068110736psArray *diffInputSkyfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    1078910844static void diffSkyfileRowFree(diffSkyfileRow *object);
    1079010845
    10791 diffSkyfileRow *diffSkyfileRowAlloc(psS64 diff_id, const char *uri, const char *path_base, psF64 bg, psF64 bg_stdev)
     10846diffSkyfileRow *diffSkyfileRowAlloc(psS64 diff_id, const char *uri, const char *path_base, psF64 bg, psF64 bg_stdev, psF64 good_frac, psS16 fault)
    1079210847{
    1079310848    diffSkyfileRow  *_object;
     
    1080110856    _object->bg = bg;
    1080210857    _object->bg_stdev = bg_stdev;
     10858    _object->good_frac = good_frac;
     10859    _object->fault = fault;
    1080310860
    1080410861    return _object;
     
    1083910896        return false;
    1084010897    }
     10898    if (!psMetadataAdd(md, PS_LIST_TAIL, "good_frac", PS_DATA_F64, "Key", 0.0)) {
     10899        psError(PS_ERR_UNKNOWN, false, "failed to add item good_frac");
     10900        psFree(md);
     10901        return false;
     10902    }
     10903    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "Key", 0)) {
     10904        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
     10905        psFree(md);
     10906        return false;
     10907    }
    1084110908
    1084210909    bool status = psDBCreateTable(dbh, DIFFSKYFILE_TABLE_NAME, md);
     
    1085210919}
    1085310920
    10854 bool diffSkyfileInsert(psDB * dbh, psS64 diff_id, const char *uri, const char *path_base, psF64 bg, psF64 bg_stdev)
     10921bool diffSkyfileInsert(psDB * dbh, psS64 diff_id, const char *uri, const char *path_base, psF64 bg, psF64 bg_stdev, psF64 good_frac, psS16 fault)
    1085510922{
    1085610923    psMetadata *md = psMetadataAlloc();
     
    1087710944    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_stdev", PS_DATA_F64, NULL, bg_stdev)) {
    1087810945        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_stdev");
     10946        psFree(md);
     10947        return false;
     10948    }
     10949    if (!psMetadataAdd(md, PS_LIST_TAIL, "good_frac", PS_DATA_F64, NULL, good_frac)) {
     10950        psError(PS_ERR_UNKNOWN, false, "failed to add item good_frac");
     10951        psFree(md);
     10952        return false;
     10953    }
     10954    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, fault)) {
     10955        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    1087910956        psFree(md);
    1088010957        return false;
     
    1090310980bool diffSkyfileInsertObject(psDB *dbh, diffSkyfileRow *object)
    1090410981{
    10905     return diffSkyfileInsert(dbh, object->diff_id, object->uri, object->path_base, object->bg, object->bg_stdev);
     10982    return diffSkyfileInsert(dbh, object->diff_id, object->uri, object->path_base, object->bg, object->bg_stdev, object->good_frac, object->fault);
    1090610983}
    1090710984
     
    1100111078        return false;
    1100211079    }
     11080    if (!psMetadataAdd(md, PS_LIST_TAIL, "good_frac", PS_DATA_F64, NULL, object->good_frac)) {
     11081        psError(PS_ERR_UNKNOWN, false, "failed to add item good_frac");
     11082        psFree(md);
     11083        return false;
     11084    }
     11085    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) {
     11086        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
     11087        psFree(md);
     11088        return false;
     11089    }
    1100311090
    1100411091
     
    1103511122        return false;
    1103611123    }
    11037 
    11038     return diffSkyfileRowAlloc(diff_id, uri, path_base, bg, bg_stdev);
     11124    psF64 good_frac = psMetadataLookupF64(&status, md, "good_frac");
     11125    if (!status) {
     11126        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item good_frac");
     11127        return false;
     11128    }
     11129    psS16 fault = psMetadataLookupS16(&status, md, "fault");
     11130    if (!status) {
     11131        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault");
     11132        return false;
     11133    }
     11134
     11135    return diffSkyfileRowAlloc(diff_id, uri, path_base, bg, bg_stdev, good_frac, fault);
    1103911136}
    1104011137psArray *diffSkyfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    1184711944static void stackSumSkyfileRowFree(stackSumSkyfileRow *object);
    1184811945
    11849 stackSumSkyfileRow *stackSumSkyfileRowAlloc(psS64 stack_id, const char *uri, const char *path_base, psF64 bg, psF64 bg_stdev)
     11946stackSumSkyfileRow *stackSumSkyfileRowAlloc(psS64 stack_id, const char *uri, const char *path_base, psF64 bg, psF64 bg_stdev, psF64 good_frac, psS16 fault)
    1185011947{
    1185111948    stackSumSkyfileRow *_object;
     
    1185911956    _object->bg = bg;
    1186011957    _object->bg_stdev = bg_stdev;
     11958    _object->good_frac = good_frac;
     11959    _object->fault = fault;
    1186111960
    1186211961    return _object;
     
    1189711996        return false;
    1189811997    }
     11998    if (!psMetadataAdd(md, PS_LIST_TAIL, "good_frac", PS_DATA_F64, "Key", 0.0)) {
     11999        psError(PS_ERR_UNKNOWN, false, "failed to add item good_frac");
     12000        psFree(md);
     12001        return false;
     12002    }
     12003    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "Key", 0)) {
     12004        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
     12005        psFree(md);
     12006        return false;
     12007    }
    1189912008
    1190012009    bool status = psDBCreateTable(dbh, STACKSUMSKYFILE_TABLE_NAME, md);
     
    1191012019}
    1191112020
    11912 bool stackSumSkyfileInsert(psDB * dbh, psS64 stack_id, const char *uri, const char *path_base, psF64 bg, psF64 bg_stdev)
     12021bool stackSumSkyfileInsert(psDB * dbh, psS64 stack_id, const char *uri, const char *path_base, psF64 bg, psF64 bg_stdev, psF64 good_frac, psS16 fault)
    1191312022{
    1191412023    psMetadata *md = psMetadataAlloc();
     
    1193512044    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_stdev", PS_DATA_F64, NULL, bg_stdev)) {
    1193612045        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_stdev");
     12046        psFree(md);
     12047        return false;
     12048    }
     12049    if (!psMetadataAdd(md, PS_LIST_TAIL, "good_frac", PS_DATA_F64, NULL, good_frac)) {
     12050        psError(PS_ERR_UNKNOWN, false, "failed to add item good_frac");
     12051        psFree(md);
     12052        return false;
     12053    }
     12054    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, fault)) {
     12055        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    1193712056        psFree(md);
    1193812057        return false;
     
    1196112080bool stackSumSkyfileInsertObject(psDB *dbh, stackSumSkyfileRow *object)
    1196212081{
    11963     return stackSumSkyfileInsert(dbh, object->stack_id, object->uri, object->path_base, object->bg, object->bg_stdev);
     12082    return stackSumSkyfileInsert(dbh, object->stack_id, object->uri, object->path_base, object->bg, object->bg_stdev, object->good_frac, object->fault);
    1196412083}
    1196512084
     
    1205912178        return false;
    1206012179    }
     12180    if (!psMetadataAdd(md, PS_LIST_TAIL, "good_frac", PS_DATA_F64, NULL, object->good_frac)) {
     12181        psError(PS_ERR_UNKNOWN, false, "failed to add item good_frac");
     12182        psFree(md);
     12183        return false;
     12184    }
     12185    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) {
     12186        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
     12187        psFree(md);
     12188        return false;
     12189    }
    1206112190
    1206212191
     
    1209312222        return false;
    1209412223    }
    12095 
    12096     return stackSumSkyfileRowAlloc(stack_id, uri, path_base, bg, bg_stdev);
     12224    psF64 good_frac = psMetadataLookupF64(&status, md, "good_frac");
     12225    if (!status) {
     12226        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item good_frac");
     12227        return false;
     12228    }
     12229    psS16 fault = psMetadataLookupS16(&status, md, "fault");
     12230    if (!status) {
     12231        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault");
     12232        return false;
     12233    }
     12234
     12235    return stackSumSkyfileRowAlloc(stack_id, uri, path_base, bg, bg_stdev, good_frac, fault);
    1209712236}
    1209812237psArray *stackSumSkyfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    1227412413        return false;
    1227512414    }
    12276     if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Key", 0)) {
     12415    if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Key INDEX(det_id, iteration)", 0)) {
    1227712416        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
    1227812417        psFree(md);
     
    1310513244{
    1310613245    psMetadata *md = psMetadataAlloc();
    13107     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key", 0)) {
     13246    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key fkey(det_id) ref detRun(det_id)", 0)) {
    1310813247        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    1310913248        psFree(md);
    1311013249        return false;
    1311113250    }
    13112     if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key", 0)) {
     13251    if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key fkey(exp_id) ref rawExp(exp_id)", 0)) {
    1311313252        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
    1311413253        psFree(md);
    1311513254        return false;
    1311613255    }
    13117     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key", 64)) {
     13256    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key INDEX(det_id, exp_id)", 64)) {
    1311813257        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1311913258        psFree(md);
    1312013259        return false;
    1312113260    }
    13122     if (!psMetadataAdd(md, PS_LIST_TAIL, "include", PS_DATA_BOOL, NULL, 0)) {
     13261    if (!psMetadataAdd(md, PS_LIST_TAIL, "include", PS_DATA_BOOL, "INDEX(det_id, iteration)", 0)) {
    1312313262        psError(PS_ERR_UNKNOWN, false, "failed to add item include");
    1312413263        psFree(md);
     
    1345913598{
    1346013599    psMetadata *md = psMetadataAlloc();
    13461     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key", 0)) {
     13600    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)) {
    1346213601        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    1346313602        psFree(md);
    1346413603        return false;
    1346513604    }
    13466     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key", 64)) {
     13605    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)) {
    1346713606        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1346813607        psFree(md);
    1346913608        return false;
    1347013609    }
    13471     if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, "Primary Key", "64")) {
     13610    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, "Primary Key INDEX(det_id, class_id)", "64")) {
    1347213611        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
    1347313612        psFree(md);
    1347413613        return false;
    1347513614    }
    13476     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, "255")) {
     13615    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, "INDEX(det_id, exp_id)", "255")) {
    1347713616        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    1347813617        psFree(md);
     
    1408914228{
    1409014229    psMetadata *md = psMetadataAlloc();
    14091     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key", 0)) {
     14230    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)) {
    1409214231        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    1409314232        psFree(md);
    1409414233        return false;
    1409514234    }
    14096     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key", 64)) {
     14235    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)) {
    1409714236        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1409814237        psFree(md);
     
    1467814817{
    1467914818    psMetadata *md = psMetadataAlloc();
    14680     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key", 0)) {
     14819    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key fkey(det_id, iteration) ref detInputExp(det_id, iteration)", 0)) {
    1468114820        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    1468214821        psFree(md);
    1468314822        return false;
    1468414823    }
    14685     if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key", 0)) {
     14824    if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key fkey(det_id, class_id) ref detProcessedImfile(det_id, class_id)", 0)) {
    1468614825        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
    1468714826        psFree(md);
     
    1521615355{
    1521715356    psMetadata *md = psMetadataAlloc();
    15218     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key", 0)) {
     15357    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key fkey(det_id, iteration) ref detInputExp(det_id, iteration)", 0)) {
    1521915358        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    1522015359        psFree(md);
    1522115360        return false;
    1522215361    }
    15223     if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key", 0)) {
     15362    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)) {
    1522415363        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
    1522515364        psFree(md);
     
    1558515724{
    1558615725    psMetadata *md = psMetadataAlloc();
    15587     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key", 0)) {
     15726    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key fkey(det_id) ref detInputExp(det_id)", 0)) {
    1558815727        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    1558915728        psFree(md);
    1559015729        return false;
    1559115730    }
    15592     if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key", 0)) {
     15731    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)) {
    1559315732        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
    1559415733        psFree(md);
    1559515734        return false;
    1559615735    }
    15597     if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, "Primary Key", "64")) {
     15736    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, "Primary Key INDEX(det_id, iteration)", "64")) {
    1559815737        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
    1559915738        psFree(md);
     
    1613216271{
    1613316272    psMetadata *md = psMetadataAlloc();
    16134     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key", 0)) {
     16273    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key fkey(det_id, iteration) ref detInputExp(det_id, iteration)", 0)) {
    1613516274        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    1613616275        psFree(md);
    1613716276        return false;
    1613816277    }
    16139     if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key", 0)) {
     16278    if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key fkey(det_id, iteration) ref detNormalizedImfile(det_id, iteration)", 0)) {
    1614016279        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
    1614116280        psFree(md);
     
    1662616765static void detResidImfileRowFree(detResidImfileRow *object);
    1662716766
    16628 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 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)
     16767detResidImfileRow *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)
    1662916768{
    1663016769    detResidImfileRow *_object;
     
    1664216781    _object->bg_stdev = bg_stdev;
    1664316782    _object->bg_mean_stdev = bg_mean_stdev;
     16783    _object->bg_skewness = bg_skewness;
     16784    _object->bg_kurtosis = bg_kurtosis;
    1664416785    _object->bin_stdev = bin_stdev;
    1664516786    _object->fringe_0 = fringe_0;
    1664616787    _object->fringe_1 = fringe_1;
    1664716788    _object->fringe_2 = fringe_2;
     16789    _object->fringe_resid_0 = fringe_resid_0;
     16790    _object->fringe_resid_1 = fringe_resid_1;
     16791    _object->fringe_resid_2 = fringe_resid_2;
    1664816792    _object->user_1 = user_1;
    1664916793    _object->user_2 = user_2;
     
    1666816812{
    1666916813    psMetadata *md = psMetadataAlloc();
    16670     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key", 0)) {
     16814    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)) {
    1667116815        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    1667216816        psFree(md);
    1667316817        return false;
    1667416818    }
    16675     if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key", 0)) {
     16819    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)) {
    1667616820        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
    1667716821        psFree(md);
    1667816822        return false;
    1667916823    }
    16680     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key", 64)) {
     16824    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key fkey(det_id, iteration) ref detNormalizedExp(det_id, iteration)", 64)) {
    1668116825        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1668216826        psFree(md);
    1668316827        return false;
    1668416828    }
    16685     if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, "Primary Key", "64")) {
     16829    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, "Primary Key INDEX(det_id, iteration, exp_id)", "64")) {
    1668616830        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
    1668716831        psFree(md);
     
    1671316857        return false;
    1671416858    }
     16859    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_skewness", PS_DATA_F64, NULL, 0.0)) {
     16860        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_skewness");
     16861        psFree(md);
     16862        return false;
     16863    }
     16864    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_kurtosis", PS_DATA_F64, NULL, 0.0)) {
     16865        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_kurtosis");
     16866        psFree(md);
     16867        return false;
     16868    }
    1671516869    if (!psMetadataAdd(md, PS_LIST_TAIL, "bin_stdev", PS_DATA_F64, NULL, 0.0)) {
    1671616870        psError(PS_ERR_UNKNOWN, false, "failed to add item bin_stdev");
     
    1673316887        return false;
    1673416888    }
     16889    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_0", PS_DATA_F64, NULL, 0.0)) {
     16890        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_0");
     16891        psFree(md);
     16892        return false;
     16893    }
     16894    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_1", PS_DATA_F64, NULL, 0.0)) {
     16895        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_1");
     16896        psFree(md);
     16897        return false;
     16898    }
     16899    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_2", PS_DATA_F64, NULL, 0.0)) {
     16900        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_2");
     16901        psFree(md);
     16902        return false;
     16903    }
    1673516904    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, 0.0)) {
    1673616905        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
     
    1678116950}
    1678216951
    16783 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 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)
     16952bool 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)
    1678416953{
    1678516954    psMetadata *md = psMetadataAlloc();
     
    1682916998        return false;
    1683016999    }
     17000    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_skewness", PS_DATA_F64, NULL, bg_skewness)) {
     17001        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_skewness");
     17002        psFree(md);
     17003        return false;
     17004    }
     17005    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_kurtosis", PS_DATA_F64, NULL, bg_kurtosis)) {
     17006        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_kurtosis");
     17007        psFree(md);
     17008        return false;
     17009    }
    1683117010    if (!psMetadataAdd(md, PS_LIST_TAIL, "bin_stdev", PS_DATA_F64, NULL, bin_stdev)) {
    1683217011        psError(PS_ERR_UNKNOWN, false, "failed to add item bin_stdev");
     
    1684617025    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_2", PS_DATA_F64, NULL, fringe_2)) {
    1684717026        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_2");
     17027        psFree(md);
     17028        return false;
     17029    }
     17030    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_0", PS_DATA_F64, NULL, fringe_resid_0)) {
     17031        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_0");
     17032        psFree(md);
     17033        return false;
     17034    }
     17035    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_1", PS_DATA_F64, NULL, fringe_resid_1)) {
     17036        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_1");
     17037        psFree(md);
     17038        return false;
     17039    }
     17040    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_2", PS_DATA_F64, NULL, fringe_resid_2)) {
     17041        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_2");
    1684817042        psFree(md);
    1684917043        return false;
     
    1690717101bool detResidImfileInsertObject(psDB *dbh, detResidImfileRow *object)
    1690817102{
    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);
     17103    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);
    1691017104}
    1691117105
     
    1702517219        return false;
    1702617220    }
     17221    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_skewness", PS_DATA_F64, NULL, object->bg_skewness)) {
     17222        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_skewness");
     17223        psFree(md);
     17224        return false;
     17225    }
     17226    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_kurtosis", PS_DATA_F64, NULL, object->bg_kurtosis)) {
     17227        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_kurtosis");
     17228        psFree(md);
     17229        return false;
     17230    }
    1702717231    if (!psMetadataAdd(md, PS_LIST_TAIL, "bin_stdev", PS_DATA_F64, NULL, object->bin_stdev)) {
    1702817232        psError(PS_ERR_UNKNOWN, false, "failed to add item bin_stdev");
     
    1704517249        return false;
    1704617250    }
     17251    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_0", PS_DATA_F64, NULL, object->fringe_resid_0)) {
     17252        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_0");
     17253        psFree(md);
     17254        return false;
     17255    }
     17256    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_1", PS_DATA_F64, NULL, object->fringe_resid_1)) {
     17257        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_1");
     17258        psFree(md);
     17259        return false;
     17260    }
     17261    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_2", PS_DATA_F64, NULL, object->fringe_resid_2)) {
     17262        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_2");
     17263        psFree(md);
     17264        return false;
     17265    }
    1704717266    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, object->user_1)) {
    1704817267        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
     
    1713417353        return false;
    1713517354    }
     17355    psF64 bg_skewness = psMetadataLookupF64(&status, md, "bg_skewness");
     17356    if (!status) {
     17357        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_skewness");
     17358        return false;
     17359    }
     17360    psF64 bg_kurtosis = psMetadataLookupF64(&status, md, "bg_kurtosis");
     17361    if (!status) {
     17362        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_kurtosis");
     17363        return false;
     17364    }
    1713617365    psF64 bin_stdev = psMetadataLookupF64(&status, md, "bin_stdev");
    1713717366    if (!status) {
     
    1715417383        return false;
    1715517384    }
     17385    psF64 fringe_resid_0 = psMetadataLookupF64(&status, md, "fringe_resid_0");
     17386    if (!status) {
     17387        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fringe_resid_0");
     17388        return false;
     17389    }
     17390    psF64 fringe_resid_1 = psMetadataLookupF64(&status, md, "fringe_resid_1");
     17391    if (!status) {
     17392        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fringe_resid_1");
     17393        return false;
     17394    }
     17395    psF64 fringe_resid_2 = psMetadataLookupF64(&status, md, "fringe_resid_2");
     17396    if (!status) {
     17397        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fringe_resid_2");
     17398        return false;
     17399    }
    1715617400    psF64 user_1 = psMetadataLookupF64(&status, md, "user_1");
    1715717401    if (!status) {
     
    1719017434    }
    1719117435
    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);
     17436    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);
    1719317437}
    1719417438psArray *detResidImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    1730217546static void detResidExpRowFree(detResidExpRow *object);
    1730317547
    17304 detResidExpRow *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)
     17548detResidExpRow *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)
    1730517549{
    1730617550    detResidExpRow  *_object;
     
    1731617560    _object->bg_stdev = bg_stdev;
    1731717561    _object->bg_mean_stdev = bg_mean_stdev;
     17562    _object->bg_skewness = bg_skewness;
     17563    _object->bg_kurtosis = bg_kurtosis;
    1731817564    _object->bin_stdev = bin_stdev;
    1731917565    _object->fringe_0 = fringe_0;
    1732017566    _object->fringe_1 = fringe_1;
    1732117567    _object->fringe_2 = fringe_2;
     17568    _object->fringe_resid_0 = fringe_resid_0;
     17569    _object->fringe_resid_1 = fringe_resid_1;
     17570    _object->fringe_resid_2 = fringe_resid_2;
    1732217571    _object->user_1 = user_1;
    1732317572    _object->user_2 = user_2;
     
    1734117590{
    1734217591    psMetadata *md = psMetadataAlloc();
    17343     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key", 0)) {
     17592    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)) {
    1734417593        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    1734517594        psFree(md);
    1734617595        return false;
    1734717596    }
    17348     if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key", 0)) {
     17597    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)) {
    1734917598        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
    1735017599        psFree(md);
    1735117600        return false;
    1735217601    }
    17353     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key", 64)) {
     17602    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key INDEX(det_id, iteration)", 64)) {
    1735417603        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1735517604        psFree(md);
     
    1737617625        return false;
    1737717626    }
     17627    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_skewness", PS_DATA_F64, NULL, 0.0)) {
     17628        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_skewness");
     17629        psFree(md);
     17630        return false;
     17631    }
     17632    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_kurtosis", PS_DATA_F64, NULL, 0.0)) {
     17633        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_kurtosis");
     17634        psFree(md);
     17635        return false;
     17636    }
    1737817637    if (!psMetadataAdd(md, PS_LIST_TAIL, "bin_stdev", PS_DATA_F64, NULL, 0.0)) {
    1737917638        psError(PS_ERR_UNKNOWN, false, "failed to add item bin_stdev");
     
    1739617655        return false;
    1739717656    }
     17657    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_0", PS_DATA_F64, NULL, 0.0)) {
     17658        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_0");
     17659        psFree(md);
     17660        return false;
     17661    }
     17662    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_1", PS_DATA_F64, NULL, 0.0)) {
     17663        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_1");
     17664        psFree(md);
     17665        return false;
     17666    }
     17667    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_2", PS_DATA_F64, NULL, 0.0)) {
     17668        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_2");
     17669        psFree(md);
     17670        return false;
     17671    }
    1739817672    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, 0.0)) {
    1739917673        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
     
    1744917723}
    1745017724
    17451 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 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)
     17725bool 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)
    1745217726{
    1745317727    psMetadata *md = psMetadataAlloc();
     
    1748717761        return false;
    1748817762    }
     17763    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_skewness", PS_DATA_F64, NULL, bg_skewness)) {
     17764        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_skewness");
     17765        psFree(md);
     17766        return false;
     17767    }
     17768    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_kurtosis", PS_DATA_F64, NULL, bg_kurtosis)) {
     17769        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_kurtosis");
     17770        psFree(md);
     17771        return false;
     17772    }
    1748917773    if (!psMetadataAdd(md, PS_LIST_TAIL, "bin_stdev", PS_DATA_F64, NULL, bin_stdev)) {
    1749017774        psError(PS_ERR_UNKNOWN, false, "failed to add item bin_stdev");
     
    1750417788    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_2", PS_DATA_F64, NULL, fringe_2)) {
    1750517789        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_2");
     17790        psFree(md);
     17791        return false;
     17792    }
     17793    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_0", PS_DATA_F64, NULL, fringe_resid_0)) {
     17794        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_0");
     17795        psFree(md);
     17796        return false;
     17797    }
     17798    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_1", PS_DATA_F64, NULL, fringe_resid_1)) {
     17799        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_1");
     17800        psFree(md);
     17801        return false;
     17802    }
     17803    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_2", PS_DATA_F64, NULL, fringe_resid_2)) {
     17804        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_2");
    1750617805        psFree(md);
    1750717806        return false;
     
    1757017869bool detResidExpInsertObject(psDB *dbh, detResidExpRow *object)
    1757117870{
    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);
     17871    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);
    1757317872}
    1757417873
     
    1767817977        return false;
    1767917978    }
     17979    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_skewness", PS_DATA_F64, NULL, object->bg_skewness)) {
     17980        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_skewness");
     17981        psFree(md);
     17982        return false;
     17983    }
     17984    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_kurtosis", PS_DATA_F64, NULL, object->bg_kurtosis)) {
     17985        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_kurtosis");
     17986        psFree(md);
     17987        return false;
     17988    }
    1768017989    if (!psMetadataAdd(md, PS_LIST_TAIL, "bin_stdev", PS_DATA_F64, NULL, object->bin_stdev)) {
    1768117990        psError(PS_ERR_UNKNOWN, false, "failed to add item bin_stdev");
     
    1769818007        return false;
    1769918008    }
     18009    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_0", PS_DATA_F64, NULL, object->fringe_resid_0)) {
     18010        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_0");
     18011        psFree(md);
     18012        return false;
     18013    }
     18014    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_1", PS_DATA_F64, NULL, object->fringe_resid_1)) {
     18015        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_1");
     18016        psFree(md);
     18017        return false;
     18018    }
     18019    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_resid_2", PS_DATA_F64, NULL, object->fringe_resid_2)) {
     18020        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_resid_2");
     18021        psFree(md);
     18022        return false;
     18023    }
    1770018024    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, object->user_1)) {
    1770118025        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
     
    1778218106        return false;
    1778318107    }
     18108    psF64 bg_skewness = psMetadataLookupF64(&status, md, "bg_skewness");
     18109    if (!status) {
     18110        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_skewness");
     18111        return false;
     18112    }
     18113    psF64 bg_kurtosis = psMetadataLookupF64(&status, md, "bg_kurtosis");
     18114    if (!status) {
     18115        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_kurtosis");
     18116        return false;
     18117    }
    1778418118    psF64 bin_stdev = psMetadataLookupF64(&status, md, "bin_stdev");
    1778518119    if (!status) {
     
    1780218136        return false;
    1780318137    }
     18138    psF64 fringe_resid_0 = psMetadataLookupF64(&status, md, "fringe_resid_0");
     18139    if (!status) {
     18140        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fringe_resid_0");
     18141        return false;
     18142    }
     18143    psF64 fringe_resid_1 = psMetadataLookupF64(&status, md, "fringe_resid_1");
     18144    if (!status) {
     18145        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fringe_resid_1");
     18146        return false;
     18147    }
     18148    psF64 fringe_resid_2 = psMetadataLookupF64(&status, md, "fringe_resid_2");
     18149    if (!status) {
     18150        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fringe_resid_2");
     18151        return false;
     18152    }
    1780418153    psF64 user_1 = psMetadataLookupF64(&status, md, "user_1");
    1780518154    if (!status) {
     
    1784318192    }
    1784418193
    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);
     18194    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);
    1784618195}
    1784718196psArray *detResidExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    1798018329{
    1798118330    psMetadata *md = psMetadataAlloc();
    17982     if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key", 0)) {
     18331    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key fkey(det_id, iteration) ref detInputExp(det_id, iteration)", 0)) {
    1798318332        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    1798418333        psFree(md);
    1798518334        return false;
    1798618335    }
    17987     if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key", 0)) {
     18336    if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key fkey(det_id, iteration) ref detResidExp(det_id, iteration)", 0)) {
    1798818337        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
    1798918338        psFree(md);
     
    1835218701    return true;
    1835318702}
     18703static void detRegisteredImfileRowFree(detRegisteredImfileRow *object);
     18704
     18705detRegisteredImfileRow *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)
     18706{
     18707    detRegisteredImfileRow *_object;
     18708
     18709    _object = psAlloc(sizeof(detRegisteredImfileRow));
     18710    psMemSetDeallocator(_object, (psFreeFunc)detRegisteredImfileRowFree);
     18711
     18712    _object->det_id = det_id;
     18713    _object->iteration = iteration;
     18714    _object->class_id = psStringCopy(class_id);
     18715    _object->uri = psStringCopy(uri);
     18716    _object->bg = bg;
     18717    _object->bg_stdev = bg_stdev;
     18718    _object->bg_mean_stdev = bg_mean_stdev;
     18719    _object->user_1 = user_1;
     18720    _object->user_2 = user_2;
     18721    _object->user_3 = user_3;
     18722    _object->user_4 = user_4;
     18723    _object->user_5 = user_5;
     18724    _object->path_base = psStringCopy(path_base);
     18725    _object->fault = fault;
     18726
     18727    return _object;
     18728}
     18729
     18730static void detRegisteredImfileRowFree(detRegisteredImfileRow *object)
     18731{
     18732    psFree(object->class_id);
     18733    psFree(object->uri);
     18734    psFree(object->path_base);
     18735}
     18736
     18737bool detRegisteredImfileCreateTable(psDB *dbh)
     18738{
     18739    psMetadata *md = psMetadataAlloc();
     18740    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key fkey(det_id, iteration) ref detRun(det_id, iteration)", 0)) {
     18741        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
     18742        psFree(md);
     18743        return false;
     18744    }
     18745    if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key", 0)) {
     18746        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
     18747        psFree(md);
     18748        return false;
     18749    }
     18750    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, "Primary Key", "64")) {
     18751        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
     18752        psFree(md);
     18753        return false;
     18754    }
     18755    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, "255")) {
     18756        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     18757        psFree(md);
     18758        return false;
     18759    }
     18760    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg", PS_DATA_F64, NULL, 0.0)) {
     18761        psError(PS_ERR_UNKNOWN, false, "failed to add item bg");
     18762        psFree(md);
     18763        return false;
     18764    }
     18765    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_stdev", PS_DATA_F64, NULL, 0.0)) {
     18766        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_stdev");
     18767        psFree(md);
     18768        return false;
     18769    }
     18770    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_mean_stdev", PS_DATA_F64, NULL, 0.0)) {
     18771        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev");
     18772        psFree(md);
     18773        return false;
     18774    }
     18775    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, 0.0)) {
     18776        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
     18777        psFree(md);
     18778        return false;
     18779    }
     18780    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, 0.0)) {
     18781        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
     18782        psFree(md);
     18783        return false;
     18784    }
     18785    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, 0.0)) {
     18786        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
     18787        psFree(md);
     18788        return false;
     18789    }
     18790    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, 0.0)) {
     18791        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
     18792        psFree(md);
     18793        return false;
     18794    }
     18795    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, 0.0)) {
     18796        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
     18797        psFree(md);
     18798        return false;
     18799    }
     18800    if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, "255")) {
     18801        psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
     18802        psFree(md);
     18803        return false;
     18804    }
     18805    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "Key NOT NULL", 0)) {
     18806        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
     18807        psFree(md);
     18808        return false;
     18809    }
     18810
     18811    bool status = psDBCreateTable(dbh, DETREGISTEREDIMFILE_TABLE_NAME, md);
     18812
     18813    psFree(md);
     18814
     18815    return status;
     18816}
     18817
     18818bool detRegisteredImfileDropTable(psDB *dbh)
     18819{
     18820    return psDBDropTable(dbh, DETREGISTEREDIMFILE_TABLE_NAME);
     18821}
     18822
     18823bool 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)
     18824{
     18825    psMetadata *md = psMetadataAlloc();
     18826    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, NULL, det_id)) {
     18827        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
     18828        psFree(md);
     18829        return false;
     18830    }
     18831    if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, NULL, iteration)) {
     18832        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
     18833        psFree(md);
     18834        return false;
     18835    }
     18836    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, class_id)) {
     18837        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
     18838        psFree(md);
     18839        return false;
     18840    }
     18841    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) {
     18842        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     18843        psFree(md);
     18844        return false;
     18845    }
     18846    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg", PS_DATA_F64, NULL, bg)) {
     18847        psError(PS_ERR_UNKNOWN, false, "failed to add item bg");
     18848        psFree(md);
     18849        return false;
     18850    }
     18851    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_stdev", PS_DATA_F64, NULL, bg_stdev)) {
     18852        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_stdev");
     18853        psFree(md);
     18854        return false;
     18855    }
     18856    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_mean_stdev", PS_DATA_F64, NULL, bg_mean_stdev)) {
     18857        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev");
     18858        psFree(md);
     18859        return false;
     18860    }
     18861    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, user_1)) {
     18862        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
     18863        psFree(md);
     18864        return false;
     18865    }
     18866    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, user_2)) {
     18867        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
     18868        psFree(md);
     18869        return false;
     18870    }
     18871    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, user_3)) {
     18872        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
     18873        psFree(md);
     18874        return false;
     18875    }
     18876    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, user_4)) {
     18877        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
     18878        psFree(md);
     18879        return false;
     18880    }
     18881    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, user_5)) {
     18882        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
     18883        psFree(md);
     18884        return false;
     18885    }
     18886    if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, path_base)) {
     18887        psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
     18888        psFree(md);
     18889        return false;
     18890    }
     18891    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, fault)) {
     18892        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
     18893        psFree(md);
     18894        return false;
     18895    }
     18896
     18897    bool status = psDBInsertOneRow(dbh, DETREGISTEREDIMFILE_TABLE_NAME, md);
     18898    psFree(md);
     18899
     18900    return status;
     18901}
     18902
     18903long long detRegisteredImfileDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
     18904{
     18905    long long       deleted = 0;
     18906
     18907    long long count = psDBDeleteRows(dbh, DETREGISTEREDIMFILE_TABLE_NAME, where, limit);
     18908    if (count < 0) {
     18909        psError(PS_ERR_UNKNOWN, true, "failed to delete row from detRegisteredImfile");
     18910        return count;
     18911
     18912        deleted += count;
     18913    }
     18914
     18915    return deleted;
     18916}
     18917bool detRegisteredImfileInsertObject(psDB *dbh, detRegisteredImfileRow *object)
     18918{
     18919    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);
     18920}
     18921
     18922bool detRegisteredImfileInsertObjects(psDB *dbh, psArray *objects)
     18923{
     18924    for (long i = 0; i < psArrayLength(objects); i++) {
     18925        if (!detRegisteredImfileInsertObject(dbh, objects->data[i])) {
     18926            return false;
     18927        }
     18928    }
     18929
     18930    return true;
     18931}
     18932
     18933bool detRegisteredImfileInsertFits(psDB *dbh, const psFits *fits)
     18934{
     18935    psArray         *rowSet;
     18936
     18937    // move to (the first?) extension named  DETREGISTEREDIMFILE_TABLE_NAME
     18938    if (!psFitsMoveExtName(fits, DETREGISTEREDIMFILE_TABLE_NAME)) {
     18939        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", DETREGISTEREDIMFILE_TABLE_NAME);
     18940        return false;
     18941    }
     18942
     18943    // check HDU type
     18944    if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
     18945        psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
     18946        return false;
     18947    }
     18948
     18949    // read fits table
     18950    rowSet = psFitsReadTable(fits);
     18951    if (!rowSet) {
     18952        psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
     18953        psFree(rowSet);
     18954        return false;
     18955    }
     18956
     18957    if (!psDBInsertRows(dbh, DETREGISTEREDIMFILE_TABLE_NAME, rowSet)) {
     18958        psError(PS_ERR_UNKNOWN, false, "databse insert failed");
     18959        psFree(rowSet);
     18960        return false;
     18961    }
     18962
     18963    psFree(rowSet);
     18964
     18965    return true;
     18966}
     18967
     18968bool detRegisteredImfileSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
     18969{
     18970    psArray         *rowSet;
     18971
     18972    rowSet = psDBSelectRows(dbh, DETREGISTEREDIMFILE_TABLE_NAME, where, limit);
     18973    if (!rowSet) {
     18974        return false;
     18975    }
     18976
     18977    // output to fits
     18978    if (!psFitsWriteTable(fits, NULL, rowSet, DETREGISTEREDIMFILE_TABLE_NAME)) {
     18979        psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
     18980        psFree(rowSet);
     18981        return false;
     18982    }
     18983
     18984    psFree(rowSet);
     18985
     18986    return true;
     18987}
     18988
     18989psMetadata *detRegisteredImfileMetadataFromObject(const detRegisteredImfileRow *object)
     18990{
     18991    psMetadata *md = psMetadataAlloc();
     18992    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, NULL, object->det_id)) {
     18993        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
     18994        psFree(md);
     18995        return false;
     18996    }
     18997    if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, NULL, object->iteration)) {
     18998        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
     18999        psFree(md);
     19000        return false;
     19001    }
     19002    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, object->class_id)) {
     19003        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
     19004        psFree(md);
     19005        return false;
     19006    }
     19007    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) {
     19008        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     19009        psFree(md);
     19010        return false;
     19011    }
     19012    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg", PS_DATA_F64, NULL, object->bg)) {
     19013        psError(PS_ERR_UNKNOWN, false, "failed to add item bg");
     19014        psFree(md);
     19015        return false;
     19016    }
     19017    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_stdev", PS_DATA_F64, NULL, object->bg_stdev)) {
     19018        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_stdev");
     19019        psFree(md);
     19020        return false;
     19021    }
     19022    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_mean_stdev", PS_DATA_F64, NULL, object->bg_mean_stdev)) {
     19023        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev");
     19024        psFree(md);
     19025        return false;
     19026    }
     19027    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, object->user_1)) {
     19028        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
     19029        psFree(md);
     19030        return false;
     19031    }
     19032    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, object->user_2)) {
     19033        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
     19034        psFree(md);
     19035        return false;
     19036    }
     19037    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, object->user_3)) {
     19038        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
     19039        psFree(md);
     19040        return false;
     19041    }
     19042    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, object->user_4)) {
     19043        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
     19044        psFree(md);
     19045        return false;
     19046    }
     19047    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, object->user_5)) {
     19048        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
     19049        psFree(md);
     19050        return false;
     19051    }
     19052    if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, object->path_base)) {
     19053        psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
     19054        psFree(md);
     19055        return false;
     19056    }
     19057    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) {
     19058        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
     19059        psFree(md);
     19060        return false;
     19061    }
     19062
     19063
     19064    return md;
     19065}
     19066
     19067detRegisteredImfileRow *detRegisteredImfileObjectFromMetadata(psMetadata *md)
     19068{
     19069
     19070bool status = false;
     19071    psS64 det_id = psMetadataLookupS64(&status, md, "det_id");
     19072    if (!status) {
     19073        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
     19074        return false;
     19075    }
     19076    psS32 iteration = psMetadataLookupS32(&status, md, "iteration");
     19077    if (!status) {
     19078        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item iteration");
     19079        return false;
     19080    }
     19081    char* class_id = psMetadataLookupPtr(&status, md, "class_id");
     19082    if (!status) {
     19083        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class_id");
     19084        return false;
     19085    }
     19086    char* uri = psMetadataLookupPtr(&status, md, "uri");
     19087    if (!status) {
     19088        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
     19089        return false;
     19090    }
     19091    psF64 bg = psMetadataLookupF64(&status, md, "bg");
     19092    if (!status) {
     19093        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg");
     19094        return false;
     19095    }
     19096    psF64 bg_stdev = psMetadataLookupF64(&status, md, "bg_stdev");
     19097    if (!status) {
     19098        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_stdev");
     19099        return false;
     19100    }
     19101    psF64 bg_mean_stdev = psMetadataLookupF64(&status, md, "bg_mean_stdev");
     19102    if (!status) {
     19103        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_mean_stdev");
     19104        return false;
     19105    }
     19106    psF64 user_1 = psMetadataLookupF64(&status, md, "user_1");
     19107    if (!status) {
     19108        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_1");
     19109        return false;
     19110    }
     19111    psF64 user_2 = psMetadataLookupF64(&status, md, "user_2");
     19112    if (!status) {
     19113        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_2");
     19114        return false;
     19115    }
     19116    psF64 user_3 = psMetadataLookupF64(&status, md, "user_3");
     19117    if (!status) {
     19118        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_3");
     19119        return false;
     19120    }
     19121    psF64 user_4 = psMetadataLookupF64(&status, md, "user_4");
     19122    if (!status) {
     19123        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_4");
     19124        return false;
     19125    }
     19126    psF64 user_5 = psMetadataLookupF64(&status, md, "user_5");
     19127    if (!status) {
     19128        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_5");
     19129        return false;
     19130    }
     19131    char* path_base = psMetadataLookupPtr(&status, md, "path_base");
     19132    if (!status) {
     19133        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item path_base");
     19134        return false;
     19135    }
     19136    psS16 fault = psMetadataLookupS16(&status, md, "fault");
     19137    if (!status) {
     19138        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault");
     19139        return false;
     19140    }
     19141
     19142    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);
     19143}
     19144psArray *detRegisteredImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     19145{
     19146    psArray         *rowSet;
     19147    psArray         *returnSet;
     19148    psU64           i;
     19149
     19150    rowSet = psDBSelectRows(dbh, DETREGISTEREDIMFILE_TABLE_NAME, where, limit);
     19151    if (!rowSet) {
     19152        return NULL;
     19153    }
     19154
     19155    // convert psMetadata rows to row objects
     19156
     19157    returnSet = psArrayAllocEmpty(rowSet->n);
     19158
     19159    for (i = 0; i < rowSet->n; i++) {
     19160        detRegisteredImfileRow *object = detRegisteredImfileObjectFromMetadata(rowSet->data[i]);
     19161        psArrayAdd(returnSet, 0, object);
     19162        psFree(object);
     19163    }
     19164
     19165    psFree(rowSet);
     19166
     19167    return returnSet;
     19168}
     19169bool detRegisteredImfileDeleteObject(psDB *dbh, const detRegisteredImfileRow *object)
     19170{
     19171    psMetadata *where = detRegisteredImfileMetadataFromObject(object);
     19172    long long count = psDBDeleteRows(dbh, DETREGISTEREDIMFILE_TABLE_NAME, where, 0);
     19173    psFree(where);
     19174    if (count < 0) {
     19175        psError(PS_ERR_UNKNOWN, true, "failed to delete row from detRegisteredImfile");
     19176        return false;
     19177    }
     19178    if (count > 1) {
     19179        // XXX should this be a psAbort() instead?  It is possible that
     19180        // having an object match multiple rows was by design.
     19181        psError(PS_ERR_UNKNOWN, true, "detRegisteredImfileRow object matched more then one row.  Check your database schema");
     19182        return false;
     19183    }
     19184
     19185    return true;
     19186}
     19187long long detRegisteredImfileDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
     19188{
     19189    long long       deleted = 0;
     19190
     19191    for (long long i = 0; i < objects->n; i++) {
     19192        detRegisteredImfileRow *object = objects->data[i];
     19193        psMetadata *where = detRegisteredImfileMetadataFromObject(object);
     19194        long long count = psDBDeleteRows(dbh, DETREGISTEREDIMFILE_TABLE_NAME, where, limit);
     19195        psFree(where);
     19196        if (count < 0) {
     19197            psError(PS_ERR_UNKNOWN, true, "failed to delete row from detRegisteredImfile");
     19198            return count;
     19199        }
     19200
     19201        deleted += count;
     19202    }
     19203
     19204    return deleted;
     19205}
     19206bool detRegisteredImfilePrintObjects(FILE *stream, psArray *objects, bool mdcf)
     19207{
     19208    PS_ASSERT_PTR_NON_NULL(objects, false);
     19209
     19210    psMetadata *output = psMetadataAlloc();
     19211    for (long i = 0; i < psArrayLength(objects); i++) {
     19212        psMetadata *md = detRegisteredImfileMetadataFromObject(objects->data[i]);
     19213        if (!psMetadataAddMetadata(
     19214            output,
     19215            PS_LIST_TAIL,
     19216            DETREGISTEREDIMFILE_TABLE_NAME,
     19217            PS_META_DUPLICATE_OK,
     19218            NULL,
     19219            md
     19220        )) {
     19221            psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
     19222            psFree(md);
     19223            psFree(output);
     19224            return false;
     19225        }
     19226        psFree(md);
     19227    }
     19228
     19229    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
     19230        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     19231        psFree(output);
     19232    }
     19233    psFree(output);
     19234
     19235    return true;
     19236}
     19237bool detRegisteredImfilePrintObject(FILE *stream, detRegisteredImfileRow *object, bool mdcf)
     19238{
     19239    PS_ASSERT_PTR_NON_NULL(object, false);
     19240
     19241    psMetadata *md = detRegisteredImfileMetadataFromObject(object);
     19242
     19243    if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
     19244        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     19245        psFree(md);
     19246    }
     19247
     19248    psFree(md);
     19249
     19250    return true;
     19251}
     19252static void detCorrectedExpRowFree(detCorrectedExpRow *object);
     19253
     19254detCorrectedExpRow *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)
     19255{
     19256    detCorrectedExpRow *_object;
     19257
     19258    _object = psAlloc(sizeof(detCorrectedExpRow));
     19259    psMemSetDeallocator(_object, (psFreeFunc)detCorrectedExpRowFree);
     19260
     19261    _object->det_id = det_id;
     19262    _object->exp_id = exp_id;
     19263    _object->uri = psStringCopy(uri);
     19264    _object->corr_id = corr_id;
     19265    _object->corr_type = psStringCopy(corr_type);
     19266    _object->recipe = psStringCopy(recipe);
     19267    _object->path_base = psStringCopy(path_base);
     19268    _object->fault = fault;
     19269
     19270    return _object;
     19271}
     19272
     19273static void detCorrectedExpRowFree(detCorrectedExpRow *object)
     19274{
     19275    psFree(object->uri);
     19276    psFree(object->corr_type);
     19277    psFree(object->recipe);
     19278    psFree(object->path_base);
     19279}
     19280
     19281bool detCorrectedExpCreateTable(psDB *dbh)
     19282{
     19283    psMetadata *md = psMetadataAlloc();
     19284    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)) {
     19285        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
     19286        psFree(md);
     19287        return false;
     19288    }
     19289    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)) {
     19290        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     19291        psFree(md);
     19292        return false;
     19293    }
     19294    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, "INDEX(det_id, exp_id)", "255")) {
     19295        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     19296        psFree(md);
     19297        return false;
     19298    }
     19299    if (!psMetadataAdd(md, PS_LIST_TAIL, "corr_id", PS_DATA_S64, NULL, 0)) {
     19300        psError(PS_ERR_UNKNOWN, false, "failed to add item corr_id");
     19301        psFree(md);
     19302        return false;
     19303    }
     19304    if (!psMetadataAdd(md, PS_LIST_TAIL, "corr_type", PS_DATA_STRING, NULL, "64")) {
     19305        psError(PS_ERR_UNKNOWN, false, "failed to add item corr_type");
     19306        psFree(md);
     19307        return false;
     19308    }
     19309    if (!psMetadataAdd(md, PS_LIST_TAIL, "recipe", PS_DATA_STRING, NULL, "64")) {
     19310        psError(PS_ERR_UNKNOWN, false, "failed to add item recipe");
     19311        psFree(md);
     19312        return false;
     19313    }
     19314    if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, "255")) {
     19315        psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
     19316        psFree(md);
     19317        return false;
     19318    }
     19319    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "Key NOT NULL", 0)) {
     19320        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
     19321        psFree(md);
     19322        return false;
     19323    }
     19324
     19325    bool status = psDBCreateTable(dbh, DETCORRECTEDEXP_TABLE_NAME, md);
     19326
     19327    psFree(md);
     19328
     19329    return status;
     19330}
     19331
     19332bool detCorrectedExpDropTable(psDB *dbh)
     19333{
     19334    return psDBDropTable(dbh, DETCORRECTEDEXP_TABLE_NAME);
     19335}
     19336
     19337bool 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)
     19338{
     19339    psMetadata *md = psMetadataAlloc();
     19340    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, NULL, det_id)) {
     19341        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
     19342        psFree(md);
     19343        return false;
     19344    }
     19345    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, exp_id)) {
     19346        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     19347        psFree(md);
     19348        return false;
     19349    }
     19350    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) {
     19351        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     19352        psFree(md);
     19353        return false;
     19354    }
     19355    if (!psMetadataAdd(md, PS_LIST_TAIL, "corr_id", PS_DATA_S64, NULL, corr_id)) {
     19356        psError(PS_ERR_UNKNOWN, false, "failed to add item corr_id");
     19357        psFree(md);
     19358        return false;
     19359    }
     19360    if (!psMetadataAdd(md, PS_LIST_TAIL, "corr_type", PS_DATA_STRING, NULL, corr_type)) {
     19361        psError(PS_ERR_UNKNOWN, false, "failed to add item corr_type");
     19362        psFree(md);
     19363        return false;
     19364    }
     19365    if (!psMetadataAdd(md, PS_LIST_TAIL, "recipe", PS_DATA_STRING, NULL, recipe)) {
     19366        psError(PS_ERR_UNKNOWN, false, "failed to add item recipe");
     19367        psFree(md);
     19368        return false;
     19369    }
     19370    if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, path_base)) {
     19371        psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
     19372        psFree(md);
     19373        return false;
     19374    }
     19375    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, fault)) {
     19376        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
     19377        psFree(md);
     19378        return false;
     19379    }
     19380
     19381    bool status = psDBInsertOneRow(dbh, DETCORRECTEDEXP_TABLE_NAME, md);
     19382    psFree(md);
     19383
     19384    return status;
     19385}
     19386
     19387long long detCorrectedExpDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
     19388{
     19389    long long       deleted = 0;
     19390
     19391    long long count = psDBDeleteRows(dbh, DETCORRECTEDEXP_TABLE_NAME, where, limit);
     19392    if (count < 0) {
     19393        psError(PS_ERR_UNKNOWN, true, "failed to delete row from detCorrectedExp");
     19394        return count;
     19395
     19396        deleted += count;
     19397    }
     19398
     19399    return deleted;
     19400}
     19401bool detCorrectedExpInsertObject(psDB *dbh, detCorrectedExpRow *object)
     19402{
     19403    return detCorrectedExpInsert(dbh, object->det_id, object->exp_id, object->uri, object->corr_id, object->corr_type, object->recipe, object->path_base, object->fault);
     19404}
     19405
     19406bool detCorrectedExpInsertObjects(psDB *dbh, psArray *objects)
     19407{
     19408    for (long i = 0; i < psArrayLength(objects); i++) {
     19409        if (!detCorrectedExpInsertObject(dbh, objects->data[i])) {
     19410            return false;
     19411        }
     19412    }
     19413
     19414    return true;
     19415}
     19416
     19417bool detCorrectedExpInsertFits(psDB *dbh, const psFits *fits)
     19418{
     19419    psArray         *rowSet;
     19420
     19421    // move to (the first?) extension named  DETCORRECTEDEXP_TABLE_NAME
     19422    if (!psFitsMoveExtName(fits, DETCORRECTEDEXP_TABLE_NAME)) {
     19423        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", DETCORRECTEDEXP_TABLE_NAME);
     19424        return false;
     19425    }
     19426
     19427    // check HDU type
     19428    if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
     19429        psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
     19430        return false;
     19431    }
     19432
     19433    // read fits table
     19434    rowSet = psFitsReadTable(fits);
     19435    if (!rowSet) {
     19436        psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
     19437        psFree(rowSet);
     19438        return false;
     19439    }
     19440
     19441    if (!psDBInsertRows(dbh, DETCORRECTEDEXP_TABLE_NAME, rowSet)) {
     19442        psError(PS_ERR_UNKNOWN, false, "databse insert failed");
     19443        psFree(rowSet);
     19444        return false;
     19445    }
     19446
     19447    psFree(rowSet);
     19448
     19449    return true;
     19450}
     19451
     19452bool detCorrectedExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
     19453{
     19454    psArray         *rowSet;
     19455
     19456    rowSet = psDBSelectRows(dbh, DETCORRECTEDEXP_TABLE_NAME, where, limit);
     19457    if (!rowSet) {
     19458        return false;
     19459    }
     19460
     19461    // output to fits
     19462    if (!psFitsWriteTable(fits, NULL, rowSet, DETCORRECTEDEXP_TABLE_NAME)) {
     19463        psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
     19464        psFree(rowSet);
     19465        return false;
     19466    }
     19467
     19468    psFree(rowSet);
     19469
     19470    return true;
     19471}
     19472
     19473psMetadata *detCorrectedExpMetadataFromObject(const detCorrectedExpRow *object)
     19474{
     19475    psMetadata *md = psMetadataAlloc();
     19476    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, NULL, object->det_id)) {
     19477        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
     19478        psFree(md);
     19479        return false;
     19480    }
     19481    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, object->exp_id)) {
     19482        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     19483        psFree(md);
     19484        return false;
     19485    }
     19486    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) {
     19487        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     19488        psFree(md);
     19489        return false;
     19490    }
     19491    if (!psMetadataAdd(md, PS_LIST_TAIL, "corr_id", PS_DATA_S64, NULL, object->corr_id)) {
     19492        psError(PS_ERR_UNKNOWN, false, "failed to add item corr_id");
     19493        psFree(md);
     19494        return false;
     19495    }
     19496    if (!psMetadataAdd(md, PS_LIST_TAIL, "corr_type", PS_DATA_STRING, NULL, object->corr_type)) {
     19497        psError(PS_ERR_UNKNOWN, false, "failed to add item corr_type");
     19498        psFree(md);
     19499        return false;
     19500    }
     19501    if (!psMetadataAdd(md, PS_LIST_TAIL, "recipe", PS_DATA_STRING, NULL, object->recipe)) {
     19502        psError(PS_ERR_UNKNOWN, false, "failed to add item recipe");
     19503        psFree(md);
     19504        return false;
     19505    }
     19506    if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, object->path_base)) {
     19507        psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
     19508        psFree(md);
     19509        return false;
     19510    }
     19511    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) {
     19512        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
     19513        psFree(md);
     19514        return false;
     19515    }
     19516
     19517
     19518    return md;
     19519}
     19520
     19521detCorrectedExpRow *detCorrectedExpObjectFromMetadata(psMetadata *md)
     19522{
     19523
     19524bool status = false;
     19525    psS64 det_id = psMetadataLookupS64(&status, md, "det_id");
     19526    if (!status) {
     19527        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
     19528        return false;
     19529    }
     19530    psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id");
     19531    if (!status) {
     19532        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
     19533        return false;
     19534    }
     19535    char* uri = psMetadataLookupPtr(&status, md, "uri");
     19536    if (!status) {
     19537        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
     19538        return false;
     19539    }
     19540    psS64 corr_id = psMetadataLookupS64(&status, md, "corr_id");
     19541    if (!status) {
     19542        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item corr_id");
     19543        return false;
     19544    }
     19545    char* corr_type = psMetadataLookupPtr(&status, md, "corr_type");
     19546    if (!status) {
     19547        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item corr_type");
     19548        return false;
     19549    }
     19550    char* recipe = psMetadataLookupPtr(&status, md, "recipe");
     19551    if (!status) {
     19552        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item recipe");
     19553        return false;
     19554    }
     19555    char* path_base = psMetadataLookupPtr(&status, md, "path_base");
     19556    if (!status) {
     19557        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item path_base");
     19558        return false;
     19559    }
     19560    psS16 fault = psMetadataLookupS16(&status, md, "fault");
     19561    if (!status) {
     19562        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault");
     19563        return false;
     19564    }
     19565
     19566    return detCorrectedExpRowAlloc(det_id, exp_id, uri, corr_id, corr_type, recipe, path_base, fault);
     19567}
     19568psArray *detCorrectedExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     19569{
     19570    psArray         *rowSet;
     19571    psArray         *returnSet;
     19572    psU64           i;
     19573
     19574    rowSet = psDBSelectRows(dbh, DETCORRECTEDEXP_TABLE_NAME, where, limit);
     19575    if (!rowSet) {
     19576        return NULL;
     19577    }
     19578
     19579    // convert psMetadata rows to row objects
     19580
     19581    returnSet = psArrayAllocEmpty(rowSet->n);
     19582
     19583    for (i = 0; i < rowSet->n; i++) {
     19584        detCorrectedExpRow *object = detCorrectedExpObjectFromMetadata(rowSet->data[i]);
     19585        psArrayAdd(returnSet, 0, object);
     19586        psFree(object);
     19587    }
     19588
     19589    psFree(rowSet);
     19590
     19591    return returnSet;
     19592}
     19593bool detCorrectedExpDeleteObject(psDB *dbh, const detCorrectedExpRow *object)
     19594{
     19595    psMetadata *where = detCorrectedExpMetadataFromObject(object);
     19596    long long count = psDBDeleteRows(dbh, DETCORRECTEDEXP_TABLE_NAME, where, 0);
     19597    psFree(where);
     19598    if (count < 0) {
     19599        psError(PS_ERR_UNKNOWN, true, "failed to delete row from detCorrectedExp");
     19600        return false;
     19601    }
     19602    if (count > 1) {
     19603        // XXX should this be a psAbort() instead?  It is possible that
     19604        // having an object match multiple rows was by design.
     19605        psError(PS_ERR_UNKNOWN, true, "detCorrectedExpRow object matched more then one row.  Check your database schema");
     19606        return false;
     19607    }
     19608
     19609    return true;
     19610}
     19611long long detCorrectedExpDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
     19612{
     19613    long long       deleted = 0;
     19614
     19615    for (long long i = 0; i < objects->n; i++) {
     19616        detCorrectedExpRow *object = objects->data[i];
     19617        psMetadata *where = detCorrectedExpMetadataFromObject(object);
     19618        long long count = psDBDeleteRows(dbh, DETCORRECTEDEXP_TABLE_NAME, where, limit);
     19619        psFree(where);
     19620        if (count < 0) {
     19621            psError(PS_ERR_UNKNOWN, true, "failed to delete row from detCorrectedExp");
     19622            return count;
     19623        }
     19624
     19625        deleted += count;
     19626    }
     19627
     19628    return deleted;
     19629}
     19630bool detCorrectedExpPrintObjects(FILE *stream, psArray *objects, bool mdcf)
     19631{
     19632    PS_ASSERT_PTR_NON_NULL(objects, false);
     19633
     19634    psMetadata *output = psMetadataAlloc();
     19635    for (long i = 0; i < psArrayLength(objects); i++) {
     19636        psMetadata *md = detCorrectedExpMetadataFromObject(objects->data[i]);
     19637        if (!psMetadataAddMetadata(
     19638            output,
     19639            PS_LIST_TAIL,
     19640            DETCORRECTEDEXP_TABLE_NAME,
     19641            PS_META_DUPLICATE_OK,
     19642            NULL,
     19643            md
     19644        )) {
     19645            psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
     19646            psFree(md);
     19647            psFree(output);
     19648            return false;
     19649        }
     19650        psFree(md);
     19651    }
     19652
     19653    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
     19654        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     19655        psFree(output);
     19656    }
     19657    psFree(output);
     19658
     19659    return true;
     19660}
     19661bool detCorrectedExpPrintObject(FILE *stream, detCorrectedExpRow *object, bool mdcf)
     19662{
     19663    PS_ASSERT_PTR_NON_NULL(object, false);
     19664
     19665    psMetadata *md = detCorrectedExpMetadataFromObject(object);
     19666
     19667    if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
     19668        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     19669        psFree(md);
     19670    }
     19671
     19672    psFree(md);
     19673
     19674    return true;
     19675}
     19676static void detCorrectedImfileRowFree(detCorrectedImfileRow *object);
     19677
     19678detCorrectedImfileRow *detCorrectedImfileRowAlloc(psS64 det_id, psS64 exp_id, const char *class_id, const char *uri, const char *path_base, psS16 fault)
     19679{
     19680    detCorrectedImfileRow *_object;
     19681
     19682    _object = psAlloc(sizeof(detCorrectedImfileRow));
     19683    psMemSetDeallocator(_object, (psFreeFunc)detCorrectedImfileRowFree);
     19684
     19685    _object->det_id = det_id;
     19686    _object->exp_id = exp_id;
     19687    _object->class_id = psStringCopy(class_id);
     19688    _object->uri = psStringCopy(uri);
     19689    _object->path_base = psStringCopy(path_base);
     19690    _object->fault = fault;
     19691
     19692    return _object;
     19693}
     19694
     19695static void detCorrectedImfileRowFree(detCorrectedImfileRow *object)
     19696{
     19697    psFree(object->class_id);
     19698    psFree(object->uri);
     19699    psFree(object->path_base);
     19700}
     19701
     19702bool detCorrectedImfileCreateTable(psDB *dbh)
     19703{
     19704    psMetadata *md = psMetadataAlloc();
     19705    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)) {
     19706        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
     19707        psFree(md);
     19708        return false;
     19709    }
     19710    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)) {
     19711        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     19712        psFree(md);
     19713        return false;
     19714    }
     19715    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, "Primary Key INDEX(det_id, class_id)", "64")) {
     19716        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
     19717        psFree(md);
     19718        return false;
     19719    }
     19720    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, "INDEX(det_id, exp_id)", "255")) {
     19721        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     19722        psFree(md);
     19723        return false;
     19724    }
     19725    if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, "255")) {
     19726        psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
     19727        psFree(md);
     19728        return false;
     19729    }
     19730    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "Key NOT NULL", 0)) {
     19731        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
     19732        psFree(md);
     19733        return false;
     19734    }
     19735
     19736    bool status = psDBCreateTable(dbh, DETCORRECTEDIMFILE_TABLE_NAME, md);
     19737
     19738    psFree(md);
     19739
     19740    return status;
     19741}
     19742
     19743bool detCorrectedImfileDropTable(psDB *dbh)
     19744{
     19745    return psDBDropTable(dbh, DETCORRECTEDIMFILE_TABLE_NAME);
     19746}
     19747
     19748bool detCorrectedImfileInsert(psDB * dbh, psS64 det_id, psS64 exp_id, const char *class_id, const char *uri, const char *path_base, psS16 fault)
     19749{
     19750    psMetadata *md = psMetadataAlloc();
     19751    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, NULL, det_id)) {
     19752        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
     19753        psFree(md);
     19754        return false;
     19755    }
     19756    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, exp_id)) {
     19757        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     19758        psFree(md);
     19759        return false;
     19760    }
     19761    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, class_id)) {
     19762        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
     19763        psFree(md);
     19764        return false;
     19765    }
     19766    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) {
     19767        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     19768        psFree(md);
     19769        return false;
     19770    }
     19771    if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, path_base)) {
     19772        psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
     19773        psFree(md);
     19774        return false;
     19775    }
     19776    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, fault)) {
     19777        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
     19778        psFree(md);
     19779        return false;
     19780    }
     19781
     19782    bool status = psDBInsertOneRow(dbh, DETCORRECTEDIMFILE_TABLE_NAME, md);
     19783    psFree(md);
     19784
     19785    return status;
     19786}
     19787
     19788long long detCorrectedImfileDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
     19789{
     19790    long long       deleted = 0;
     19791
     19792    long long count = psDBDeleteRows(dbh, DETCORRECTEDIMFILE_TABLE_NAME, where, limit);
     19793    if (count < 0) {
     19794        psError(PS_ERR_UNKNOWN, true, "failed to delete row from detCorrectedImfile");
     19795        return count;
     19796
     19797        deleted += count;
     19798    }
     19799
     19800    return deleted;
     19801}
     19802bool detCorrectedImfileInsertObject(psDB *dbh, detCorrectedImfileRow *object)
     19803{
     19804    return detCorrectedImfileInsert(dbh, object->det_id, object->exp_id, object->class_id, object->uri, object->path_base, object->fault);
     19805}
     19806
     19807bool detCorrectedImfileInsertObjects(psDB *dbh, psArray *objects)
     19808{
     19809    for (long i = 0; i < psArrayLength(objects); i++) {
     19810        if (!detCorrectedImfileInsertObject(dbh, objects->data[i])) {
     19811            return false;
     19812        }
     19813    }
     19814
     19815    return true;
     19816}
     19817
     19818bool detCorrectedImfileInsertFits(psDB *dbh, const psFits *fits)
     19819{
     19820    psArray         *rowSet;
     19821
     19822    // move to (the first?) extension named  DETCORRECTEDIMFILE_TABLE_NAME
     19823    if (!psFitsMoveExtName(fits, DETCORRECTEDIMFILE_TABLE_NAME)) {
     19824        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", DETCORRECTEDIMFILE_TABLE_NAME);
     19825        return false;
     19826    }
     19827
     19828    // check HDU type
     19829    if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
     19830        psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
     19831        return false;
     19832    }
     19833
     19834    // read fits table
     19835    rowSet = psFitsReadTable(fits);
     19836    if (!rowSet) {
     19837        psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
     19838        psFree(rowSet);
     19839        return false;
     19840    }
     19841
     19842    if (!psDBInsertRows(dbh, DETCORRECTEDIMFILE_TABLE_NAME, rowSet)) {
     19843        psError(PS_ERR_UNKNOWN, false, "databse insert failed");
     19844        psFree(rowSet);
     19845        return false;
     19846    }
     19847
     19848    psFree(rowSet);
     19849
     19850    return true;
     19851}
     19852
     19853bool detCorrectedImfileSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
     19854{
     19855    psArray         *rowSet;
     19856
     19857    rowSet = psDBSelectRows(dbh, DETCORRECTEDIMFILE_TABLE_NAME, where, limit);
     19858    if (!rowSet) {
     19859        return false;
     19860    }
     19861
     19862    // output to fits
     19863    if (!psFitsWriteTable(fits, NULL, rowSet, DETCORRECTEDIMFILE_TABLE_NAME)) {
     19864        psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
     19865        psFree(rowSet);
     19866        return false;
     19867    }
     19868
     19869    psFree(rowSet);
     19870
     19871    return true;
     19872}
     19873
     19874psMetadata *detCorrectedImfileMetadataFromObject(const detCorrectedImfileRow *object)
     19875{
     19876    psMetadata *md = psMetadataAlloc();
     19877    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, NULL, object->det_id)) {
     19878        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
     19879        psFree(md);
     19880        return false;
     19881    }
     19882    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, object->exp_id)) {
     19883        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     19884        psFree(md);
     19885        return false;
     19886    }
     19887    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, object->class_id)) {
     19888        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
     19889        psFree(md);
     19890        return false;
     19891    }
     19892    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) {
     19893        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     19894        psFree(md);
     19895        return false;
     19896    }
     19897    if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, object->path_base)) {
     19898        psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
     19899        psFree(md);
     19900        return false;
     19901    }
     19902    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) {
     19903        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
     19904        psFree(md);
     19905        return false;
     19906    }
     19907
     19908
     19909    return md;
     19910}
     19911
     19912detCorrectedImfileRow *detCorrectedImfileObjectFromMetadata(psMetadata *md)
     19913{
     19914
     19915bool status = false;
     19916    psS64 det_id = psMetadataLookupS64(&status, md, "det_id");
     19917    if (!status) {
     19918        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
     19919        return false;
     19920    }
     19921    psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id");
     19922    if (!status) {
     19923        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
     19924        return false;
     19925    }
     19926    char* class_id = psMetadataLookupPtr(&status, md, "class_id");
     19927    if (!status) {
     19928        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class_id");
     19929        return false;
     19930    }
     19931    char* uri = psMetadataLookupPtr(&status, md, "uri");
     19932    if (!status) {
     19933        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
     19934        return false;
     19935    }
     19936    char* path_base = psMetadataLookupPtr(&status, md, "path_base");
     19937    if (!status) {
     19938        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item path_base");
     19939        return false;
     19940    }
     19941    psS16 fault = psMetadataLookupS16(&status, md, "fault");
     19942    if (!status) {
     19943        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault");
     19944        return false;
     19945    }
     19946
     19947    return detCorrectedImfileRowAlloc(det_id, exp_id, class_id, uri, path_base, fault);
     19948}
     19949psArray *detCorrectedImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     19950{
     19951    psArray         *rowSet;
     19952    psArray         *returnSet;
     19953    psU64           i;
     19954
     19955    rowSet = psDBSelectRows(dbh, DETCORRECTEDIMFILE_TABLE_NAME, where, limit);
     19956    if (!rowSet) {
     19957        return NULL;
     19958    }
     19959
     19960    // convert psMetadata rows to row objects
     19961
     19962    returnSet = psArrayAllocEmpty(rowSet->n);
     19963
     19964    for (i = 0; i < rowSet->n; i++) {
     19965        detCorrectedImfileRow *object = detCorrectedImfileObjectFromMetadata(rowSet->data[i]);
     19966        psArrayAdd(returnSet, 0, object);
     19967        psFree(object);
     19968    }
     19969
     19970    psFree(rowSet);
     19971
     19972    return returnSet;
     19973}
     19974bool detCorrectedImfileDeleteObject(psDB *dbh, const detCorrectedImfileRow *object)
     19975{
     19976    psMetadata *where = detCorrectedImfileMetadataFromObject(object);
     19977    long long count = psDBDeleteRows(dbh, DETCORRECTEDIMFILE_TABLE_NAME, where, 0);
     19978    psFree(where);
     19979    if (count < 0) {
     19980        psError(PS_ERR_UNKNOWN, true, "failed to delete row from detCorrectedImfile");
     19981        return false;
     19982    }
     19983    if (count > 1) {
     19984        // XXX should this be a psAbort() instead?  It is possible that
     19985        // having an object match multiple rows was by design.
     19986        psError(PS_ERR_UNKNOWN, true, "detCorrectedImfileRow object matched more then one row.  Check your database schema");
     19987        return false;
     19988    }
     19989
     19990    return true;
     19991}
     19992long long detCorrectedImfileDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
     19993{
     19994    long long       deleted = 0;
     19995
     19996    for (long long i = 0; i < objects->n; i++) {
     19997        detCorrectedImfileRow *object = objects->data[i];
     19998        psMetadata *where = detCorrectedImfileMetadataFromObject(object);
     19999        long long count = psDBDeleteRows(dbh, DETCORRECTEDIMFILE_TABLE_NAME, where, limit);
     20000        psFree(where);
     20001        if (count < 0) {
     20002            psError(PS_ERR_UNKNOWN, true, "failed to delete row from detCorrectedImfile");
     20003            return count;
     20004        }
     20005
     20006        deleted += count;
     20007    }
     20008
     20009    return deleted;
     20010}
     20011bool detCorrectedImfilePrintObjects(FILE *stream, psArray *objects, bool mdcf)
     20012{
     20013    PS_ASSERT_PTR_NON_NULL(objects, false);
     20014
     20015    psMetadata *output = psMetadataAlloc();
     20016    for (long i = 0; i < psArrayLength(objects); i++) {
     20017        psMetadata *md = detCorrectedImfileMetadataFromObject(objects->data[i]);
     20018        if (!psMetadataAddMetadata(
     20019            output,
     20020            PS_LIST_TAIL,
     20021            DETCORRECTEDIMFILE_TABLE_NAME,
     20022            PS_META_DUPLICATE_OK,
     20023            NULL,
     20024            md
     20025        )) {
     20026            psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
     20027            psFree(md);
     20028            psFree(output);
     20029            return false;
     20030        }
     20031        psFree(md);
     20032    }
     20033
     20034    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
     20035        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     20036        psFree(output);
     20037    }
     20038    psFree(output);
     20039
     20040    return true;
     20041}
     20042bool detCorrectedImfilePrintObject(FILE *stream, detCorrectedImfileRow *object, bool mdcf)
     20043{
     20044    PS_ASSERT_PTR_NON_NULL(object, false);
     20045
     20046    psMetadata *md = detCorrectedImfileMetadataFromObject(object);
     20047
     20048    if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
     20049        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     20050        psFree(md);
     20051    }
     20052
     20053    psFree(md);
     20054
     20055    return true;
     20056}
     20057static void magicRunRowFree(magicRunRow *object);
     20058
     20059magicRunRow *magicRunRowAlloc(psS64 magic_id, const char *state, const char *workdir, const char *workdir_state, const char *label, const char *dvodb, psTime* registered)
     20060{
     20061    magicRunRow     *_object;
     20062
     20063    _object = psAlloc(sizeof(magicRunRow));
     20064    psMemSetDeallocator(_object, (psFreeFunc)magicRunRowFree);
     20065
     20066    _object->magic_id = magic_id;
     20067    _object->state = psStringCopy(state);
     20068    _object->workdir = psStringCopy(workdir);
     20069    _object->workdir_state = psStringCopy(workdir_state);
     20070    _object->label = psStringCopy(label);
     20071    _object->dvodb = psStringCopy(dvodb);
     20072    _object->registered = psTimeCopy(registered);
     20073
     20074    return _object;
     20075}
     20076
     20077static void magicRunRowFree(magicRunRow *object)
     20078{
     20079    psFree(object->state);
     20080    psFree(object->workdir);
     20081    psFree(object->workdir_state);
     20082    psFree(object->label);
     20083    psFree(object->dvodb);
     20084    psFree(object->registered);
     20085}
     20086
     20087bool magicRunCreateTable(psDB *dbh)
     20088{
     20089    psMetadata *md = psMetadataAlloc();
     20090    if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, "Primary Key AUTO_INCREMENT", 0)) {
     20091        psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
     20092        psFree(md);
     20093        return false;
     20094    }
     20095    if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, "Key", "64")) {
     20096        psError(PS_ERR_UNKNOWN, false, "failed to add item state");
     20097        psFree(md);
     20098        return false;
     20099    }
     20100    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, "255")) {
     20101        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
     20102        psFree(md);
     20103        return false;
     20104    }
     20105    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir_state", PS_DATA_STRING, "Key", "255")) {
     20106        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir_state");
     20107        psFree(md);
     20108        return false;
     20109    }
     20110    if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, "key", "64")) {
     20111        psError(PS_ERR_UNKNOWN, false, "failed to add item label");
     20112        psFree(md);
     20113        return false;
     20114    }
     20115    if (!psMetadataAdd(md, PS_LIST_TAIL, "dvodb", PS_DATA_STRING, NULL, "255")) {
     20116        psError(PS_ERR_UNKNOWN, false, "failed to add item dvodb");
     20117        psFree(md);
     20118        return false;
     20119    }
     20120    if (!psMetadataAdd(md, PS_LIST_TAIL, "registered", PS_DATA_TIME, NULL, NULL)) {
     20121        psError(PS_ERR_UNKNOWN, false, "failed to add item registered");
     20122        psFree(md);
     20123        return false;
     20124    }
     20125
     20126    bool status = psDBCreateTable(dbh, MAGICRUN_TABLE_NAME, md);
     20127
     20128    psFree(md);
     20129
     20130    return status;
     20131}
     20132
     20133bool magicRunDropTable(psDB *dbh)
     20134{
     20135    return psDBDropTable(dbh, MAGICRUN_TABLE_NAME);
     20136}
     20137
     20138bool magicRunInsert(psDB * dbh, psS64 magic_id, const char *state, const char *workdir, const char *workdir_state, const char *label, const char *dvodb, psTime* registered)
     20139{
     20140    psMetadata *md = psMetadataAlloc();
     20141    if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, magic_id)) {
     20142        psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
     20143        psFree(md);
     20144        return false;
     20145    }
     20146    if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, NULL, state)) {
     20147        psError(PS_ERR_UNKNOWN, false, "failed to add item state");
     20148        psFree(md);
     20149        return false;
     20150    }
     20151    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, workdir)) {
     20152        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
     20153        psFree(md);
     20154        return false;
     20155    }
     20156    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir_state", PS_DATA_STRING, NULL, workdir_state)) {
     20157        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir_state");
     20158        psFree(md);
     20159        return false;
     20160    }
     20161    if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, label)) {
     20162        psError(PS_ERR_UNKNOWN, false, "failed to add item label");
     20163        psFree(md);
     20164        return false;
     20165    }
     20166    if (!psMetadataAdd(md, PS_LIST_TAIL, "dvodb", PS_DATA_STRING, NULL, dvodb)) {
     20167        psError(PS_ERR_UNKNOWN, false, "failed to add item dvodb");
     20168        psFree(md);
     20169        return false;
     20170    }
     20171    if (!psMetadataAdd(md, PS_LIST_TAIL, "registered", PS_DATA_TIME, NULL, registered)) {
     20172        psError(PS_ERR_UNKNOWN, false, "failed to add item registered");
     20173        psFree(md);
     20174        return false;
     20175    }
     20176
     20177    bool status = psDBInsertOneRow(dbh, MAGICRUN_TABLE_NAME, md);
     20178    psFree(md);
     20179
     20180    return status;
     20181}
     20182
     20183long long magicRunDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
     20184{
     20185    long long       deleted = 0;
     20186
     20187    long long count = psDBDeleteRows(dbh, MAGICRUN_TABLE_NAME, where, limit);
     20188    if (count < 0) {
     20189        psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicRun");
     20190        return count;
     20191
     20192        deleted += count;
     20193    }
     20194
     20195    return deleted;
     20196}
     20197bool magicRunInsertObject(psDB *dbh, magicRunRow *object)
     20198{
     20199    return magicRunInsert(dbh, object->magic_id, object->state, object->workdir, object->workdir_state, object->label, object->dvodb, object->registered);
     20200}
     20201
     20202bool magicRunInsertObjects(psDB *dbh, psArray *objects)
     20203{
     20204    for (long i = 0; i < psArrayLength(objects); i++) {
     20205        if (!magicRunInsertObject(dbh, objects->data[i])) {
     20206            return false;
     20207        }
     20208    }
     20209
     20210    return true;
     20211}
     20212
     20213bool magicRunInsertFits(psDB *dbh, const psFits *fits)
     20214{
     20215    psArray         *rowSet;
     20216
     20217    // move to (the first?) extension named  MAGICRUN_TABLE_NAME
     20218    if (!psFitsMoveExtName(fits, MAGICRUN_TABLE_NAME)) {
     20219        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", MAGICRUN_TABLE_NAME);
     20220        return false;
     20221    }
     20222
     20223    // check HDU type
     20224    if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
     20225        psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
     20226        return false;
     20227    }
     20228
     20229    // read fits table
     20230    rowSet = psFitsReadTable(fits);
     20231    if (!rowSet) {
     20232        psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
     20233        psFree(rowSet);
     20234        return false;
     20235    }
     20236
     20237    if (!psDBInsertRows(dbh, MAGICRUN_TABLE_NAME, rowSet)) {
     20238        psError(PS_ERR_UNKNOWN, false, "databse insert failed");
     20239        psFree(rowSet);
     20240        return false;
     20241    }
     20242
     20243    psFree(rowSet);
     20244
     20245    return true;
     20246}
     20247
     20248bool magicRunSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
     20249{
     20250    psArray         *rowSet;
     20251
     20252    rowSet = psDBSelectRows(dbh, MAGICRUN_TABLE_NAME, where, limit);
     20253    if (!rowSet) {
     20254        return false;
     20255    }
     20256
     20257    // output to fits
     20258    if (!psFitsWriteTable(fits, NULL, rowSet, MAGICRUN_TABLE_NAME)) {
     20259        psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
     20260        psFree(rowSet);
     20261        return false;
     20262    }
     20263
     20264    psFree(rowSet);
     20265
     20266    return true;
     20267}
     20268
     20269psMetadata *magicRunMetadataFromObject(const magicRunRow *object)
     20270{
     20271    psMetadata *md = psMetadataAlloc();
     20272    if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, object->magic_id)) {
     20273        psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
     20274        psFree(md);
     20275        return false;
     20276    }
     20277    if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, NULL, object->state)) {
     20278        psError(PS_ERR_UNKNOWN, false, "failed to add item state");
     20279        psFree(md);
     20280        return false;
     20281    }
     20282    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, object->workdir)) {
     20283        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
     20284        psFree(md);
     20285        return false;
     20286    }
     20287    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir_state", PS_DATA_STRING, NULL, object->workdir_state)) {
     20288        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir_state");
     20289        psFree(md);
     20290        return false;
     20291    }
     20292    if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, object->label)) {
     20293        psError(PS_ERR_UNKNOWN, false, "failed to add item label");
     20294        psFree(md);
     20295        return false;
     20296    }
     20297    if (!psMetadataAdd(md, PS_LIST_TAIL, "dvodb", PS_DATA_STRING, NULL, object->dvodb)) {
     20298        psError(PS_ERR_UNKNOWN, false, "failed to add item dvodb");
     20299        psFree(md);
     20300        return false;
     20301    }
     20302    if (!psMetadataAdd(md, PS_LIST_TAIL, "registered", PS_DATA_TIME, NULL, object->registered)) {
     20303        psError(PS_ERR_UNKNOWN, false, "failed to add item registered");
     20304        psFree(md);
     20305        return false;
     20306    }
     20307
     20308
     20309    return md;
     20310}
     20311
     20312magicRunRow *magicRunObjectFromMetadata(psMetadata *md)
     20313{
     20314
     20315bool status = false;
     20316    psS64 magic_id = psMetadataLookupS64(&status, md, "magic_id");
     20317    if (!status) {
     20318        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item magic_id");
     20319        return false;
     20320    }
     20321    char* state = psMetadataLookupPtr(&status, md, "state");
     20322    if (!status) {
     20323        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item state");
     20324        return false;
     20325    }
     20326    char* workdir = psMetadataLookupPtr(&status, md, "workdir");
     20327    if (!status) {
     20328        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item workdir");
     20329        return false;
     20330    }
     20331    char* workdir_state = psMetadataLookupPtr(&status, md, "workdir_state");
     20332    if (!status) {
     20333        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item workdir_state");
     20334        return false;
     20335    }
     20336    char* label = psMetadataLookupPtr(&status, md, "label");
     20337    if (!status) {
     20338        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item label");
     20339        return false;
     20340    }
     20341    char* dvodb = psMetadataLookupPtr(&status, md, "dvodb");
     20342    if (!status) {
     20343        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dvodb");
     20344        return false;
     20345    }
     20346    psTime* registered = psMetadataLookupPtr(&status, md, "registered");
     20347    if (!status) {
     20348        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item registered");
     20349        return false;
     20350    }
     20351
     20352    return magicRunRowAlloc(magic_id, state, workdir, workdir_state, label, dvodb, registered);
     20353}
     20354psArray *magicRunSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     20355{
     20356    psArray         *rowSet;
     20357    psArray         *returnSet;
     20358    psU64           i;
     20359
     20360    rowSet = psDBSelectRows(dbh, MAGICRUN_TABLE_NAME, where, limit);
     20361    if (!rowSet) {
     20362        return NULL;
     20363    }
     20364
     20365    // convert psMetadata rows to row objects
     20366
     20367    returnSet = psArrayAllocEmpty(rowSet->n);
     20368
     20369    for (i = 0; i < rowSet->n; i++) {
     20370        magicRunRow *object = magicRunObjectFromMetadata(rowSet->data[i]);
     20371        psArrayAdd(returnSet, 0, object);
     20372        psFree(object);
     20373    }
     20374
     20375    psFree(rowSet);
     20376
     20377    return returnSet;
     20378}
     20379bool magicRunDeleteObject(psDB *dbh, const magicRunRow *object)
     20380{
     20381    psMetadata *where = magicRunMetadataFromObject(object);
     20382    long long count = psDBDeleteRows(dbh, MAGICRUN_TABLE_NAME, where, 0);
     20383    psFree(where);
     20384    if (count < 0) {
     20385        psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicRun");
     20386        return false;
     20387    }
     20388    if (count > 1) {
     20389        // XXX should this be a psAbort() instead?  It is possible that
     20390        // having an object match multiple rows was by design.
     20391        psError(PS_ERR_UNKNOWN, true, "magicRunRow object matched more then one row.  Check your database schema");
     20392        return false;
     20393    }
     20394
     20395    return true;
     20396}
     20397long long magicRunDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
     20398{
     20399    long long       deleted = 0;
     20400
     20401    for (long long i = 0; i < objects->n; i++) {
     20402        magicRunRow *object = objects->data[i];
     20403        psMetadata *where = magicRunMetadataFromObject(object);
     20404        long long count = psDBDeleteRows(dbh, MAGICRUN_TABLE_NAME, where, limit);
     20405        psFree(where);
     20406        if (count < 0) {
     20407            psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicRun");
     20408            return count;
     20409        }
     20410
     20411        deleted += count;
     20412    }
     20413
     20414    return deleted;
     20415}
     20416bool magicRunPrintObjects(FILE *stream, psArray *objects, bool mdcf)
     20417{
     20418    PS_ASSERT_PTR_NON_NULL(objects, false);
     20419
     20420    psMetadata *output = psMetadataAlloc();
     20421    for (long i = 0; i < psArrayLength(objects); i++) {
     20422        psMetadata *md = magicRunMetadataFromObject(objects->data[i]);
     20423        if (!psMetadataAddMetadata(
     20424            output,
     20425            PS_LIST_TAIL,
     20426            MAGICRUN_TABLE_NAME,
     20427            PS_META_DUPLICATE_OK,
     20428            NULL,
     20429            md
     20430        )) {
     20431            psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
     20432            psFree(md);
     20433            psFree(output);
     20434            return false;
     20435        }
     20436        psFree(md);
     20437    }
     20438
     20439    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
     20440        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     20441        psFree(output);
     20442    }
     20443    psFree(output);
     20444
     20445    return true;
     20446}
     20447bool magicRunPrintObject(FILE *stream, magicRunRow *object, bool mdcf)
     20448{
     20449    PS_ASSERT_PTR_NON_NULL(object, false);
     20450
     20451    psMetadata *md = magicRunMetadataFromObject(object);
     20452
     20453    if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
     20454        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     20455        psFree(md);
     20456    }
     20457
     20458    psFree(md);
     20459
     20460    return true;
     20461}
     20462static void magicInputSkyfileRowFree(magicInputSkyfileRow *object);
     20463
     20464magicInputSkyfileRow *magicInputSkyfileRowAlloc(psS64 magic_id, psS64 diff_id, const char *node)
     20465{
     20466    magicInputSkyfileRow *_object;
     20467
     20468    _object = psAlloc(sizeof(magicInputSkyfileRow));
     20469    psMemSetDeallocator(_object, (psFreeFunc)magicInputSkyfileRowFree);
     20470
     20471    _object->magic_id = magic_id;
     20472    _object->diff_id = diff_id;
     20473    _object->node = psStringCopy(node);
     20474
     20475    return _object;
     20476}
     20477
     20478static void magicInputSkyfileRowFree(magicInputSkyfileRow *object)
     20479{
     20480    psFree(object->node);
     20481}
     20482
     20483bool magicInputSkyfileCreateTable(psDB *dbh)
     20484{
     20485    psMetadata *md = psMetadataAlloc();
     20486    if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, "Primary Key fkey(magic_id) ref magicRun(magic_id)", 0)) {
     20487        psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
     20488        psFree(md);
     20489        return false;
     20490    }
     20491    if (!psMetadataAdd(md, PS_LIST_TAIL, "diff_id", PS_DATA_S64, "Primary Key fkey(diff_id) ref diffRun(diff_id)", 0)) {
     20492        psError(PS_ERR_UNKNOWN, false, "failed to add item diff_id");
     20493        psFree(md);
     20494        return false;
     20495    }
     20496    if (!psMetadataAdd(md, PS_LIST_TAIL, "node", PS_DATA_STRING, NULL, "64")) {
     20497        psError(PS_ERR_UNKNOWN, false, "failed to add item node");
     20498        psFree(md);
     20499        return false;
     20500    }
     20501
     20502    bool status = psDBCreateTable(dbh, MAGICINPUTSKYFILE_TABLE_NAME, md);
     20503
     20504    psFree(md);
     20505
     20506    return status;
     20507}
     20508
     20509bool magicInputSkyfileDropTable(psDB *dbh)
     20510{
     20511    return psDBDropTable(dbh, MAGICINPUTSKYFILE_TABLE_NAME);
     20512}
     20513
     20514bool magicInputSkyfileInsert(psDB * dbh, psS64 magic_id, psS64 diff_id, const char *node)
     20515{
     20516    psMetadata *md = psMetadataAlloc();
     20517    if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, magic_id)) {
     20518        psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
     20519        psFree(md);
     20520        return false;
     20521    }
     20522    if (!psMetadataAdd(md, PS_LIST_TAIL, "diff_id", PS_DATA_S64, NULL, diff_id)) {
     20523        psError(PS_ERR_UNKNOWN, false, "failed to add item diff_id");
     20524        psFree(md);
     20525        return false;
     20526    }
     20527    if (!psMetadataAdd(md, PS_LIST_TAIL, "node", PS_DATA_STRING, NULL, node)) {
     20528        psError(PS_ERR_UNKNOWN, false, "failed to add item node");
     20529        psFree(md);
     20530        return false;
     20531    }
     20532
     20533    bool status = psDBInsertOneRow(dbh, MAGICINPUTSKYFILE_TABLE_NAME, md);
     20534    psFree(md);
     20535
     20536    return status;
     20537}
     20538
     20539long long magicInputSkyfileDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
     20540{
     20541    long long       deleted = 0;
     20542
     20543    long long count = psDBDeleteRows(dbh, MAGICINPUTSKYFILE_TABLE_NAME, where, limit);
     20544    if (count < 0) {
     20545        psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicInputSkyfile");
     20546        return count;
     20547
     20548        deleted += count;
     20549    }
     20550
     20551    return deleted;
     20552}
     20553bool magicInputSkyfileInsertObject(psDB *dbh, magicInputSkyfileRow *object)
     20554{
     20555    return magicInputSkyfileInsert(dbh, object->magic_id, object->diff_id, object->node);
     20556}
     20557
     20558bool magicInputSkyfileInsertObjects(psDB *dbh, psArray *objects)
     20559{
     20560    for (long i = 0; i < psArrayLength(objects); i++) {
     20561        if (!magicInputSkyfileInsertObject(dbh, objects->data[i])) {
     20562            return false;
     20563        }
     20564    }
     20565
     20566    return true;
     20567}
     20568
     20569bool magicInputSkyfileInsertFits(psDB *dbh, const psFits *fits)
     20570{
     20571    psArray         *rowSet;
     20572
     20573    // move to (the first?) extension named  MAGICINPUTSKYFILE_TABLE_NAME
     20574    if (!psFitsMoveExtName(fits, MAGICINPUTSKYFILE_TABLE_NAME)) {
     20575        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", MAGICINPUTSKYFILE_TABLE_NAME);
     20576        return false;
     20577    }
     20578
     20579    // check HDU type
     20580    if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
     20581        psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
     20582        return false;
     20583    }
     20584
     20585    // read fits table
     20586    rowSet = psFitsReadTable(fits);
     20587    if (!rowSet) {
     20588        psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
     20589        psFree(rowSet);
     20590        return false;
     20591    }
     20592
     20593    if (!psDBInsertRows(dbh, MAGICINPUTSKYFILE_TABLE_NAME, rowSet)) {
     20594        psError(PS_ERR_UNKNOWN, false, "databse insert failed");
     20595        psFree(rowSet);
     20596        return false;
     20597    }
     20598
     20599    psFree(rowSet);
     20600
     20601    return true;
     20602}
     20603
     20604bool magicInputSkyfileSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
     20605{
     20606    psArray         *rowSet;
     20607
     20608    rowSet = psDBSelectRows(dbh, MAGICINPUTSKYFILE_TABLE_NAME, where, limit);
     20609    if (!rowSet) {
     20610        return false;
     20611    }
     20612
     20613    // output to fits
     20614    if (!psFitsWriteTable(fits, NULL, rowSet, MAGICINPUTSKYFILE_TABLE_NAME)) {
     20615        psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
     20616        psFree(rowSet);
     20617        return false;
     20618    }
     20619
     20620    psFree(rowSet);
     20621
     20622    return true;
     20623}
     20624
     20625psMetadata *magicInputSkyfileMetadataFromObject(const magicInputSkyfileRow *object)
     20626{
     20627    psMetadata *md = psMetadataAlloc();
     20628    if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, object->magic_id)) {
     20629        psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
     20630        psFree(md);
     20631        return false;
     20632    }
     20633    if (!psMetadataAdd(md, PS_LIST_TAIL, "diff_id", PS_DATA_S64, NULL, object->diff_id)) {
     20634        psError(PS_ERR_UNKNOWN, false, "failed to add item diff_id");
     20635        psFree(md);
     20636        return false;
     20637    }
     20638    if (!psMetadataAdd(md, PS_LIST_TAIL, "node", PS_DATA_STRING, NULL, object->node)) {
     20639        psError(PS_ERR_UNKNOWN, false, "failed to add item node");
     20640        psFree(md);
     20641        return false;
     20642    }
     20643
     20644
     20645    return md;
     20646}
     20647
     20648magicInputSkyfileRow *magicInputSkyfileObjectFromMetadata(psMetadata *md)
     20649{
     20650
     20651bool status = false;
     20652    psS64 magic_id = psMetadataLookupS64(&status, md, "magic_id");
     20653    if (!status) {
     20654        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item magic_id");
     20655        return false;
     20656    }
     20657    psS64 diff_id = psMetadataLookupS64(&status, md, "diff_id");
     20658    if (!status) {
     20659        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item diff_id");
     20660        return false;
     20661    }
     20662    char* node = psMetadataLookupPtr(&status, md, "node");
     20663    if (!status) {
     20664        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item node");
     20665        return false;
     20666    }
     20667
     20668    return magicInputSkyfileRowAlloc(magic_id, diff_id, node);
     20669}
     20670psArray *magicInputSkyfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     20671{
     20672    psArray         *rowSet;
     20673    psArray         *returnSet;
     20674    psU64           i;
     20675
     20676    rowSet = psDBSelectRows(dbh, MAGICINPUTSKYFILE_TABLE_NAME, where, limit);
     20677    if (!rowSet) {
     20678        return NULL;
     20679    }
     20680
     20681    // convert psMetadata rows to row objects
     20682
     20683    returnSet = psArrayAllocEmpty(rowSet->n);
     20684
     20685    for (i = 0; i < rowSet->n; i++) {
     20686        magicInputSkyfileRow *object = magicInputSkyfileObjectFromMetadata(rowSet->data[i]);
     20687        psArrayAdd(returnSet, 0, object);
     20688        psFree(object);
     20689    }
     20690
     20691    psFree(rowSet);
     20692
     20693    return returnSet;
     20694}
     20695bool magicInputSkyfileDeleteObject(psDB *dbh, const magicInputSkyfileRow *object)
     20696{
     20697    psMetadata *where = magicInputSkyfileMetadataFromObject(object);
     20698    long long count = psDBDeleteRows(dbh, MAGICINPUTSKYFILE_TABLE_NAME, where, 0);
     20699    psFree(where);
     20700    if (count < 0) {
     20701        psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicInputSkyfile");
     20702        return false;
     20703    }
     20704    if (count > 1) {
     20705        // XXX should this be a psAbort() instead?  It is possible that
     20706        // having an object match multiple rows was by design.
     20707        psError(PS_ERR_UNKNOWN, true, "magicInputSkyfileRow object matched more then one row.  Check your database schema");
     20708        return false;
     20709    }
     20710
     20711    return true;
     20712}
     20713long long magicInputSkyfileDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
     20714{
     20715    long long       deleted = 0;
     20716
     20717    for (long long i = 0; i < objects->n; i++) {
     20718        magicInputSkyfileRow *object = objects->data[i];
     20719        psMetadata *where = magicInputSkyfileMetadataFromObject(object);
     20720        long long count = psDBDeleteRows(dbh, MAGICINPUTSKYFILE_TABLE_NAME, where, limit);
     20721        psFree(where);
     20722        if (count < 0) {
     20723            psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicInputSkyfile");
     20724            return count;
     20725        }
     20726
     20727        deleted += count;
     20728    }
     20729
     20730    return deleted;
     20731}
     20732bool magicInputSkyfilePrintObjects(FILE *stream, psArray *objects, bool mdcf)
     20733{
     20734    PS_ASSERT_PTR_NON_NULL(objects, false);
     20735
     20736    psMetadata *output = psMetadataAlloc();
     20737    for (long i = 0; i < psArrayLength(objects); i++) {
     20738        psMetadata *md = magicInputSkyfileMetadataFromObject(objects->data[i]);
     20739        if (!psMetadataAddMetadata(
     20740            output,
     20741            PS_LIST_TAIL,
     20742            MAGICINPUTSKYFILE_TABLE_NAME,
     20743            PS_META_DUPLICATE_OK,
     20744            NULL,
     20745            md
     20746        )) {
     20747            psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
     20748            psFree(md);
     20749            psFree(output);
     20750            return false;
     20751        }
     20752        psFree(md);
     20753    }
     20754
     20755    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
     20756        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     20757        psFree(output);
     20758    }
     20759    psFree(output);
     20760
     20761    return true;
     20762}
     20763bool magicInputSkyfilePrintObject(FILE *stream, magicInputSkyfileRow *object, bool mdcf)
     20764{
     20765    PS_ASSERT_PTR_NON_NULL(object, false);
     20766
     20767    psMetadata *md = magicInputSkyfileMetadataFromObject(object);
     20768
     20769    if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
     20770        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     20771        psFree(md);
     20772    }
     20773
     20774    psFree(md);
     20775
     20776    return true;
     20777}
     20778static void magicTreeRowFree(magicTreeRow *object);
     20779
     20780magicTreeRow *magicTreeRowAlloc(psS64 magic_id, const char *node, const char *dep)
     20781{
     20782    magicTreeRow    *_object;
     20783
     20784    _object = psAlloc(sizeof(magicTreeRow));
     20785    psMemSetDeallocator(_object, (psFreeFunc)magicTreeRowFree);
     20786
     20787    _object->magic_id = magic_id;
     20788    _object->node = psStringCopy(node);
     20789    _object->dep = psStringCopy(dep);
     20790
     20791    return _object;
     20792}
     20793
     20794static void magicTreeRowFree(magicTreeRow *object)
     20795{
     20796    psFree(object->node);
     20797    psFree(object->dep);
     20798}
     20799
     20800bool magicTreeCreateTable(psDB *dbh)
     20801{
     20802    psMetadata *md = psMetadataAlloc();
     20803    if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, "Key fkey(magic_id) ref magicRun(magic_id)", 0)) {
     20804        psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
     20805        psFree(md);
     20806        return false;
     20807    }
     20808    if (!psMetadataAdd(md, PS_LIST_TAIL, "node", PS_DATA_STRING, "Key INDEX(magic_id, node)", "64")) {
     20809        psError(PS_ERR_UNKNOWN, false, "failed to add item node");
     20810        psFree(md);
     20811        return false;
     20812    }
     20813    if (!psMetadataAdd(md, PS_LIST_TAIL, "dep", PS_DATA_STRING, "Key", "64")) {
     20814        psError(PS_ERR_UNKNOWN, false, "failed to add item dep");
     20815        psFree(md);
     20816        return false;
     20817    }
     20818
     20819    bool status = psDBCreateTable(dbh, MAGICTREE_TABLE_NAME, md);
     20820
     20821    psFree(md);
     20822
     20823    return status;
     20824}
     20825
     20826bool magicTreeDropTable(psDB *dbh)
     20827{
     20828    return psDBDropTable(dbh, MAGICTREE_TABLE_NAME);
     20829}
     20830
     20831bool magicTreeInsert(psDB * dbh, psS64 magic_id, const char *node, const char *dep)
     20832{
     20833    psMetadata *md = psMetadataAlloc();
     20834    if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, magic_id)) {
     20835        psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
     20836        psFree(md);
     20837        return false;
     20838    }
     20839    if (!psMetadataAdd(md, PS_LIST_TAIL, "node", PS_DATA_STRING, NULL, node)) {
     20840        psError(PS_ERR_UNKNOWN, false, "failed to add item node");
     20841        psFree(md);
     20842        return false;
     20843    }
     20844    if (!psMetadataAdd(md, PS_LIST_TAIL, "dep", PS_DATA_STRING, NULL, dep)) {
     20845        psError(PS_ERR_UNKNOWN, false, "failed to add item dep");
     20846        psFree(md);
     20847        return false;
     20848    }
     20849
     20850    bool status = psDBInsertOneRow(dbh, MAGICTREE_TABLE_NAME, md);
     20851    psFree(md);
     20852
     20853    return status;
     20854}
     20855
     20856long long magicTreeDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
     20857{
     20858    long long       deleted = 0;
     20859
     20860    long long count = psDBDeleteRows(dbh, MAGICTREE_TABLE_NAME, where, limit);
     20861    if (count < 0) {
     20862        psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicTree");
     20863        return count;
     20864
     20865        deleted += count;
     20866    }
     20867
     20868    return deleted;
     20869}
     20870bool magicTreeInsertObject(psDB *dbh, magicTreeRow *object)
     20871{
     20872    return magicTreeInsert(dbh, object->magic_id, object->node, object->dep);
     20873}
     20874
     20875bool magicTreeInsertObjects(psDB *dbh, psArray *objects)
     20876{
     20877    for (long i = 0; i < psArrayLength(objects); i++) {
     20878        if (!magicTreeInsertObject(dbh, objects->data[i])) {
     20879            return false;
     20880        }
     20881    }
     20882
     20883    return true;
     20884}
     20885
     20886bool magicTreeInsertFits(psDB *dbh, const psFits *fits)
     20887{
     20888    psArray         *rowSet;
     20889
     20890    // move to (the first?) extension named  MAGICTREE_TABLE_NAME
     20891    if (!psFitsMoveExtName(fits, MAGICTREE_TABLE_NAME)) {
     20892        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", MAGICTREE_TABLE_NAME);
     20893        return false;
     20894    }
     20895
     20896    // check HDU type
     20897    if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
     20898        psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
     20899        return false;
     20900    }
     20901
     20902    // read fits table
     20903    rowSet = psFitsReadTable(fits);
     20904    if (!rowSet) {
     20905        psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
     20906        psFree(rowSet);
     20907        return false;
     20908    }
     20909
     20910    if (!psDBInsertRows(dbh, MAGICTREE_TABLE_NAME, rowSet)) {
     20911        psError(PS_ERR_UNKNOWN, false, "databse insert failed");
     20912        psFree(rowSet);
     20913        return false;
     20914    }
     20915
     20916    psFree(rowSet);
     20917
     20918    return true;
     20919}
     20920
     20921bool magicTreeSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
     20922{
     20923    psArray         *rowSet;
     20924
     20925    rowSet = psDBSelectRows(dbh, MAGICTREE_TABLE_NAME, where, limit);
     20926    if (!rowSet) {
     20927        return false;
     20928    }
     20929
     20930    // output to fits
     20931    if (!psFitsWriteTable(fits, NULL, rowSet, MAGICTREE_TABLE_NAME)) {
     20932        psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
     20933        psFree(rowSet);
     20934        return false;
     20935    }
     20936
     20937    psFree(rowSet);
     20938
     20939    return true;
     20940}
     20941
     20942psMetadata *magicTreeMetadataFromObject(const magicTreeRow *object)
     20943{
     20944    psMetadata *md = psMetadataAlloc();
     20945    if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, object->magic_id)) {
     20946        psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
     20947        psFree(md);
     20948        return false;
     20949    }
     20950    if (!psMetadataAdd(md, PS_LIST_TAIL, "node", PS_DATA_STRING, NULL, object->node)) {
     20951        psError(PS_ERR_UNKNOWN, false, "failed to add item node");
     20952        psFree(md);
     20953        return false;
     20954    }
     20955    if (!psMetadataAdd(md, PS_LIST_TAIL, "dep", PS_DATA_STRING, NULL, object->dep)) {
     20956        psError(PS_ERR_UNKNOWN, false, "failed to add item dep");
     20957        psFree(md);
     20958        return false;
     20959    }
     20960
     20961
     20962    return md;
     20963}
     20964
     20965magicTreeRow *magicTreeObjectFromMetadata(psMetadata *md)
     20966{
     20967
     20968bool status = false;
     20969    psS64 magic_id = psMetadataLookupS64(&status, md, "magic_id");
     20970    if (!status) {
     20971        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item magic_id");
     20972        return false;
     20973    }
     20974    char* node = psMetadataLookupPtr(&status, md, "node");
     20975    if (!status) {
     20976        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item node");
     20977        return false;
     20978    }
     20979    char* dep = psMetadataLookupPtr(&status, md, "dep");
     20980    if (!status) {
     20981        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dep");
     20982        return false;
     20983    }
     20984
     20985    return magicTreeRowAlloc(magic_id, node, dep);
     20986}
     20987psArray *magicTreeSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     20988{
     20989    psArray         *rowSet;
     20990    psArray         *returnSet;
     20991    psU64           i;
     20992
     20993    rowSet = psDBSelectRows(dbh, MAGICTREE_TABLE_NAME, where, limit);
     20994    if (!rowSet) {
     20995        return NULL;
     20996    }
     20997
     20998    // convert psMetadata rows to row objects
     20999
     21000    returnSet = psArrayAllocEmpty(rowSet->n);
     21001
     21002    for (i = 0; i < rowSet->n; i++) {
     21003        magicTreeRow *object = magicTreeObjectFromMetadata(rowSet->data[i]);
     21004        psArrayAdd(returnSet, 0, object);
     21005        psFree(object);
     21006    }
     21007
     21008    psFree(rowSet);
     21009
     21010    return returnSet;
     21011}
     21012bool magicTreeDeleteObject(psDB *dbh, const magicTreeRow *object)
     21013{
     21014    psMetadata *where = magicTreeMetadataFromObject(object);
     21015    long long count = psDBDeleteRows(dbh, MAGICTREE_TABLE_NAME, where, 0);
     21016    psFree(where);
     21017    if (count < 0) {
     21018        psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicTree");
     21019        return false;
     21020    }
     21021    if (count > 1) {
     21022        // XXX should this be a psAbort() instead?  It is possible that
     21023        // having an object match multiple rows was by design.
     21024        psError(PS_ERR_UNKNOWN, true, "magicTreeRow object matched more then one row.  Check your database schema");
     21025        return false;
     21026    }
     21027
     21028    return true;
     21029}
     21030long long magicTreeDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
     21031{
     21032    long long       deleted = 0;
     21033
     21034    for (long long i = 0; i < objects->n; i++) {
     21035        magicTreeRow *object = objects->data[i];
     21036        psMetadata *where = magicTreeMetadataFromObject(object);
     21037        long long count = psDBDeleteRows(dbh, MAGICTREE_TABLE_NAME, where, limit);
     21038        psFree(where);
     21039        if (count < 0) {
     21040            psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicTree");
     21041            return count;
     21042        }
     21043
     21044        deleted += count;
     21045    }
     21046
     21047    return deleted;
     21048}
     21049bool magicTreePrintObjects(FILE *stream, psArray *objects, bool mdcf)
     21050{
     21051    PS_ASSERT_PTR_NON_NULL(objects, false);
     21052
     21053    psMetadata *output = psMetadataAlloc();
     21054    for (long i = 0; i < psArrayLength(objects); i++) {
     21055        psMetadata *md = magicTreeMetadataFromObject(objects->data[i]);
     21056        if (!psMetadataAddMetadata(
     21057            output,
     21058            PS_LIST_TAIL,
     21059            MAGICTREE_TABLE_NAME,
     21060            PS_META_DUPLICATE_OK,
     21061            NULL,
     21062            md
     21063        )) {
     21064            psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
     21065            psFree(md);
     21066            psFree(output);
     21067            return false;
     21068        }
     21069        psFree(md);
     21070    }
     21071
     21072    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
     21073        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     21074        psFree(output);
     21075    }
     21076    psFree(output);
     21077
     21078    return true;
     21079}
     21080bool magicTreePrintObject(FILE *stream, magicTreeRow *object, bool mdcf)
     21081{
     21082    PS_ASSERT_PTR_NON_NULL(object, false);
     21083
     21084    psMetadata *md = magicTreeMetadataFromObject(object);
     21085
     21086    if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
     21087        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     21088        psFree(md);
     21089    }
     21090
     21091    psFree(md);
     21092
     21093    return true;
     21094}
     21095static void magicNodeResultRowFree(magicNodeResultRow *object);
     21096
     21097magicNodeResultRow *magicNodeResultRowAlloc(psS64 magic_id, const char *node, const char *uri)
     21098{
     21099    magicNodeResultRow *_object;
     21100
     21101    _object = psAlloc(sizeof(magicNodeResultRow));
     21102    psMemSetDeallocator(_object, (psFreeFunc)magicNodeResultRowFree);
     21103
     21104    _object->magic_id = magic_id;
     21105    _object->node = psStringCopy(node);
     21106    _object->uri = psStringCopy(uri);
     21107
     21108    return _object;
     21109}
     21110
     21111static void magicNodeResultRowFree(magicNodeResultRow *object)
     21112{
     21113    psFree(object->node);
     21114    psFree(object->uri);
     21115}
     21116
     21117bool magicNodeResultCreateTable(psDB *dbh)
     21118{
     21119    psMetadata *md = psMetadataAlloc();
     21120    if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, "Primary Key fkey(magic_id) ref magicRun(magic_id)", 0)) {
     21121        psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
     21122        psFree(md);
     21123        return false;
     21124    }
     21125    if (!psMetadataAdd(md, PS_LIST_TAIL, "node", PS_DATA_STRING, "Primary Key fkey(magic_id, node) ref magicTree(magic_id, node)", "64")) {
     21126        psError(PS_ERR_UNKNOWN, false, "failed to add item node");
     21127        psFree(md);
     21128        return false;
     21129    }
     21130    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, "255")) {
     21131        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     21132        psFree(md);
     21133        return false;
     21134    }
     21135
     21136    bool status = psDBCreateTable(dbh, MAGICNODERESULT_TABLE_NAME, md);
     21137
     21138    psFree(md);
     21139
     21140    return status;
     21141}
     21142
     21143bool magicNodeResultDropTable(psDB *dbh)
     21144{
     21145    return psDBDropTable(dbh, MAGICNODERESULT_TABLE_NAME);
     21146}
     21147
     21148bool magicNodeResultInsert(psDB * dbh, psS64 magic_id, const char *node, const char *uri)
     21149{
     21150    psMetadata *md = psMetadataAlloc();
     21151    if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, magic_id)) {
     21152        psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
     21153        psFree(md);
     21154        return false;
     21155    }
     21156    if (!psMetadataAdd(md, PS_LIST_TAIL, "node", PS_DATA_STRING, NULL, node)) {
     21157        psError(PS_ERR_UNKNOWN, false, "failed to add item node");
     21158        psFree(md);
     21159        return false;
     21160    }
     21161    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) {
     21162        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     21163        psFree(md);
     21164        return false;
     21165    }
     21166
     21167    bool status = psDBInsertOneRow(dbh, MAGICNODERESULT_TABLE_NAME, md);
     21168    psFree(md);
     21169
     21170    return status;
     21171}
     21172
     21173long long magicNodeResultDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
     21174{
     21175    long long       deleted = 0;
     21176
     21177    long long count = psDBDeleteRows(dbh, MAGICNODERESULT_TABLE_NAME, where, limit);
     21178    if (count < 0) {
     21179        psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicNodeResult");
     21180        return count;
     21181
     21182        deleted += count;
     21183    }
     21184
     21185    return deleted;
     21186}
     21187bool magicNodeResultInsertObject(psDB *dbh, magicNodeResultRow *object)
     21188{
     21189    return magicNodeResultInsert(dbh, object->magic_id, object->node, object->uri);
     21190}
     21191
     21192bool magicNodeResultInsertObjects(psDB *dbh, psArray *objects)
     21193{
     21194    for (long i = 0; i < psArrayLength(objects); i++) {
     21195        if (!magicNodeResultInsertObject(dbh, objects->data[i])) {
     21196            return false;
     21197        }
     21198    }
     21199
     21200    return true;
     21201}
     21202
     21203bool magicNodeResultInsertFits(psDB *dbh, const psFits *fits)
     21204{
     21205    psArray         *rowSet;
     21206
     21207    // move to (the first?) extension named  MAGICNODERESULT_TABLE_NAME
     21208    if (!psFitsMoveExtName(fits, MAGICNODERESULT_TABLE_NAME)) {
     21209        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", MAGICNODERESULT_TABLE_NAME);
     21210        return false;
     21211    }
     21212
     21213    // check HDU type
     21214    if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
     21215        psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
     21216        return false;
     21217    }
     21218
     21219    // read fits table
     21220    rowSet = psFitsReadTable(fits);
     21221    if (!rowSet) {
     21222        psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
     21223        psFree(rowSet);
     21224        return false;
     21225    }
     21226
     21227    if (!psDBInsertRows(dbh, MAGICNODERESULT_TABLE_NAME, rowSet)) {
     21228        psError(PS_ERR_UNKNOWN, false, "databse insert failed");
     21229        psFree(rowSet);
     21230        return false;
     21231    }
     21232
     21233    psFree(rowSet);
     21234
     21235    return true;
     21236}
     21237
     21238bool magicNodeResultSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
     21239{
     21240    psArray         *rowSet;
     21241
     21242    rowSet = psDBSelectRows(dbh, MAGICNODERESULT_TABLE_NAME, where, limit);
     21243    if (!rowSet) {
     21244        return false;
     21245    }
     21246
     21247    // output to fits
     21248    if (!psFitsWriteTable(fits, NULL, rowSet, MAGICNODERESULT_TABLE_NAME)) {
     21249        psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
     21250        psFree(rowSet);
     21251        return false;
     21252    }
     21253
     21254    psFree(rowSet);
     21255
     21256    return true;
     21257}
     21258
     21259psMetadata *magicNodeResultMetadataFromObject(const magicNodeResultRow *object)
     21260{
     21261    psMetadata *md = psMetadataAlloc();
     21262    if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, object->magic_id)) {
     21263        psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
     21264        psFree(md);
     21265        return false;
     21266    }
     21267    if (!psMetadataAdd(md, PS_LIST_TAIL, "node", PS_DATA_STRING, NULL, object->node)) {
     21268        psError(PS_ERR_UNKNOWN, false, "failed to add item node");
     21269        psFree(md);
     21270        return false;
     21271    }
     21272    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) {
     21273        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     21274        psFree(md);
     21275        return false;
     21276    }
     21277
     21278
     21279    return md;
     21280}
     21281
     21282magicNodeResultRow *magicNodeResultObjectFromMetadata(psMetadata *md)
     21283{
     21284
     21285bool status = false;
     21286    psS64 magic_id = psMetadataLookupS64(&status, md, "magic_id");
     21287    if (!status) {
     21288        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item magic_id");
     21289        return false;
     21290    }
     21291    char* node = psMetadataLookupPtr(&status, md, "node");
     21292    if (!status) {
     21293        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item node");
     21294        return false;
     21295    }
     21296    char* uri = psMetadataLookupPtr(&status, md, "uri");
     21297    if (!status) {
     21298        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
     21299        return false;
     21300    }
     21301
     21302    return magicNodeResultRowAlloc(magic_id, node, uri);
     21303}
     21304psArray *magicNodeResultSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     21305{
     21306    psArray         *rowSet;
     21307    psArray         *returnSet;
     21308    psU64           i;
     21309
     21310    rowSet = psDBSelectRows(dbh, MAGICNODERESULT_TABLE_NAME, where, limit);
     21311    if (!rowSet) {
     21312        return NULL;
     21313    }
     21314
     21315    // convert psMetadata rows to row objects
     21316
     21317    returnSet = psArrayAllocEmpty(rowSet->n);
     21318
     21319    for (i = 0; i < rowSet->n; i++) {
     21320        magicNodeResultRow *object = magicNodeResultObjectFromMetadata(rowSet->data[i]);
     21321        psArrayAdd(returnSet, 0, object);
     21322        psFree(object);
     21323    }
     21324
     21325    psFree(rowSet);
     21326
     21327    return returnSet;
     21328}
     21329bool magicNodeResultDeleteObject(psDB *dbh, const magicNodeResultRow *object)
     21330{
     21331    psMetadata *where = magicNodeResultMetadataFromObject(object);
     21332    long long count = psDBDeleteRows(dbh, MAGICNODERESULT_TABLE_NAME, where, 0);
     21333    psFree(where);
     21334    if (count < 0) {
     21335        psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicNodeResult");
     21336        return false;
     21337    }
     21338    if (count > 1) {
     21339        // XXX should this be a psAbort() instead?  It is possible that
     21340        // having an object match multiple rows was by design.
     21341        psError(PS_ERR_UNKNOWN, true, "magicNodeResultRow object matched more then one row.  Check your database schema");
     21342        return false;
     21343    }
     21344
     21345    return true;
     21346}
     21347long long magicNodeResultDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
     21348{
     21349    long long       deleted = 0;
     21350
     21351    for (long long i = 0; i < objects->n; i++) {
     21352        magicNodeResultRow *object = objects->data[i];
     21353        psMetadata *where = magicNodeResultMetadataFromObject(object);
     21354        long long count = psDBDeleteRows(dbh, MAGICNODERESULT_TABLE_NAME, where, limit);
     21355        psFree(where);
     21356        if (count < 0) {
     21357            psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicNodeResult");
     21358            return count;
     21359        }
     21360
     21361        deleted += count;
     21362    }
     21363
     21364    return deleted;
     21365}
     21366bool magicNodeResultPrintObjects(FILE *stream, psArray *objects, bool mdcf)
     21367{
     21368    PS_ASSERT_PTR_NON_NULL(objects, false);
     21369
     21370    psMetadata *output = psMetadataAlloc();
     21371    for (long i = 0; i < psArrayLength(objects); i++) {
     21372        psMetadata *md = magicNodeResultMetadataFromObject(objects->data[i]);
     21373        if (!psMetadataAddMetadata(
     21374            output,
     21375            PS_LIST_TAIL,
     21376            MAGICNODERESULT_TABLE_NAME,
     21377            PS_META_DUPLICATE_OK,
     21378            NULL,
     21379            md
     21380        )) {
     21381            psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
     21382            psFree(md);
     21383            psFree(output);
     21384            return false;
     21385        }
     21386        psFree(md);
     21387    }
     21388
     21389    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
     21390        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     21391        psFree(output);
     21392    }
     21393    psFree(output);
     21394
     21395    return true;
     21396}
     21397bool magicNodeResultPrintObject(FILE *stream, magicNodeResultRow *object, bool mdcf)
     21398{
     21399    PS_ASSERT_PTR_NON_NULL(object, false);
     21400
     21401    psMetadata *md = magicNodeResultMetadataFromObject(object);
     21402
     21403    if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
     21404        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     21405        psFree(md);
     21406    }
     21407
     21408    psFree(md);
     21409
     21410    return true;
     21411}
     21412static void magicMaskRowFree(magicMaskRow *object);
     21413
     21414magicMaskRow *magicMaskRowAlloc(psS64 magic_id, const char *uri)
     21415{
     21416    magicMaskRow    *_object;
     21417
     21418    _object = psAlloc(sizeof(magicMaskRow));
     21419    psMemSetDeallocator(_object, (psFreeFunc)magicMaskRowFree);
     21420
     21421    _object->magic_id = magic_id;
     21422    _object->uri = psStringCopy(uri);
     21423
     21424    return _object;
     21425}
     21426
     21427static void magicMaskRowFree(magicMaskRow *object)
     21428{
     21429    psFree(object->uri);
     21430}
     21431
     21432bool magicMaskCreateTable(psDB *dbh)
     21433{
     21434    psMetadata *md = psMetadataAlloc();
     21435    if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, "Primary Key fkey(magic_id) ref magicRun(magic_id)", 0)) {
     21436        psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
     21437        psFree(md);
     21438        return false;
     21439    }
     21440    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, "255")) {
     21441        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     21442        psFree(md);
     21443        return false;
     21444    }
     21445
     21446    bool status = psDBCreateTable(dbh, MAGICMASK_TABLE_NAME, md);
     21447
     21448    psFree(md);
     21449
     21450    return status;
     21451}
     21452
     21453bool magicMaskDropTable(psDB *dbh)
     21454{
     21455    return psDBDropTable(dbh, MAGICMASK_TABLE_NAME);
     21456}
     21457
     21458bool magicMaskInsert(psDB * dbh, psS64 magic_id, const char *uri)
     21459{
     21460    psMetadata *md = psMetadataAlloc();
     21461    if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, magic_id)) {
     21462        psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
     21463        psFree(md);
     21464        return false;
     21465    }
     21466    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) {
     21467        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     21468        psFree(md);
     21469        return false;
     21470    }
     21471
     21472    bool status = psDBInsertOneRow(dbh, MAGICMASK_TABLE_NAME, md);
     21473    psFree(md);
     21474
     21475    return status;
     21476}
     21477
     21478long long magicMaskDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
     21479{
     21480    long long       deleted = 0;
     21481
     21482    long long count = psDBDeleteRows(dbh, MAGICMASK_TABLE_NAME, where, limit);
     21483    if (count < 0) {
     21484        psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicMask");
     21485        return count;
     21486
     21487        deleted += count;
     21488    }
     21489
     21490    return deleted;
     21491}
     21492bool magicMaskInsertObject(psDB *dbh, magicMaskRow *object)
     21493{
     21494    return magicMaskInsert(dbh, object->magic_id, object->uri);
     21495}
     21496
     21497bool magicMaskInsertObjects(psDB *dbh, psArray *objects)
     21498{
     21499    for (long i = 0; i < psArrayLength(objects); i++) {
     21500        if (!magicMaskInsertObject(dbh, objects->data[i])) {
     21501            return false;
     21502        }
     21503    }
     21504
     21505    return true;
     21506}
     21507
     21508bool magicMaskInsertFits(psDB *dbh, const psFits *fits)
     21509{
     21510    psArray         *rowSet;
     21511
     21512    // move to (the first?) extension named  MAGICMASK_TABLE_NAME
     21513    if (!psFitsMoveExtName(fits, MAGICMASK_TABLE_NAME)) {
     21514        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", MAGICMASK_TABLE_NAME);
     21515        return false;
     21516    }
     21517
     21518    // check HDU type
     21519    if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
     21520        psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
     21521        return false;
     21522    }
     21523
     21524    // read fits table
     21525    rowSet = psFitsReadTable(fits);
     21526    if (!rowSet) {
     21527        psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
     21528        psFree(rowSet);
     21529        return false;
     21530    }
     21531
     21532    if (!psDBInsertRows(dbh, MAGICMASK_TABLE_NAME, rowSet)) {
     21533        psError(PS_ERR_UNKNOWN, false, "databse insert failed");
     21534        psFree(rowSet);
     21535        return false;
     21536    }
     21537
     21538    psFree(rowSet);
     21539
     21540    return true;
     21541}
     21542
     21543bool magicMaskSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
     21544{
     21545    psArray         *rowSet;
     21546
     21547    rowSet = psDBSelectRows(dbh, MAGICMASK_TABLE_NAME, where, limit);
     21548    if (!rowSet) {
     21549        return false;
     21550    }
     21551
     21552    // output to fits
     21553    if (!psFitsWriteTable(fits, NULL, rowSet, MAGICMASK_TABLE_NAME)) {
     21554        psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
     21555        psFree(rowSet);
     21556        return false;
     21557    }
     21558
     21559    psFree(rowSet);
     21560
     21561    return true;
     21562}
     21563
     21564psMetadata *magicMaskMetadataFromObject(const magicMaskRow *object)
     21565{
     21566    psMetadata *md = psMetadataAlloc();
     21567    if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, object->magic_id)) {
     21568        psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
     21569        psFree(md);
     21570        return false;
     21571    }
     21572    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) {
     21573        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     21574        psFree(md);
     21575        return false;
     21576    }
     21577
     21578
     21579    return md;
     21580}
     21581
     21582magicMaskRow *magicMaskObjectFromMetadata(psMetadata *md)
     21583{
     21584
     21585bool status = false;
     21586    psS64 magic_id = psMetadataLookupS64(&status, md, "magic_id");
     21587    if (!status) {
     21588        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item magic_id");
     21589        return false;
     21590    }
     21591    char* uri = psMetadataLookupPtr(&status, md, "uri");
     21592    if (!status) {
     21593        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
     21594        return false;
     21595    }
     21596
     21597    return magicMaskRowAlloc(magic_id, uri);
     21598}
     21599psArray *magicMaskSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     21600{
     21601    psArray         *rowSet;
     21602    psArray         *returnSet;
     21603    psU64           i;
     21604
     21605    rowSet = psDBSelectRows(dbh, MAGICMASK_TABLE_NAME, where, limit);
     21606    if (!rowSet) {
     21607        return NULL;
     21608    }
     21609
     21610    // convert psMetadata rows to row objects
     21611
     21612    returnSet = psArrayAllocEmpty(rowSet->n);
     21613
     21614    for (i = 0; i < rowSet->n; i++) {
     21615        magicMaskRow *object = magicMaskObjectFromMetadata(rowSet->data[i]);
     21616        psArrayAdd(returnSet, 0, object);
     21617        psFree(object);
     21618    }
     21619
     21620    psFree(rowSet);
     21621
     21622    return returnSet;
     21623}
     21624bool magicMaskDeleteObject(psDB *dbh, const magicMaskRow *object)
     21625{
     21626    psMetadata *where = magicMaskMetadataFromObject(object);
     21627    long long count = psDBDeleteRows(dbh, MAGICMASK_TABLE_NAME, where, 0);
     21628    psFree(where);
     21629    if (count < 0) {
     21630        psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicMask");
     21631        return false;
     21632    }
     21633    if (count > 1) {
     21634        // XXX should this be a psAbort() instead?  It is possible that
     21635        // having an object match multiple rows was by design.
     21636        psError(PS_ERR_UNKNOWN, true, "magicMaskRow object matched more then one row.  Check your database schema");
     21637        return false;
     21638    }
     21639
     21640    return true;
     21641}
     21642long long magicMaskDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
     21643{
     21644    long long       deleted = 0;
     21645
     21646    for (long long i = 0; i < objects->n; i++) {
     21647        magicMaskRow *object = objects->data[i];
     21648        psMetadata *where = magicMaskMetadataFromObject(object);
     21649        long long count = psDBDeleteRows(dbh, MAGICMASK_TABLE_NAME, where, limit);
     21650        psFree(where);
     21651        if (count < 0) {
     21652            psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicMask");
     21653            return count;
     21654        }
     21655
     21656        deleted += count;
     21657    }
     21658
     21659    return deleted;
     21660}
     21661bool magicMaskPrintObjects(FILE *stream, psArray *objects, bool mdcf)
     21662{
     21663    PS_ASSERT_PTR_NON_NULL(objects, false);
     21664
     21665    psMetadata *output = psMetadataAlloc();
     21666    for (long i = 0; i < psArrayLength(objects); i++) {
     21667        psMetadata *md = magicMaskMetadataFromObject(objects->data[i]);
     21668        if (!psMetadataAddMetadata(
     21669            output,
     21670            PS_LIST_TAIL,
     21671            MAGICMASK_TABLE_NAME,
     21672            PS_META_DUPLICATE_OK,
     21673            NULL,
     21674            md
     21675        )) {
     21676            psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
     21677            psFree(md);
     21678            psFree(output);
     21679            return false;
     21680        }
     21681        psFree(md);
     21682    }
     21683
     21684    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
     21685        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     21686        psFree(output);
     21687    }
     21688    psFree(output);
     21689
     21690    return true;
     21691}
     21692bool magicMaskPrintObject(FILE *stream, magicMaskRow *object, bool mdcf)
     21693{
     21694    PS_ASSERT_PTR_NON_NULL(object, false);
     21695
     21696    psMetadata *md = magicMaskMetadataFromObject(object);
     21697
     21698    if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
     21699        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     21700        psFree(md);
     21701    }
     21702
     21703    psFree(md);
     21704
     21705    return true;
     21706}
     21707static void magicSkyfileMaskRowFree(magicSkyfileMaskRow *object);
     21708
     21709magicSkyfileMaskRow *magicSkyfileMaskRowAlloc(psS64 magic_id, psS64 diff_id, const char *uri)
     21710{
     21711    magicSkyfileMaskRow *_object;
     21712
     21713    _object = psAlloc(sizeof(magicSkyfileMaskRow));
     21714    psMemSetDeallocator(_object, (psFreeFunc)magicSkyfileMaskRowFree);
     21715
     21716    _object->magic_id = magic_id;
     21717    _object->diff_id = diff_id;
     21718    _object->uri = psStringCopy(uri);
     21719
     21720    return _object;
     21721}
     21722
     21723static void magicSkyfileMaskRowFree(magicSkyfileMaskRow *object)
     21724{
     21725    psFree(object->uri);
     21726}
     21727
     21728bool magicSkyfileMaskCreateTable(psDB *dbh)
     21729{
     21730    psMetadata *md = psMetadataAlloc();
     21731    if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, "Primary Key fkey(magic_id) ref magicRun(magic_id)", 0)) {
     21732        psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
     21733        psFree(md);
     21734        return false;
     21735    }
     21736    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)) {
     21737        psError(PS_ERR_UNKNOWN, false, "failed to add item diff_id");
     21738        psFree(md);
     21739        return false;
     21740    }
     21741    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, "fkey(magic_id) ref magicMask(magic_id)", "255")) {
     21742        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     21743        psFree(md);
     21744        return false;
     21745    }
     21746
     21747    bool status = psDBCreateTable(dbh, MAGICSKYFILEMASK_TABLE_NAME, md);
     21748
     21749    psFree(md);
     21750
     21751    return status;
     21752}
     21753
     21754bool magicSkyfileMaskDropTable(psDB *dbh)
     21755{
     21756    return psDBDropTable(dbh, MAGICSKYFILEMASK_TABLE_NAME);
     21757}
     21758
     21759bool magicSkyfileMaskInsert(psDB * dbh, psS64 magic_id, psS64 diff_id, const char *uri)
     21760{
     21761    psMetadata *md = psMetadataAlloc();
     21762    if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, magic_id)) {
     21763        psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
     21764        psFree(md);
     21765        return false;
     21766    }
     21767    if (!psMetadataAdd(md, PS_LIST_TAIL, "diff_id", PS_DATA_S64, NULL, diff_id)) {
     21768        psError(PS_ERR_UNKNOWN, false, "failed to add item diff_id");
     21769        psFree(md);
     21770        return false;
     21771    }
     21772    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) {
     21773        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     21774        psFree(md);
     21775        return false;
     21776    }
     21777
     21778    bool status = psDBInsertOneRow(dbh, MAGICSKYFILEMASK_TABLE_NAME, md);
     21779    psFree(md);
     21780
     21781    return status;
     21782}
     21783
     21784long long magicSkyfileMaskDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
     21785{
     21786    long long       deleted = 0;
     21787
     21788    long long count = psDBDeleteRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, limit);
     21789    if (count < 0) {
     21790        psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicSkyfileMask");
     21791        return count;
     21792
     21793        deleted += count;
     21794    }
     21795
     21796    return deleted;
     21797}
     21798bool magicSkyfileMaskInsertObject(psDB *dbh, magicSkyfileMaskRow *object)
     21799{
     21800    return magicSkyfileMaskInsert(dbh, object->magic_id, object->diff_id, object->uri);
     21801}
     21802
     21803bool magicSkyfileMaskInsertObjects(psDB *dbh, psArray *objects)
     21804{
     21805    for (long i = 0; i < psArrayLength(objects); i++) {
     21806        if (!magicSkyfileMaskInsertObject(dbh, objects->data[i])) {
     21807            return false;
     21808        }
     21809    }
     21810
     21811    return true;
     21812}
     21813
     21814bool magicSkyfileMaskInsertFits(psDB *dbh, const psFits *fits)
     21815{
     21816    psArray         *rowSet;
     21817
     21818    // move to (the first?) extension named  MAGICSKYFILEMASK_TABLE_NAME
     21819    if (!psFitsMoveExtName(fits, MAGICSKYFILEMASK_TABLE_NAME)) {
     21820        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", MAGICSKYFILEMASK_TABLE_NAME);
     21821        return false;
     21822    }
     21823
     21824    // check HDU type
     21825    if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
     21826        psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
     21827        return false;
     21828    }
     21829
     21830    // read fits table
     21831    rowSet = psFitsReadTable(fits);
     21832    if (!rowSet) {
     21833        psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
     21834        psFree(rowSet);
     21835        return false;
     21836    }
     21837
     21838    if (!psDBInsertRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, rowSet)) {
     21839        psError(PS_ERR_UNKNOWN, false, "databse insert failed");
     21840        psFree(rowSet);
     21841        return false;
     21842    }
     21843
     21844    psFree(rowSet);
     21845
     21846    return true;
     21847}
     21848
     21849bool magicSkyfileMaskSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
     21850{
     21851    psArray         *rowSet;
     21852
     21853    rowSet = psDBSelectRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, limit);
     21854    if (!rowSet) {
     21855        return false;
     21856    }
     21857
     21858    // output to fits
     21859    if (!psFitsWriteTable(fits, NULL, rowSet, MAGICSKYFILEMASK_TABLE_NAME)) {
     21860        psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
     21861        psFree(rowSet);
     21862        return false;
     21863    }
     21864
     21865    psFree(rowSet);
     21866
     21867    return true;
     21868}
     21869
     21870psMetadata *magicSkyfileMaskMetadataFromObject(const magicSkyfileMaskRow *object)
     21871{
     21872    psMetadata *md = psMetadataAlloc();
     21873    if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, object->magic_id)) {
     21874        psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
     21875        psFree(md);
     21876        return false;
     21877    }
     21878    if (!psMetadataAdd(md, PS_LIST_TAIL, "diff_id", PS_DATA_S64, NULL, object->diff_id)) {
     21879        psError(PS_ERR_UNKNOWN, false, "failed to add item diff_id");
     21880        psFree(md);
     21881        return false;
     21882    }
     21883    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) {
     21884        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     21885        psFree(md);
     21886        return false;
     21887    }
     21888
     21889
     21890    return md;
     21891}
     21892
     21893magicSkyfileMaskRow *magicSkyfileMaskObjectFromMetadata(psMetadata *md)
     21894{
     21895
     21896bool status = false;
     21897    psS64 magic_id = psMetadataLookupS64(&status, md, "magic_id");
     21898    if (!status) {
     21899        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item magic_id");
     21900        return false;
     21901    }
     21902    psS64 diff_id = psMetadataLookupS64(&status, md, "diff_id");
     21903    if (!status) {
     21904        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item diff_id");
     21905        return false;
     21906    }
     21907    char* uri = psMetadataLookupPtr(&status, md, "uri");
     21908    if (!status) {
     21909        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
     21910        return false;
     21911    }
     21912
     21913    return magicSkyfileMaskRowAlloc(magic_id, diff_id, uri);
     21914}
     21915psArray *magicSkyfileMaskSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     21916{
     21917    psArray         *rowSet;
     21918    psArray         *returnSet;
     21919    psU64           i;
     21920
     21921    rowSet = psDBSelectRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, limit);
     21922    if (!rowSet) {
     21923        return NULL;
     21924    }
     21925
     21926    // convert psMetadata rows to row objects
     21927
     21928    returnSet = psArrayAllocEmpty(rowSet->n);
     21929
     21930    for (i = 0; i < rowSet->n; i++) {
     21931        magicSkyfileMaskRow *object = magicSkyfileMaskObjectFromMetadata(rowSet->data[i]);
     21932        psArrayAdd(returnSet, 0, object);
     21933        psFree(object);
     21934    }
     21935
     21936    psFree(rowSet);
     21937
     21938    return returnSet;
     21939}
     21940bool magicSkyfileMaskDeleteObject(psDB *dbh, const magicSkyfileMaskRow *object)
     21941{
     21942    psMetadata *where = magicSkyfileMaskMetadataFromObject(object);
     21943    long long count = psDBDeleteRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, 0);
     21944    psFree(where);
     21945    if (count < 0) {
     21946        psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicSkyfileMask");
     21947        return false;
     21948    }
     21949    if (count > 1) {
     21950        // XXX should this be a psAbort() instead?  It is possible that
     21951        // having an object match multiple rows was by design.
     21952        psError(PS_ERR_UNKNOWN, true, "magicSkyfileMaskRow object matched more then one row.  Check your database schema");
     21953        return false;
     21954    }
     21955
     21956    return true;
     21957}
     21958long long magicSkyfileMaskDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
     21959{
     21960    long long       deleted = 0;
     21961
     21962    for (long long i = 0; i < objects->n; i++) {
     21963        magicSkyfileMaskRow *object = objects->data[i];
     21964        psMetadata *where = magicSkyfileMaskMetadataFromObject(object);
     21965        long long count = psDBDeleteRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, limit);
     21966        psFree(where);
     21967        if (count < 0) {
     21968            psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicSkyfileMask");
     21969            return count;
     21970        }
     21971
     21972        deleted += count;
     21973    }
     21974
     21975    return deleted;
     21976}
     21977bool magicSkyfileMaskPrintObjects(FILE *stream, psArray *objects, bool mdcf)
     21978{
     21979    PS_ASSERT_PTR_NON_NULL(objects, false);
     21980
     21981    psMetadata *output = psMetadataAlloc();
     21982    for (long i = 0; i < psArrayLength(objects); i++) {
     21983        psMetadata *md = magicSkyfileMaskMetadataFromObject(objects->data[i]);
     21984        if (!psMetadataAddMetadata(
     21985            output,
     21986            PS_LIST_TAIL,
     21987            MAGICSKYFILEMASK_TABLE_NAME,
     21988            PS_META_DUPLICATE_OK,
     21989            NULL,
     21990            md
     21991        )) {
     21992            psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
     21993            psFree(md);
     21994            psFree(output);
     21995            return false;
     21996        }
     21997        psFree(md);
     21998    }
     21999
     22000    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
     22001        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     22002        psFree(output);
     22003    }
     22004    psFree(output);
     22005
     22006    return true;
     22007}
     22008bool magicSkyfileMaskPrintObject(FILE *stream, magicSkyfileMaskRow *object, bool mdcf)
     22009{
     22010    PS_ASSERT_PTR_NON_NULL(object, false);
     22011
     22012    psMetadata *md = magicSkyfileMaskMetadataFromObject(object);
     22013
     22014    if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
     22015        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     22016        psFree(md);
     22017    }
     22018
     22019    psFree(md);
     22020
     22021    return true;
     22022}
  • trunk/ippdb/src/ippdb.h

    r15420 r15421  
    125125);
    126126
     127/** pzDataStoreRow data structure
     128 *
     129 * Structure for representing a single row of pzDataStore table data.
     130 */
     131
     132typedef 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
     143pzDataStoreRow *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
     154bool pzDataStoreCreateTable(
     155    psDB            *dbh                ///< Database handle
     156);
     157
     158/** Deletes a pzDataStore table
     159 *
     160 * @return true on success
     161 */
     162
     163bool 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
     174bool 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
     186long 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
     199bool 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
     211bool 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
     226bool 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
     241bool 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
     253psMetadata *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
     262pzDataStoreRow *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
     272psArray *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
     285bool 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
     297long 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
     310bool 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
     323bool pzDataStorePrintObject(
     324    FILE            *stream,            ///< a stream
     325    pzDataStoreRow *object,    ///< an pzDataStoreRow object
     326    bool            mdcf                ///< format as mdconfig or simple
     327);
    127328/** summitExpRow data structure
    128329 *
     
    769970    char            *class;
    770971    char            *class_id;
    771     psS64           exp_id;
    772972} pzPendingImfileRow;
    773973
     
    782982    const char      *telescope,
    783983    const char      *class,
    784     const char      *class_id,
    785     psS64           exp_id
     984    const char      *class_id
    786985);
    787986
     
    8171016    const char      *telescope,
    8181017    const char      *class,
    819     const char      *class_id,
    820     psS64           exp_id
     1018    const char      *class_id
    8211019);
    8221020
     
    11801378    char            *class;
    11811379    char            *class_id;
    1182     psS64           exp_id;
    11831380    char            *uri;
    11841381} pzDoneImfileRow;
     
    11951392    const char      *class,
    11961393    const char      *class_id,
    1197     psS64           exp_id,
    11981394    const char      *uri
    11991395);
     
    12311427    const char      *class,
    12321428    const char      *class_id,
    1233     psS64           exp_id,
    12341429    const char      *uri
    12351430);
     
    13931588    char            *tmp_telescope;
    13941589    char            *state;
    1395     psS32           imfiles;
    13961590    char            *workdir;
    13971591    char            *workdir_state;
     1592    char            *reduction;
    13981593} newExpRow;
    13991594
     
    14091604    const char      *tmp_telescope,
    14101605    const char      *state,
    1411     psS32           imfiles,
    14121606    const char      *workdir,
    1413     const char      *workdir_state
     1607    const char      *workdir_state,
     1608    const char      *reduction
    14141609);
    14151610
     
    14461641    const char      *tmp_telescope,
    14471642    const char      *state,
    1448     psS32           imfiles,
    14491643    const char      *workdir,
    1450     const char      *workdir_state
     1644    const char      *workdir_state,
     1645    const char      *reduction
    14511646);
    14521647
     
    18122007    char            *exp_tag;
    18132008    char            *exp_type;
    1814     psS32           imfiles;
    18152009    char            *filelevel;
    18162010    char            *workdir;
     2011    char            *reduction;
    18172012    char            *filter;
    18182013    psF32           airmass;
     
    18512046    const char      *exp_tag,
    18522047    const char      *exp_type,
    1853     psS32           imfiles,
    18542048    const char      *filelevel,
    18552049    const char      *workdir,
     2050    const char      *reduction,
    18562051    const char      *filter,
    18572052    psF32           airmass,
     
    19112106    const char      *exp_tag,
    19122107    const char      *exp_type,
    1913     psS32           imfiles,
    19142108    const char      *filelevel,
    19152109    const char      *workdir,
     2110    const char      *reduction,
    19162111    const char      *filter,
    19172112    psF32           airmass,
     
    25742769typedef struct {
    25752770    psS64           chip_id;
     2771    psS64           exp_id;
    25762772    char            *state;
    25772773    char            *workdir;
     
    25902786chipRunRow *chipRunRowAlloc(
    25912787    psS64           chip_id,
     2788    psS64           exp_id,
    25922789    const char      *state,
    25932790    const char      *workdir,
     
    26272824    psDB            *dbh,               ///< Database handle
    26282825    psS64           chip_id,
     2826    psS64           exp_id,
    26292827    const char      *state,
    26302828    const char      *workdir,
     
    27812979    FILE            *stream,            ///< a stream
    27822980    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 
    2790 typedef 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 
    2801 chipInputImfileRow *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 
    2812 bool chipInputImfileCreateTable(
    2813     psDB            *dbh                ///< Database handle
    2814 );
    2815 
    2816 /** Deletes a chipInputImfile table
    2817  *
    2818  * @return true on success
    2819  */
    2820 
    2821 bool 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 
    2832 bool 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 
    2844 long 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 
    2857 bool 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 
    2869 bool 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 
    2884 bool 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 
    2899 bool 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 
    2911 psMetadata *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 
    2920 chipInputImfileRow *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 
    2930 psArray *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 
    2943 bool 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 
    2955 long 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 
    2968 bool 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 
    2981 bool chipInputImfilePrintObject(
    2982     FILE            *stream,            ///< a stream
    2983     chipInputImfileRow *object,    ///< an chipInputImfileRow object
    29842981    bool            mdcf                ///< format as mdconfig or simple
    29852982);
     
    47374734    psF64           bg;
    47384735    psF64           bg_stdev;
     4736    psF64           good_frac;
     4737    psS16           fault;
    47394738} warpSkyfileRow;
    47404739
     
    47514750    const char      *path_base,
    47524751    psF64           bg,
    4753     psF64           bg_stdev
     4752    psF64           bg_stdev,
     4753    psF64           good_frac,
     4754    psS16           fault
    47544755);
    47554756
     
    47874788    const char      *path_base,
    47884789    psF64           bg,
    4789     psF64           bg_stdev
     4790    psF64           bg_stdev,
     4791    psF64           good_frac,
     4792    psS16           fault
    47904793);
    47914794
     
    51575160typedef struct {
    51585161    psS64           diff_id;
     5162    bool            template;
     5163    psS64           stack_id;
    51595164    psS64           warp_id;
    51605165    char            *skycell_id;
    51615166    char            *tess_id;
    51625167    char            *kind;
    5163     bool            template;
    51645168} diffInputSkyfileRow;
    51655169
     
    51715175diffInputSkyfileRow *diffInputSkyfileRowAlloc(
    51725176    psS64           diff_id,
     5177    bool            template,
     5178    psS64           stack_id,
    51735179    psS64           warp_id,
    51745180    const char      *skycell_id,
    51755181    const char      *tess_id,
    5176     const char      *kind,
    5177     bool            template
     5182    const char      *kind
    51785183);
    51795184
     
    52065211    psDB            *dbh,               ///< Database handle
    52075212    psS64           diff_id,
     5213    bool            template,
     5214    psS64           stack_id,
    52085215    psS64           warp_id,
    52095216    const char      *skycell_id,
    52105217    const char      *tess_id,
    5211     const char      *kind,
    5212     bool            template
     5218    const char      *kind
    52135219);
    52145220
     
    53715377    psF64           bg;
    53725378    psF64           bg_stdev;
     5379    psF64           good_frac;
     5380    psS16           fault;
    53735381} diffSkyfileRow;
    53745382
     
    53835391    const char      *path_base,
    53845392    psF64           bg,
    5385     psF64           bg_stdev
     5393    psF64           bg_stdev,
     5394    psF64           good_frac,
     5395    psS16           fault
    53865396);
    53875397
     
    54175427    const char      *path_base,
    54185428    psF64           bg,
    5419     psF64           bg_stdev
     5429    psF64           bg_stdev,
     5430    psF64           good_frac,
     5431    psS16           fault
    54205432);
    54215433
     
    59896001    psF64           bg;
    59906002    psF64           bg_stdev;
     6003    psF64           good_frac;
     6004    psS16           fault;
    59916005} stackSumSkyfileRow;
    59926006
     
    60016015    const char      *path_base,
    60026016    psF64           bg,
    6003     psF64           bg_stdev
     6017    psF64           bg_stdev,
     6018    psF64           good_frac,
     6019    psS16           fault
    60046020);
    60056021
     
    60356051    const char      *path_base,
    60366052    psF64           bg,
    6037     psF64           bg_stdev
     6053    psF64           bg_stdev,
     6054    psF64           good_frac,
     6055    psS16           fault
    60386056);
    60396057
     
    80758093    psF64           bg_stdev;
    80768094    psF64           bg_mean_stdev;
     8095    psF64           bg_skewness;
     8096    psF64           bg_kurtosis;
    80778097    psF64           bin_stdev;
    80788098    psF64           fringe_0;
    80798099    psF64           fringe_1;
    80808100    psF64           fringe_2;
     8101    psF64           fringe_resid_0;
     8102    psF64           fringe_resid_1;
     8103    psF64           fringe_resid_2;
    80818104    psF64           user_1;
    80828105    psF64           user_2;
     
    81038126    psF64           bg_stdev,
    81048127    psF64           bg_mean_stdev,
     8128    psF64           bg_skewness,
     8129    psF64           bg_kurtosis,
    81058130    psF64           bin_stdev,
    81068131    psF64           fringe_0,
    81078132    psF64           fringe_1,
    81088133    psF64           fringe_2,
     8134    psF64           fringe_resid_0,
     8135    psF64           fringe_resid_1,
     8136    psF64           fringe_resid_2,
    81098137    psF64           user_1,
    81108138    psF64           user_2,
     
    81528180    psF64           bg_stdev,
    81538181    psF64           bg_mean_stdev,
     8182    psF64           bg_skewness,
     8183    psF64           bg_kurtosis,
    81548184    psF64           bin_stdev,
    81558185    psF64           fringe_0,
    81568186    psF64           fringe_1,
    81578187    psF64           fringe_2,
     8188    psF64           fringe_resid_0,
     8189    psF64           fringe_resid_1,
     8190    psF64           fringe_resid_2,
    81588191    psF64           user_1,
    81598192    psF64           user_2,
     
    83258358    psF64           bg_stdev;
    83268359    psF64           bg_mean_stdev;
     8360    psF64           bg_skewness;
     8361    psF64           bg_kurtosis;
    83278362    psF64           bin_stdev;
    83288363    psF64           fringe_0;
    83298364    psF64           fringe_1;
    83308365    psF64           fringe_2;
     8366    psF64           fringe_resid_0;
     8367    psF64           fringe_resid_1;
     8368    psF64           fringe_resid_2;
    83318369    psF64           user_1;
    83328370    psF64           user_2;
     
    83528390    psF64           bg_stdev,
    83538391    psF64           bg_mean_stdev,
     8392    psF64           bg_skewness,
     8393    psF64           bg_kurtosis,
    83548394    psF64           bin_stdev,
    83558395    psF64           fringe_0,
    83568396    psF64           fringe_1,
    83578397    psF64           fringe_2,
     8398    psF64           fringe_resid_0,
     8399    psF64           fringe_resid_1,
     8400    psF64           fringe_resid_2,
    83588401    psF64           user_1,
    83598402    psF64           user_2,
     
    84008443    psF64           bg_stdev,
    84018444    psF64           bg_mean_stdev,
     8445    psF64           bg_skewness,
     8446    psF64           bg_kurtosis,
    84028447    psF64           bin_stdev,
    84038448    psF64           fringe_0,
    84048449    psF64           fringe_1,
    84058450    psF64           fringe_2,
     8451    psF64           fringe_resid_0,
     8452    psF64           fringe_resid_1,
     8453    psF64           fringe_resid_2,
    84068454    psF64           user_1,
    84078455    psF64           user_2,
     
    87748822    bool            mdcf                ///< format as mdconfig or simple
    87758823);
     8824/** detRegisteredImfileRow data structure
     8825 *
     8826 * Structure for representing a single row of detRegisteredImfile table data.
     8827 */
     8828
     8829typedef struct {
     8830    psS64           det_id;
     8831    psS32           iteration;
     8832    char            *class_id;
     8833    char            *uri;
     8834    psF64           bg;
     8835    psF64           bg_stdev;
     8836    psF64           bg_mean_stdev;
     8837    psF64           user_1;
     8838    psF64           user_2;
     8839    psF64           user_3;
     8840    psF64           user_4;
     8841    psF64           user_5;
     8842    char            *path_base;
     8843    psS16           fault;
     8844} detRegisteredImfileRow;
     8845
     8846/** Creates a new detRegisteredImfileRow object
     8847 *
     8848 *  @return A new detRegisteredImfileRow object or NULL on failure.
     8849 */
     8850
     8851detRegisteredImfileRow *detRegisteredImfileRowAlloc(
     8852    psS64           det_id,
     8853    psS32           iteration,
     8854    const char      *class_id,
     8855    const char      *uri,
     8856    psF64           bg,
     8857    psF64           bg_stdev,
     8858    psF64           bg_mean_stdev,
     8859    psF64           user_1,
     8860    psF64           user_2,
     8861    psF64           user_3,
     8862    psF64           user_4,
     8863    psF64           user_5,
     8864    const char      *path_base,
     8865    psS16           fault
     8866);
     8867
     8868/** Creates a new detRegisteredImfile table
     8869 *
     8870 * @return true on success
     8871 */
     8872
     8873bool detRegisteredImfileCreateTable(
     8874    psDB            *dbh                ///< Database handle
     8875);
     8876
     8877/** Deletes a detRegisteredImfile table
     8878 *
     8879 * @return true on success
     8880 */
     8881
     8882bool detRegisteredImfileDropTable(
     8883    psDB            *dbh                ///< Database handle
     8884);
     8885
     8886/** Insert a single row into a table
     8887 *
     8888 * This function constructs and inserts a single row based on it's parameters.
     8889 *
     8890 * @return true on success
     8891 */
     8892
     8893bool detRegisteredImfileInsert(
     8894    psDB            *dbh,               ///< Database handle
     8895    psS64           det_id,
     8896    psS32           iteration,
     8897    const char      *class_id,
     8898    const char      *uri,
     8899    psF64           bg,
     8900    psF64           bg_stdev,
     8901    psF64           bg_mean_stdev,
     8902    psF64           user_1,
     8903    psF64           user_2,
     8904    psF64           user_3,
     8905    psF64           user_4,
     8906    psF64           user_5,
     8907    const char      *path_base,
     8908    psS16           fault
     8909);
     8910
     8911/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     8912 *
     8913 * @return A The number of rows removed or a negative value on error
     8914 */
     8915
     8916long long detRegisteredImfileDelete(
     8917    psDB            *dbh,               ///< Database handle
     8918    const psMetadata *where,            ///< Row match criteria
     8919    unsigned long long limit            ///< Maximum number of elements to delete
     8920);
     8921
     8922/** Insert a single detRegisteredImfileRow object into a table
     8923 *
     8924 * This function constructs and inserts a single row based on it's parameters.
     8925 *
     8926 * @return true on success
     8927 */
     8928
     8929bool detRegisteredImfileInsertObject(
     8930    psDB            *dbh,               ///< Database handle
     8931    detRegisteredImfileRow *object             ///< detRegisteredImfileRow object
     8932);
     8933
     8934/** Insert an array of detRegisteredImfileRow object into a table
     8935 *
     8936 * This function constructs and inserts multiple rows based on it's parameters.
     8937 *
     8938 * @return true on success
     8939 */
     8940
     8941bool detRegisteredImfileInsertObjects(
     8942    psDB            *dbh,               ///< Database handle
     8943    psArray         *objects            ///< array of detRegisteredImfileRow objects
     8944);
     8945
     8946/** Insert data from a binary FITS table detRegisteredImfileRow into the database
     8947 *
     8948 * This function expects a psFits object with a FITS table as the first
     8949 * extension.  The table must have at least one row of data in it, that is of
     8950 * the appropriate format (number of columns and their type).  All other
     8951 * extensions are ignored.
     8952 *
     8953 * @return true on success
     8954 */
     8955
     8956bool detRegisteredImfileInsertFits(
     8957    psDB            *dbh,               ///< Database handle
     8958    const psFits    *fits               ///< psFits object
     8959);
     8960
     8961/** Selects up to limit from the database and returns them in a binary FITS table
     8962 *
     8963 * This function assumes an empty psFits object and will create a FITS table
     8964 * as the first extension.
     8965 *
     8966 *  See psDBSelectRows() for documentation on the format of where.
     8967 *
     8968 * @return true on success
     8969 */
     8970
     8971bool detRegisteredImfileSelectRowsFits(
     8972    psDB            *dbh,               ///< Database handle
     8973    psFits          *fits,              ///< psFits object
     8974    const psMetadata *where,            ///< Row match criteria
     8975    unsigned long long limit            ///< Maximum number of elements to return
     8976);
     8977
     8978/** Convert a detRegisteredImfileRow into an equivalent psMetadata
     8979 *
     8980 * @return A psMetadata pointer or NULL on error
     8981 */
     8982
     8983psMetadata *detRegisteredImfileMetadataFromObject(
     8984    const detRegisteredImfileRow *object             ///< fooRow to convert into a psMetadata
     8985);
     8986
     8987/** Convert a psMetadata into an equivalent fooRow
     8988 *
     8989 * @return A detRegisteredImfileRow pointer or NULL on error
     8990 */
     8991
     8992detRegisteredImfileRow *detRegisteredImfileObjectFromMetadata(
     8993    psMetadata      *md                 ///< psMetadata to convert into a fooRow
     8994);
     8995/** Selects up to limit rows from the database and returns as detRegisteredImfileRow objects in a psArray
     8996 *
     8997 *  See psDBSelectRows() for documentation on the format of where.
     8998 *
     8999 * @return A psArray pointer or NULL on error
     9000 */
     9001
     9002psArray *detRegisteredImfileSelectRowObjects(
     9003    psDB            *dbh,               ///< Database handle
     9004    const psMetadata *where,            ///< Row match criteria
     9005    unsigned long long limit            ///< Maximum number of elements to return
     9006);
     9007/** Deletes a row from the database coresponding to an detRegisteredImfile
     9008 *
     9009 *  Note that a 'where' search psMetadata is constructed from each object and
     9010 *  used to find rows to delete.
     9011 *
     9012 * @return A The number of rows removed or a negative value on error
     9013 */
     9014
     9015bool detRegisteredImfileDeleteObject(
     9016    psDB            *dbh,               ///< Database handle
     9017    const detRegisteredImfileRow *object    ///< Object to delete
     9018);
     9019/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     9020 *
     9021 *  Note that a 'where' search psMetadata is constructed from each object and
     9022 *  used to find rows to delete.
     9023 *
     9024 * @return A The number of rows removed or a negative value on error
     9025 */
     9026
     9027long long detRegisteredImfileDeleteRowObjects(
     9028    psDB            *dbh,               ///< Database handle
     9029    const psArray   *objects,           ///< Array of objects to delete
     9030    unsigned long long limit            ///< Maximum number of elements to delete
     9031);
     9032/** Formats and prints an array of detRegisteredImfileRow objects
     9033 *
     9034 * When mdcf is set the formated output is in psMetadataConfig
     9035 * format, otherwise it is in a simple tabular format.
     9036 *
     9037 * @return true on success
     9038 */
     9039
     9040bool detRegisteredImfilePrintObjects(
     9041    FILE            *stream,            ///< a stream
     9042    psArray         *objects,           ///< An array of detRegisteredImfileRow objects
     9043    bool            mdcf                ///< format as mdconfig or simple
     9044);
     9045/** Formats and prints an detRegisteredImfileRow object
     9046 *
     9047 * When mdcf is set the formated output is in psMetadataConfig
     9048 * format, otherwise it is in a simple tabular format.
     9049 *
     9050 * @return true on success
     9051 */
     9052
     9053bool detRegisteredImfilePrintObject(
     9054    FILE            *stream,            ///< a stream
     9055    detRegisteredImfileRow *object,    ///< an detRegisteredImfileRow object
     9056    bool            mdcf                ///< format as mdconfig or simple
     9057);
     9058/** detCorrectedExpRow data structure
     9059 *
     9060 * Structure for representing a single row of detCorrectedExp table data.
     9061 */
     9062
     9063typedef struct {
     9064    psS64           det_id;
     9065    psS64           exp_id;
     9066    char            *uri;
     9067    psS64           corr_id;
     9068    char            *corr_type;
     9069    char            *recipe;
     9070    char            *path_base;
     9071    psS16           fault;
     9072} detCorrectedExpRow;
     9073
     9074/** Creates a new detCorrectedExpRow object
     9075 *
     9076 *  @return A new detCorrectedExpRow object or NULL on failure.
     9077 */
     9078
     9079detCorrectedExpRow *detCorrectedExpRowAlloc(
     9080    psS64           det_id,
     9081    psS64           exp_id,
     9082    const char      *uri,
     9083    psS64           corr_id,
     9084    const char      *corr_type,
     9085    const char      *recipe,
     9086    const char      *path_base,
     9087    psS16           fault
     9088);
     9089
     9090/** Creates a new detCorrectedExp table
     9091 *
     9092 * @return true on success
     9093 */
     9094
     9095bool detCorrectedExpCreateTable(
     9096    psDB            *dbh                ///< Database handle
     9097);
     9098
     9099/** Deletes a detCorrectedExp table
     9100 *
     9101 * @return true on success
     9102 */
     9103
     9104bool detCorrectedExpDropTable(
     9105    psDB            *dbh                ///< Database handle
     9106);
     9107
     9108/** Insert a single row into a table
     9109 *
     9110 * This function constructs and inserts a single row based on it's parameters.
     9111 *
     9112 * @return true on success
     9113 */
     9114
     9115bool detCorrectedExpInsert(
     9116    psDB            *dbh,               ///< Database handle
     9117    psS64           det_id,
     9118    psS64           exp_id,
     9119    const char      *uri,
     9120    psS64           corr_id,
     9121    const char      *corr_type,
     9122    const char      *recipe,
     9123    const char      *path_base,
     9124    psS16           fault
     9125);
     9126
     9127/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     9128 *
     9129 * @return A The number of rows removed or a negative value on error
     9130 */
     9131
     9132long long detCorrectedExpDelete(
     9133    psDB            *dbh,               ///< Database handle
     9134    const psMetadata *where,            ///< Row match criteria
     9135    unsigned long long limit            ///< Maximum number of elements to delete
     9136);
     9137
     9138/** Insert a single detCorrectedExpRow object into a table
     9139 *
     9140 * This function constructs and inserts a single row based on it's parameters.
     9141 *
     9142 * @return true on success
     9143 */
     9144
     9145bool detCorrectedExpInsertObject(
     9146    psDB            *dbh,               ///< Database handle
     9147    detCorrectedExpRow *object             ///< detCorrectedExpRow object
     9148);
     9149
     9150/** Insert an array of detCorrectedExpRow object into a table
     9151 *
     9152 * This function constructs and inserts multiple rows based on it's parameters.
     9153 *
     9154 * @return true on success
     9155 */
     9156
     9157bool detCorrectedExpInsertObjects(
     9158    psDB            *dbh,               ///< Database handle
     9159    psArray         *objects            ///< array of detCorrectedExpRow objects
     9160);
     9161
     9162/** Insert data from a binary FITS table detCorrectedExpRow into the database
     9163 *
     9164 * This function expects a psFits object with a FITS table as the first
     9165 * extension.  The table must have at least one row of data in it, that is of
     9166 * the appropriate format (number of columns and their type).  All other
     9167 * extensions are ignored.
     9168 *
     9169 * @return true on success
     9170 */
     9171
     9172bool detCorrectedExpInsertFits(
     9173    psDB            *dbh,               ///< Database handle
     9174    const psFits    *fits               ///< psFits object
     9175);
     9176
     9177/** Selects up to limit from the database and returns them in a binary FITS table
     9178 *
     9179 * This function assumes an empty psFits object and will create a FITS table
     9180 * as the first extension.
     9181 *
     9182 *  See psDBSelectRows() for documentation on the format of where.
     9183 *
     9184 * @return true on success
     9185 */
     9186
     9187bool detCorrectedExpSelectRowsFits(
     9188    psDB            *dbh,               ///< Database handle
     9189    psFits          *fits,              ///< psFits object
     9190    const psMetadata *where,            ///< Row match criteria
     9191    unsigned long long limit            ///< Maximum number of elements to return
     9192);
     9193
     9194/** Convert a detCorrectedExpRow into an equivalent psMetadata
     9195 *
     9196 * @return A psMetadata pointer or NULL on error
     9197 */
     9198
     9199psMetadata *detCorrectedExpMetadataFromObject(
     9200    const detCorrectedExpRow *object             ///< fooRow to convert into a psMetadata
     9201);
     9202
     9203/** Convert a psMetadata into an equivalent fooRow
     9204 *
     9205 * @return A detCorrectedExpRow pointer or NULL on error
     9206 */
     9207
     9208detCorrectedExpRow *detCorrectedExpObjectFromMetadata(
     9209    psMetadata      *md                 ///< psMetadata to convert into a fooRow
     9210);
     9211/** Selects up to limit rows from the database and returns as detCorrectedExpRow objects in a psArray
     9212 *
     9213 *  See psDBSelectRows() for documentation on the format of where.
     9214 *
     9215 * @return A psArray pointer or NULL on error
     9216 */
     9217
     9218psArray *detCorrectedExpSelectRowObjects(
     9219    psDB            *dbh,               ///< Database handle
     9220    const psMetadata *where,            ///< Row match criteria
     9221    unsigned long long limit            ///< Maximum number of elements to return
     9222);
     9223/** Deletes a row from the database coresponding to an detCorrectedExp
     9224 *
     9225 *  Note that a 'where' search psMetadata is constructed from each object and
     9226 *  used to find rows to delete.
     9227 *
     9228 * @return A The number of rows removed or a negative value on error
     9229 */
     9230
     9231bool detCorrectedExpDeleteObject(
     9232    psDB            *dbh,               ///< Database handle
     9233    const detCorrectedExpRow *object    ///< Object to delete
     9234);
     9235/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     9236 *
     9237 *  Note that a 'where' search psMetadata is constructed from each object and
     9238 *  used to find rows to delete.
     9239 *
     9240 * @return A The number of rows removed or a negative value on error
     9241 */
     9242
     9243long long detCorrectedExpDeleteRowObjects(
     9244    psDB            *dbh,               ///< Database handle
     9245    const psArray   *objects,           ///< Array of objects to delete
     9246    unsigned long long limit            ///< Maximum number of elements to delete
     9247);
     9248/** Formats and prints an array of detCorrectedExpRow objects
     9249 *
     9250 * When mdcf is set the formated output is in psMetadataConfig
     9251 * format, otherwise it is in a simple tabular format.
     9252 *
     9253 * @return true on success
     9254 */
     9255
     9256bool detCorrectedExpPrintObjects(
     9257    FILE            *stream,            ///< a stream
     9258    psArray         *objects,           ///< An array of detCorrectedExpRow objects
     9259    bool            mdcf                ///< format as mdconfig or simple
     9260);
     9261/** Formats and prints an detCorrectedExpRow object
     9262 *
     9263 * When mdcf is set the formated output is in psMetadataConfig
     9264 * format, otherwise it is in a simple tabular format.
     9265 *
     9266 * @return true on success
     9267 */
     9268
     9269bool detCorrectedExpPrintObject(
     9270    FILE            *stream,            ///< a stream
     9271    detCorrectedExpRow *object,    ///< an detCorrectedExpRow object
     9272    bool            mdcf                ///< format as mdconfig or simple
     9273);
     9274/** detCorrectedImfileRow data structure
     9275 *
     9276 * Structure for representing a single row of detCorrectedImfile table data.
     9277 */
     9278
     9279typedef struct {
     9280    psS64           det_id;
     9281    psS64           exp_id;
     9282    char            *class_id;
     9283    char            *uri;
     9284    char            *path_base;
     9285    psS16           fault;
     9286} detCorrectedImfileRow;
     9287
     9288/** Creates a new detCorrectedImfileRow object
     9289 *
     9290 *  @return A new detCorrectedImfileRow object or NULL on failure.
     9291 */
     9292
     9293detCorrectedImfileRow *detCorrectedImfileRowAlloc(
     9294    psS64           det_id,
     9295    psS64           exp_id,
     9296    const char      *class_id,
     9297    const char      *uri,
     9298    const char      *path_base,
     9299    psS16           fault
     9300);
     9301
     9302/** Creates a new detCorrectedImfile table
     9303 *
     9304 * @return true on success
     9305 */
     9306
     9307bool detCorrectedImfileCreateTable(
     9308    psDB            *dbh                ///< Database handle
     9309);
     9310
     9311/** Deletes a detCorrectedImfile table
     9312 *
     9313 * @return true on success
     9314 */
     9315
     9316bool detCorrectedImfileDropTable(
     9317    psDB            *dbh                ///< Database handle
     9318);
     9319
     9320/** Insert a single row into a table
     9321 *
     9322 * This function constructs and inserts a single row based on it's parameters.
     9323 *
     9324 * @return true on success
     9325 */
     9326
     9327bool detCorrectedImfileInsert(
     9328    psDB            *dbh,               ///< Database handle
     9329    psS64           det_id,
     9330    psS64           exp_id,
     9331    const char      *class_id,
     9332    const char      *uri,
     9333    const char      *path_base,
     9334    psS16           fault
     9335);
     9336
     9337/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     9338 *
     9339 * @return A The number of rows removed or a negative value on error
     9340 */
     9341
     9342long long detCorrectedImfileDelete(
     9343    psDB            *dbh,               ///< Database handle
     9344    const psMetadata *where,            ///< Row match criteria
     9345    unsigned long long limit            ///< Maximum number of elements to delete
     9346);
     9347
     9348/** Insert a single detCorrectedImfileRow object into a table
     9349 *
     9350 * This function constructs and inserts a single row based on it's parameters.
     9351 *
     9352 * @return true on success
     9353 */
     9354
     9355bool detCorrectedImfileInsertObject(
     9356    psDB            *dbh,               ///< Database handle
     9357    detCorrectedImfileRow *object             ///< detCorrectedImfileRow object
     9358);
     9359
     9360/** Insert an array of detCorrectedImfileRow object into a table
     9361 *
     9362 * This function constructs and inserts multiple rows based on it's parameters.
     9363 *
     9364 * @return true on success
     9365 */
     9366
     9367bool detCorrectedImfileInsertObjects(
     9368    psDB            *dbh,               ///< Database handle
     9369    psArray         *objects            ///< array of detCorrectedImfileRow objects
     9370);
     9371
     9372/** Insert data from a binary FITS table detCorrectedImfileRow into the database
     9373 *
     9374 * This function expects a psFits object with a FITS table as the first
     9375 * extension.  The table must have at least one row of data in it, that is of
     9376 * the appropriate format (number of columns and their type).  All other
     9377 * extensions are ignored.
     9378 *
     9379 * @return true on success
     9380 */
     9381
     9382bool detCorrectedImfileInsertFits(
     9383    psDB            *dbh,               ///< Database handle
     9384    const psFits    *fits               ///< psFits object
     9385);
     9386
     9387/** Selects up to limit from the database and returns them in a binary FITS table
     9388 *
     9389 * This function assumes an empty psFits object and will create a FITS table
     9390 * as the first extension.
     9391 *
     9392 *  See psDBSelectRows() for documentation on the format of where.
     9393 *
     9394 * @return true on success
     9395 */
     9396
     9397bool detCorrectedImfileSelectRowsFits(
     9398    psDB            *dbh,               ///< Database handle
     9399    psFits          *fits,              ///< psFits object
     9400    const psMetadata *where,            ///< Row match criteria
     9401    unsigned long long limit            ///< Maximum number of elements to return
     9402);
     9403
     9404/** Convert a detCorrectedImfileRow into an equivalent psMetadata
     9405 *
     9406 * @return A psMetadata pointer or NULL on error
     9407 */
     9408
     9409psMetadata *detCorrectedImfileMetadataFromObject(
     9410    const detCorrectedImfileRow *object             ///< fooRow to convert into a psMetadata
     9411);
     9412
     9413/** Convert a psMetadata into an equivalent fooRow
     9414 *
     9415 * @return A detCorrectedImfileRow pointer or NULL on error
     9416 */
     9417
     9418detCorrectedImfileRow *detCorrectedImfileObjectFromMetadata(
     9419    psMetadata      *md                 ///< psMetadata to convert into a fooRow
     9420);
     9421/** Selects up to limit rows from the database and returns as detCorrectedImfileRow objects in a psArray
     9422 *
     9423 *  See psDBSelectRows() for documentation on the format of where.
     9424 *
     9425 * @return A psArray pointer or NULL on error
     9426 */
     9427
     9428psArray *detCorrectedImfileSelectRowObjects(
     9429    psDB            *dbh,               ///< Database handle
     9430    const psMetadata *where,            ///< Row match criteria
     9431    unsigned long long limit            ///< Maximum number of elements to return
     9432);
     9433/** Deletes a row from the database coresponding to an detCorrectedImfile
     9434 *
     9435 *  Note that a 'where' search psMetadata is constructed from each object and
     9436 *  used to find rows to delete.
     9437 *
     9438 * @return A The number of rows removed or a negative value on error
     9439 */
     9440
     9441bool detCorrectedImfileDeleteObject(
     9442    psDB            *dbh,               ///< Database handle
     9443    const detCorrectedImfileRow *object    ///< Object to delete
     9444);
     9445/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     9446 *
     9447 *  Note that a 'where' search psMetadata is constructed from each object and
     9448 *  used to find rows to delete.
     9449 *
     9450 * @return A The number of rows removed or a negative value on error
     9451 */
     9452
     9453long long detCorrectedImfileDeleteRowObjects(
     9454    psDB            *dbh,               ///< Database handle
     9455    const psArray   *objects,           ///< Array of objects to delete
     9456    unsigned long long limit            ///< Maximum number of elements to delete
     9457);
     9458/** Formats and prints an array of detCorrectedImfileRow objects
     9459 *
     9460 * When mdcf is set the formated output is in psMetadataConfig
     9461 * format, otherwise it is in a simple tabular format.
     9462 *
     9463 * @return true on success
     9464 */
     9465
     9466bool detCorrectedImfilePrintObjects(
     9467    FILE            *stream,            ///< a stream
     9468    psArray         *objects,           ///< An array of detCorrectedImfileRow objects
     9469    bool            mdcf                ///< format as mdconfig or simple
     9470);
     9471/** Formats and prints an detCorrectedImfileRow object
     9472 *
     9473 * When mdcf is set the formated output is in psMetadataConfig
     9474 * format, otherwise it is in a simple tabular format.
     9475 *
     9476 * @return true on success
     9477 */
     9478
     9479bool detCorrectedImfilePrintObject(
     9480    FILE            *stream,            ///< a stream
     9481    detCorrectedImfileRow *object,    ///< an detCorrectedImfileRow object
     9482    bool            mdcf                ///< format as mdconfig or simple
     9483);
     9484/** magicRunRow data structure
     9485 *
     9486 * Structure for representing a single row of magicRun table data.
     9487 */
     9488
     9489typedef struct {
     9490    psS64           magic_id;
     9491    char            *state;
     9492    char            *workdir;
     9493    char            *workdir_state;
     9494    char            *label;
     9495    char            *dvodb;
     9496    psTime*         registered;
     9497} magicRunRow;
     9498
     9499/** Creates a new magicRunRow object
     9500 *
     9501 *  @return A new magicRunRow object or NULL on failure.
     9502 */
     9503
     9504magicRunRow *magicRunRowAlloc(
     9505    psS64           magic_id,
     9506    const char      *state,
     9507    const char      *workdir,
     9508    const char      *workdir_state,
     9509    const char      *label,
     9510    const char      *dvodb,
     9511    psTime*         registered
     9512);
     9513
     9514/** Creates a new magicRun table
     9515 *
     9516 * @return true on success
     9517 */
     9518
     9519bool magicRunCreateTable(
     9520    psDB            *dbh                ///< Database handle
     9521);
     9522
     9523/** Deletes a magicRun table
     9524 *
     9525 * @return true on success
     9526 */
     9527
     9528bool magicRunDropTable(
     9529    psDB            *dbh                ///< Database handle
     9530);
     9531
     9532/** Insert a single row into a table
     9533 *
     9534 * This function constructs and inserts a single row based on it's parameters.
     9535 *
     9536 * @return true on success
     9537 */
     9538
     9539bool magicRunInsert(
     9540    psDB            *dbh,               ///< Database handle
     9541    psS64           magic_id,
     9542    const char      *state,
     9543    const char      *workdir,
     9544    const char      *workdir_state,
     9545    const char      *label,
     9546    const char      *dvodb,
     9547    psTime*         registered
     9548);
     9549
     9550/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     9551 *
     9552 * @return A The number of rows removed or a negative value on error
     9553 */
     9554
     9555long long magicRunDelete(
     9556    psDB            *dbh,               ///< Database handle
     9557    const psMetadata *where,            ///< Row match criteria
     9558    unsigned long long limit            ///< Maximum number of elements to delete
     9559);
     9560
     9561/** Insert a single magicRunRow object into a table
     9562 *
     9563 * This function constructs and inserts a single row based on it's parameters.
     9564 *
     9565 * @return true on success
     9566 */
     9567
     9568bool magicRunInsertObject(
     9569    psDB            *dbh,               ///< Database handle
     9570    magicRunRow     *object             ///< magicRunRow object
     9571);
     9572
     9573/** Insert an array of magicRunRow object into a table
     9574 *
     9575 * This function constructs and inserts multiple rows based on it's parameters.
     9576 *
     9577 * @return true on success
     9578 */
     9579
     9580bool magicRunInsertObjects(
     9581    psDB            *dbh,               ///< Database handle
     9582    psArray         *objects            ///< array of magicRunRow objects
     9583);
     9584
     9585/** Insert data from a binary FITS table magicRunRow into the database
     9586 *
     9587 * This function expects a psFits object with a FITS table as the first
     9588 * extension.  The table must have at least one row of data in it, that is of
     9589 * the appropriate format (number of columns and their type).  All other
     9590 * extensions are ignored.
     9591 *
     9592 * @return true on success
     9593 */
     9594
     9595bool magicRunInsertFits(
     9596    psDB            *dbh,               ///< Database handle
     9597    const psFits    *fits               ///< psFits object
     9598);
     9599
     9600/** Selects up to limit from the database and returns them in a binary FITS table
     9601 *
     9602 * This function assumes an empty psFits object and will create a FITS table
     9603 * as the first extension.
     9604 *
     9605 *  See psDBSelectRows() for documentation on the format of where.
     9606 *
     9607 * @return true on success
     9608 */
     9609
     9610bool magicRunSelectRowsFits(
     9611    psDB            *dbh,               ///< Database handle
     9612    psFits          *fits,              ///< psFits object
     9613    const psMetadata *where,            ///< Row match criteria
     9614    unsigned long long limit            ///< Maximum number of elements to return
     9615);
     9616
     9617/** Convert a magicRunRow into an equivalent psMetadata
     9618 *
     9619 * @return A psMetadata pointer or NULL on error
     9620 */
     9621
     9622psMetadata *magicRunMetadataFromObject(
     9623    const magicRunRow *object             ///< fooRow to convert into a psMetadata
     9624);
     9625
     9626/** Convert a psMetadata into an equivalent fooRow
     9627 *
     9628 * @return A magicRunRow pointer or NULL on error
     9629 */
     9630
     9631magicRunRow *magicRunObjectFromMetadata(
     9632    psMetadata      *md                 ///< psMetadata to convert into a fooRow
     9633);
     9634/** Selects up to limit rows from the database and returns as magicRunRow objects in a psArray
     9635 *
     9636 *  See psDBSelectRows() for documentation on the format of where.
     9637 *
     9638 * @return A psArray pointer or NULL on error
     9639 */
     9640
     9641psArray *magicRunSelectRowObjects(
     9642    psDB            *dbh,               ///< Database handle
     9643    const psMetadata *where,            ///< Row match criteria
     9644    unsigned long long limit            ///< Maximum number of elements to return
     9645);
     9646/** Deletes a row from the database coresponding to an magicRun
     9647 *
     9648 *  Note that a 'where' search psMetadata is constructed from each object and
     9649 *  used to find rows to delete.
     9650 *
     9651 * @return A The number of rows removed or a negative value on error
     9652 */
     9653
     9654bool magicRunDeleteObject(
     9655    psDB            *dbh,               ///< Database handle
     9656    const magicRunRow *object    ///< Object to delete
     9657);
     9658/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     9659 *
     9660 *  Note that a 'where' search psMetadata is constructed from each object and
     9661 *  used to find rows to delete.
     9662 *
     9663 * @return A The number of rows removed or a negative value on error
     9664 */
     9665
     9666long long magicRunDeleteRowObjects(
     9667    psDB            *dbh,               ///< Database handle
     9668    const psArray   *objects,           ///< Array of objects to delete
     9669    unsigned long long limit            ///< Maximum number of elements to delete
     9670);
     9671/** Formats and prints an array of magicRunRow objects
     9672 *
     9673 * When mdcf is set the formated output is in psMetadataConfig
     9674 * format, otherwise it is in a simple tabular format.
     9675 *
     9676 * @return true on success
     9677 */
     9678
     9679bool magicRunPrintObjects(
     9680    FILE            *stream,            ///< a stream
     9681    psArray         *objects,           ///< An array of magicRunRow objects
     9682    bool            mdcf                ///< format as mdconfig or simple
     9683);
     9684/** Formats and prints an magicRunRow object
     9685 *
     9686 * When mdcf is set the formated output is in psMetadataConfig
     9687 * format, otherwise it is in a simple tabular format.
     9688 *
     9689 * @return true on success
     9690 */
     9691
     9692bool magicRunPrintObject(
     9693    FILE            *stream,            ///< a stream
     9694    magicRunRow *object,    ///< an magicRunRow object
     9695    bool            mdcf                ///< format as mdconfig or simple
     9696);
     9697/** magicInputSkyfileRow data structure
     9698 *
     9699 * Structure for representing a single row of magicInputSkyfile table data.
     9700 */
     9701
     9702typedef struct {
     9703    psS64           magic_id;
     9704    psS64           diff_id;
     9705    char            *node;
     9706} magicInputSkyfileRow;
     9707
     9708/** Creates a new magicInputSkyfileRow object
     9709 *
     9710 *  @return A new magicInputSkyfileRow object or NULL on failure.
     9711 */
     9712
     9713magicInputSkyfileRow *magicInputSkyfileRowAlloc(
     9714    psS64           magic_id,
     9715    psS64           diff_id,
     9716    const char      *node
     9717);
     9718
     9719/** Creates a new magicInputSkyfile table
     9720 *
     9721 * @return true on success
     9722 */
     9723
     9724bool magicInputSkyfileCreateTable(
     9725    psDB            *dbh                ///< Database handle
     9726);
     9727
     9728/** Deletes a magicInputSkyfile table
     9729 *
     9730 * @return true on success
     9731 */
     9732
     9733bool magicInputSkyfileDropTable(
     9734    psDB            *dbh                ///< Database handle
     9735);
     9736
     9737/** Insert a single row into a table
     9738 *
     9739 * This function constructs and inserts a single row based on it's parameters.
     9740 *
     9741 * @return true on success
     9742 */
     9743
     9744bool magicInputSkyfileInsert(
     9745    psDB            *dbh,               ///< Database handle
     9746    psS64           magic_id,
     9747    psS64           diff_id,
     9748    const char      *node
     9749);
     9750
     9751/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     9752 *
     9753 * @return A The number of rows removed or a negative value on error
     9754 */
     9755
     9756long long magicInputSkyfileDelete(
     9757    psDB            *dbh,               ///< Database handle
     9758    const psMetadata *where,            ///< Row match criteria
     9759    unsigned long long limit            ///< Maximum number of elements to delete
     9760);
     9761
     9762/** Insert a single magicInputSkyfileRow object into a table
     9763 *
     9764 * This function constructs and inserts a single row based on it's parameters.
     9765 *
     9766 * @return true on success
     9767 */
     9768
     9769bool magicInputSkyfileInsertObject(
     9770    psDB            *dbh,               ///< Database handle
     9771    magicInputSkyfileRow *object             ///< magicInputSkyfileRow object
     9772);
     9773
     9774/** Insert an array of magicInputSkyfileRow object into a table
     9775 *
     9776 * This function constructs and inserts multiple rows based on it's parameters.
     9777 *
     9778 * @return true on success
     9779 */
     9780
     9781bool magicInputSkyfileInsertObjects(
     9782    psDB            *dbh,               ///< Database handle
     9783    psArray         *objects            ///< array of magicInputSkyfileRow objects
     9784);
     9785
     9786/** Insert data from a binary FITS table magicInputSkyfileRow into the database
     9787 *
     9788 * This function expects a psFits object with a FITS table as the first
     9789 * extension.  The table must have at least one row of data in it, that is of
     9790 * the appropriate format (number of columns and their type).  All other
     9791 * extensions are ignored.
     9792 *
     9793 * @return true on success
     9794 */
     9795
     9796bool magicInputSkyfileInsertFits(
     9797    psDB            *dbh,               ///< Database handle
     9798    const psFits    *fits               ///< psFits object
     9799);
     9800
     9801/** Selects up to limit from the database and returns them in a binary FITS table
     9802 *
     9803 * This function assumes an empty psFits object and will create a FITS table
     9804 * as the first extension.
     9805 *
     9806 *  See psDBSelectRows() for documentation on the format of where.
     9807 *
     9808 * @return true on success
     9809 */
     9810
     9811bool magicInputSkyfileSelectRowsFits(
     9812    psDB            *dbh,               ///< Database handle
     9813    psFits          *fits,              ///< psFits object
     9814    const psMetadata *where,            ///< Row match criteria
     9815    unsigned long long limit            ///< Maximum number of elements to return
     9816);
     9817
     9818/** Convert a magicInputSkyfileRow into an equivalent psMetadata
     9819 *
     9820 * @return A psMetadata pointer or NULL on error
     9821 */
     9822
     9823psMetadata *magicInputSkyfileMetadataFromObject(
     9824    const magicInputSkyfileRow *object             ///< fooRow to convert into a psMetadata
     9825);
     9826
     9827/** Convert a psMetadata into an equivalent fooRow
     9828 *
     9829 * @return A magicInputSkyfileRow pointer or NULL on error
     9830 */
     9831
     9832magicInputSkyfileRow *magicInputSkyfileObjectFromMetadata(
     9833    psMetadata      *md                 ///< psMetadata to convert into a fooRow
     9834);
     9835/** Selects up to limit rows from the database and returns as magicInputSkyfileRow objects in a psArray
     9836 *
     9837 *  See psDBSelectRows() for documentation on the format of where.
     9838 *
     9839 * @return A psArray pointer or NULL on error
     9840 */
     9841
     9842psArray *magicInputSkyfileSelectRowObjects(
     9843    psDB            *dbh,               ///< Database handle
     9844    const psMetadata *where,            ///< Row match criteria
     9845    unsigned long long limit            ///< Maximum number of elements to return
     9846);
     9847/** Deletes a row from the database coresponding to an magicInputSkyfile
     9848 *
     9849 *  Note that a 'where' search psMetadata is constructed from each object and
     9850 *  used to find rows to delete.
     9851 *
     9852 * @return A The number of rows removed or a negative value on error
     9853 */
     9854
     9855bool magicInputSkyfileDeleteObject(
     9856    psDB            *dbh,               ///< Database handle
     9857    const magicInputSkyfileRow *object    ///< Object to delete
     9858);
     9859/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     9860 *
     9861 *  Note that a 'where' search psMetadata is constructed from each object and
     9862 *  used to find rows to delete.
     9863 *
     9864 * @return A The number of rows removed or a negative value on error
     9865 */
     9866
     9867long long magicInputSkyfileDeleteRowObjects(
     9868    psDB            *dbh,               ///< Database handle
     9869    const psArray   *objects,           ///< Array of objects to delete
     9870    unsigned long long limit            ///< Maximum number of elements to delete
     9871);
     9872/** Formats and prints an array of magicInputSkyfileRow objects
     9873 *
     9874 * When mdcf is set the formated output is in psMetadataConfig
     9875 * format, otherwise it is in a simple tabular format.
     9876 *
     9877 * @return true on success
     9878 */
     9879
     9880bool magicInputSkyfilePrintObjects(
     9881    FILE            *stream,            ///< a stream
     9882    psArray         *objects,           ///< An array of magicInputSkyfileRow objects
     9883    bool            mdcf                ///< format as mdconfig or simple
     9884);
     9885/** Formats and prints an magicInputSkyfileRow object
     9886 *
     9887 * When mdcf is set the formated output is in psMetadataConfig
     9888 * format, otherwise it is in a simple tabular format.
     9889 *
     9890 * @return true on success
     9891 */
     9892
     9893bool magicInputSkyfilePrintObject(
     9894    FILE            *stream,            ///< a stream
     9895    magicInputSkyfileRow *object,    ///< an magicInputSkyfileRow object
     9896    bool            mdcf                ///< format as mdconfig or simple
     9897);
     9898/** magicTreeRow data structure
     9899 *
     9900 * Structure for representing a single row of magicTree table data.
     9901 */
     9902
     9903typedef struct {
     9904    psS64           magic_id;
     9905    char            *node;
     9906    char            *dep;
     9907} magicTreeRow;
     9908
     9909/** Creates a new magicTreeRow object
     9910 *
     9911 *  @return A new magicTreeRow object or NULL on failure.
     9912 */
     9913
     9914magicTreeRow *magicTreeRowAlloc(
     9915    psS64           magic_id,
     9916    const char      *node,
     9917    const char      *dep
     9918);
     9919
     9920/** Creates a new magicTree table
     9921 *
     9922 * @return true on success
     9923 */
     9924
     9925bool magicTreeCreateTable(
     9926    psDB            *dbh                ///< Database handle
     9927);
     9928
     9929/** Deletes a magicTree table
     9930 *
     9931 * @return true on success
     9932 */
     9933
     9934bool magicTreeDropTable(
     9935    psDB            *dbh                ///< Database handle
     9936);
     9937
     9938/** Insert a single row into a table
     9939 *
     9940 * This function constructs and inserts a single row based on it's parameters.
     9941 *
     9942 * @return true on success
     9943 */
     9944
     9945bool magicTreeInsert(
     9946    psDB            *dbh,               ///< Database handle
     9947    psS64           magic_id,
     9948    const char      *node,
     9949    const char      *dep
     9950);
     9951
     9952/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     9953 *
     9954 * @return A The number of rows removed or a negative value on error
     9955 */
     9956
     9957long long magicTreeDelete(
     9958    psDB            *dbh,               ///< Database handle
     9959    const psMetadata *where,            ///< Row match criteria
     9960    unsigned long long limit            ///< Maximum number of elements to delete
     9961);
     9962
     9963/** Insert a single magicTreeRow object into a table
     9964 *
     9965 * This function constructs and inserts a single row based on it's parameters.
     9966 *
     9967 * @return true on success
     9968 */
     9969
     9970bool magicTreeInsertObject(
     9971    psDB            *dbh,               ///< Database handle
     9972    magicTreeRow    *object             ///< magicTreeRow object
     9973);
     9974
     9975/** Insert an array of magicTreeRow object into a table
     9976 *
     9977 * This function constructs and inserts multiple rows based on it's parameters.
     9978 *
     9979 * @return true on success
     9980 */
     9981
     9982bool magicTreeInsertObjects(
     9983    psDB            *dbh,               ///< Database handle
     9984    psArray         *objects            ///< array of magicTreeRow objects
     9985);
     9986
     9987/** Insert data from a binary FITS table magicTreeRow into the database
     9988 *
     9989 * This function expects a psFits object with a FITS table as the first
     9990 * extension.  The table must have at least one row of data in it, that is of
     9991 * the appropriate format (number of columns and their type).  All other
     9992 * extensions are ignored.
     9993 *
     9994 * @return true on success
     9995 */
     9996
     9997bool magicTreeInsertFits(
     9998    psDB            *dbh,               ///< Database handle
     9999    const psFits    *fits               ///< psFits object
     10000);
     10001
     10002/** Selects up to limit from the database and returns them in a binary FITS table
     10003 *
     10004 * This function assumes an empty psFits object and will create a FITS table
     10005 * as the first extension.
     10006 *
     10007 *  See psDBSelectRows() for documentation on the format of where.
     10008 *
     10009 * @return true on success
     10010 */
     10011
     10012bool magicTreeSelectRowsFits(
     10013    psDB            *dbh,               ///< Database handle
     10014    psFits          *fits,              ///< psFits object
     10015    const psMetadata *where,            ///< Row match criteria
     10016    unsigned long long limit            ///< Maximum number of elements to return
     10017);
     10018
     10019/** Convert a magicTreeRow into an equivalent psMetadata
     10020 *
     10021 * @return A psMetadata pointer or NULL on error
     10022 */
     10023
     10024psMetadata *magicTreeMetadataFromObject(
     10025    const magicTreeRow *object             ///< fooRow to convert into a psMetadata
     10026);
     10027
     10028/** Convert a psMetadata into an equivalent fooRow
     10029 *
     10030 * @return A magicTreeRow pointer or NULL on error
     10031 */
     10032
     10033magicTreeRow *magicTreeObjectFromMetadata(
     10034    psMetadata      *md                 ///< psMetadata to convert into a fooRow
     10035);
     10036/** Selects up to limit rows from the database and returns as magicTreeRow objects in a psArray
     10037 *
     10038 *  See psDBSelectRows() for documentation on the format of where.
     10039 *
     10040 * @return A psArray pointer or NULL on error
     10041 */
     10042
     10043psArray *magicTreeSelectRowObjects(
     10044    psDB            *dbh,               ///< Database handle
     10045    const psMetadata *where,            ///< Row match criteria
     10046    unsigned long long limit            ///< Maximum number of elements to return
     10047);
     10048/** Deletes a row from the database coresponding to an magicTree
     10049 *
     10050 *  Note that a 'where' search psMetadata is constructed from each object and
     10051 *  used to find rows to delete.
     10052 *
     10053 * @return A The number of rows removed or a negative value on error
     10054 */
     10055
     10056bool magicTreeDeleteObject(
     10057    psDB            *dbh,               ///< Database handle
     10058    const magicTreeRow *object    ///< Object to delete
     10059);
     10060/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     10061 *
     10062 *  Note that a 'where' search psMetadata is constructed from each object and
     10063 *  used to find rows to delete.
     10064 *
     10065 * @return A The number of rows removed or a negative value on error
     10066 */
     10067
     10068long long magicTreeDeleteRowObjects(
     10069    psDB            *dbh,               ///< Database handle
     10070    const psArray   *objects,           ///< Array of objects to delete
     10071    unsigned long long limit            ///< Maximum number of elements to delete
     10072);
     10073/** Formats and prints an array of magicTreeRow objects
     10074 *
     10075 * When mdcf is set the formated output is in psMetadataConfig
     10076 * format, otherwise it is in a simple tabular format.
     10077 *
     10078 * @return true on success
     10079 */
     10080
     10081bool magicTreePrintObjects(
     10082    FILE            *stream,            ///< a stream
     10083    psArray         *objects,           ///< An array of magicTreeRow objects
     10084    bool            mdcf                ///< format as mdconfig or simple
     10085);
     10086/** Formats and prints an magicTreeRow object
     10087 *
     10088 * When mdcf is set the formated output is in psMetadataConfig
     10089 * format, otherwise it is in a simple tabular format.
     10090 *
     10091 * @return true on success
     10092 */
     10093
     10094bool magicTreePrintObject(
     10095    FILE            *stream,            ///< a stream
     10096    magicTreeRow *object,    ///< an magicTreeRow object
     10097    bool            mdcf                ///< format as mdconfig or simple
     10098);
     10099/** magicNodeResultRow data structure
     10100 *
     10101 * Structure for representing a single row of magicNodeResult table data.
     10102 */
     10103
     10104typedef struct {
     10105    psS64           magic_id;
     10106    char            *node;
     10107    char            *uri;
     10108} magicNodeResultRow;
     10109
     10110/** Creates a new magicNodeResultRow object
     10111 *
     10112 *  @return A new magicNodeResultRow object or NULL on failure.
     10113 */
     10114
     10115magicNodeResultRow *magicNodeResultRowAlloc(
     10116    psS64           magic_id,
     10117    const char      *node,
     10118    const char      *uri
     10119);
     10120
     10121/** Creates a new magicNodeResult table
     10122 *
     10123 * @return true on success
     10124 */
     10125
     10126bool magicNodeResultCreateTable(
     10127    psDB            *dbh                ///< Database handle
     10128);
     10129
     10130/** Deletes a magicNodeResult table
     10131 *
     10132 * @return true on success
     10133 */
     10134
     10135bool magicNodeResultDropTable(
     10136    psDB            *dbh                ///< Database handle
     10137);
     10138
     10139/** Insert a single row into a table
     10140 *
     10141 * This function constructs and inserts a single row based on it's parameters.
     10142 *
     10143 * @return true on success
     10144 */
     10145
     10146bool magicNodeResultInsert(
     10147    psDB            *dbh,               ///< Database handle
     10148    psS64           magic_id,
     10149    const char      *node,
     10150    const char      *uri
     10151);
     10152
     10153/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     10154 *
     10155 * @return A The number of rows removed or a negative value on error
     10156 */
     10157
     10158long long magicNodeResultDelete(
     10159    psDB            *dbh,               ///< Database handle
     10160    const psMetadata *where,            ///< Row match criteria
     10161    unsigned long long limit            ///< Maximum number of elements to delete
     10162);
     10163
     10164/** Insert a single magicNodeResultRow object into a table
     10165 *
     10166 * This function constructs and inserts a single row based on it's parameters.
     10167 *
     10168 * @return true on success
     10169 */
     10170
     10171bool magicNodeResultInsertObject(
     10172    psDB            *dbh,               ///< Database handle
     10173    magicNodeResultRow *object             ///< magicNodeResultRow object
     10174);
     10175
     10176/** Insert an array of magicNodeResultRow object into a table
     10177 *
     10178 * This function constructs and inserts multiple rows based on it's parameters.
     10179 *
     10180 * @return true on success
     10181 */
     10182
     10183bool magicNodeResultInsertObjects(
     10184    psDB            *dbh,               ///< Database handle
     10185    psArray         *objects            ///< array of magicNodeResultRow objects
     10186);
     10187
     10188/** Insert data from a binary FITS table magicNodeResultRow into the database
     10189 *
     10190 * This function expects a psFits object with a FITS table as the first
     10191 * extension.  The table must have at least one row of data in it, that is of
     10192 * the appropriate format (number of columns and their type).  All other
     10193 * extensions are ignored.
     10194 *
     10195 * @return true on success
     10196 */
     10197
     10198bool magicNodeResultInsertFits(
     10199    psDB            *dbh,               ///< Database handle
     10200    const psFits    *fits               ///< psFits object
     10201);
     10202
     10203/** Selects up to limit from the database and returns them in a binary FITS table
     10204 *
     10205 * This function assumes an empty psFits object and will create a FITS table
     10206 * as the first extension.
     10207 *
     10208 *  See psDBSelectRows() for documentation on the format of where.
     10209 *
     10210 * @return true on success
     10211 */
     10212
     10213bool magicNodeResultSelectRowsFits(
     10214    psDB            *dbh,               ///< Database handle
     10215    psFits          *fits,              ///< psFits object
     10216    const psMetadata *where,            ///< Row match criteria
     10217    unsigned long long limit            ///< Maximum number of elements to return
     10218);
     10219
     10220/** Convert a magicNodeResultRow into an equivalent psMetadata
     10221 *
     10222 * @return A psMetadata pointer or NULL on error
     10223 */
     10224
     10225psMetadata *magicNodeResultMetadataFromObject(
     10226    const magicNodeResultRow *object             ///< fooRow to convert into a psMetadata
     10227);
     10228
     10229/** Convert a psMetadata into an equivalent fooRow
     10230 *
     10231 * @return A magicNodeResultRow pointer or NULL on error
     10232 */
     10233
     10234magicNodeResultRow *magicNodeResultObjectFromMetadata(
     10235    psMetadata      *md                 ///< psMetadata to convert into a fooRow
     10236);
     10237/** Selects up to limit rows from the database and returns as magicNodeResultRow objects in a psArray
     10238 *
     10239 *  See psDBSelectRows() for documentation on the format of where.
     10240 *
     10241 * @return A psArray pointer or NULL on error
     10242 */
     10243
     10244psArray *magicNodeResultSelectRowObjects(
     10245    psDB            *dbh,               ///< Database handle
     10246    const psMetadata *where,            ///< Row match criteria
     10247    unsigned long long limit            ///< Maximum number of elements to return
     10248);
     10249/** Deletes a row from the database coresponding to an magicNodeResult
     10250 *
     10251 *  Note that a 'where' search psMetadata is constructed from each object and
     10252 *  used to find rows to delete.
     10253 *
     10254 * @return A The number of rows removed or a negative value on error
     10255 */
     10256
     10257bool magicNodeResultDeleteObject(
     10258    psDB            *dbh,               ///< Database handle
     10259    const magicNodeResultRow *object    ///< Object to delete
     10260);
     10261/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     10262 *
     10263 *  Note that a 'where' search psMetadata is constructed from each object and
     10264 *  used to find rows to delete.
     10265 *
     10266 * @return A The number of rows removed or a negative value on error
     10267 */
     10268
     10269long long magicNodeResultDeleteRowObjects(
     10270    psDB            *dbh,               ///< Database handle
     10271    const psArray   *objects,           ///< Array of objects to delete
     10272    unsigned long long limit            ///< Maximum number of elements to delete
     10273);
     10274/** Formats and prints an array of magicNodeResultRow objects
     10275 *
     10276 * When mdcf is set the formated output is in psMetadataConfig
     10277 * format, otherwise it is in a simple tabular format.
     10278 *
     10279 * @return true on success
     10280 */
     10281
     10282bool magicNodeResultPrintObjects(
     10283    FILE            *stream,            ///< a stream
     10284    psArray         *objects,           ///< An array of magicNodeResultRow objects
     10285    bool            mdcf                ///< format as mdconfig or simple
     10286);
     10287/** Formats and prints an magicNodeResultRow object
     10288 *
     10289 * When mdcf is set the formated output is in psMetadataConfig
     10290 * format, otherwise it is in a simple tabular format.
     10291 *
     10292 * @return true on success
     10293 */
     10294
     10295bool magicNodeResultPrintObject(
     10296    FILE            *stream,            ///< a stream
     10297    magicNodeResultRow *object,    ///< an magicNodeResultRow object
     10298    bool            mdcf                ///< format as mdconfig or simple
     10299);
     10300/** magicMaskRow data structure
     10301 *
     10302 * Structure for representing a single row of magicMask table data.
     10303 */
     10304
     10305typedef struct {
     10306    psS64           magic_id;
     10307    char            *uri;
     10308} magicMaskRow;
     10309
     10310/** Creates a new magicMaskRow object
     10311 *
     10312 *  @return A new magicMaskRow object or NULL on failure.
     10313 */
     10314
     10315magicMaskRow *magicMaskRowAlloc(
     10316    psS64           magic_id,
     10317    const char      *uri
     10318);
     10319
     10320/** Creates a new magicMask table
     10321 *
     10322 * @return true on success
     10323 */
     10324
     10325bool magicMaskCreateTable(
     10326    psDB            *dbh                ///< Database handle
     10327);
     10328
     10329/** Deletes a magicMask table
     10330 *
     10331 * @return true on success
     10332 */
     10333
     10334bool magicMaskDropTable(
     10335    psDB            *dbh                ///< Database handle
     10336);
     10337
     10338/** Insert a single row into a table
     10339 *
     10340 * This function constructs and inserts a single row based on it's parameters.
     10341 *
     10342 * @return true on success
     10343 */
     10344
     10345bool magicMaskInsert(
     10346    psDB            *dbh,               ///< Database handle
     10347    psS64           magic_id,
     10348    const char      *uri
     10349);
     10350
     10351/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     10352 *
     10353 * @return A The number of rows removed or a negative value on error
     10354 */
     10355
     10356long long magicMaskDelete(
     10357    psDB            *dbh,               ///< Database handle
     10358    const psMetadata *where,            ///< Row match criteria
     10359    unsigned long long limit            ///< Maximum number of elements to delete
     10360);
     10361
     10362/** Insert a single magicMaskRow object into a table
     10363 *
     10364 * This function constructs and inserts a single row based on it's parameters.
     10365 *
     10366 * @return true on success
     10367 */
     10368
     10369bool magicMaskInsertObject(
     10370    psDB            *dbh,               ///< Database handle
     10371    magicMaskRow    *object             ///< magicMaskRow object
     10372);
     10373
     10374/** Insert an array of magicMaskRow object into a table
     10375 *
     10376 * This function constructs and inserts multiple rows based on it's parameters.
     10377 *
     10378 * @return true on success
     10379 */
     10380
     10381bool magicMaskInsertObjects(
     10382    psDB            *dbh,               ///< Database handle
     10383    psArray         *objects            ///< array of magicMaskRow objects
     10384);
     10385
     10386/** Insert data from a binary FITS table magicMaskRow into the database
     10387 *
     10388 * This function expects a psFits object with a FITS table as the first
     10389 * extension.  The table must have at least one row of data in it, that is of
     10390 * the appropriate format (number of columns and their type).  All other
     10391 * extensions are ignored.
     10392 *
     10393 * @return true on success
     10394 */
     10395
     10396bool magicMaskInsertFits(
     10397    psDB            *dbh,               ///< Database handle
     10398    const psFits    *fits               ///< psFits object
     10399);
     10400
     10401/** Selects up to limit from the database and returns them in a binary FITS table
     10402 *
     10403 * This function assumes an empty psFits object and will create a FITS table
     10404 * as the first extension.
     10405 *
     10406 *  See psDBSelectRows() for documentation on the format of where.
     10407 *
     10408 * @return true on success
     10409 */
     10410
     10411bool magicMaskSelectRowsFits(
     10412    psDB            *dbh,               ///< Database handle
     10413    psFits          *fits,              ///< psFits object
     10414    const psMetadata *where,            ///< Row match criteria
     10415    unsigned long long limit            ///< Maximum number of elements to return
     10416);
     10417
     10418/** Convert a magicMaskRow into an equivalent psMetadata
     10419 *
     10420 * @return A psMetadata pointer or NULL on error
     10421 */
     10422
     10423psMetadata *magicMaskMetadataFromObject(
     10424    const magicMaskRow *object             ///< fooRow to convert into a psMetadata
     10425);
     10426
     10427/** Convert a psMetadata into an equivalent fooRow
     10428 *
     10429 * @return A magicMaskRow pointer or NULL on error
     10430 */
     10431
     10432magicMaskRow *magicMaskObjectFromMetadata(
     10433    psMetadata      *md                 ///< psMetadata to convert into a fooRow
     10434);
     10435/** Selects up to limit rows from the database and returns as magicMaskRow objects in a psArray
     10436 *
     10437 *  See psDBSelectRows() for documentation on the format of where.
     10438 *
     10439 * @return A psArray pointer or NULL on error
     10440 */
     10441
     10442psArray *magicMaskSelectRowObjects(
     10443    psDB            *dbh,               ///< Database handle
     10444    const psMetadata *where,            ///< Row match criteria
     10445    unsigned long long limit            ///< Maximum number of elements to return
     10446);
     10447/** Deletes a row from the database coresponding to an magicMask
     10448 *
     10449 *  Note that a 'where' search psMetadata is constructed from each object and
     10450 *  used to find rows to delete.
     10451 *
     10452 * @return A The number of rows removed or a negative value on error
     10453 */
     10454
     10455bool magicMaskDeleteObject(
     10456    psDB            *dbh,               ///< Database handle
     10457    const magicMaskRow *object    ///< Object to delete
     10458);
     10459/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     10460 *
     10461 *  Note that a 'where' search psMetadata is constructed from each object and
     10462 *  used to find rows to delete.
     10463 *
     10464 * @return A The number of rows removed or a negative value on error
     10465 */
     10466
     10467long long magicMaskDeleteRowObjects(
     10468    psDB            *dbh,               ///< Database handle
     10469    const psArray   *objects,           ///< Array of objects to delete
     10470    unsigned long long limit            ///< Maximum number of elements to delete
     10471);
     10472/** Formats and prints an array of magicMaskRow objects
     10473 *
     10474 * When mdcf is set the formated output is in psMetadataConfig
     10475 * format, otherwise it is in a simple tabular format.
     10476 *
     10477 * @return true on success
     10478 */
     10479
     10480bool magicMaskPrintObjects(
     10481    FILE            *stream,            ///< a stream
     10482    psArray         *objects,           ///< An array of magicMaskRow objects
     10483    bool            mdcf                ///< format as mdconfig or simple
     10484);
     10485/** Formats and prints an magicMaskRow object
     10486 *
     10487 * When mdcf is set the formated output is in psMetadataConfig
     10488 * format, otherwise it is in a simple tabular format.
     10489 *
     10490 * @return true on success
     10491 */
     10492
     10493bool magicMaskPrintObject(
     10494    FILE            *stream,            ///< a stream
     10495    magicMaskRow *object,    ///< an magicMaskRow object
     10496    bool            mdcf                ///< format as mdconfig or simple
     10497);
     10498/** magicSkyfileMaskRow data structure
     10499 *
     10500 * Structure for representing a single row of magicSkyfileMask table data.
     10501 */
     10502
     10503typedef struct {
     10504    psS64           magic_id;
     10505    psS64           diff_id;
     10506    char            *uri;
     10507} magicSkyfileMaskRow;
     10508
     10509/** Creates a new magicSkyfileMaskRow object
     10510 *
     10511 *  @return A new magicSkyfileMaskRow object or NULL on failure.
     10512 */
     10513
     10514magicSkyfileMaskRow *magicSkyfileMaskRowAlloc(
     10515    psS64           magic_id,
     10516    psS64           diff_id,
     10517    const char      *uri
     10518);
     10519
     10520/** Creates a new magicSkyfileMask table
     10521 *
     10522 * @return true on success
     10523 */
     10524
     10525bool magicSkyfileMaskCreateTable(
     10526    psDB            *dbh                ///< Database handle
     10527);
     10528
     10529/** Deletes a magicSkyfileMask table
     10530 *
     10531 * @return true on success
     10532 */
     10533
     10534bool magicSkyfileMaskDropTable(
     10535    psDB            *dbh                ///< Database handle
     10536);
     10537
     10538/** Insert a single row into a table
     10539 *
     10540 * This function constructs and inserts a single row based on it's parameters.
     10541 *
     10542 * @return true on success
     10543 */
     10544
     10545bool magicSkyfileMaskInsert(
     10546    psDB            *dbh,               ///< Database handle
     10547    psS64           magic_id,
     10548    psS64           diff_id,
     10549    const char      *uri
     10550);
     10551
     10552/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     10553 *
     10554 * @return A The number of rows removed or a negative value on error
     10555 */
     10556
     10557long long magicSkyfileMaskDelete(
     10558    psDB            *dbh,               ///< Database handle
     10559    const psMetadata *where,            ///< Row match criteria
     10560    unsigned long long limit            ///< Maximum number of elements to delete
     10561);
     10562
     10563/** Insert a single magicSkyfileMaskRow object into a table
     10564 *
     10565 * This function constructs and inserts a single row based on it's parameters.
     10566 *
     10567 * @return true on success
     10568 */
     10569
     10570bool magicSkyfileMaskInsertObject(
     10571    psDB            *dbh,               ///< Database handle
     10572    magicSkyfileMaskRow *object             ///< magicSkyfileMaskRow object
     10573);
     10574
     10575/** Insert an array of magicSkyfileMaskRow object into a table
     10576 *
     10577 * This function constructs and inserts multiple rows based on it's parameters.
     10578 *
     10579 * @return true on success
     10580 */
     10581
     10582bool magicSkyfileMaskInsertObjects(
     10583    psDB            *dbh,               ///< Database handle
     10584    psArray         *objects            ///< array of magicSkyfileMaskRow objects
     10585);
     10586
     10587/** Insert data from a binary FITS table magicSkyfileMaskRow into the database
     10588 *
     10589 * This function expects a psFits object with a FITS table as the first
     10590 * extension.  The table must have at least one row of data in it, that is of
     10591 * the appropriate format (number of columns and their type).  All other
     10592 * extensions are ignored.
     10593 *
     10594 * @return true on success
     10595 */
     10596
     10597bool magicSkyfileMaskInsertFits(
     10598    psDB            *dbh,               ///< Database handle
     10599    const psFits    *fits               ///< psFits object
     10600);
     10601
     10602/** Selects up to limit from the database and returns them in a binary FITS table
     10603 *
     10604 * This function assumes an empty psFits object and will create a FITS table
     10605 * as the first extension.
     10606 *
     10607 *  See psDBSelectRows() for documentation on the format of where.
     10608 *
     10609 * @return true on success
     10610 */
     10611
     10612bool magicSkyfileMaskSelectRowsFits(
     10613    psDB            *dbh,               ///< Database handle
     10614    psFits          *fits,              ///< psFits object
     10615    const psMetadata *where,            ///< Row match criteria
     10616    unsigned long long limit            ///< Maximum number of elements to return
     10617);
     10618
     10619/** Convert a magicSkyfileMaskRow into an equivalent psMetadata
     10620 *
     10621 * @return A psMetadata pointer or NULL on error
     10622 */
     10623
     10624psMetadata *magicSkyfileMaskMetadataFromObject(
     10625    const magicSkyfileMaskRow *object             ///< fooRow to convert into a psMetadata
     10626);
     10627
     10628/** Convert a psMetadata into an equivalent fooRow
     10629 *
     10630 * @return A magicSkyfileMaskRow pointer or NULL on error
     10631 */
     10632
     10633magicSkyfileMaskRow *magicSkyfileMaskObjectFromMetadata(
     10634    psMetadata      *md                 ///< psMetadata to convert into a fooRow
     10635);
     10636/** Selects up to limit rows from the database and returns as magicSkyfileMaskRow objects in a psArray
     10637 *
     10638 *  See psDBSelectRows() for documentation on the format of where.
     10639 *
     10640 * @return A psArray pointer or NULL on error
     10641 */
     10642
     10643psArray *magicSkyfileMaskSelectRowObjects(
     10644    psDB            *dbh,               ///< Database handle
     10645    const psMetadata *where,            ///< Row match criteria
     10646    unsigned long long limit            ///< Maximum number of elements to return
     10647);
     10648/** Deletes a row from the database coresponding to an magicSkyfileMask
     10649 *
     10650 *  Note that a 'where' search psMetadata is constructed from each object and
     10651 *  used to find rows to delete.
     10652 *
     10653 * @return A The number of rows removed or a negative value on error
     10654 */
     10655
     10656bool magicSkyfileMaskDeleteObject(
     10657    psDB            *dbh,               ///< Database handle
     10658    const magicSkyfileMaskRow *object    ///< Object to delete
     10659);
     10660/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     10661 *
     10662 *  Note that a 'where' search psMetadata is constructed from each object and
     10663 *  used to find rows to delete.
     10664 *
     10665 * @return A The number of rows removed or a negative value on error
     10666 */
     10667
     10668long long magicSkyfileMaskDeleteRowObjects(
     10669    psDB            *dbh,               ///< Database handle
     10670    const psArray   *objects,           ///< Array of objects to delete
     10671    unsigned long long limit            ///< Maximum number of elements to delete
     10672);
     10673/** Formats and prints an array of magicSkyfileMaskRow objects
     10674 *
     10675 * When mdcf is set the formated output is in psMetadataConfig
     10676 * format, otherwise it is in a simple tabular format.
     10677 *
     10678 * @return true on success
     10679 */
     10680
     10681bool magicSkyfileMaskPrintObjects(
     10682    FILE            *stream,            ///< a stream
     10683    psArray         *objects,           ///< An array of magicSkyfileMaskRow objects
     10684    bool            mdcf                ///< format as mdconfig or simple
     10685);
     10686/** Formats and prints an magicSkyfileMaskRow object
     10687 *
     10688 * When mdcf is set the formated output is in psMetadataConfig
     10689 * format, otherwise it is in a simple tabular format.
     10690 *
     10691 * @return true on success
     10692 */
     10693
     10694bool magicSkyfileMaskPrintObject(
     10695    FILE            *stream,            ///< a stream
     10696    magicSkyfileMaskRow *object,    ///< an magicSkyfileMaskRow object
     10697    bool            mdcf                ///< format as mdconfig or simple
     10698);
    877610699
    877710700/// @}
     
    878110704#endif
    878210705
    8783 #endif // DETRUNSUMMARY_DB_H
     10706#endif // MAGICSKYFILEMASK_DB_H
  • trunk/ippdb/tests/alloc.c

    r15420 r15421  
    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
     19        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
     20            psFree(object);
     21            exit(EXIT_FAILURE);
     22        }
     23        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
     24            psFree(object);
     25            exit(EXIT_FAILURE);
     26        }
     27        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     28            psFree(object);
     29            exit(EXIT_FAILURE);
     30        }
     31
     32        psFree(object);
     33    }
     34
     35    {
    1136        summitExpRow    *object;
    1237
     
    125150        pzPendingImfileRow *object;
    126151
    127         object = pzPendingImfileRowAlloc("a string", "a string", "a string", "a string", "a string", -64    );
     152        object = pzPendingImfileRowAlloc("a string", "a string", "a string", "a string", "a string"    );
    128153
    129154        if (!object) {
     
    151176            exit(EXIT_FAILURE);
    152177        }
     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)) {
     229            psFree(object);
     230            exit(EXIT_FAILURE);
     231        }
     232        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     233            psFree(object);
     234            exit(EXIT_FAILURE);
     235        }
     236        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     237            psFree(object);
     238            exit(EXIT_FAILURE);
     239        }
     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
    153253        if (!object->exp_id == -64) {
    154254            psFree(object);
    155255            exit(EXIT_FAILURE);
    156256        }
    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 
     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
     298        if (!object->exp_id == -64) {
     299            psFree(object);
     300            exit(EXIT_FAILURE);
     301        }
     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        }
    170327        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    171328            psFree(object);
     
    180337            exit(EXIT_FAILURE);
    181338        }
    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 
     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) {
     383            psFree(object);
     384            exit(EXIT_FAILURE);
     385        }
     386        if (!object->bg == 64.64) {
     387            psFree(object);
     388            exit(EXIT_FAILURE);
     389        }
     390        if (!object->bg_stdev == 64.64) {
     391            psFree(object);
     392            exit(EXIT_FAILURE);
     393        }
     394        if (!object->bg_mean_stdev == 64.64) {
     395            psFree(object);
     396            exit(EXIT_FAILURE);
     397        }
     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) {
     411            psFree(object);
     412            exit(EXIT_FAILURE);
     413        }
     414        if (!object->user_1 == 64.64) {
     415            psFree(object);
     416            exit(EXIT_FAILURE);
     417        }
     418        if (!object->user_2 == 64.64) {
     419            psFree(object);
     420            exit(EXIT_FAILURE);
     421        }
     422        if (!object->user_3 == 64.64) {
     423            psFree(object);
     424            exit(EXIT_FAILURE);
     425        }
     426        if (!object->user_4 == 64.64) {
     427            psFree(object);
     428            exit(EXIT_FAILURE);
     429        }
     430        if (!object->user_5 == 64.64) {
     431            psFree(object);
     432            exit(EXIT_FAILURE);
     433        }
     434        if (strncmp(object->object, "a string", MAX_STRING_LENGTH)) {
     435            psFree(object);
     436            exit(EXIT_FAILURE);
     437        }
     438        if (!object->solang == 32.32) {
     439            psFree(object);
     440            exit(EXIT_FAILURE);
     441        }
     442        if (!object->fault == -16) {
     443            psFree(object);
     444            exit(EXIT_FAILURE);
     445        }
     446
     447        psFree(object);
     448    }
     449
     450    {
     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        }
    195463        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    196464            psFree(object);
     
    205473            exit(EXIT_FAILURE);
    206474        }
    207         if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
     475            psFree(object);
     476            exit(EXIT_FAILURE);
     477        }
     478        if (strncmp(object->tmp_class_id, "a string", MAX_STRING_LENGTH)) {
    208479            psFree(object);
    209480            exit(EXIT_FAILURE);
     
    213484            exit(EXIT_FAILURE);
    214485        }
     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) {
     519            psFree(object);
     520            exit(EXIT_FAILURE);
     521        }
     522        if (!object->bg == 64.64) {
     523            psFree(object);
     524            exit(EXIT_FAILURE);
     525        }
     526        if (!object->bg_stdev == 64.64) {
     527            psFree(object);
     528            exit(EXIT_FAILURE);
     529        }
     530        if (!object->bg_mean_stdev == 64.64) {
     531            psFree(object);
     532            exit(EXIT_FAILURE);
     533        }
     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)) {
     571            psFree(object);
     572            exit(EXIT_FAILURE);
     573        }
     574        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        }
    215595        if (!object->exp_id == -64) {
    216596            psFree(object);
    217597            exit(EXIT_FAILURE);
    218598        }
     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        }
    219677        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    220678            psFree(object);
    221679            exit(EXIT_FAILURE);
    222680        }
    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 
     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->good_frac == 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, 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->good_frac == 64.64) {
     1191            psFree(object);
     1192            exit(EXIT_FAILURE);
     1193        }
     1194        if (!object->fault == -16) {
     1195            psFree(object);
     1196            exit(EXIT_FAILURE);
     1197        }
     1198
     1199        psFree(object);
     1200    }
     1201
     1202    {
     1203        stackRunRow     *object;
     1204
     1205        object = stackRunRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string"    );
     1206
     1207        if (!object) {
     1208            exit(EXIT_FAILURE);
     1209        }
     1210
     1211        if (!object->stack_id == -64) {
     1212            psFree(object);
     1213            exit(EXIT_FAILURE);
     1214        }
     1215        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     1216            psFree(object);
     1217            exit(EXIT_FAILURE);
     1218        }
     1219        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     1220            psFree(object);
     1221            exit(EXIT_FAILURE);
     1222        }
     1223        if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
     1224            psFree(object);
     1225            exit(EXIT_FAILURE);
     1226        }
     1227            psFree(object);
     1228            exit(EXIT_FAILURE);
     1229        }
     1230        if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
     1231            psFree(object);
     1232            exit(EXIT_FAILURE);
     1233        }
     1234        if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
     1235            psFree(object);
     1236            exit(EXIT_FAILURE);
     1237        }
     1238
     1239        psFree(object);
     1240    }
     1241
     1242    {
     1243        stackInputSkyfileRow *object;
     1244
     1245        object = stackInputSkyfileRowAlloc(-64, -64    );
     1246
     1247        if (!object) {
     1248            exit(EXIT_FAILURE);
     1249        }
     1250
     1251        if (!object->stack_id == -64) {
     1252            psFree(object);
     1253            exit(EXIT_FAILURE);
     1254        }
     1255        if (!object->warp_id == -64) {
     1256            psFree(object);
     1257            exit(EXIT_FAILURE);
     1258        }
     1259
     1260        psFree(object);
     1261    }
     1262
     1263    {
     1264        stackSumSkyfileRow *object;
     1265
     1266        object = stackSumSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64, 64.64, -16    );
     1267
     1268        if (!object) {
     1269            exit(EXIT_FAILURE);
     1270        }
     1271
     1272        if (!object->stack_id == -64) {
     1273            psFree(object);
     1274            exit(EXIT_FAILURE);
     1275        }
     1276        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     1277            psFree(object);
     1278            exit(EXIT_FAILURE);
     1279        }
     1280        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1281            psFree(object);
     1282            exit(EXIT_FAILURE);
     1283        }
     1284        if (!object->bg == 64.64) {
     1285            psFree(object);
     1286            exit(EXIT_FAILURE);
     1287        }
     1288        if (!object->bg_stdev == 64.64) {
     1289            psFree(object);
     1290            exit(EXIT_FAILURE);
     1291        }
     1292        if (!object->good_frac == 64.64) {
     1293            psFree(object);
     1294            exit(EXIT_FAILURE);
     1295        }
     1296        if (!object->fault == -16) {
     1297            psFree(object);
     1298            exit(EXIT_FAILURE);
     1299        }
     1300
     1301        psFree(object);
     1302    }
     1303
     1304    {
     1305        detRunRow       *object;
     1306
     1307        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    );
     1308
     1309        if (!object) {
     1310            exit(EXIT_FAILURE);
     1311        }
     1312
     1313        if (!object->det_id == -64) {
     1314            psFree(object);
     1315            exit(EXIT_FAILURE);
     1316        }
     1317        if (!object->iteration == -32) {
     1318            psFree(object);
     1319            exit(EXIT_FAILURE);
     1320        }
     1321        if (strncmp(object->det_type, "a string", MAX_STRING_LENGTH)) {
     1322            psFree(object);
     1323            exit(EXIT_FAILURE);
     1324        }
     1325        if (strncmp(object->mode, "a string", MAX_STRING_LENGTH)) {
     1326            psFree(object);
     1327            exit(EXIT_FAILURE);
     1328        }
     1329        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     1330            psFree(object);
     1331            exit(EXIT_FAILURE);
     1332        }
     1333        if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
     1334            psFree(object);
     1335            exit(EXIT_FAILURE);
     1336        }
     1337        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     1338            psFree(object);
     1339            exit(EXIT_FAILURE);
     1340        }
     1341        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
     1342            psFree(object);
     1343            exit(EXIT_FAILURE);
     1344        }
     1345        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
     1346            psFree(object);
     1347            exit(EXIT_FAILURE);
     1348        }
     1349        if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
     1350            psFree(object);
     1351            exit(EXIT_FAILURE);
     1352        }
     1353        if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
     1354            psFree(object);
     1355            exit(EXIT_FAILURE);
     1356        }
     1357        if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
     1358            psFree(object);
     1359            exit(EXIT_FAILURE);
     1360        }
     1361        if (!object->airmass_min == 32.32) {
     1362            psFree(object);
     1363            exit(EXIT_FAILURE);
     1364        }
     1365        if (!object->airmass_max == 32.32) {
     1366            psFree(object);
     1367            exit(EXIT_FAILURE);
     1368        }
     1369        if (!object->exp_time_min == 32.32) {
     1370            psFree(object);
     1371            exit(EXIT_FAILURE);
     1372        }
     1373        if (!object->exp_time_max == 32.32) {
     1374            psFree(object);
     1375            exit(EXIT_FAILURE);
     1376        }
     1377        if (!object->ccd_temp_min == 32.32) {
     1378            psFree(object);
     1379            exit(EXIT_FAILURE);
     1380        }
     1381        if (!object->ccd_temp_max == 32.32) {
     1382            psFree(object);
     1383            exit(EXIT_FAILURE);
     1384        }
     1385        if (!object->posang_min == 64.64) {
     1386            psFree(object);
     1387            exit(EXIT_FAILURE);
     1388        }
     1389        if (!object->posang_max == 64.64) {
     1390            psFree(object);
     1391            exit(EXIT_FAILURE);
     1392        }
     1393            psFree(object);
     1394            exit(EXIT_FAILURE);
     1395        }
     1396            psFree(object);
     1397            exit(EXIT_FAILURE);
     1398        }
     1399            psFree(object);
     1400            exit(EXIT_FAILURE);
     1401        }
     1402            psFree(object);
     1403            exit(EXIT_FAILURE);
     1404        }
     1405            psFree(object);
     1406            exit(EXIT_FAILURE);
     1407        }
     1408        if (!object->solang_min == 32.32) {
     1409            psFree(object);
     1410            exit(EXIT_FAILURE);
     1411        }
     1412        if (!object->solang_max == 32.32) {
     1413            psFree(object);
     1414            exit(EXIT_FAILURE);
     1415        }
     1416        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     1417            psFree(object);
     1418            exit(EXIT_FAILURE);
     1419        }
     1420        if (!object->parent == -32) {
     1421            psFree(object);
     1422            exit(EXIT_FAILURE);
     1423        }
     1424
     1425        psFree(object);
     1426    }
     1427
     1428    {
     1429        detInputExpRow  *object;
     1430
     1431        object = detInputExpRowAlloc(-64, -32, -64, true    );
     1432
     1433        if (!object) {
     1434            exit(EXIT_FAILURE);
     1435        }
     1436
     1437        if (!object->det_id == -64) {
     1438            psFree(object);
     1439            exit(EXIT_FAILURE);
     1440        }
     1441        if (!object->iteration == -32) {
     1442            psFree(object);
     1443            exit(EXIT_FAILURE);
     1444        }
    2361445        if (!object->exp_id == -64) {
    2371446            psFree(object);
    2381447            exit(EXIT_FAILURE);
    2391448        }
    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)) {
     1449        if (!object->include == true) {
     1450            psFree(object);
     1451            exit(EXIT_FAILURE);
     1452        }
     1453
     1454        psFree(object);
     1455    }
     1456
     1457    {
     1458        detProcessedImfileRow *object;
     1459
     1460        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    );
     1461
     1462        if (!object) {
     1463            exit(EXIT_FAILURE);
     1464        }
     1465
     1466        if (!object->det_id == -64) {
     1467            psFree(object);
     1468            exit(EXIT_FAILURE);
     1469        }
     1470        if (!object->exp_id == -64) {
     1471            psFree(object);
     1472            exit(EXIT_FAILURE);
     1473        }
     1474        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     1475            psFree(object);
     1476            exit(EXIT_FAILURE);
     1477        }
     1478        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     1479            psFree(object);
     1480            exit(EXIT_FAILURE);
     1481        }
     1482        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     1483            psFree(object);
     1484            exit(EXIT_FAILURE);
     1485        }
     1486        if (!object->bg == 64.64) {
     1487            psFree(object);
     1488            exit(EXIT_FAILURE);
     1489        }
     1490        if (!object->bg_stdev == 64.64) {
     1491            psFree(object);
     1492            exit(EXIT_FAILURE);
     1493        }
     1494        if (!object->bg_mean_stdev == 64.64) {
     1495            psFree(object);
     1496            exit(EXIT_FAILURE);
     1497        }
     1498        if (!object->fringe_0 == 64.64) {
     1499            psFree(object);
     1500            exit(EXIT_FAILURE);
     1501        }
     1502        if (!object->fringe_1 == 64.64) {
     1503            psFree(object);
     1504            exit(EXIT_FAILURE);
     1505        }
     1506        if (!object->fringe_2 == 64.64) {
     1507            psFree(object);
     1508            exit(EXIT_FAILURE);
     1509        }
     1510        if (!object->user_1 == 64.64) {
     1511            psFree(object);
     1512            exit(EXIT_FAILURE);
     1513        }
     1514        if (!object->user_2 == 64.64) {
     1515            psFree(object);
     1516            exit(EXIT_FAILURE);
     1517        }
     1518        if (!object->user_3 == 64.64) {
     1519            psFree(object);
     1520            exit(EXIT_FAILURE);
     1521        }
     1522        if (!object->user_4 == 64.64) {
     1523            psFree(object);
     1524            exit(EXIT_FAILURE);
     1525        }
     1526        if (!object->user_5 == 64.64) {
     1527            psFree(object);
     1528            exit(EXIT_FAILURE);
     1529        }
     1530        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1531            psFree(object);
     1532            exit(EXIT_FAILURE);
     1533        }
     1534        if (!object->fault == -16) {
     1535            psFree(object);
     1536            exit(EXIT_FAILURE);
     1537        }
     1538
     1539        psFree(object);
     1540    }
     1541
     1542    {
     1543        detProcessedExpRow *object;
     1544
     1545        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    );
     1546
     1547        if (!object) {
     1548            exit(EXIT_FAILURE);
     1549        }
     1550
     1551        if (!object->det_id == -64) {
     1552            psFree(object);
     1553            exit(EXIT_FAILURE);
     1554        }
     1555        if (!object->exp_id == -64) {
     1556            psFree(object);
     1557            exit(EXIT_FAILURE);
     1558        }
     1559        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     1560            psFree(object);
     1561            exit(EXIT_FAILURE);
     1562        }
     1563        if (!object->bg == 64.64) {
     1564            psFree(object);
     1565            exit(EXIT_FAILURE);
     1566        }
     1567        if (!object->bg_stdev == 64.64) {
     1568            psFree(object);
     1569            exit(EXIT_FAILURE);
     1570        }
     1571        if (!object->bg_mean_stdev == 64.64) {
     1572            psFree(object);
     1573            exit(EXIT_FAILURE);
     1574        }
     1575        if (!object->fringe_0 == 64.64) {
     1576            psFree(object);
     1577            exit(EXIT_FAILURE);
     1578        }
     1579        if (!object->fringe_1 == 64.64) {
     1580            psFree(object);
     1581            exit(EXIT_FAILURE);
     1582        }
     1583        if (!object->fringe_2 == 64.64) {
     1584            psFree(object);
     1585            exit(EXIT_FAILURE);
     1586        }
     1587        if (!object->user_1 == 64.64) {
     1588            psFree(object);
     1589            exit(EXIT_FAILURE);
     1590        }
     1591        if (!object->user_2 == 64.64) {
     1592            psFree(object);
     1593            exit(EXIT_FAILURE);
     1594        }
     1595        if (!object->user_3 == 64.64) {
     1596            psFree(object);
     1597            exit(EXIT_FAILURE);
     1598        }
     1599        if (!object->user_4 == 64.64) {
     1600            psFree(object);
     1601            exit(EXIT_FAILURE);
     1602        }
     1603        if (!object->user_5 == 64.64) {
     1604            psFree(object);
     1605            exit(EXIT_FAILURE);
     1606        }
     1607        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1608            psFree(object);
     1609            exit(EXIT_FAILURE);
     1610        }
     1611        if (!object->fault == -16) {
     1612            psFree(object);
     1613            exit(EXIT_FAILURE);
     1614        }
     1615
     1616        psFree(object);
     1617    }
     1618
     1619    {
     1620        detStackedImfileRow *object;
     1621
     1622        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    );
     1623
     1624        if (!object) {
     1625            exit(EXIT_FAILURE);
     1626        }
     1627
     1628        if (!object->det_id == -64) {
     1629            psFree(object);
     1630            exit(EXIT_FAILURE);
     1631        }
     1632        if (!object->iteration == -32) {
     1633            psFree(object);
     1634            exit(EXIT_FAILURE);
     1635        }
     1636        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     1637            psFree(object);
     1638            exit(EXIT_FAILURE);
     1639        }
     1640        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     1641            psFree(object);
     1642            exit(EXIT_FAILURE);
     1643        }
     1644        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     1645            psFree(object);
     1646            exit(EXIT_FAILURE);
     1647        }
     1648        if (!object->bg == 64.64) {
     1649            psFree(object);
     1650            exit(EXIT_FAILURE);
     1651        }
     1652        if (!object->bg_stdev == 64.64) {
     1653            psFree(object);
     1654            exit(EXIT_FAILURE);
     1655        }
     1656        if (!object->bg_mean_stdev == 64.64) {
     1657            psFree(object);
     1658            exit(EXIT_FAILURE);
     1659        }
     1660        if (!object->user_1 == 64.64) {
     1661            psFree(object);
     1662            exit(EXIT_FAILURE);
     1663        }
     1664        if (!object->user_2 == 64.64) {
     1665            psFree(object);
     1666            exit(EXIT_FAILURE);
     1667        }
     1668        if (!object->user_3 == 64.64) {
     1669            psFree(object);
     1670            exit(EXIT_FAILURE);
     1671        }
     1672        if (!object->user_4 == 64.64) {
     1673            psFree(object);
     1674            exit(EXIT_FAILURE);
     1675        }
     1676        if (!object->user_5 == 64.64) {
     1677            psFree(object);
     1678            exit(EXIT_FAILURE);
     1679        }
     1680        if (!object->fault == -16) {
     1681            psFree(object);
     1682            exit(EXIT_FAILURE);
     1683        }
     1684
     1685        psFree(object);
     1686    }
     1687
     1688    {
     1689        detNormalizedStatImfileRow *object;
     1690
     1691        object = detNormalizedStatImfileRowAlloc(-64, -32, "a string", 32.32, -16    );
     1692
     1693        if (!object) {
     1694            exit(EXIT_FAILURE);
     1695        }
     1696
     1697        if (!object->det_id == -64) {
     1698            psFree(object);
     1699            exit(EXIT_FAILURE);
     1700        }
     1701        if (!object->iteration == -32) {
     1702            psFree(object);
     1703            exit(EXIT_FAILURE);
     1704        }
     1705        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     1706            psFree(object);
     1707            exit(EXIT_FAILURE);
     1708        }
     1709        if (!object->norm == 32.32) {
     1710            psFree(object);
     1711            exit(EXIT_FAILURE);
     1712        }
     1713        if (!object->fault == -16) {
     1714            psFree(object);
     1715            exit(EXIT_FAILURE);
     1716        }
     1717
     1718        psFree(object);
     1719    }
     1720
     1721    {
     1722        detNormalizedImfileRow *object;
     1723
     1724        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    );
     1725
     1726        if (!object) {
     1727            exit(EXIT_FAILURE);
     1728        }
     1729
     1730        if (!object->det_id == -64) {
     1731            psFree(object);
     1732            exit(EXIT_FAILURE);
     1733        }
     1734        if (!object->iteration == -32) {
     1735            psFree(object);
     1736            exit(EXIT_FAILURE);
     1737        }
     1738        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     1739            psFree(object);
     1740            exit(EXIT_FAILURE);
     1741        }
     1742        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     1743            psFree(object);
     1744            exit(EXIT_FAILURE);
     1745        }
     1746        if (!object->bg == 64.64) {
     1747            psFree(object);
     1748            exit(EXIT_FAILURE);
     1749        }
     1750        if (!object->bg_stdev == 64.64) {
     1751            psFree(object);
     1752            exit(EXIT_FAILURE);
     1753        }
     1754        if (!object->bg_mean_stdev == 64.64) {
     1755            psFree(object);
     1756            exit(EXIT_FAILURE);
     1757        }
     1758        if (!object->user_1 == 64.64) {
     1759            psFree(object);
     1760            exit(EXIT_FAILURE);
     1761        }
     1762        if (!object->user_2 == 64.64) {
     1763            psFree(object);
     1764            exit(EXIT_FAILURE);
     1765        }
     1766        if (!object->user_3 == 64.64) {
     1767            psFree(object);
     1768            exit(EXIT_FAILURE);
     1769        }
     1770        if (!object->user_4 == 64.64) {
     1771            psFree(object);
     1772            exit(EXIT_FAILURE);
     1773        }
     1774        if (!object->user_5 == 64.64) {
     1775            psFree(object);
     1776            exit(EXIT_FAILURE);
     1777        }
     1778        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1779            psFree(object);
     1780            exit(EXIT_FAILURE);
     1781        }
     1782        if (!object->fault == -16) {
     1783            psFree(object);
     1784            exit(EXIT_FAILURE);
     1785        }
     1786
     1787        psFree(object);
     1788    }
     1789
     1790    {
     1791        detNormalizedExpRow *object;
     1792
     1793        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    );
     1794
     1795        if (!object) {
     1796            exit(EXIT_FAILURE);
     1797        }
     1798
     1799        if (!object->det_id == -64) {
     1800            psFree(object);
     1801            exit(EXIT_FAILURE);
     1802        }
     1803        if (!object->iteration == -32) {
     1804            psFree(object);
     1805            exit(EXIT_FAILURE);
     1806        }
     1807        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     1808            psFree(object);
     1809            exit(EXIT_FAILURE);
     1810        }
     1811        if (!object->bg == 64.64) {
     1812            psFree(object);
     1813            exit(EXIT_FAILURE);
     1814        }
     1815        if (!object->bg_stdev == 64.64) {
     1816            psFree(object);
     1817            exit(EXIT_FAILURE);
     1818        }
     1819        if (!object->bg_mean_stdev == 64.64) {
     1820            psFree(object);
     1821            exit(EXIT_FAILURE);
     1822        }
     1823        if (!object->user_1 == 64.64) {
     1824            psFree(object);
     1825            exit(EXIT_FAILURE);
     1826        }
     1827        if (!object->user_2 == 64.64) {
     1828            psFree(object);
     1829            exit(EXIT_FAILURE);
     1830        }
     1831        if (!object->user_3 == 64.64) {
     1832            psFree(object);
     1833            exit(EXIT_FAILURE);
     1834        }
     1835        if (!object->user_4 == 64.64) {
     1836            psFree(object);
     1837            exit(EXIT_FAILURE);
     1838        }
     1839        if (!object->user_5 == 64.64) {
     1840            psFree(object);
     1841            exit(EXIT_FAILURE);
     1842        }
     1843        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1844            psFree(object);
     1845            exit(EXIT_FAILURE);
     1846        }
     1847        if (!object->fault == -16) {
     1848            psFree(object);
     1849            exit(EXIT_FAILURE);
     1850        }
     1851
     1852        psFree(object);
     1853    }
     1854
     1855    {
     1856        detResidImfileRow *object;
     1857
     1858        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    );
     1859
     1860        if (!object) {
     1861            exit(EXIT_FAILURE);
     1862        }
     1863
     1864        if (!object->det_id == -64) {
     1865            psFree(object);
     1866            exit(EXIT_FAILURE);
     1867        }
     1868        if (!object->iteration == -32) {
     1869            psFree(object);
     1870            exit(EXIT_FAILURE);
     1871        }
     1872        if (!object->exp_id == -64) {
     1873            psFree(object);
     1874            exit(EXIT_FAILURE);
     1875        }
     1876        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     1877            psFree(object);
     1878            exit(EXIT_FAILURE);
     1879        }
     1880        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     1881            psFree(object);
     1882            exit(EXIT_FAILURE);
     1883        }
     1884        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     1885            psFree(object);
     1886            exit(EXIT_FAILURE);
     1887        }
     1888        if (!object->bg == 64.64) {
     1889            psFree(object);
     1890            exit(EXIT_FAILURE);
     1891        }
     1892        if (!object->bg_stdev == 64.64) {
     1893            psFree(object);
     1894            exit(EXIT_FAILURE);
     1895        }
     1896        if (!object->bg_mean_stdev == 64.64) {
     1897            psFree(object);
     1898            exit(EXIT_FAILURE);
     1899        }
     1900        if (!object->bg_skewness == 64.64) {
     1901            psFree(object);
     1902            exit(EXIT_FAILURE);
     1903        }
     1904        if (!object->bg_kurtosis == 64.64) {
     1905            psFree(object);
     1906            exit(EXIT_FAILURE);
     1907        }
     1908        if (!object->bin_stdev == 64.64) {
     1909            psFree(object);
     1910            exit(EXIT_FAILURE);
     1911        }
     1912        if (!object->fringe_0 == 64.64) {
     1913            psFree(object);
     1914            exit(EXIT_FAILURE);
     1915        }
     1916        if (!object->fringe_1 == 64.64) {
     1917            psFree(object);
     1918            exit(EXIT_FAILURE);
     1919        }
     1920        if (!object->fringe_2 == 64.64) {
     1921            psFree(object);
     1922            exit(EXIT_FAILURE);
     1923        }
     1924        if (!object->fringe_resid_0 == 64.64) {
     1925            psFree(object);
     1926            exit(EXIT_FAILURE);
     1927        }
     1928        if (!object->fringe_resid_1 == 64.64) {
     1929            psFree(object);
     1930            exit(EXIT_FAILURE);
     1931        }
     1932        if (!object->fringe_resid_2 == 64.64) {
     1933            psFree(object);
     1934            exit(EXIT_FAILURE);
     1935        }
     1936        if (!object->user_1 == 64.64) {
     1937            psFree(object);
     1938            exit(EXIT_FAILURE);
     1939        }
     1940        if (!object->user_2 == 64.64) {
     1941            psFree(object);
     1942            exit(EXIT_FAILURE);
     1943        }
     1944        if (!object->user_3 == 64.64) {
     1945            psFree(object);
     1946            exit(EXIT_FAILURE);
     1947        }
     1948        if (!object->user_4 == 64.64) {
     1949            psFree(object);
     1950            exit(EXIT_FAILURE);
     1951        }
     1952        if (!object->user_5 == 64.64) {
     1953            psFree(object);
     1954            exit(EXIT_FAILURE);
     1955        }
     1956        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1957            psFree(object);
     1958            exit(EXIT_FAILURE);
     1959        }
     1960        if (!object->fault == -16) {
     1961            psFree(object);
     1962            exit(EXIT_FAILURE);
     1963        }
     1964
     1965        psFree(object);
     1966    }
     1967
     1968    {
     1969        detResidExpRow  *object;
     1970
     1971        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    );
     1972
     1973        if (!object) {
     1974            exit(EXIT_FAILURE);
     1975        }
     1976
     1977        if (!object->det_id == -64) {
     1978            psFree(object);
     1979            exit(EXIT_FAILURE);
     1980        }
     1981        if (!object->iteration == -32) {
     1982            psFree(object);
     1983            exit(EXIT_FAILURE);
     1984        }
     1985        if (!object->exp_id == -64) {
     1986            psFree(object);
     1987            exit(EXIT_FAILURE);
     1988        }
     1989        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     1990            psFree(object);
     1991            exit(EXIT_FAILURE);
     1992        }
     1993        if (!object->bg == 64.64) {
     1994            psFree(object);
     1995            exit(EXIT_FAILURE);
     1996        }
     1997        if (!object->bg_stdev == 64.64) {
     1998            psFree(object);
     1999            exit(EXIT_FAILURE);
     2000        }
     2001        if (!object->bg_mean_stdev == 64.64) {
     2002            psFree(object);
     2003            exit(EXIT_FAILURE);
     2004        }
     2005        if (!object->bg_skewness == 64.64) {
     2006            psFree(object);
     2007            exit(EXIT_FAILURE);
     2008        }
     2009        if (!object->bg_kurtosis == 64.64) {
     2010            psFree(object);
     2011            exit(EXIT_FAILURE);
     2012        }
     2013        if (!object->bin_stdev == 64.64) {
     2014            psFree(object);
     2015            exit(EXIT_FAILURE);
     2016        }
     2017        if (!object->fringe_0 == 64.64) {
     2018            psFree(object);
     2019            exit(EXIT_FAILURE);
     2020        }
     2021        if (!object->fringe_1 == 64.64) {
     2022            psFree(object);
     2023            exit(EXIT_FAILURE);
     2024        }
     2025        if (!object->fringe_2 == 64.64) {
     2026            psFree(object);
     2027            exit(EXIT_FAILURE);
     2028        }
     2029        if (!object->fringe_resid_0 == 64.64) {
     2030            psFree(object);
     2031            exit(EXIT_FAILURE);
     2032        }
     2033        if (!object->fringe_resid_1 == 64.64) {
     2034            psFree(object);
     2035            exit(EXIT_FAILURE);
     2036        }
     2037        if (!object->fringe_resid_2 == 64.64) {
     2038            psFree(object);
     2039            exit(EXIT_FAILURE);
     2040        }
     2041        if (!object->user_1 == 64.64) {
     2042            psFree(object);
     2043            exit(EXIT_FAILURE);
     2044        }
     2045        if (!object->user_2 == 64.64) {
     2046            psFree(object);
     2047            exit(EXIT_FAILURE);
     2048        }
     2049        if (!object->user_3 == 64.64) {
     2050            psFree(object);
     2051            exit(EXIT_FAILURE);
     2052        }
     2053        if (!object->user_4 == 64.64) {
     2054            psFree(object);
     2055            exit(EXIT_FAILURE);
     2056        }
     2057        if (!object->user_5 == 64.64) {
     2058            psFree(object);
     2059            exit(EXIT_FAILURE);
     2060        }
     2061        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     2062            psFree(object);
     2063            exit(EXIT_FAILURE);
     2064        }
     2065        if (!object->accept == true) {
     2066            psFree(object);
     2067            exit(EXIT_FAILURE);
     2068        }
     2069        if (!object->fault == -16) {
     2070            psFree(object);
     2071            exit(EXIT_FAILURE);
     2072        }
     2073
     2074        psFree(object);
     2075    }
     2076
     2077    {
     2078        detRunSummaryRow *object;
     2079
     2080        object = detRunSummaryRowAlloc(-64, -32, 64.64, 64.64, 64.64, true, -16    );
     2081
     2082        if (!object) {
     2083            exit(EXIT_FAILURE);
     2084        }
     2085
     2086        if (!object->det_id == -64) {
     2087            psFree(object);
     2088            exit(EXIT_FAILURE);
     2089        }
     2090        if (!object->iteration == -32) {
     2091            psFree(object);
     2092            exit(EXIT_FAILURE);
     2093        }
     2094        if (!object->bg == 64.64) {
     2095            psFree(object);
     2096            exit(EXIT_FAILURE);
     2097        }
     2098        if (!object->bg_stdev == 64.64) {
     2099            psFree(object);
     2100            exit(EXIT_FAILURE);
     2101        }
     2102        if (!object->bg_mean_stdev == 64.64) {
     2103            psFree(object);
     2104            exit(EXIT_FAILURE);
     2105        }
     2106        if (!object->accept == true) {
     2107            psFree(object);
     2108            exit(EXIT_FAILURE);
     2109        }
     2110        if (!object->fault == -16) {
     2111            psFree(object);
     2112            exit(EXIT_FAILURE);
     2113        }
     2114
     2115        psFree(object);
     2116    }
     2117
     2118    {
     2119        detRegisteredImfileRow *object;
     2120
     2121        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    );
     2122
     2123        if (!object) {
     2124            exit(EXIT_FAILURE);
     2125        }
     2126
     2127        if (!object->det_id == -64) {
     2128            psFree(object);
     2129            exit(EXIT_FAILURE);
     2130        }
     2131        if (!object->iteration == -32) {
     2132            psFree(object);
     2133            exit(EXIT_FAILURE);
     2134        }
     2135        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     2136            psFree(object);
     2137            exit(EXIT_FAILURE);
     2138        }
     2139        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     2140            psFree(object);
     2141            exit(EXIT_FAILURE);
     2142        }
     2143        if (!object->bg == 64.64) {
     2144            psFree(object);
     2145            exit(EXIT_FAILURE);
     2146        }
     2147        if (!object->bg_stdev == 64.64) {
     2148            psFree(object);
     2149            exit(EXIT_FAILURE);
     2150        }
     2151        if (!object->bg_mean_stdev == 64.64) {
     2152            psFree(object);
     2153            exit(EXIT_FAILURE);
     2154        }
     2155        if (!object->user_1 == 64.64) {
     2156            psFree(object);
     2157            exit(EXIT_FAILURE);
     2158        }
     2159        if (!object->user_2 == 64.64) {
     2160            psFree(object);
     2161            exit(EXIT_FAILURE);
     2162        }
     2163        if (!object->user_3 == 64.64) {
     2164            psFree(object);
     2165            exit(EXIT_FAILURE);
     2166        }
     2167        if (!object->user_4 == 64.64) {
     2168            psFree(object);
     2169            exit(EXIT_FAILURE);
     2170        }
     2171        if (!object->user_5 == 64.64) {
     2172            psFree(object);
     2173            exit(EXIT_FAILURE);
     2174        }
     2175        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     2176            psFree(object);
     2177            exit(EXIT_FAILURE);
     2178        }
     2179        if (!object->fault == -16) {
     2180            psFree(object);
     2181            exit(EXIT_FAILURE);
     2182        }
     2183
     2184        psFree(object);
     2185    }
     2186
     2187    {
     2188        detCorrectedExpRow *object;
     2189
     2190        object = detCorrectedExpRowAlloc(-64, -64, "a string", -64, "a string", "a string", "a string", -16    );
     2191
     2192        if (!object) {
     2193            exit(EXIT_FAILURE);
     2194        }
     2195
     2196        if (!object->det_id == -64) {
     2197            psFree(object);
     2198            exit(EXIT_FAILURE);
     2199        }
     2200        if (!object->exp_id == -64) {
     2201            psFree(object);
     2202            exit(EXIT_FAILURE);
     2203        }
     2204        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     2205            psFree(object);
     2206            exit(EXIT_FAILURE);
     2207        }
     2208        if (!object->corr_id == -64) {
     2209            psFree(object);
     2210            exit(EXIT_FAILURE);
     2211        }
     2212        if (strncmp(object->corr_type, "a string", MAX_STRING_LENGTH)) {
     2213            psFree(object);
     2214            exit(EXIT_FAILURE);
     2215        }
     2216        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     2217            psFree(object);
     2218            exit(EXIT_FAILURE);
     2219        }
     2220        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     2221            psFree(object);
     2222            exit(EXIT_FAILURE);
     2223        }
     2224        if (!object->fault == -16) {
     2225            psFree(object);
     2226            exit(EXIT_FAILURE);
     2227        }
     2228
     2229        psFree(object);
     2230    }
     2231
     2232    {
     2233        detCorrectedImfileRow *object;
     2234
     2235        object = detCorrectedImfileRowAlloc(-64, -64, "a string", "a string", "a string", -16    );
     2236
     2237        if (!object) {
     2238            exit(EXIT_FAILURE);
     2239        }
     2240
     2241        if (!object->det_id == -64) {
     2242            psFree(object);
     2243            exit(EXIT_FAILURE);
     2244        }
     2245        if (!object->exp_id == -64) {
     2246            psFree(object);
     2247            exit(EXIT_FAILURE);
     2248        }
     2249        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     2250            psFree(object);
     2251            exit(EXIT_FAILURE);
     2252        }
     2253        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     2254            psFree(object);
     2255            exit(EXIT_FAILURE);
     2256        }
     2257        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     2258            psFree(object);
     2259            exit(EXIT_FAILURE);
     2260        }
     2261        if (!object->fault == -16) {
     2262            psFree(object);
     2263            exit(EXIT_FAILURE);
     2264        }
     2265
     2266        psFree(object);
     2267    }
     2268
     2269    {
     2270        magicRunRow     *object;
     2271
     2272        object = magicRunRowAlloc(-64, "a string", "a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z"    );
     2273
     2274        if (!object) {
     2275            exit(EXIT_FAILURE);
     2276        }
     2277
     2278        if (!object->magic_id == -64) {
    2492279            psFree(object);
    2502280            exit(EXIT_FAILURE);
     
    2542284            exit(EXIT_FAILURE);
    2552285        }
    256         if (!object->imfiles == -32) {
    257             psFree(object);
    258             exit(EXIT_FAILURE);
    259         }
    2602286        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    2612287            psFree(object);
     
    2662292            exit(EXIT_FAILURE);
    2672293        }
    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)) {
     2294        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     2295            psFree(object);
     2296            exit(EXIT_FAILURE);
     2297        }
     2298        if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
     2299            psFree(object);
     2300            exit(EXIT_FAILURE);
     2301        }
     2302            psFree(object);
     2303            exit(EXIT_FAILURE);
     2304        }
     2305
     2306        psFree(object);
     2307    }
     2308
     2309    {
     2310        magicInputSkyfileRow *object;
     2311
     2312        object = magicInputSkyfileRowAlloc(-64, -64, "a string"    );
     2313
     2314        if (!object) {
     2315            exit(EXIT_FAILURE);
     2316        }
     2317
     2318        if (!object->magic_id == -64) {
     2319            psFree(object);
     2320            exit(EXIT_FAILURE);
     2321        }
     2322        if (!object->diff_id == -64) {
     2323            psFree(object);
     2324            exit(EXIT_FAILURE);
     2325        }
     2326        if (strncmp(object->node, "a string", MAX_STRING_LENGTH)) {
     2327            psFree(object);
     2328            exit(EXIT_FAILURE);
     2329        }
     2330
     2331        psFree(object);
     2332    }
     2333
     2334    {
     2335        magicTreeRow    *object;
     2336
     2337        object = magicTreeRowAlloc(-64, "a string", "a string"    );
     2338
     2339        if (!object) {
     2340            exit(EXIT_FAILURE);
     2341        }
     2342
     2343        if (!object->magic_id == -64) {
     2344            psFree(object);
     2345            exit(EXIT_FAILURE);
     2346        }
     2347        if (strncmp(object->node, "a string", MAX_STRING_LENGTH)) {
     2348            psFree(object);
     2349            exit(EXIT_FAILURE);
     2350        }
     2351        if (strncmp(object->dep, "a string", MAX_STRING_LENGTH)) {
     2352            psFree(object);
     2353            exit(EXIT_FAILURE);
     2354        }
     2355
     2356        psFree(object);
     2357    }
     2358
     2359    {
     2360        magicNodeResultRow *object;
     2361
     2362        object = magicNodeResultRowAlloc(-64, "a string", "a string"    );
     2363
     2364        if (!object) {
     2365            exit(EXIT_FAILURE);
     2366        }
     2367
     2368        if (!object->magic_id == -64) {
     2369            psFree(object);
     2370            exit(EXIT_FAILURE);
     2371        }
     2372        if (strncmp(object->node, "a string", MAX_STRING_LENGTH)) {
    2862373            psFree(object);
    2872374            exit(EXIT_FAILURE);
     
    2962383
    2972384    {
    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)) {
    326             psFree(object);
    327             exit(EXIT_FAILURE);
    328         }
    329         if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
    330             psFree(object);
    331             exit(EXIT_FAILURE);
    332         }
    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)) {
     2385        magicMaskRow    *object;
     2386
     2387        object = magicMaskRowAlloc(-64, "a string"    );
     2388
     2389        if (!object) {
     2390            exit(EXIT_FAILURE);
     2391        }
     2392
     2393        if (!object->magic_id == -64) {
    4662394            psFree(object);
    4672395            exit(EXIT_FAILURE);
     
    4712399            exit(EXIT_FAILURE);
    4722400        }
    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)) {
     2401
     2402        psFree(object);
     2403    }
     2404
     2405    {
     2406        magicSkyfileMaskRow *object;
     2407
     2408        object = magicSkyfileMaskRowAlloc(-64, -64, "a string"    );
     2409
     2410        if (!object) {
     2411            exit(EXIT_FAILURE);
     2412        }
     2413
     2414        if (!object->magic_id == -64) {
     2415            psFree(object);
     2416            exit(EXIT_FAILURE);
     2417        }
     2418        if (!object->diff_id == -64) {
    6782419            psFree(object);
    6792420            exit(EXIT_FAILURE);
    6802421        }
    6812422        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)) {
    1314             psFree(object);
    1315             exit(EXIT_FAILURE);
    1316         }
    1317         if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    1318             psFree(object);
    1319             exit(EXIT_FAILURE);
    1320         }
    1321         if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
    1322             psFree(object);
    1323             exit(EXIT_FAILURE);
    1324         }
    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) {
    1447             psFree(object);
    1448             exit(EXIT_FAILURE);
    1449         }
    1450         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    1451             psFree(object);
    1452             exit(EXIT_FAILURE);
    1453         }
    1454         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    1455             psFree(object);
    1456             exit(EXIT_FAILURE);
    1457         }
    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) {
    1609             psFree(object);
    1610             exit(EXIT_FAILURE);
    1611         }
    1612         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    1613             psFree(object);
    1614             exit(EXIT_FAILURE);
    1615         }
    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) {
    1678             psFree(object);
    1679             exit(EXIT_FAILURE);
    1680         }
    1681         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    1682             psFree(object);
    1683             exit(EXIT_FAILURE);
    1684         }
    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         }
    1718         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    1719             psFree(object);
    1720             exit(EXIT_FAILURE);
    1721         }
    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         }
    1848         if (!object->exp_id == -64) {
    1849             psFree(object);
    1850             exit(EXIT_FAILURE);
    1851         }
    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         }
    1941         if (!object->exp_id == -64) {
    1942             psFree(object);
    1943             exit(EXIT_FAILURE);
    1944         }
    1945         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    1946             psFree(object);
    1947             exit(EXIT_FAILURE);
    1948         }
    1949         if (!object->bg == 64.64) {
    1950             psFree(object);
    1951             exit(EXIT_FAILURE);
    1952         }
    1953         if (!object->bg_stdev == 64.64) {
    1954             psFree(object);
    1955             exit(EXIT_FAILURE);
    1956         }
    1957         if (!object->bg_mean_stdev == 64.64) {
    1958             psFree(object);
    1959             exit(EXIT_FAILURE);
    1960         }
    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) {
    1974             psFree(object);
    1975             exit(EXIT_FAILURE);
    1976         }
    1977         if (!object->user_1 == 64.64) {
    1978             psFree(object);
    1979             exit(EXIT_FAILURE);
    1980         }
    1981         if (!object->user_2 == 64.64) {
    1982             psFree(object);
    1983             exit(EXIT_FAILURE);
    1984         }
    1985         if (!object->user_3 == 64.64) {
    1986             psFree(object);
    1987             exit(EXIT_FAILURE);
    1988         }
    1989         if (!object->user_4 == 64.64) {
    1990             psFree(object);
    1991             exit(EXIT_FAILURE);
    1992         }
    1993         if (!object->user_5 == 64.64) {
    1994             psFree(object);
    1995             exit(EXIT_FAILURE);
    1996         }
    1997         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    1998             psFree(object);
    1999             exit(EXIT_FAILURE);
    2000         }
    2001         if (!object->accept == true) {
    2002             psFree(object);
    2003             exit(EXIT_FAILURE);
    2004         }
    2005         if (!object->fault == -16) {
    2006             psFree(object);
    2007             exit(EXIT_FAILURE);
    2008         }
    2009 
    2010         psFree(object);
    2011     }
    2012 
    2013     {
    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) {
    2027             psFree(object);
    2028             exit(EXIT_FAILURE);
    2029         }
    2030         if (!object->bg == 64.64) {
    2031             psFree(object);
    2032             exit(EXIT_FAILURE);
    2033         }
    2034         if (!object->bg_stdev == 64.64) {
    2035             psFree(object);
    2036             exit(EXIT_FAILURE);
    2037         }
    2038         if (!object->bg_mean_stdev == 64.64) {
    2039             psFree(object);
    2040             exit(EXIT_FAILURE);
    2041         }
    2042         if (!object->accept == true) {
    2043             psFree(object);
    2044             exit(EXIT_FAILURE);
    2045         }
    2046         if (!object->fault == -16) {
    20472423            psFree(object);
    20482424            exit(EXIT_FAILURE);
  • trunk/ippdb/tests/createtable.c

    r15420 r15421  
    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
    1530        if(!summitExpCreateTable(dbh)) {
    1631            exit(EXIT_FAILURE);
     
    193208        }
    194209
    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)) {
    586721            exit(EXIT_FAILURE);
    587722        }
  • trunk/ippdb/tests/dbcleanup.c

    r15420 r15421  
    1111    }
    1212
     13    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS pzDataStore");
    1314    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS summitExp");
    1415    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS summitImfile");
     
    2324    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS guidePendingExp");
    2425    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");
    5261
    5362    psDBCleanup(dbh);
  • trunk/ippdb/tests/dbsetup.c

    r15420 r15421  
    1313
    1414    // remove the table if it already exists
     15    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS pzDataStore");
     16    pzDataStoreCreateTable(dbh);
     17
    1518    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS summitExp");
    1619    summitExpCreateTable(dbh);
     
    4851    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS chipRun");
    4952    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
    132159    psDBCleanup(dbh);
    133160
  • trunk/ippdb/tests/droptable.c

    r15420 r15421  
    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
    1530        if (!summitExpDropTable(dbh)) {
    1631            exit(EXIT_FAILURE);
     
    193208        }
    194209
    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)) {
    586721            exit(EXIT_FAILURE);
    587722        }
  • trunk/ippdb/tests/insert.c

    r15420 r15421  
    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
    1530        if (!summitExpInsert(dbh, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", -32)) {
    1631            exit(EXIT_FAILURE);
     
    5873        }
    5974
    60         if (!pzPendingImfileInsert(dbh, "a string", "a string", "a string", "a string", "a string", -64)) {
     75        if (!pzPendingImfileInsert(dbh, "a string", "a string", "a string", "a string", "a string")) {
    6176            exit(EXIT_FAILURE);
    6277        }
     
    88103        }
    89104
    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")) {
     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")) {
    106121            exit(EXIT_FAILURE);
    107122        }
     
    133148        }
    134149
    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)) {
     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)) {
    136151            exit(EXIT_FAILURE);
    137152        }
     
    178193        }
    179194
    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")) {
     195        if (!chipRunInsert(dbh, -64, -64, "a string", "a string", "a string", "a string", "a string", "a string", "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)) {
     330        if (!warpSkyfileInsert(dbh, -64, "a string", "a string", "a string", "a string", 64.64, 64.64, 64.64, -16)) {
    331331            exit(EXIT_FAILURE);
    332332        }
     
    358358        }
    359359
    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)) {
     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, 64.64, -16)) {
    376376            exit(EXIT_FAILURE);
    377377        }
     
    418418        }
    419419
    420         if (!stackSumSkyfileInsert(dbh, -64, "a string", "a string", 64.64, 64.64)) {
     420        if (!stackSumSkyfileInsert(dbh, -64, "a string", "a string", 64.64, 64.64, 64.64, -16)) {
    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, "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)) {
     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)) {
    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")) {
    586721            exit(EXIT_FAILURE);
    587722        }
  • trunk/ippdb/tests/insertfits.c

    r15420 r15421  
    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
    2652        if (!summitExpInsertFits(dbh, fits)) {
    2753            exit(EXIT_FAILURE);
     
    336362        }
    337363
    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)) {
    10151249            exit(EXIT_FAILURE);
    10161250        }
  • trunk/ippdb/tests/insertobject.c

    r15420 r15421  
    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;
    931        summitExpRow    *object;
    1032
     
    80102        }
    81103
    82         object = pzPendingImfileRowAlloc("a string", "a string", "a string", "a string", "a string", -64);
     104        object = pzPendingImfileRowAlloc("a string", "a string", "a string", "a string", "a string");
    83105        if (!object) {
    84106            exit(EXIT_FAILURE);
     
    124146        }
    125147
    126         object = pzDoneImfileRowAlloc("a string", "a string", "a string", "a string", "a string", -64, "a string");
     148        object = pzDoneImfileRowAlloc("a string", "a string", "a string", "a string", "a string", "a string");
    127149        if (!object) {
    128150            exit(EXIT_FAILURE);
     
    146168        }
    147169
    148         object = newExpRowAlloc(-64, "a string", "a string", "a string", "a string", -32, "a string", "a string");
     170        object = newExpRowAlloc(-64, "a string", "a string", "a string", "a string", "a string", "a string", "a string");
    149171        if (!object) {
    150172            exit(EXIT_FAILURE);
     
    190212        }
    191213
    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);
     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);
    193215        if (!object) {
    194216            exit(EXIT_FAILURE);
     
    256278        }
    257279
    258         object = chipRunRowAlloc(-64, "a string", "a string", "a string", "a string", "a string", "a string", "a string");
     280        object = chipRunRowAlloc(-64, -64, "a string", "a string", "a string", "a string", "a string", "a string", "a string");
    259281        if (!object) {
    260282            exit(EXIT_FAILURE);
     
    271293    {
    272294        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);
     478        object = warpSkyfileRowAlloc(-64, "a string", "a string", "a string", "a string", 64.64, 64.64, 64.64, -16);
    479479        if (!object) {
    480480            exit(EXIT_FAILURE);
     
    520520        }
    521521
    522         object = diffInputSkyfileRowAlloc(-64, -64, "a string", "a string", "a string", true);
     522        object = diffInputSkyfileRowAlloc(-64, true, -64, -64, "a string", "a string", "a string");
    523523        if (!object) {
    524524            exit(EXIT_FAILURE);
     
    542542        }
    543543
    544         object = diffSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64);
     544        object = diffSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64, 64.64, -16);
    545545        if (!object) {
    546546            exit(EXIT_FAILURE);
     
    608608        }
    609609
    610         object = stackSumSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64);
     610        object = stackSumSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64, 64.64, -16);
    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, "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, 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, "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, 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)) {
    8581056            exit(EXIT_FAILURE);
    8591057        }
  • trunk/ippdb/tests/metadatafromobject.c

    r15420 r15421  
    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
     27        if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
     28            psFree(md);
     29            exit(EXIT_FAILURE);
     30        }
     31        if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) {
     32            psFree(md);
     33            exit(EXIT_FAILURE);
     34        }
     35        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     36            psFree(md);
     37            exit(EXIT_FAILURE);
     38        }
     39
     40        psFree(md);
     41    }
     42
     43    {
     44        psMetadata      *md;
    1245        summitExpRow    *object;
    1346        bool            status;
     
    151184        bool            status;
    152185
    153         object = pzPendingImfileRowAlloc("a string", "a string", "a string", "a string", "a string", -64);
     186        object = pzPendingImfileRowAlloc("a string", "a string", "a string", "a string", "a string");
    154187        if (!object) {
    155188            exit(EXIT_FAILURE);
     
    183216            exit(EXIT_FAILURE);
    184217        }
    185             psFree(md);
    186             exit(EXIT_FAILURE);
    187         }
    188218
    189219        psFree(md);
     
    228258        bool            status;
    229259
    230         object = pzDoneImfileRowAlloc("a string", "a string", "a string", "a string", "a string", -64, "a string");
     260        object = pzDoneImfileRowAlloc("a string", "a string", "a string", "a string", "a string", "a string");
    231261        if (!object) {
    232262            exit(EXIT_FAILURE);
     
    260290            exit(EXIT_FAILURE);
    261291        }
    262             psFree(md);
    263             exit(EXIT_FAILURE);
    264         }
    265292        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    266293            psFree(md);
     
    276303        bool            status;
    277304
    278         object = newExpRowAlloc(-64, "a string", "a string", "a string", "a string", -32, "a string", "a string");
     305        object = newExpRowAlloc(-64, "a string", "a string", "a string", "a string", "a string", "a string", "a string");
    279306        if (!object) {
    280307            exit(EXIT_FAILURE);
     
    307334            exit(EXIT_FAILURE);
    308335        }
    309         if (!psMetadataLookupS32(&status, md, "imfiles") == -32) {
    310             psFree(md);
    311             exit(EXIT_FAILURE);
    312         }
    313336        if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
    314337            psFree(md);
     
    319342            exit(EXIT_FAILURE);
    320343        }
     344        if (strncmp(psMetadataLookupPtr(&status, md, "reduction"), "a string", MAX_STRING_LENGTH)) {
     345            psFree(md);
     346            exit(EXIT_FAILURE);
     347        }
    321348
    322349        psFree(md);
     
    360387        bool            status;
    361388
    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);
     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);
    363390        if (!object) {
    364391            exit(EXIT_FAILURE);
     
    398425            exit(EXIT_FAILURE);
    399426        }
    400         if (!psMetadataLookupS32(&status, md, "imfiles") == -32) {
    401             psFree(md);
    402             exit(EXIT_FAILURE);
    403         }
    404427        if (strncmp(psMetadataLookupPtr(&status, md, "filelevel"), "a string", MAX_STRING_LENGTH)) {
    405428            psFree(md);
     
    410433            exit(EXIT_FAILURE);
    411434        }
     435        if (strncmp(psMetadataLookupPtr(&status, md, "reduction"), "a string", MAX_STRING_LENGTH)) {
     436            psFree(md);
     437            exit(EXIT_FAILURE);
     438        }
    412439        if (strncmp(psMetadataLookupPtr(&status, md, "filter"), "a string", MAX_STRING_LENGTH)) {
    413440            psFree(md);
     
    671698        bool            status;
    672699
    673         object = chipRunRowAlloc(-64, "a string", "a string", "a string", "a string", "a string", "a string", "a string");
     700        object = chipRunRowAlloc(-64, -64, "a string", "a string", "a string", "a string", "a string", "a string", "a string");
    674701        if (!object) {
    675702            exit(EXIT_FAILURE);
     
    686713            exit(EXIT_FAILURE);
    687714        }
     715            psFree(md);
     716            exit(EXIT_FAILURE);
     717        }
    688718        if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
    689719            psFree(md);
     
    720750    {
    721751        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);
     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);
    731761        if (!md) {
    732762            exit(EXIT_FAILURE);
     
    745775            exit(EXIT_FAILURE);
    746776        }
    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 
     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        }
     853        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     854            psFree(md);
     855            exit(EXIT_FAILURE);
     856        }
     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)) {
    7681158            psFree(md);
    7691159            exit(EXIT_FAILURE);
     
    7761166            exit(EXIT_FAILURE);
    7771167        }
     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        }
    7781203        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    7791204            psFree(md);
    7801205            exit(EXIT_FAILURE);
    7811206        }
    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         }
    8541207        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
    8551208            psFree(md);
    8561209            exit(EXIT_FAILURE);
    8571210        }
    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 
     1211        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     1212            psFree(md);
     1213            exit(EXIT_FAILURE);
     1214        }
     1215        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     1216            psFree(md);
     1217            exit(EXIT_FAILURE);
     1218        }
     1219        if (!psMetadataLookupF64(&status, md, "good_frac") == 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, 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        if (!psMetadataLookupF64(&status, md, "good_frac") == 64.64) {
     1360            psFree(md);
     1361            exit(EXIT_FAILURE);
     1362        }
     1363            psFree(md);
     1364            exit(EXIT_FAILURE);
     1365        }
     1366
     1367        psFree(md);
     1368    }
     1369
     1370    {
     1371        psMetadata      *md;
     1372        stackRunRow     *object;
     1373        bool            status;
     1374
     1375        object = stackRunRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string");
     1376        if (!object) {
     1377            exit(EXIT_FAILURE);
     1378        }
     1379
     1380        md = stackRunMetadataFromObject(object);
     1381        if (!md) {
     1382            exit(EXIT_FAILURE);
     1383        }
     1384
     1385        psFree(object);
     1386
     1387            psFree(md);
     1388            exit(EXIT_FAILURE);
     1389        }
     1390        if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
     1391            psFree(md);
     1392            exit(EXIT_FAILURE);
     1393        }
     1394        if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
     1395            psFree(md);
     1396            exit(EXIT_FAILURE);
     1397        }
     1398        if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
     1399            psFree(md);
     1400            exit(EXIT_FAILURE);
     1401        }
     1402            psFree(md);
     1403            exit(EXIT_FAILURE);
     1404        }
     1405        if (strncmp(psMetadataLookupPtr(&status, md, "skycell_id"), "a string", MAX_STRING_LENGTH)) {
     1406            psFree(md);
     1407            exit(EXIT_FAILURE);
     1408        }
     1409        if (strncmp(psMetadataLookupPtr(&status, md, "tess_id"), "a string", MAX_STRING_LENGTH)) {
     1410            psFree(md);
     1411            exit(EXIT_FAILURE);
     1412        }
     1413
     1414        psFree(md);
     1415    }
     1416
     1417    {
     1418        psMetadata      *md;
     1419        stackInputSkyfileRow *object;
     1420        bool            status;
     1421
     1422        object = stackInputSkyfileRowAlloc(-64, -64);
     1423        if (!object) {
     1424            exit(EXIT_FAILURE);
     1425        }
     1426
     1427        md = stackInputSkyfileMetadataFromObject(object);
     1428        if (!md) {
     1429            exit(EXIT_FAILURE);
     1430        }
     1431
     1432        psFree(object);
     1433
     1434            psFree(md);
     1435            exit(EXIT_FAILURE);
     1436        }
     1437            psFree(md);
     1438            exit(EXIT_FAILURE);
     1439        }
     1440
     1441        psFree(md);
     1442    }
     1443
     1444    {
     1445        psMetadata      *md;
     1446        stackSumSkyfileRow *object;
     1447        bool            status;
     1448
     1449        object = stackSumSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64, 64.64, -16);
     1450        if (!object) {
     1451            exit(EXIT_FAILURE);
     1452        }
     1453
     1454        md = stackSumSkyfileMetadataFromObject(object);
     1455        if (!md) {
     1456            exit(EXIT_FAILURE);
     1457        }
     1458
     1459        psFree(object);
     1460
     1461            psFree(md);
     1462            exit(EXIT_FAILURE);
     1463        }
     1464        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     1465            psFree(md);
     1466            exit(EXIT_FAILURE);
     1467        }
     1468        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     1469            psFree(md);
     1470            exit(EXIT_FAILURE);
     1471        }
     1472        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     1473            psFree(md);
     1474            exit(EXIT_FAILURE);
     1475        }
     1476        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     1477            psFree(md);
     1478            exit(EXIT_FAILURE);
     1479        }
     1480        if (!psMetadataLookupF64(&status, md, "good_frac") == 64.64) {
     1481            psFree(md);
     1482            exit(EXIT_FAILURE);
     1483        }
     1484            psFree(md);
     1485            exit(EXIT_FAILURE);
     1486        }
     1487
     1488        psFree(md);
     1489    }
     1490
     1491    {
     1492        psMetadata      *md;
     1493        detRunRow       *object;
     1494        bool            status;
     1495
     1496        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);
     1497        if (!object) {
     1498            exit(EXIT_FAILURE);
     1499        }
     1500
     1501        md = detRunMetadataFromObject(object);
     1502        if (!md) {
     1503            exit(EXIT_FAILURE);
     1504        }
     1505
     1506        psFree(object);
     1507
     1508            psFree(md);
     1509            exit(EXIT_FAILURE);
     1510        }
     1511        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
     1512            psFree(md);
     1513            exit(EXIT_FAILURE);
     1514        }
     1515        if (strncmp(psMetadataLookupPtr(&status, md, "det_type"), "a string", MAX_STRING_LENGTH)) {
     1516            psFree(md);
     1517            exit(EXIT_FAILURE);
     1518        }
     1519        if (strncmp(psMetadataLookupPtr(&status, md, "mode"), "a string", MAX_STRING_LENGTH)) {
     1520            psFree(md);
     1521            exit(EXIT_FAILURE);
     1522        }
     1523        if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
     1524            psFree(md);
     1525            exit(EXIT_FAILURE);
     1526        }
     1527        if (strncmp(psMetadataLookupPtr(&status, md, "filelevel"), "a string", MAX_STRING_LENGTH)) {
     1528            psFree(md);
     1529            exit(EXIT_FAILURE);
     1530        }
     1531        if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
     1532            psFree(md);
     1533            exit(EXIT_FAILURE);
     1534        }
     1535        if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
     1536            psFree(md);
     1537            exit(EXIT_FAILURE);
     1538        }
     1539        if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) {
     1540            psFree(md);
     1541            exit(EXIT_FAILURE);
     1542        }
     1543        if (strncmp(psMetadataLookupPtr(&status, md, "exp_type"), "a string", MAX_STRING_LENGTH)) {
     1544            psFree(md);
     1545            exit(EXIT_FAILURE);
     1546        }
     1547        if (strncmp(psMetadataLookupPtr(&status, md, "reduction"), "a string", MAX_STRING_LENGTH)) {
     1548            psFree(md);
     1549            exit(EXIT_FAILURE);
     1550        }
     1551        if (strncmp(psMetadataLookupPtr(&status, md, "filter"), "a string", MAX_STRING_LENGTH)) {
     1552            psFree(md);
     1553            exit(EXIT_FAILURE);
     1554        }
     1555        if (!psMetadataLookupF32(&status, md, "airmass_min") == 32.32) {
     1556            psFree(md);
     1557            exit(EXIT_FAILURE);
     1558        }
     1559        if (!psMetadataLookupF32(&status, md, "airmass_max") == 32.32) {
     1560            psFree(md);
     1561            exit(EXIT_FAILURE);
     1562        }
     1563        if (!psMetadataLookupF32(&status, md, "exp_time_min") == 32.32) {
     1564            psFree(md);
     1565            exit(EXIT_FAILURE);
     1566        }
     1567        if (!psMetadataLookupF32(&status, md, "exp_time_max") == 32.32) {
     1568            psFree(md);
     1569            exit(EXIT_FAILURE);
     1570        }
     1571        if (!psMetadataLookupF32(&status, md, "ccd_temp_min") == 32.32) {
     1572            psFree(md);
     1573            exit(EXIT_FAILURE);
     1574        }
     1575        if (!psMetadataLookupF32(&status, md, "ccd_temp_max") == 32.32) {
     1576            psFree(md);
     1577            exit(EXIT_FAILURE);
     1578        }
     1579        if (!psMetadataLookupF64(&status, md, "posang_min") == 64.64) {
     1580            psFree(md);
     1581            exit(EXIT_FAILURE);
     1582        }
     1583        if (!psMetadataLookupF64(&status, md, "posang_max") == 64.64) {
     1584            psFree(md);
     1585            exit(EXIT_FAILURE);
     1586        }
     1587            psFree(md);
     1588            exit(EXIT_FAILURE);
     1589        }
     1590            psFree(md);
     1591            exit(EXIT_FAILURE);
     1592        }
     1593            psFree(md);
     1594            exit(EXIT_FAILURE);
     1595        }
     1596            psFree(md);
     1597            exit(EXIT_FAILURE);
     1598        }
     1599            psFree(md);
     1600            exit(EXIT_FAILURE);
     1601        }
     1602        if (!psMetadataLookupF32(&status, md, "solang_min") == 32.32) {
     1603            psFree(md);
     1604            exit(EXIT_FAILURE);
     1605        }
     1606        if (!psMetadataLookupF32(&status, md, "solang_max") == 32.32) {
     1607            psFree(md);
     1608            exit(EXIT_FAILURE);
     1609        }
    8821610        if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
    8831611            psFree(md);
    8841612            exit(EXIT_FAILURE);
    8851613        }
    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         }
     1614        if (!psMetadataLookupS32(&status, md, "parent") == -32) {
     1615            psFree(md);
     1616            exit(EXIT_FAILURE);
     1617        }
     1618
     1619        psFree(md);
     1620    }
     1621
     1622    {
     1623        psMetadata      *md;
     1624        detInputExpRow  *object;
     1625        bool            status;
     1626
     1627        object = detInputExpRowAlloc(-64, -32, -64, true);
     1628        if (!object) {
     1629            exit(EXIT_FAILURE);
     1630        }
     1631
     1632        md = detInputExpMetadataFromObject(object);
     1633        if (!md) {
     1634            exit(EXIT_FAILURE);
     1635        }
     1636
     1637        psFree(object);
     1638
     1639            psFree(md);
     1640            exit(EXIT_FAILURE);
     1641        }
     1642        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
     1643            psFree(md);
     1644            exit(EXIT_FAILURE);
     1645        }
     1646            psFree(md);
     1647            exit(EXIT_FAILURE);
     1648        }
     1649        if (!psMetadataLookupBool(&status, md, "include") == true) {
     1650            psFree(md);
     1651            exit(EXIT_FAILURE);
     1652        }
     1653
     1654        psFree(md);
     1655    }
     1656
     1657    {
     1658        psMetadata      *md;
     1659        detProcessedImfileRow *object;
     1660        bool            status;
     1661
     1662        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);
     1663        if (!object) {
     1664            exit(EXIT_FAILURE);
     1665        }
     1666
     1667        md = detProcessedImfileMetadataFromObject(object);
     1668        if (!md) {
     1669            exit(EXIT_FAILURE);
     1670        }
     1671
     1672        psFree(object);
     1673
     1674            psFree(md);
     1675            exit(EXIT_FAILURE);
     1676        }
     1677            psFree(md);
     1678            exit(EXIT_FAILURE);
     1679        }
     1680        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
     1681            psFree(md);
     1682            exit(EXIT_FAILURE);
     1683        }
     1684        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     1685            psFree(md);
     1686            exit(EXIT_FAILURE);
     1687        }
     1688        if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
     1689            psFree(md);
     1690            exit(EXIT_FAILURE);
     1691        }
     1692        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     1693            psFree(md);
     1694            exit(EXIT_FAILURE);
     1695        }
     1696        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     1697            psFree(md);
     1698            exit(EXIT_FAILURE);
     1699        }
     1700        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
     1701            psFree(md);
     1702            exit(EXIT_FAILURE);
     1703        }
     1704        if (!psMetadataLookupF64(&status, md, "fringe_0") == 64.64) {
     1705            psFree(md);
     1706            exit(EXIT_FAILURE);
     1707        }
     1708        if (!psMetadataLookupF64(&status, md, "fringe_1") == 64.64) {
     1709            psFree(md);
     1710            exit(EXIT_FAILURE);
     1711        }
     1712        if (!psMetadataLookupF64(&status, md, "fringe_2") == 64.64) {
     1713            psFree(md);
     1714            exit(EXIT_FAILURE);
     1715        }
     1716        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
     1717            psFree(md);
     1718            exit(EXIT_FAILURE);
     1719        }
     1720        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
     1721            psFree(md);
     1722            exit(EXIT_FAILURE);
     1723        }
     1724        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
     1725            psFree(md);
     1726            exit(EXIT_FAILURE);
     1727        }
     1728        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
     1729            psFree(md);
     1730            exit(EXIT_FAILURE);
     1731        }
     1732        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
     1733            psFree(md);
     1734            exit(EXIT_FAILURE);
     1735        }
     1736        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     1737            psFree(md);
     1738            exit(EXIT_FAILURE);
     1739        }
     1740            psFree(md);
     1741            exit(EXIT_FAILURE);
     1742        }
     1743
     1744        psFree(md);
     1745    }
     1746
     1747    {
     1748        psMetadata      *md;
     1749        detProcessedExpRow *object;
     1750        bool            status;
     1751
     1752        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);
     1753        if (!object) {
     1754            exit(EXIT_FAILURE);
     1755        }
     1756
     1757        md = detProcessedExpMetadataFromObject(object);
     1758        if (!md) {
     1759            exit(EXIT_FAILURE);
     1760        }
     1761
     1762        psFree(object);
     1763
     1764            psFree(md);
     1765            exit(EXIT_FAILURE);
     1766        }
     1767            psFree(md);
     1768            exit(EXIT_FAILURE);
     1769        }
     1770        if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
     1771            psFree(md);
     1772            exit(EXIT_FAILURE);
     1773        }
     1774        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     1775            psFree(md);
     1776            exit(EXIT_FAILURE);
     1777        }
     1778        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     1779            psFree(md);
     1780            exit(EXIT_FAILURE);
     1781        }
     1782        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
     1783            psFree(md);
     1784            exit(EXIT_FAILURE);
     1785        }
     1786        if (!psMetadataLookupF64(&status, md, "fringe_0") == 64.64) {
     1787            psFree(md);
     1788            exit(EXIT_FAILURE);
     1789        }
     1790        if (!psMetadataLookupF64(&status, md, "fringe_1") == 64.64) {
     1791            psFree(md);
     1792            exit(EXIT_FAILURE);
     1793        }
     1794        if (!psMetadataLookupF64(&status, md, "fringe_2") == 64.64) {
     1795            psFree(md);
     1796            exit(EXIT_FAILURE);
     1797        }
     1798        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
     1799            psFree(md);
     1800            exit(EXIT_FAILURE);
     1801        }
     1802        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
     1803            psFree(md);
     1804            exit(EXIT_FAILURE);
     1805        }
     1806        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
     1807            psFree(md);
     1808            exit(EXIT_FAILURE);
     1809        }
     1810        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
     1811            psFree(md);
     1812            exit(EXIT_FAILURE);
     1813        }
     1814        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
     1815            psFree(md);
     1816            exit(EXIT_FAILURE);
     1817        }
     1818        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     1819            psFree(md);
     1820            exit(EXIT_FAILURE);
     1821        }
     1822            psFree(md);
     1823            exit(EXIT_FAILURE);
     1824        }
     1825
     1826        psFree(md);
     1827    }
     1828
     1829    {
     1830        psMetadata      *md;
     1831        detStackedImfileRow *object;
     1832        bool            status;
     1833
     1834        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);
     1835        if (!object) {
     1836            exit(EXIT_FAILURE);
     1837        }
     1838
     1839        md = detStackedImfileMetadataFromObject(object);
     1840        if (!md) {
     1841            exit(EXIT_FAILURE);
     1842        }
     1843
     1844        psFree(object);
     1845
     1846            psFree(md);
     1847            exit(EXIT_FAILURE);
     1848        }
     1849        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
     1850            psFree(md);
     1851            exit(EXIT_FAILURE);
     1852        }
     1853        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
     1854            psFree(md);
     1855            exit(EXIT_FAILURE);
     1856        }
     1857        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     1858            psFree(md);
     1859            exit(EXIT_FAILURE);
     1860        }
     1861        if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
     1862            psFree(md);
     1863            exit(EXIT_FAILURE);
     1864        }
     1865        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     1866            psFree(md);
     1867            exit(EXIT_FAILURE);
     1868        }
     1869        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     1870            psFree(md);
     1871            exit(EXIT_FAILURE);
     1872        }
     1873        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
     1874            psFree(md);
     1875            exit(EXIT_FAILURE);
     1876        }
     1877        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
     1878            psFree(md);
     1879            exit(EXIT_FAILURE);
     1880        }
     1881        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
     1882            psFree(md);
     1883            exit(EXIT_FAILURE);
     1884        }
     1885        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
     1886            psFree(md);
     1887            exit(EXIT_FAILURE);
     1888        }
     1889        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
     1890            psFree(md);
     1891            exit(EXIT_FAILURE);
     1892        }
     1893        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
     1894            psFree(md);
     1895            exit(EXIT_FAILURE);
     1896        }
     1897            psFree(md);
     1898            exit(EXIT_FAILURE);
     1899        }
     1900
     1901        psFree(md);
     1902    }
     1903
     1904    {
     1905        psMetadata      *md;
     1906        detNormalizedStatImfileRow *object;
     1907        bool            status;
     1908
     1909        object = detNormalizedStatImfileRowAlloc(-64, -32, "a string", 32.32, -16);
     1910        if (!object) {
     1911            exit(EXIT_FAILURE);
     1912        }
     1913
     1914        md = detNormalizedStatImfileMetadataFromObject(object);
     1915        if (!md) {
     1916            exit(EXIT_FAILURE);
     1917        }
     1918
     1919        psFree(object);
     1920
     1921            psFree(md);
     1922            exit(EXIT_FAILURE);
     1923        }
     1924        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
     1925            psFree(md);
     1926            exit(EXIT_FAILURE);
     1927        }
     1928        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
     1929            psFree(md);
     1930            exit(EXIT_FAILURE);
     1931        }
     1932        if (!psMetadataLookupF32(&status, md, "norm") == 32.32) {
     1933            psFree(md);
     1934            exit(EXIT_FAILURE);
     1935        }
     1936            psFree(md);
     1937            exit(EXIT_FAILURE);
     1938        }
     1939
     1940        psFree(md);
     1941    }
     1942
     1943    {
     1944        psMetadata      *md;
     1945        detNormalizedImfileRow *object;
     1946        bool            status;
     1947
     1948        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);
     1949        if (!object) {
     1950            exit(EXIT_FAILURE);
     1951        }
     1952
     1953        md = detNormalizedImfileMetadataFromObject(object);
     1954        if (!md) {
     1955            exit(EXIT_FAILURE);
     1956        }
     1957
     1958        psFree(object);
     1959
     1960            psFree(md);
     1961            exit(EXIT_FAILURE);
     1962        }
     1963        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
     1964            psFree(md);
     1965            exit(EXIT_FAILURE);
     1966        }
     1967        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
     1968            psFree(md);
     1969            exit(EXIT_FAILURE);
     1970        }
     1971        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     1972            psFree(md);
     1973            exit(EXIT_FAILURE);
     1974        }
     1975        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     1976            psFree(md);
     1977            exit(EXIT_FAILURE);
     1978        }
     1979        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     1980            psFree(md);
     1981            exit(EXIT_FAILURE);
     1982        }
     1983        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
     1984            psFree(md);
     1985            exit(EXIT_FAILURE);
     1986        }
     1987        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
     1988            psFree(md);
     1989            exit(EXIT_FAILURE);
     1990        }
     1991        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
     1992            psFree(md);
     1993            exit(EXIT_FAILURE);
     1994        }
     1995        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
     1996            psFree(md);
     1997            exit(EXIT_FAILURE);
     1998        }
     1999        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
     2000            psFree(md);
     2001            exit(EXIT_FAILURE);
     2002        }
     2003        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
     2004            psFree(md);
     2005            exit(EXIT_FAILURE);
     2006        }
     2007        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     2008            psFree(md);
     2009            exit(EXIT_FAILURE);
     2010        }
     2011            psFree(md);
     2012            exit(EXIT_FAILURE);
     2013        }
     2014
     2015        psFree(md);
     2016    }
     2017
     2018    {
     2019        psMetadata      *md;
     2020        detNormalizedExpRow *object;
     2021        bool            status;
     2022
     2023        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);
     2024        if (!object) {
     2025            exit(EXIT_FAILURE);
     2026        }
     2027
     2028        md = detNormalizedExpMetadataFromObject(object);
     2029        if (!md) {
     2030            exit(EXIT_FAILURE);
     2031        }
     2032
     2033        psFree(object);
     2034
     2035            psFree(md);
     2036            exit(EXIT_FAILURE);
     2037        }
     2038        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
     2039            psFree(md);
     2040            exit(EXIT_FAILURE);
     2041        }
     2042        if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
     2043            psFree(md);
     2044            exit(EXIT_FAILURE);
     2045        }
     2046        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     2047            psFree(md);
     2048            exit(EXIT_FAILURE);
     2049        }
     2050        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     2051            psFree(md);
     2052            exit(EXIT_FAILURE);
     2053        }
     2054        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
     2055            psFree(md);
     2056            exit(EXIT_FAILURE);
     2057        }
     2058        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
     2059            psFree(md);
     2060            exit(EXIT_FAILURE);
     2061        }
     2062        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
     2063            psFree(md);
     2064            exit(EXIT_FAILURE);
     2065        }
     2066        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
     2067            psFree(md);
     2068            exit(EXIT_FAILURE);
     2069        }
     2070        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
     2071            psFree(md);
     2072            exit(EXIT_FAILURE);
     2073        }
     2074        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
     2075            psFree(md);
     2076            exit(EXIT_FAILURE);
     2077        }
     2078        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     2079            psFree(md);
     2080            exit(EXIT_FAILURE);
     2081        }
     2082            psFree(md);
     2083            exit(EXIT_FAILURE);
     2084        }
     2085
     2086        psFree(md);
     2087    }
     2088
     2089    {
     2090        psMetadata      *md;
     2091        detResidImfileRow *object;
     2092        bool            status;
     2093
     2094        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);
     2095        if (!object) {
     2096            exit(EXIT_FAILURE);
     2097        }
     2098
     2099        md = detResidImfileMetadataFromObject(object);
     2100        if (!md) {
     2101            exit(EXIT_FAILURE);
     2102        }
     2103
     2104        psFree(object);
     2105
     2106            psFree(md);
     2107            exit(EXIT_FAILURE);
     2108        }
     2109        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
     2110            psFree(md);
     2111            exit(EXIT_FAILURE);
     2112        }
     2113            psFree(md);
     2114            exit(EXIT_FAILURE);
     2115        }
     2116        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
     2117            psFree(md);
     2118            exit(EXIT_FAILURE);
     2119        }
     2120        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     2121            psFree(md);
     2122            exit(EXIT_FAILURE);
     2123        }
     2124        if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
     2125            psFree(md);
     2126            exit(EXIT_FAILURE);
     2127        }
     2128        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     2129            psFree(md);
     2130            exit(EXIT_FAILURE);
     2131        }
     2132        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     2133            psFree(md);
     2134            exit(EXIT_FAILURE);
     2135        }
     2136        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
     2137            psFree(md);
     2138            exit(EXIT_FAILURE);
     2139        }
     2140        if (!psMetadataLookupF64(&status, md, "bg_skewness") == 64.64) {
     2141            psFree(md);
     2142            exit(EXIT_FAILURE);
     2143        }
     2144        if (!psMetadataLookupF64(&status, md, "bg_kurtosis") == 64.64) {
     2145            psFree(md);
     2146            exit(EXIT_FAILURE);
     2147        }
     2148        if (!psMetadataLookupF64(&status, md, "bin_stdev") == 64.64) {
     2149            psFree(md);
     2150            exit(EXIT_FAILURE);
     2151        }
     2152        if (!psMetadataLookupF64(&status, md, "fringe_0") == 64.64) {
     2153            psFree(md);
     2154            exit(EXIT_FAILURE);
     2155        }
     2156        if (!psMetadataLookupF64(&status, md, "fringe_1") == 64.64) {
     2157            psFree(md);
     2158            exit(EXIT_FAILURE);
     2159        }
     2160        if (!psMetadataLookupF64(&status, md, "fringe_2") == 64.64) {
     2161            psFree(md);
     2162            exit(EXIT_FAILURE);
     2163        }
     2164        if (!psMetadataLookupF64(&status, md, "fringe_resid_0") == 64.64) {
     2165            psFree(md);
     2166            exit(EXIT_FAILURE);
     2167        }
     2168        if (!psMetadataLookupF64(&status, md, "fringe_resid_1") == 64.64) {
     2169            psFree(md);
     2170            exit(EXIT_FAILURE);
     2171        }
     2172        if (!psMetadataLookupF64(&status, md, "fringe_resid_2") == 64.64) {
     2173            psFree(md);
     2174            exit(EXIT_FAILURE);
     2175        }
     2176        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
     2177            psFree(md);
     2178            exit(EXIT_FAILURE);
     2179        }
     2180        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
     2181            psFree(md);
     2182            exit(EXIT_FAILURE);
     2183        }
     2184        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
     2185            psFree(md);
     2186            exit(EXIT_FAILURE);
     2187        }
     2188        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
     2189            psFree(md);
     2190            exit(EXIT_FAILURE);
     2191        }
     2192        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
     2193            psFree(md);
     2194            exit(EXIT_FAILURE);
     2195        }
     2196        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     2197            psFree(md);
     2198            exit(EXIT_FAILURE);
     2199        }
     2200            psFree(md);
     2201            exit(EXIT_FAILURE);
     2202        }
     2203
     2204        psFree(md);
     2205    }
     2206
     2207    {
     2208        psMetadata      *md;
     2209        detResidExpRow  *object;
     2210        bool            status;
     2211
     2212        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);
     2213        if (!object) {
     2214            exit(EXIT_FAILURE);
     2215        }
     2216
     2217        md = detResidExpMetadataFromObject(object);
     2218        if (!md) {
     2219            exit(EXIT_FAILURE);
     2220        }
     2221
     2222        psFree(object);
     2223
     2224            psFree(md);
     2225            exit(EXIT_FAILURE);
     2226        }
     2227        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
     2228            psFree(md);
     2229            exit(EXIT_FAILURE);
     2230        }
     2231            psFree(md);
     2232            exit(EXIT_FAILURE);
     2233        }
     2234        if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
     2235            psFree(md);
     2236            exit(EXIT_FAILURE);
     2237        }
     2238        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     2239            psFree(md);
     2240            exit(EXIT_FAILURE);
     2241        }
     2242        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     2243            psFree(md);
     2244            exit(EXIT_FAILURE);
     2245        }
     2246        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
     2247            psFree(md);
     2248            exit(EXIT_FAILURE);
     2249        }
     2250        if (!psMetadataLookupF64(&status, md, "bg_skewness") == 64.64) {
     2251            psFree(md);
     2252            exit(EXIT_FAILURE);
     2253        }
     2254        if (!psMetadataLookupF64(&status, md, "bg_kurtosis") == 64.64) {
     2255            psFree(md);
     2256            exit(EXIT_FAILURE);
     2257        }
     2258        if (!psMetadataLookupF64(&status, md, "bin_stdev") == 64.64) {
     2259            psFree(md);
     2260            exit(EXIT_FAILURE);
     2261        }
     2262        if (!psMetadataLookupF64(&status, md, "fringe_0") == 64.64) {
     2263            psFree(md);
     2264            exit(EXIT_FAILURE);
     2265        }
     2266        if (!psMetadataLookupF64(&status, md, "fringe_1") == 64.64) {
     2267            psFree(md);
     2268            exit(EXIT_FAILURE);
     2269        }
     2270        if (!psMetadataLookupF64(&status, md, "fringe_2") == 64.64) {
     2271            psFree(md);
     2272            exit(EXIT_FAILURE);
     2273        }
     2274        if (!psMetadataLookupF64(&status, md, "fringe_resid_0") == 64.64) {
     2275            psFree(md);
     2276            exit(EXIT_FAILURE);
     2277        }
     2278        if (!psMetadataLookupF64(&status, md, "fringe_resid_1") == 64.64) {
     2279            psFree(md);
     2280            exit(EXIT_FAILURE);
     2281        }
     2282        if (!psMetadataLookupF64(&status, md, "fringe_resid_2") == 64.64) {
     2283            psFree(md);
     2284            exit(EXIT_FAILURE);
     2285        }
     2286        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
     2287            psFree(md);
     2288            exit(EXIT_FAILURE);
     2289        }
     2290        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
     2291            psFree(md);
     2292            exit(EXIT_FAILURE);
     2293        }
     2294        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
     2295            psFree(md);
     2296            exit(EXIT_FAILURE);
     2297        }
     2298        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
     2299            psFree(md);
     2300            exit(EXIT_FAILURE);
     2301        }
     2302        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
     2303            psFree(md);
     2304            exit(EXIT_FAILURE);
     2305        }
     2306        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     2307            psFree(md);
     2308            exit(EXIT_FAILURE);
     2309        }
     2310        if (!psMetadataLookupBool(&status, md, "accept") == true) {
     2311            psFree(md);
     2312            exit(EXIT_FAILURE);
     2313        }
     2314            psFree(md);
     2315            exit(EXIT_FAILURE);
     2316        }
     2317
     2318        psFree(md);
     2319    }
     2320
     2321    {
     2322        psMetadata      *md;
     2323        detRunSummaryRow *object;
     2324        bool            status;
     2325
     2326        object = detRunSummaryRowAlloc(-64, -32, 64.64, 64.64, 64.64, true, -16);
     2327        if (!object) {
     2328            exit(EXIT_FAILURE);
     2329        }
     2330
     2331        md = detRunSummaryMetadataFromObject(object);
     2332        if (!md) {
     2333            exit(EXIT_FAILURE);
     2334        }
     2335
     2336        psFree(object);
     2337
     2338            psFree(md);
     2339            exit(EXIT_FAILURE);
     2340        }
     2341        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
     2342            psFree(md);
     2343            exit(EXIT_FAILURE);
     2344        }
     2345        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     2346            psFree(md);
     2347            exit(EXIT_FAILURE);
     2348        }
     2349        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     2350            psFree(md);
     2351            exit(EXIT_FAILURE);
     2352        }
     2353        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
     2354            psFree(md);
     2355            exit(EXIT_FAILURE);
     2356        }
     2357        if (!psMetadataLookupBool(&status, md, "accept") == true) {
     2358            psFree(md);
     2359            exit(EXIT_FAILURE);
     2360        }
     2361            psFree(md);
     2362            exit(EXIT_FAILURE);
     2363        }
     2364
     2365        psFree(md);
     2366    }
     2367
     2368    {
     2369        psMetadata      *md;
     2370        detRegisteredImfileRow *object;
     2371        bool            status;
     2372
     2373        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);
     2374        if (!object) {
     2375            exit(EXIT_FAILURE);
     2376        }
     2377
     2378        md = detRegisteredImfileMetadataFromObject(object);
     2379        if (!md) {
     2380            exit(EXIT_FAILURE);
     2381        }
     2382
     2383        psFree(object);
     2384
     2385            psFree(md);
     2386            exit(EXIT_FAILURE);
     2387        }
     2388        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
     2389            psFree(md);
     2390            exit(EXIT_FAILURE);
     2391        }
     2392        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
     2393            psFree(md);
     2394            exit(EXIT_FAILURE);
     2395        }
     2396        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     2397            psFree(md);
     2398            exit(EXIT_FAILURE);
     2399        }
     2400        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     2401            psFree(md);
     2402            exit(EXIT_FAILURE);
     2403        }
     2404        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     2405            psFree(md);
     2406            exit(EXIT_FAILURE);
     2407        }
     2408        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
     2409            psFree(md);
     2410            exit(EXIT_FAILURE);
     2411        }
     2412        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
     2413            psFree(md);
     2414            exit(EXIT_FAILURE);
     2415        }
     2416        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
     2417            psFree(md);
     2418            exit(EXIT_FAILURE);
     2419        }
     2420        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
     2421            psFree(md);
     2422            exit(EXIT_FAILURE);
     2423        }
     2424        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
     2425            psFree(md);
     2426            exit(EXIT_FAILURE);
     2427        }
     2428        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
     2429            psFree(md);
     2430            exit(EXIT_FAILURE);
     2431        }
     2432        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     2433            psFree(md);
     2434            exit(EXIT_FAILURE);
     2435        }
     2436            psFree(md);
     2437            exit(EXIT_FAILURE);
     2438        }
     2439
     2440        psFree(md);
     2441    }
     2442
     2443    {
     2444        psMetadata      *md;
     2445        detCorrectedExpRow *object;
     2446        bool            status;
     2447
     2448        object = detCorrectedExpRowAlloc(-64, -64, "a string", -64, "a string", "a string", "a string", -16);
     2449        if (!object) {
     2450            exit(EXIT_FAILURE);
     2451        }
     2452
     2453        md = detCorrectedExpMetadataFromObject(object);
     2454        if (!md) {
     2455            exit(EXIT_FAILURE);
     2456        }
     2457
     2458        psFree(object);
     2459
     2460            psFree(md);
     2461            exit(EXIT_FAILURE);
     2462        }
     2463            psFree(md);
     2464            exit(EXIT_FAILURE);
     2465        }
     2466        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     2467            psFree(md);
     2468            exit(EXIT_FAILURE);
     2469        }
     2470            psFree(md);
     2471            exit(EXIT_FAILURE);
     2472        }
     2473        if (strncmp(psMetadataLookupPtr(&status, md, "corr_type"), "a string", MAX_STRING_LENGTH)) {
     2474            psFree(md);
     2475            exit(EXIT_FAILURE);
     2476        }
     2477        if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
     2478            psFree(md);
     2479            exit(EXIT_FAILURE);
     2480        }
     2481        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     2482            psFree(md);
     2483            exit(EXIT_FAILURE);
     2484        }
     2485            psFree(md);
     2486            exit(EXIT_FAILURE);
     2487        }
     2488
     2489        psFree(md);
     2490    }
     2491
     2492    {
     2493        psMetadata      *md;
     2494        detCorrectedImfileRow *object;
     2495        bool            status;
     2496
     2497        object = detCorrectedImfileRowAlloc(-64, -64, "a string", "a string", "a string", -16);
     2498        if (!object) {
     2499            exit(EXIT_FAILURE);
     2500        }
     2501
     2502        md = detCorrectedImfileMetadataFromObject(object);
     2503        if (!md) {
     2504            exit(EXIT_FAILURE);
     2505        }
     2506
     2507        psFree(object);
     2508
     2509            psFree(md);
     2510            exit(EXIT_FAILURE);
     2511        }
     2512            psFree(md);
     2513            exit(EXIT_FAILURE);
     2514        }
     2515        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
     2516            psFree(md);
     2517            exit(EXIT_FAILURE);
     2518        }
     2519        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     2520            psFree(md);
     2521            exit(EXIT_FAILURE);
     2522        }
     2523        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     2524            psFree(md);
     2525            exit(EXIT_FAILURE);
     2526        }
     2527            psFree(md);
     2528            exit(EXIT_FAILURE);
     2529        }
     2530
     2531        psFree(md);
     2532    }
     2533
     2534    {
     2535        psMetadata      *md;
     2536        magicRunRow     *object;
     2537        bool            status;
     2538
     2539        object = magicRunRowAlloc(-64, "a string", "a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z");
     2540        if (!object) {
     2541            exit(EXIT_FAILURE);
     2542        }
     2543
     2544        md = magicRunMetadataFromObject(object);
     2545        if (!md) {
     2546            exit(EXIT_FAILURE);
     2547        }
     2548
     2549        psFree(object);
     2550
    9102551            psFree(md);
    9112552            exit(EXIT_FAILURE);
     
    9272568            exit(EXIT_FAILURE);
    9282569        }
    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         }
    9372570        if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
    9382571            psFree(md);
    9392572            exit(EXIT_FAILURE);
    9402573        }
    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         }
     2574            psFree(md);
     2575            exit(EXIT_FAILURE);
     2576        }
     2577
     2578        psFree(md);
     2579    }
     2580
     2581    {
     2582        psMetadata      *md;
     2583        magicInputSkyfileRow *object;
     2584        bool            status;
     2585
     2586        object = magicInputSkyfileRowAlloc(-64, -64, "a string");
     2587        if (!object) {
     2588            exit(EXIT_FAILURE);
     2589        }
     2590
     2591        md = magicInputSkyfileMetadataFromObject(object);
     2592        if (!md) {
     2593            exit(EXIT_FAILURE);
     2594        }
     2595
     2596        psFree(object);
     2597
     2598            psFree(md);
     2599            exit(EXIT_FAILURE);
     2600        }
     2601            psFree(md);
     2602            exit(EXIT_FAILURE);
     2603        }
     2604        if (strncmp(psMetadataLookupPtr(&status, md, "node"), "a string", MAX_STRING_LENGTH)) {
     2605            psFree(md);
     2606            exit(EXIT_FAILURE);
     2607        }
     2608
     2609        psFree(md);
     2610    }
     2611
     2612    {
     2613        psMetadata      *md;
     2614        magicTreeRow    *object;
     2615        bool            status;
     2616
     2617        object = magicTreeRowAlloc(-64, "a string", "a string");
     2618        if (!object) {
     2619            exit(EXIT_FAILURE);
     2620        }
     2621
     2622        md = magicTreeMetadataFromObject(object);
     2623        if (!md) {
     2624            exit(EXIT_FAILURE);
     2625        }
     2626
     2627        psFree(object);
     2628
     2629            psFree(md);
     2630            exit(EXIT_FAILURE);
     2631        }
     2632        if (strncmp(psMetadataLookupPtr(&status, md, "node"), "a string", MAX_STRING_LENGTH)) {
     2633            psFree(md);
     2634            exit(EXIT_FAILURE);
     2635        }
     2636        if (strncmp(psMetadataLookupPtr(&status, md, "dep"), "a string", MAX_STRING_LENGTH)) {
     2637            psFree(md);
     2638            exit(EXIT_FAILURE);
     2639        }
     2640
     2641        psFree(md);
     2642    }
     2643
     2644    {
     2645        psMetadata      *md;
     2646        magicNodeResultRow *object;
     2647        bool            status;
     2648
     2649        object = magicNodeResultRowAlloc(-64, "a string", "a string");
     2650        if (!object) {
     2651            exit(EXIT_FAILURE);
     2652        }
     2653
     2654        md = magicNodeResultMetadataFromObject(object);
     2655        if (!md) {
     2656            exit(EXIT_FAILURE);
     2657        }
     2658
     2659        psFree(object);
     2660
     2661            psFree(md);
     2662            exit(EXIT_FAILURE);
     2663        }
     2664        if (strncmp(psMetadataLookupPtr(&status, md, "node"), "a string", MAX_STRING_LENGTH)) {
    9652665            psFree(md);
    9662666            exit(EXIT_FAILURE);
     
    9702670            exit(EXIT_FAILURE);
    9712671        }
    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)) {
     2672
     2673        psFree(md);
     2674    }
     2675
     2676    {
     2677        psMetadata      *md;
     2678        magicMaskRow    *object;
     2679        bool            status;
     2680
     2681        object = magicMaskRowAlloc(-64, "a string");
     2682        if (!object) {
     2683            exit(EXIT_FAILURE);
     2684        }
     2685
     2686        md = magicMaskMetadataFromObject(object);
     2687        if (!md) {
     2688            exit(EXIT_FAILURE);
     2689        }
     2690
     2691        psFree(object);
     2692
    12012693            psFree(md);
    12022694            exit(EXIT_FAILURE);
     
    12062698            exit(EXIT_FAILURE);
    12072699        }
    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 
     2700
     2701        psFree(md);
     2702    }
     2703
     2704    {
     2705        psMetadata      *md;
     2706        magicSkyfileMaskRow *object;
     2707        bool            status;
     2708
     2709        object = magicSkyfileMaskRowAlloc(-64, -64, "a string");
     2710        if (!object) {
     2711            exit(EXIT_FAILURE);
     2712        }
     2713
     2714        md = magicSkyfileMaskMetadataFromObject(object);
     2715        if (!md) {
     2716            exit(EXIT_FAILURE);
     2717        }
     2718
     2719        psFree(object);
     2720
     2721            psFree(md);
     2722            exit(EXIT_FAILURE);
     2723        }
    13312724            psFree(md);
    13322725            exit(EXIT_FAILURE);
    13332726        }
    13342727        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)) {
    1509             psFree(md);
    1510             exit(EXIT_FAILURE);
    1511         }
    1512         if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
    1513             psFree(md);
    1514             exit(EXIT_FAILURE);
    1515         }
    1516         if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) {
    1517             psFree(md);
    1518             exit(EXIT_FAILURE);
    1519         }
    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         }
    1654             psFree(md);
    1655             exit(EXIT_FAILURE);
    1656         }
    1657         if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
    1658             psFree(md);
    1659             exit(EXIT_FAILURE);
    1660         }
    1661         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    1662             psFree(md);
    1663             exit(EXIT_FAILURE);
    1664         }
    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) {
    1827             psFree(md);
    1828             exit(EXIT_FAILURE);
    1829         }
    1830         if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
    1831             psFree(md);
    1832             exit(EXIT_FAILURE);
    1833         }
    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) {
    1902             psFree(md);
    1903             exit(EXIT_FAILURE);
    1904         }
    1905         if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
    1906             psFree(md);
    1907             exit(EXIT_FAILURE);
    1908         }
    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         }
    1948         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    1949             psFree(md);
    1950             exit(EXIT_FAILURE);
    1951         }
    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)) {
    2094             psFree(md);
    2095             exit(EXIT_FAILURE);
    2096         }
    2097         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    2098             psFree(md);
    2099             exit(EXIT_FAILURE);
    2100         }
    2101         if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
    2102             psFree(md);
    2103             exit(EXIT_FAILURE);
    2104         }
    2105         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
    2106             psFree(md);
    2107             exit(EXIT_FAILURE);
    2108         }
    2109         if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
    2110             psFree(md);
    2111             exit(EXIT_FAILURE);
    2112         }
    2113         if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
    2114             psFree(md);
    2115             exit(EXIT_FAILURE);
    2116         }
    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) {
    2130             psFree(md);
    2131             exit(EXIT_FAILURE);
    2132         }
    2133         if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
    2134             psFree(md);
    2135             exit(EXIT_FAILURE);
    2136         }
    2137         if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
    2138             psFree(md);
    2139             exit(EXIT_FAILURE);
    2140         }
    2141         if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
    2142             psFree(md);
    2143             exit(EXIT_FAILURE);
    2144         }
    2145         if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
    2146             psFree(md);
    2147             exit(EXIT_FAILURE);
    2148         }
    2149         if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
    2150             psFree(md);
    2151             exit(EXIT_FAILURE);
    2152         }
    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)) {
    2192             psFree(md);
    2193             exit(EXIT_FAILURE);
    2194         }
    2195         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
    2196             psFree(md);
    2197             exit(EXIT_FAILURE);
    2198         }
    2199         if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
    2200             psFree(md);
    2201             exit(EXIT_FAILURE);
    2202         }
    2203         if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
    2204             psFree(md);
    2205             exit(EXIT_FAILURE);
    2206         }
    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) {
    2220             psFree(md);
    2221             exit(EXIT_FAILURE);
    2222         }
    2223         if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
    2224             psFree(md);
    2225             exit(EXIT_FAILURE);
    2226         }
    2227         if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
    2228             psFree(md);
    2229             exit(EXIT_FAILURE);
    2230         }
    2231         if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
    2232             psFree(md);
    2233             exit(EXIT_FAILURE);
    2234         }
    2235         if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
    2236             psFree(md);
    2237             exit(EXIT_FAILURE);
    2238         }
    2239         if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
    2240             psFree(md);
    2241             exit(EXIT_FAILURE);
    2242         }
    2243         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
    2244             psFree(md);
    2245             exit(EXIT_FAILURE);
    2246         }
    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) {
    2279             psFree(md);
    2280             exit(EXIT_FAILURE);
    2281         }
    2282         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
    2283             psFree(md);
    2284             exit(EXIT_FAILURE);
    2285         }
    2286         if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
    2287             psFree(md);
    2288             exit(EXIT_FAILURE);
    2289         }
    2290         if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
    2291             psFree(md);
    2292             exit(EXIT_FAILURE);
    2293         }
    2294         if (!psMetadataLookupBool(&status, md, "accept") == true) {
    2295             psFree(md);
    2296             exit(EXIT_FAILURE);
    2297         }
    22982728            psFree(md);
    22992729            exit(EXIT_FAILURE);
  • trunk/ippdb/tests/objectfrommetadata.c

    r15420 r15421  
    1010    {
    1111        psMetadata      *md;
     12        pzDataStoreRow  *object;
     13
     14        md = psMetadataAlloc();
     15        if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
     16            psFree(md);
     17            exit(EXIT_FAILURE);
     18        }
     19        if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
     20            psFree(md);
     21            exit(EXIT_FAILURE);
     22        }
     23        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     24            psFree(md);
     25            exit(EXIT_FAILURE);
     26        }
     27
     28        object = pzDataStoreObjectFromMetadata(md);
     29        if (!object) {
     30            psFree(md);
     31            exit(EXIT_FAILURE);
     32        }
     33
     34        psFree(md);
     35
     36        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
     37            psFree(object);
     38            exit(EXIT_FAILURE);
     39        }
     40        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
     41            psFree(object);
     42            exit(EXIT_FAILURE);
     43        }
     44        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     45            psFree(object);
     46            exit(EXIT_FAILURE);
     47        }
     48
     49        psFree(object);
     50    }
     51
     52    {
     53        psMetadata      *md;
    1254        summitExpRow    *object;
    1355
     
    237279            exit(EXIT_FAILURE);
    238280        }
    239             psFree(md);
    240             exit(EXIT_FAILURE);
    241         }
    242281
    243282        object = pzPendingImfileObjectFromMetadata(md);
     
    269308            exit(EXIT_FAILURE);
    270309        }
    271             psFree(object);
    272             exit(EXIT_FAILURE);
    273         }
    274310
    275311        psFree(object);
     
    343379            exit(EXIT_FAILURE);
    344380        }
    345             psFree(md);
    346             exit(EXIT_FAILURE);
    347         }
    348381        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    349382            psFree(md);
     
    379412            exit(EXIT_FAILURE);
    380413        }
    381             psFree(object);
    382             exit(EXIT_FAILURE);
    383         }
    384414        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    385415            psFree(object);
     
    414444            exit(EXIT_FAILURE);
    415445        }
    416         if (!psMetadataAddS32(md, PS_LIST_TAIL, "imfiles", 0, NULL, -32)) {
    417             psFree(md);
    418             exit(EXIT_FAILURE);
    419         }
    420446        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
    421447            psFree(md);
     
    426452            exit(EXIT_FAILURE);
    427453        }
     454        if (!psMetadataAddStr(md, PS_LIST_TAIL, "reduction", 0, NULL, "a string")) {
     455            psFree(md);
     456            exit(EXIT_FAILURE);
     457        }
    428458
    429459        object = newExpObjectFromMetadata(md);
     
    454484            exit(EXIT_FAILURE);
    455485        }
    456         if (!object->imfiles == -32) {
    457             psFree(object);
    458             exit(EXIT_FAILURE);
    459         }
    460486        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    461487            psFree(object);
     
    466492            exit(EXIT_FAILURE);
    467493        }
     494        if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
     495            psFree(object);
     496            exit(EXIT_FAILURE);
     497        }
    468498
    469499        psFree(object);
     
    541571            exit(EXIT_FAILURE);
    542572        }
    543         if (!psMetadataAddS32(md, PS_LIST_TAIL, "imfiles", 0, NULL, -32)) {
    544             psFree(md);
    545             exit(EXIT_FAILURE);
    546         }
    547573        if (!psMetadataAddStr(md, PS_LIST_TAIL, "filelevel", 0, NULL, "a string")) {
    548574            psFree(md);
     
    553579            exit(EXIT_FAILURE);
    554580        }
     581        if (!psMetadataAddStr(md, PS_LIST_TAIL, "reduction", 0, NULL, "a string")) {
     582            psFree(md);
     583            exit(EXIT_FAILURE);
     584        }
    555585        if (!psMetadataAddStr(md, PS_LIST_TAIL, "filter", 0, NULL, "a string")) {
    556586            psFree(md);
     
    671701            exit(EXIT_FAILURE);
    672702        }
    673         if (!object->imfiles == -32) {
    674             psFree(object);
    675             exit(EXIT_FAILURE);
    676         }
    677703        if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
    678704            psFree(object);
     
    683709            exit(EXIT_FAILURE);
    684710        }
     711        if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
     712            psFree(object);
     713            exit(EXIT_FAILURE);
     714        }
    685715        if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
    686716            psFree(object);
     
    10681098            exit(EXIT_FAILURE);
    10691099        }
     1100            psFree(md);
     1101            exit(EXIT_FAILURE);
     1102        }
    10701103        if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
    10711104            psFree(md);
     
    11081141            exit(EXIT_FAILURE);
    11091142        }
     1143            psFree(object);
     1144            exit(EXIT_FAILURE);
     1145        }
    11101146        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    11111147            psFree(object);
     
    11421178    {
    11431179        psMetadata      *md;
    1144         chipInputImfileRow *object;
     1180        chipProcessedImfileRow *object;
    11451181
    11461182        md = psMetadataAlloc();
     
    11551191            exit(EXIT_FAILURE);
    11561192        }
    1157 
    1158         object = chipInputImfileObjectFromMetadata(md);
     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);
    11591278        if (!object) {
    11601279            psFree(md);
     
    11741293            exit(EXIT_FAILURE);
    11751294        }
    1176 
    1177         psFree(object);
    1178     }
    1179 
    1180     {
    1181         psMetadata      *md;
    1182         chipProcessedImfileRow *object;
    1183 
    1184         md = psMetadataAlloc();
     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")) {
    11851789            psFree(md);
    11861790            exit(EXIT_FAILURE);
     
    11931797            exit(EXIT_FAILURE);
    11941798        }
     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        }
    11951852        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    11961853            psFree(md);
    11971854            exit(EXIT_FAILURE);
    11981855        }
    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         }
    12711856        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    12721857            psFree(md);
    12731858            exit(EXIT_FAILURE);
    12741859        }
    1275             psFree(md);
    1276             exit(EXIT_FAILURE);
    1277         }
    1278 
    1279         object = chipProcessedImfileObjectFromMetadata(md);
     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, "good_frac", 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->good_frac == 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        if (!psMetadataAddF64(md, PS_LIST_TAIL, "good_frac", 0, NULL, 64.64)) {
     2085            psFree(md);
     2086            exit(EXIT_FAILURE);
     2087        }
     2088            psFree(md);
     2089            exit(EXIT_FAILURE);
     2090        }
     2091
     2092        object = diffSkyfileObjectFromMetadata(md);
     2093        if (!object) {
     2094            psFree(md);
     2095            exit(EXIT_FAILURE);
     2096        }
     2097
     2098        psFree(md);
     2099
     2100            psFree(object);
     2101            exit(EXIT_FAILURE);
     2102        }
     2103        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     2104            psFree(object);
     2105            exit(EXIT_FAILURE);
     2106        }
     2107        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     2108            psFree(object);
     2109            exit(EXIT_FAILURE);
     2110        }
     2111        if (!object->bg == 64.64) {
     2112            psFree(object);
     2113            exit(EXIT_FAILURE);
     2114        }
     2115        if (!object->bg_stdev == 64.64) {
     2116            psFree(object);
     2117            exit(EXIT_FAILURE);
     2118        }
     2119        if (!object->good_frac == 64.64) {
     2120            psFree(object);
     2121            exit(EXIT_FAILURE);
     2122        }
     2123            psFree(object);
     2124            exit(EXIT_FAILURE);
     2125        }
     2126
     2127        psFree(object);
     2128    }
     2129
     2130    {
     2131        psMetadata      *md;
     2132        stackRunRow     *object;
     2133
     2134        md = psMetadataAlloc();
     2135            psFree(md);
     2136            exit(EXIT_FAILURE);
     2137        }
     2138        if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
     2139            psFree(md);
     2140            exit(EXIT_FAILURE);
     2141        }
     2142        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
     2143            psFree(md);
     2144            exit(EXIT_FAILURE);
     2145        }
     2146        if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
     2147            psFree(md);
     2148            exit(EXIT_FAILURE);
     2149        }
     2150            psFree(md);
     2151            exit(EXIT_FAILURE);
     2152        }
     2153        if (!psMetadataAddStr(md, PS_LIST_TAIL, "skycell_id", 0, NULL, "a string")) {
     2154            psFree(md);
     2155            exit(EXIT_FAILURE);
     2156        }
     2157        if (!psMetadataAddStr(md, PS_LIST_TAIL, "tess_id", 0, NULL, "a string")) {
     2158            psFree(md);
     2159            exit(EXIT_FAILURE);
     2160        }
     2161
     2162        object = stackRunObjectFromMetadata(md);
     2163        if (!object) {
     2164            psFree(md);
     2165            exit(EXIT_FAILURE);
     2166        }
     2167
     2168        psFree(md);
     2169
     2170            psFree(object);
     2171            exit(EXIT_FAILURE);
     2172        }
     2173        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     2174            psFree(object);
     2175            exit(EXIT_FAILURE);
     2176        }
     2177        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     2178            psFree(object);
     2179            exit(EXIT_FAILURE);
     2180        }
     2181        if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
     2182            psFree(object);
     2183            exit(EXIT_FAILURE);
     2184        }
     2185            psFree(object);
     2186            exit(EXIT_FAILURE);
     2187        }
     2188        if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
     2189            psFree(object);
     2190            exit(EXIT_FAILURE);
     2191        }
     2192        if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
     2193            psFree(object);
     2194            exit(EXIT_FAILURE);
     2195        }
     2196
     2197        psFree(object);
     2198    }
     2199
     2200    {
     2201        psMetadata      *md;
     2202        stackInputSkyfileRow *object;
     2203
     2204        md = psMetadataAlloc();
     2205            psFree(md);
     2206            exit(EXIT_FAILURE);
     2207        }
     2208            psFree(md);
     2209            exit(EXIT_FAILURE);
     2210        }
     2211
     2212        object = stackInputSkyfileObjectFromMetadata(md);
     2213        if (!object) {
     2214            psFree(md);
     2215            exit(EXIT_FAILURE);
     2216        }
     2217
     2218        psFree(md);
     2219
     2220            psFree(object);
     2221            exit(EXIT_FAILURE);
     2222        }
     2223            psFree(object);
     2224            exit(EXIT_FAILURE);
     2225        }
     2226
     2227        psFree(object);
     2228    }
     2229
     2230    {
     2231        psMetadata      *md;
     2232        stackSumSkyfileRow *object;
     2233
     2234        md = psMetadataAlloc();
     2235            psFree(md);
     2236            exit(EXIT_FAILURE);
     2237        }
     2238        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     2239            psFree(md);
     2240            exit(EXIT_FAILURE);
     2241        }
     2242        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     2243            psFree(md);
     2244            exit(EXIT_FAILURE);
     2245        }
     2246        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     2247            psFree(md);
     2248            exit(EXIT_FAILURE);
     2249        }
     2250        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     2251            psFree(md);
     2252            exit(EXIT_FAILURE);
     2253        }
     2254        if (!psMetadataAddF64(md, PS_LIST_TAIL, "good_frac", 0, NULL, 64.64)) {
     2255            psFree(md);
     2256            exit(EXIT_FAILURE);
     2257        }
     2258            psFree(md);
     2259            exit(EXIT_FAILURE);
     2260        }
     2261
     2262        object = stackSumSkyfileObjectFromMetadata(md);
     2263        if (!object) {
     2264            psFree(md);
     2265            exit(EXIT_FAILURE);
     2266        }
     2267
     2268        psFree(md);
     2269
     2270            psFree(object);
     2271            exit(EXIT_FAILURE);
     2272        }
     2273        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     2274            psFree(object);
     2275            exit(EXIT_FAILURE);
     2276        }
     2277        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     2278            psFree(object);
     2279            exit(EXIT_FAILURE);
     2280        }
     2281        if (!object->bg == 64.64) {
     2282            psFree(object);
     2283            exit(EXIT_FAILURE);
     2284        }
     2285        if (!object->bg_stdev == 64.64) {
     2286            psFree(object);
     2287            exit(EXIT_FAILURE);
     2288        }
     2289        if (!object->good_frac == 64.64) {
     2290            psFree(object);
     2291            exit(EXIT_FAILURE);
     2292        }
     2293            psFree(object);
     2294            exit(EXIT_FAILURE);
     2295        }
     2296
     2297        psFree(object);
     2298    }
     2299
     2300    {
     2301        psMetadata      *md;
     2302        detRunRow       *object;
     2303
     2304        md = psMetadataAlloc();
     2305            psFree(md);
     2306            exit(EXIT_FAILURE);
     2307        }
     2308        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
     2309            psFree(md);
     2310            exit(EXIT_FAILURE);
     2311        }
     2312        if (!psMetadataAddStr(md, PS_LIST_TAIL, "det_type", 0, NULL, "a string")) {
     2313            psFree(md);
     2314            exit(EXIT_FAILURE);
     2315        }
     2316        if (!psMetadataAddStr(md, PS_LIST_TAIL, "mode", 0, NULL, "a string")) {
     2317            psFree(md);
     2318            exit(EXIT_FAILURE);
     2319        }
     2320        if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
     2321            psFree(md);
     2322            exit(EXIT_FAILURE);
     2323        }
     2324        if (!psMetadataAddStr(md, PS_LIST_TAIL, "filelevel", 0, NULL, "a string")) {
     2325            psFree(md);
     2326            exit(EXIT_FAILURE);
     2327        }
     2328        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
     2329            psFree(md);
     2330            exit(EXIT_FAILURE);
     2331        }
     2332        if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
     2333            psFree(md);
     2334            exit(EXIT_FAILURE);
     2335        }
     2336        if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
     2337            psFree(md);
     2338            exit(EXIT_FAILURE);
     2339        }
     2340        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_type", 0, NULL, "a string")) {
     2341            psFree(md);
     2342            exit(EXIT_FAILURE);
     2343        }
     2344        if (!psMetadataAddStr(md, PS_LIST_TAIL, "reduction", 0, NULL, "a string")) {
     2345            psFree(md);
     2346            exit(EXIT_FAILURE);
     2347        }
     2348        if (!psMetadataAddStr(md, PS_LIST_TAIL, "filter", 0, NULL, "a string")) {
     2349            psFree(md);
     2350            exit(EXIT_FAILURE);
     2351        }
     2352        if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass_min", 0, NULL, 32.32)) {
     2353            psFree(md);
     2354            exit(EXIT_FAILURE);
     2355        }
     2356        if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass_max", 0, NULL, 32.32)) {
     2357            psFree(md);
     2358            exit(EXIT_FAILURE);
     2359        }
     2360        if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time_min", 0, NULL, 32.32)) {
     2361            psFree(md);
     2362            exit(EXIT_FAILURE);
     2363        }
     2364        if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time_max", 0, NULL, 32.32)) {
     2365            psFree(md);
     2366            exit(EXIT_FAILURE);
     2367        }
     2368        if (!psMetadataAddF32(md, PS_LIST_TAIL, "ccd_temp_min", 0, NULL, 32.32)) {
     2369            psFree(md);
     2370            exit(EXIT_FAILURE);
     2371        }
     2372        if (!psMetadataAddF32(md, PS_LIST_TAIL, "ccd_temp_max", 0, NULL, 32.32)) {
     2373            psFree(md);
     2374            exit(EXIT_FAILURE);
     2375        }
     2376        if (!psMetadataAddF64(md, PS_LIST_TAIL, "posang_min", 0, NULL, 64.64)) {
     2377            psFree(md);
     2378            exit(EXIT_FAILURE);
     2379        }
     2380        if (!psMetadataAddF64(md, PS_LIST_TAIL, "posang_max", 0, NULL, 64.64)) {
     2381            psFree(md);
     2382            exit(EXIT_FAILURE);
     2383        }
     2384            psFree(md);
     2385            exit(EXIT_FAILURE);
     2386        }
     2387            psFree(md);
     2388            exit(EXIT_FAILURE);
     2389        }
     2390            psFree(md);
     2391            exit(EXIT_FAILURE);
     2392        }
     2393            psFree(md);
     2394            exit(EXIT_FAILURE);
     2395        }
     2396            psFree(md);
     2397            exit(EXIT_FAILURE);
     2398        }
     2399        if (!psMetadataAddF32(md, PS_LIST_TAIL, "solang_min", 0, NULL, 32.32)) {
     2400            psFree(md);
     2401            exit(EXIT_FAILURE);
     2402        }
     2403        if (!psMetadataAddF32(md, PS_LIST_TAIL, "solang_max", 0, NULL, 32.32)) {
     2404            psFree(md);
     2405            exit(EXIT_FAILURE);
     2406        }
     2407        if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
     2408            psFree(md);
     2409            exit(EXIT_FAILURE);
     2410        }
     2411        if (!psMetadataAddS32(md, PS_LIST_TAIL, "parent", 0, NULL, -32)) {
     2412            psFree(md);
     2413            exit(EXIT_FAILURE);
     2414        }
     2415
     2416        object = detRunObjectFromMetadata(md);
     2417        if (!object) {
     2418            psFree(md);
     2419            exit(EXIT_FAILURE);
     2420        }
     2421
     2422        psFree(md);
     2423
     2424            psFree(object);
     2425            exit(EXIT_FAILURE);
     2426        }
     2427        if (!object->iteration == -32) {
     2428            psFree(object);
     2429            exit(EXIT_FAILURE);
     2430        }
     2431        if (strncmp(object->det_type, "a string", MAX_STRING_LENGTH)) {
     2432            psFree(object);
     2433            exit(EXIT_FAILURE);
     2434        }
     2435        if (strncmp(object->mode, "a string", MAX_STRING_LENGTH)) {
     2436            psFree(object);
     2437            exit(EXIT_FAILURE);
     2438        }
     2439        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     2440            psFree(object);
     2441            exit(EXIT_FAILURE);
     2442        }
     2443        if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
     2444            psFree(object);
     2445            exit(EXIT_FAILURE);
     2446        }
     2447        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     2448            psFree(object);
     2449            exit(EXIT_FAILURE);
     2450        }
     2451        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
     2452            psFree(object);
     2453            exit(EXIT_FAILURE);
     2454        }
     2455        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
     2456            psFree(object);
     2457            exit(EXIT_FAILURE);
     2458        }
     2459        if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
     2460            psFree(object);
     2461            exit(EXIT_FAILURE);
     2462        }
     2463        if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
     2464            psFree(object);
     2465            exit(EXIT_FAILURE);
     2466        }
     2467        if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
     2468            psFree(object);
     2469            exit(EXIT_FAILURE);
     2470        }
     2471        if (!object->airmass_min == 32.32) {
     2472            psFree(object);
     2473            exit(EXIT_FAILURE);
     2474        }
     2475        if (!object->airmass_max == 32.32) {
     2476            psFree(object);
     2477            exit(EXIT_FAILURE);
     2478        }
     2479        if (!object->exp_time_min == 32.32) {
     2480            psFree(object);
     2481            exit(EXIT_FAILURE);
     2482        }
     2483        if (!object->exp_time_max == 32.32) {
     2484            psFree(object);
     2485            exit(EXIT_FAILURE);
     2486        }
     2487        if (!object->ccd_temp_min == 32.32) {
     2488            psFree(object);
     2489            exit(EXIT_FAILURE);
     2490        }
     2491        if (!object->ccd_temp_max == 32.32) {
     2492            psFree(object);
     2493            exit(EXIT_FAILURE);
     2494        }
     2495        if (!object->posang_min == 64.64) {
     2496            psFree(object);
     2497            exit(EXIT_FAILURE);
     2498        }
     2499        if (!object->posang_max == 64.64) {
     2500            psFree(object);
     2501            exit(EXIT_FAILURE);
     2502        }
     2503            psFree(object);
     2504            exit(EXIT_FAILURE);
     2505        }
     2506            psFree(object);
     2507            exit(EXIT_FAILURE);
     2508        }
     2509            psFree(object);
     2510            exit(EXIT_FAILURE);
     2511        }
     2512            psFree(object);
     2513            exit(EXIT_FAILURE);
     2514        }
     2515            psFree(object);
     2516            exit(EXIT_FAILURE);
     2517        }
     2518        if (!object->solang_min == 32.32) {
     2519            psFree(object);
     2520            exit(EXIT_FAILURE);
     2521        }
     2522        if (!object->solang_max == 32.32) {
     2523            psFree(object);
     2524            exit(EXIT_FAILURE);
     2525        }
     2526        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     2527            psFree(object);
     2528            exit(EXIT_FAILURE);
     2529        }
     2530        if (!object->parent == -32) {
     2531            psFree(object);
     2532            exit(EXIT_FAILURE);
     2533        }
     2534
     2535        psFree(object);
     2536    }
     2537
     2538    {
     2539        psMetadata      *md;
     2540        detInputExpRow  *object;
     2541
     2542        md = psMetadataAlloc();
     2543            psFree(md);
     2544            exit(EXIT_FAILURE);
     2545        }
     2546        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
     2547            psFree(md);
     2548            exit(EXIT_FAILURE);
     2549        }
     2550            psFree(md);
     2551            exit(EXIT_FAILURE);
     2552        }
     2553        if (!psMetadataAdd(md, PS_LIST_TAIL, "include", PS_DATA_BOOL, NULL, true)) {
     2554            psFree(md);
     2555            exit(EXIT_FAILURE);
     2556        }
     2557
     2558        object = detInputExpObjectFromMetadata(md);
     2559        if (!object) {
     2560            psFree(md);
     2561            exit(EXIT_FAILURE);
     2562        }
     2563
     2564        psFree(md);
     2565
     2566            psFree(object);
     2567            exit(EXIT_FAILURE);
     2568        }
     2569        if (!object->iteration == -32) {
     2570            psFree(object);
     2571            exit(EXIT_FAILURE);
     2572        }
     2573            psFree(object);
     2574            exit(EXIT_FAILURE);
     2575        }
     2576        if (!object->include == true) {
     2577            psFree(object);
     2578            exit(EXIT_FAILURE);
     2579        }
     2580
     2581        psFree(object);
     2582    }
     2583
     2584    {
     2585        psMetadata      *md;
     2586        detProcessedImfileRow *object;
     2587
     2588        md = psMetadataAlloc();
     2589            psFree(md);
     2590            exit(EXIT_FAILURE);
     2591        }
     2592            psFree(md);
     2593            exit(EXIT_FAILURE);
     2594        }
     2595        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
     2596            psFree(md);
     2597            exit(EXIT_FAILURE);
     2598        }
     2599        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     2600            psFree(md);
     2601            exit(EXIT_FAILURE);
     2602        }
     2603        if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
     2604            psFree(md);
     2605            exit(EXIT_FAILURE);
     2606        }
     2607        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     2608            psFree(md);
     2609            exit(EXIT_FAILURE);
     2610        }
     2611        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     2612            psFree(md);
     2613            exit(EXIT_FAILURE);
     2614        }
     2615        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     2616            psFree(md);
     2617            exit(EXIT_FAILURE);
     2618        }
     2619        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 64.64)) {
     2620            psFree(md);
     2621            exit(EXIT_FAILURE);
     2622        }
     2623        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 64.64)) {
     2624            psFree(md);
     2625            exit(EXIT_FAILURE);
     2626        }
     2627        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 64.64)) {
     2628            psFree(md);
     2629            exit(EXIT_FAILURE);
     2630        }
     2631        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
     2632            psFree(md);
     2633            exit(EXIT_FAILURE);
     2634        }
     2635        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
     2636            psFree(md);
     2637            exit(EXIT_FAILURE);
     2638        }
     2639        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
     2640            psFree(md);
     2641            exit(EXIT_FAILURE);
     2642        }
     2643        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
     2644            psFree(md);
     2645            exit(EXIT_FAILURE);
     2646        }
     2647        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
     2648            psFree(md);
     2649            exit(EXIT_FAILURE);
     2650        }
     2651        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     2652            psFree(md);
     2653            exit(EXIT_FAILURE);
     2654        }
     2655            psFree(md);
     2656            exit(EXIT_FAILURE);
     2657        }
     2658
     2659        object = detProcessedImfileObjectFromMetadata(md);
    12802660        if (!object) {
    12812661            psFree(md);
     
    12992679            exit(EXIT_FAILURE);
    13002680        }
    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) {
     2681        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     2682            psFree(object);
     2683            exit(EXIT_FAILURE);
     2684        }
     2685        if (!object->bg == 64.64) {
     2686            psFree(object);
     2687            exit(EXIT_FAILURE);
     2688        }
     2689        if (!object->bg_stdev == 64.64) {
     2690            psFree(object);
     2691            exit(EXIT_FAILURE);
     2692        }
     2693        if (!object->bg_mean_stdev == 64.64) {
     2694            psFree(object);
     2695            exit(EXIT_FAILURE);
     2696        }
     2697        if (!object->fringe_0 == 64.64) {
     2698            psFree(object);
     2699            exit(EXIT_FAILURE);
     2700        }
     2701        if (!object->fringe_1 == 64.64) {
     2702            psFree(object);
     2703            exit(EXIT_FAILURE);
     2704        }
     2705        if (!object->fringe_2 == 64.64) {
     2706            psFree(object);
     2707            exit(EXIT_FAILURE);
     2708        }
     2709        if (!object->user_1 == 64.64) {
     2710            psFree(object);
     2711            exit(EXIT_FAILURE);
     2712        }
     2713        if (!object->user_2 == 64.64) {
     2714            psFree(object);
     2715            exit(EXIT_FAILURE);
     2716        }
     2717        if (!object->user_3 == 64.64) {
     2718            psFree(object);
     2719            exit(EXIT_FAILURE);
     2720        }
     2721        if (!object->user_4 == 64.64) {
     2722            psFree(object);
     2723            exit(EXIT_FAILURE);
     2724        }
     2725        if (!object->user_5 == 64.64) {
    13702726            psFree(object);
    13712727            exit(EXIT_FAILURE);
     
    13842740    {
    13852741        psMetadata      *md;
    1386         chipMaskRow     *object;
    1387 
    1388         md = psMetadataAlloc();
     2742        detProcessedExpRow *object;
     2743
     2744        md = psMetadataAlloc();
     2745            psFree(md);
     2746            exit(EXIT_FAILURE);
     2747        }
     2748            psFree(md);
     2749            exit(EXIT_FAILURE);
     2750        }
     2751        if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
     2752            psFree(md);
     2753            exit(EXIT_FAILURE);
     2754        }
     2755        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     2756            psFree(md);
     2757            exit(EXIT_FAILURE);
     2758        }
     2759        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     2760            psFree(md);
     2761            exit(EXIT_FAILURE);
     2762        }
     2763        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     2764            psFree(md);
     2765            exit(EXIT_FAILURE);
     2766        }
     2767        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 64.64)) {
     2768            psFree(md);
     2769            exit(EXIT_FAILURE);
     2770        }
     2771        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 64.64)) {
     2772            psFree(md);
     2773            exit(EXIT_FAILURE);
     2774        }
     2775        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 64.64)) {
     2776            psFree(md);
     2777            exit(EXIT_FAILURE);
     2778        }
     2779        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
     2780            psFree(md);
     2781            exit(EXIT_FAILURE);
     2782        }
     2783        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
     2784            psFree(md);
     2785            exit(EXIT_FAILURE);
     2786        }
     2787        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
     2788            psFree(md);
     2789            exit(EXIT_FAILURE);
     2790        }
     2791        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
     2792            psFree(md);
     2793            exit(EXIT_FAILURE);
     2794        }
     2795        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
     2796            psFree(md);
     2797            exit(EXIT_FAILURE);
     2798        }
     2799        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     2800            psFree(md);
     2801            exit(EXIT_FAILURE);
     2802        }
     2803            psFree(md);
     2804            exit(EXIT_FAILURE);
     2805        }
     2806
     2807        object = detProcessedExpObjectFromMetadata(md);
     2808        if (!object) {
     2809            psFree(md);
     2810            exit(EXIT_FAILURE);
     2811        }
     2812
     2813        psFree(md);
     2814
     2815            psFree(object);
     2816            exit(EXIT_FAILURE);
     2817        }
     2818            psFree(object);
     2819            exit(EXIT_FAILURE);
     2820        }
     2821        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     2822            psFree(object);
     2823            exit(EXIT_FAILURE);
     2824        }
     2825        if (!object->bg == 64.64) {
     2826            psFree(object);
     2827            exit(EXIT_FAILURE);
     2828        }
     2829        if (!object->bg_stdev == 64.64) {
     2830            psFree(object);
     2831            exit(EXIT_FAILURE);
     2832        }
     2833        if (!object->bg_mean_stdev == 64.64) {
     2834            psFree(object);
     2835            exit(EXIT_FAILURE);
     2836        }
     2837        if (!object->fringe_0 == 64.64) {
     2838            psFree(object);
     2839            exit(EXIT_FAILURE);
     2840        }
     2841        if (!object->fringe_1 == 64.64) {
     2842            psFree(object);
     2843            exit(EXIT_FAILURE);
     2844        }
     2845        if (!object->fringe_2 == 64.64) {
     2846            psFree(object);
     2847            exit(EXIT_FAILURE);
     2848        }
     2849        if (!object->user_1 == 64.64) {
     2850            psFree(object);
     2851            exit(EXIT_FAILURE);
     2852        }
     2853        if (!object->user_2 == 64.64) {
     2854            psFree(object);
     2855            exit(EXIT_FAILURE);
     2856        }
     2857        if (!object->user_3 == 64.64) {
     2858            psFree(object);
     2859            exit(EXIT_FAILURE);
     2860        }
     2861        if (!object->user_4 == 64.64) {
     2862            psFree(object);
     2863            exit(EXIT_FAILURE);
     2864        }
     2865        if (!object->user_5 == 64.64) {
     2866            psFree(object);
     2867            exit(EXIT_FAILURE);
     2868        }
     2869        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     2870            psFree(object);
     2871            exit(EXIT_FAILURE);
     2872        }
     2873            psFree(object);
     2874            exit(EXIT_FAILURE);
     2875        }
     2876
     2877        psFree(object);
     2878    }
     2879
     2880    {
     2881        psMetadata      *md;
     2882        detStackedImfileRow *object;
     2883
     2884        md = psMetadataAlloc();
     2885            psFree(md);
     2886            exit(EXIT_FAILURE);
     2887        }
     2888        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
     2889            psFree(md);
     2890            exit(EXIT_FAILURE);
     2891        }
     2892        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
     2893            psFree(md);
     2894            exit(EXIT_FAILURE);
     2895        }
     2896        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     2897            psFree(md);
     2898            exit(EXIT_FAILURE);
     2899        }
     2900        if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
     2901            psFree(md);
     2902            exit(EXIT_FAILURE);
     2903        }
     2904        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     2905            psFree(md);
     2906            exit(EXIT_FAILURE);
     2907        }
     2908        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     2909            psFree(md);
     2910            exit(EXIT_FAILURE);
     2911        }
     2912        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     2913            psFree(md);
     2914            exit(EXIT_FAILURE);
     2915        }
     2916        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
     2917            psFree(md);
     2918            exit(EXIT_FAILURE);
     2919        }
     2920        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
     2921            psFree(md);
     2922            exit(EXIT_FAILURE);
     2923        }
     2924        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
     2925            psFree(md);
     2926            exit(EXIT_FAILURE);
     2927        }
     2928        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
     2929            psFree(md);
     2930            exit(EXIT_FAILURE);
     2931        }
     2932        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
     2933            psFree(md);
     2934            exit(EXIT_FAILURE);
     2935        }
     2936            psFree(md);
     2937            exit(EXIT_FAILURE);
     2938        }
     2939
     2940        object = detStackedImfileObjectFromMetadata(md);
     2941        if (!object) {
     2942            psFree(md);
     2943            exit(EXIT_FAILURE);
     2944        }
     2945
     2946        psFree(md);
     2947
     2948            psFree(object);
     2949            exit(EXIT_FAILURE);
     2950        }
     2951        if (!object->iteration == -32) {
     2952            psFree(object);
     2953            exit(EXIT_FAILURE);
     2954        }
     2955        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     2956            psFree(object);
     2957            exit(EXIT_FAILURE);
     2958        }
     2959        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     2960            psFree(object);
     2961            exit(EXIT_FAILURE);
     2962        }
     2963        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     2964            psFree(object);
     2965            exit(EXIT_FAILURE);
     2966        }
     2967        if (!object->bg == 64.64) {
     2968            psFree(object);
     2969            exit(EXIT_FAILURE);
     2970        }
     2971        if (!object->bg_stdev == 64.64) {
     2972            psFree(object);
     2973            exit(EXIT_FAILURE);
     2974        }
     2975        if (!object->bg_mean_stdev == 64.64) {
     2976            psFree(object);
     2977            exit(EXIT_FAILURE);
     2978        }
     2979        if (!object->user_1 == 64.64) {
     2980            psFree(object);
     2981            exit(EXIT_FAILURE);
     2982        }
     2983        if (!object->user_2 == 64.64) {
     2984            psFree(object);
     2985            exit(EXIT_FAILURE);
     2986        }
     2987        if (!object->user_3 == 64.64) {
     2988            psFree(object);
     2989            exit(EXIT_FAILURE);
     2990        }
     2991        if (!object->user_4 == 64.64) {
     2992            psFree(object);
     2993            exit(EXIT_FAILURE);
     2994        }
     2995        if (!object->user_5 == 64.64) {
     2996            psFree(object);
     2997            exit(EXIT_FAILURE);
     2998        }
     2999            psFree(object);
     3000            exit(EXIT_FAILURE);
     3001        }
     3002
     3003        psFree(object);
     3004    }
     3005
     3006    {
     3007        psMetadata      *md;
     3008        detNormalizedStatImfileRow *object;
     3009
     3010        md = psMetadataAlloc();
     3011            psFree(md);
     3012            exit(EXIT_FAILURE);
     3013        }
     3014        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
     3015            psFree(md);
     3016            exit(EXIT_FAILURE);
     3017        }
     3018        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
     3019            psFree(md);
     3020            exit(EXIT_FAILURE);
     3021        }
     3022        if (!psMetadataAddF32(md, PS_LIST_TAIL, "norm", 0, NULL, 32.32)) {
     3023            psFree(md);
     3024            exit(EXIT_FAILURE);
     3025        }
     3026            psFree(md);
     3027            exit(EXIT_FAILURE);
     3028        }
     3029
     3030        object = detNormalizedStatImfileObjectFromMetadata(md);
     3031        if (!object) {
     3032            psFree(md);
     3033            exit(EXIT_FAILURE);
     3034        }
     3035
     3036        psFree(md);
     3037
     3038            psFree(object);
     3039            exit(EXIT_FAILURE);
     3040        }
     3041        if (!object->iteration == -32) {
     3042            psFree(object);
     3043            exit(EXIT_FAILURE);
     3044        }
     3045        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     3046            psFree(object);
     3047            exit(EXIT_FAILURE);
     3048        }
     3049        if (!object->norm == 32.32) {
     3050            psFree(object);
     3051            exit(EXIT_FAILURE);
     3052        }
     3053            psFree(object);
     3054            exit(EXIT_FAILURE);
     3055        }
     3056
     3057        psFree(object);
     3058    }
     3059
     3060    {
     3061        psMetadata      *md;
     3062        detNormalizedImfileRow *object;
     3063
     3064        md = psMetadataAlloc();
     3065            psFree(md);
     3066            exit(EXIT_FAILURE);
     3067        }
     3068        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
     3069            psFree(md);
     3070            exit(EXIT_FAILURE);
     3071        }
     3072        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
     3073            psFree(md);
     3074            exit(EXIT_FAILURE);
     3075        }
     3076        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     3077            psFree(md);
     3078            exit(EXIT_FAILURE);
     3079        }
     3080        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     3081            psFree(md);
     3082            exit(EXIT_FAILURE);
     3083        }
     3084        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     3085            psFree(md);
     3086            exit(EXIT_FAILURE);
     3087        }
     3088        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     3089            psFree(md);
     3090            exit(EXIT_FAILURE);
     3091        }
     3092        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
     3093            psFree(md);
     3094            exit(EXIT_FAILURE);
     3095        }
     3096        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
     3097            psFree(md);
     3098            exit(EXIT_FAILURE);
     3099        }
     3100        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
     3101            psFree(md);
     3102            exit(EXIT_FAILURE);
     3103        }
     3104        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
     3105            psFree(md);
     3106            exit(EXIT_FAILURE);
     3107        }
     3108        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
     3109            psFree(md);
     3110            exit(EXIT_FAILURE);
     3111        }
     3112        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     3113            psFree(md);
     3114            exit(EXIT_FAILURE);
     3115        }
     3116            psFree(md);
     3117            exit(EXIT_FAILURE);
     3118        }
     3119
     3120        object = detNormalizedImfileObjectFromMetadata(md);
     3121        if (!object) {
     3122            psFree(md);
     3123            exit(EXIT_FAILURE);
     3124        }
     3125
     3126        psFree(md);
     3127
     3128            psFree(object);
     3129            exit(EXIT_FAILURE);
     3130        }
     3131        if (!object->iteration == -32) {
     3132            psFree(object);
     3133            exit(EXIT_FAILURE);
     3134        }
     3135        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     3136            psFree(object);
     3137            exit(EXIT_FAILURE);
     3138        }
     3139        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     3140            psFree(object);
     3141            exit(EXIT_FAILURE);
     3142        }
     3143        if (!object->bg == 64.64) {
     3144            psFree(object);
     3145            exit(EXIT_FAILURE);
     3146        }
     3147        if (!object->bg_stdev == 64.64) {
     3148            psFree(object);
     3149            exit(EXIT_FAILURE);
     3150        }
     3151        if (!object->bg_mean_stdev == 64.64) {
     3152            psFree(object);
     3153            exit(EXIT_FAILURE);
     3154        }
     3155        if (!object->user_1 == 64.64) {
     3156            psFree(object);
     3157            exit(EXIT_FAILURE);
     3158        }
     3159        if (!object->user_2 == 64.64) {
     3160            psFree(object);
     3161            exit(EXIT_FAILURE);
     3162        }
     3163        if (!object->user_3 == 64.64) {
     3164            psFree(object);
     3165            exit(EXIT_FAILURE);
     3166        }
     3167        if (!object->user_4 == 64.64) {
     3168            psFree(object);
     3169            exit(EXIT_FAILURE);
     3170        }
     3171        if (!object->user_5 == 64.64) {
     3172            psFree(object);
     3173            exit(EXIT_FAILURE);
     3174        }
     3175        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     3176            psFree(object);
     3177            exit(EXIT_FAILURE);
     3178        }
     3179            psFree(object);
     3180            exit(EXIT_FAILURE);
     3181        }
     3182
     3183        psFree(object);
     3184    }
     3185
     3186    {
     3187        psMetadata      *md;
     3188        detNormalizedExpRow *object;
     3189
     3190        md = psMetadataAlloc();
     3191            psFree(md);
     3192            exit(EXIT_FAILURE);
     3193        }
     3194        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
     3195            psFree(md);
     3196            exit(EXIT_FAILURE);
     3197        }
     3198        if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
     3199            psFree(md);
     3200            exit(EXIT_FAILURE);
     3201        }
     3202        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     3203            psFree(md);
     3204            exit(EXIT_FAILURE);
     3205        }
     3206        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     3207            psFree(md);
     3208            exit(EXIT_FAILURE);
     3209        }
     3210        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     3211            psFree(md);
     3212            exit(EXIT_FAILURE);
     3213        }
     3214        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
     3215            psFree(md);
     3216            exit(EXIT_FAILURE);
     3217        }
     3218        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
     3219            psFree(md);
     3220            exit(EXIT_FAILURE);
     3221        }
     3222        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
     3223            psFree(md);
     3224            exit(EXIT_FAILURE);
     3225        }
     3226        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
     3227            psFree(md);
     3228            exit(EXIT_FAILURE);
     3229        }
     3230        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
     3231            psFree(md);
     3232            exit(EXIT_FAILURE);
     3233        }
     3234        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     3235            psFree(md);
     3236            exit(EXIT_FAILURE);
     3237        }
     3238            psFree(md);
     3239            exit(EXIT_FAILURE);
     3240        }
     3241
     3242        object = detNormalizedExpObjectFromMetadata(md);
     3243        if (!object) {
     3244            psFree(md);
     3245            exit(EXIT_FAILURE);
     3246        }
     3247
     3248        psFree(md);
     3249
     3250            psFree(object);
     3251            exit(EXIT_FAILURE);
     3252        }
     3253        if (!object->iteration == -32) {
     3254            psFree(object);
     3255            exit(EXIT_FAILURE);
     3256        }
     3257        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     3258            psFree(object);
     3259            exit(EXIT_FAILURE);
     3260        }
     3261        if (!object->bg == 64.64) {
     3262            psFree(object);
     3263            exit(EXIT_FAILURE);
     3264        }
     3265        if (!object->bg_stdev == 64.64) {
     3266            psFree(object);
     3267            exit(EXIT_FAILURE);
     3268        }
     3269        if (!object->bg_mean_stdev == 64.64) {
     3270            psFree(object);
     3271            exit(EXIT_FAILURE);
     3272        }
     3273        if (!object->user_1 == 64.64) {
     3274            psFree(object);
     3275            exit(EXIT_FAILURE);
     3276        }
     3277        if (!object->user_2 == 64.64) {
     3278            psFree(object);
     3279            exit(EXIT_FAILURE);
     3280        }
     3281        if (!object->user_3 == 64.64) {
     3282            psFree(object);
     3283            exit(EXIT_FAILURE);
     3284        }
     3285        if (!object->user_4 == 64.64) {
     3286            psFree(object);
     3287            exit(EXIT_FAILURE);
     3288        }
     3289        if (!object->user_5 == 64.64) {
     3290            psFree(object);
     3291            exit(EXIT_FAILURE);
     3292        }
     3293        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     3294            psFree(object);
     3295            exit(EXIT_FAILURE);
     3296        }
     3297            psFree(object);
     3298            exit(EXIT_FAILURE);
     3299        }
     3300
     3301        psFree(object);
     3302    }
     3303
     3304    {
     3305        psMetadata      *md;
     3306        detResidImfileRow *object;
     3307
     3308        md = psMetadataAlloc();
     3309            psFree(md);
     3310            exit(EXIT_FAILURE);
     3311        }
     3312        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
     3313            psFree(md);
     3314            exit(EXIT_FAILURE);
     3315        }
     3316            psFree(md);
     3317            exit(EXIT_FAILURE);
     3318        }
     3319        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
     3320            psFree(md);
     3321            exit(EXIT_FAILURE);
     3322        }
     3323        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     3324            psFree(md);
     3325            exit(EXIT_FAILURE);
     3326        }
     3327        if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
     3328            psFree(md);
     3329            exit(EXIT_FAILURE);
     3330        }
     3331        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     3332            psFree(md);
     3333            exit(EXIT_FAILURE);
     3334        }
     3335        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     3336            psFree(md);
     3337            exit(EXIT_FAILURE);
     3338        }
     3339        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     3340            psFree(md);
     3341            exit(EXIT_FAILURE);
     3342        }
     3343        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_skewness", 0, NULL, 64.64)) {
     3344            psFree(md);
     3345            exit(EXIT_FAILURE);
     3346        }
     3347        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_kurtosis", 0, NULL, 64.64)) {
     3348            psFree(md);
     3349            exit(EXIT_FAILURE);
     3350        }
     3351        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bin_stdev", 0, NULL, 64.64)) {
     3352            psFree(md);
     3353            exit(EXIT_FAILURE);
     3354        }
     3355        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 64.64)) {
     3356            psFree(md);
     3357            exit(EXIT_FAILURE);
     3358        }
     3359        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 64.64)) {
     3360            psFree(md);
     3361            exit(EXIT_FAILURE);
     3362        }
     3363        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 64.64)) {
     3364            psFree(md);
     3365            exit(EXIT_FAILURE);
     3366        }
     3367        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_resid_0", 0, NULL, 64.64)) {
     3368            psFree(md);
     3369            exit(EXIT_FAILURE);
     3370        }
     3371        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_resid_1", 0, NULL, 64.64)) {
     3372            psFree(md);
     3373            exit(EXIT_FAILURE);
     3374        }
     3375        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_resid_2", 0, NULL, 64.64)) {
     3376            psFree(md);
     3377            exit(EXIT_FAILURE);
     3378        }
     3379        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
     3380            psFree(md);
     3381            exit(EXIT_FAILURE);
     3382        }
     3383        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
     3384            psFree(md);
     3385            exit(EXIT_FAILURE);
     3386        }
     3387        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
     3388            psFree(md);
     3389            exit(EXIT_FAILURE);
     3390        }
     3391        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
     3392            psFree(md);
     3393            exit(EXIT_FAILURE);
     3394        }
     3395        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
     3396            psFree(md);
     3397            exit(EXIT_FAILURE);
     3398        }
     3399        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     3400            psFree(md);
     3401            exit(EXIT_FAILURE);
     3402        }
     3403            psFree(md);
     3404            exit(EXIT_FAILURE);
     3405        }
     3406
     3407        object = detResidImfileObjectFromMetadata(md);
     3408        if (!object) {
     3409            psFree(md);
     3410            exit(EXIT_FAILURE);
     3411        }
     3412
     3413        psFree(md);
     3414
     3415            psFree(object);
     3416            exit(EXIT_FAILURE);
     3417        }
     3418        if (!object->iteration == -32) {
     3419            psFree(object);
     3420            exit(EXIT_FAILURE);
     3421        }
     3422            psFree(object);
     3423            exit(EXIT_FAILURE);
     3424        }
     3425        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     3426            psFree(object);
     3427            exit(EXIT_FAILURE);
     3428        }
     3429        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     3430            psFree(object);
     3431            exit(EXIT_FAILURE);
     3432        }
     3433        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     3434            psFree(object);
     3435            exit(EXIT_FAILURE);
     3436        }
     3437        if (!object->bg == 64.64) {
     3438            psFree(object);
     3439            exit(EXIT_FAILURE);
     3440        }
     3441        if (!object->bg_stdev == 64.64) {
     3442            psFree(object);
     3443            exit(EXIT_FAILURE);
     3444        }
     3445        if (!object->bg_mean_stdev == 64.64) {
     3446            psFree(object);
     3447            exit(EXIT_FAILURE);
     3448        }
     3449        if (!object->bg_skewness == 64.64) {
     3450            psFree(object);
     3451            exit(EXIT_FAILURE);
     3452        }
     3453        if (!object->bg_kurtosis == 64.64) {
     3454            psFree(object);
     3455            exit(EXIT_FAILURE);
     3456        }
     3457        if (!object->bin_stdev == 64.64) {
     3458            psFree(object);
     3459            exit(EXIT_FAILURE);
     3460        }
     3461        if (!object->fringe_0 == 64.64) {
     3462            psFree(object);
     3463            exit(EXIT_FAILURE);
     3464        }
     3465        if (!object->fringe_1 == 64.64) {
     3466            psFree(object);
     3467            exit(EXIT_FAILURE);
     3468        }
     3469        if (!object->fringe_2 == 64.64) {
     3470            psFree(object);
     3471            exit(EXIT_FAILURE);
     3472        }
     3473        if (!object->fringe_resid_0 == 64.64) {
     3474            psFree(object);
     3475            exit(EXIT_FAILURE);
     3476        }
     3477        if (!object->fringe_resid_1 == 64.64) {
     3478            psFree(object);
     3479            exit(EXIT_FAILURE);
     3480        }
     3481        if (!object->fringe_resid_2 == 64.64) {
     3482            psFree(object);
     3483            exit(EXIT_FAILURE);
     3484        }
     3485        if (!object->user_1 == 64.64) {
     3486            psFree(object);
     3487            exit(EXIT_FAILURE);
     3488        }
     3489        if (!object->user_2 == 64.64) {
     3490            psFree(object);
     3491            exit(EXIT_FAILURE);
     3492        }
     3493        if (!object->user_3 == 64.64) {
     3494            psFree(object);
     3495            exit(EXIT_FAILURE);
     3496        }
     3497        if (!object->user_4 == 64.64) {
     3498            psFree(object);
     3499            exit(EXIT_FAILURE);
     3500        }
     3501        if (!object->user_5 == 64.64) {
     3502            psFree(object);
     3503            exit(EXIT_FAILURE);
     3504        }
     3505        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     3506            psFree(object);
     3507            exit(EXIT_FAILURE);
     3508        }
     3509            psFree(object);
     3510            exit(EXIT_FAILURE);
     3511        }
     3512
     3513        psFree(object);
     3514    }
     3515
     3516    {
     3517        psMetadata      *md;
     3518        detResidExpRow  *object;
     3519
     3520        md = psMetadataAlloc();
     3521            psFree(md);
     3522            exit(EXIT_FAILURE);
     3523        }
     3524        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
     3525            psFree(md);
     3526            exit(EXIT_FAILURE);
     3527        }
     3528            psFree(md);
     3529            exit(EXIT_FAILURE);
     3530        }
     3531        if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
     3532            psFree(md);
     3533            exit(EXIT_FAILURE);
     3534        }
     3535        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     3536            psFree(md);
     3537            exit(EXIT_FAILURE);
     3538        }
     3539        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     3540            psFree(md);
     3541            exit(EXIT_FAILURE);
     3542        }
     3543        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     3544            psFree(md);
     3545            exit(EXIT_FAILURE);
     3546        }
     3547        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_skewness", 0, NULL, 64.64)) {
     3548            psFree(md);
     3549            exit(EXIT_FAILURE);
     3550        }
     3551        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_kurtosis", 0, NULL, 64.64)) {
     3552            psFree(md);
     3553            exit(EXIT_FAILURE);
     3554        }
     3555        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bin_stdev", 0, NULL, 64.64)) {
     3556            psFree(md);
     3557            exit(EXIT_FAILURE);
     3558        }
     3559        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 64.64)) {
     3560            psFree(md);
     3561            exit(EXIT_FAILURE);
     3562        }
     3563        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 64.64)) {
     3564            psFree(md);
     3565            exit(EXIT_FAILURE);
     3566        }
     3567        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 64.64)) {
     3568            psFree(md);
     3569            exit(EXIT_FAILURE);
     3570        }
     3571        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_resid_0", 0, NULL, 64.64)) {
     3572            psFree(md);
     3573            exit(EXIT_FAILURE);
     3574        }
     3575        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_resid_1", 0, NULL, 64.64)) {
     3576            psFree(md);
     3577            exit(EXIT_FAILURE);
     3578        }
     3579        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_resid_2", 0, NULL, 64.64)) {
     3580            psFree(md);
     3581            exit(EXIT_FAILURE);
     3582        }
     3583        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
     3584            psFree(md);
     3585            exit(EXIT_FAILURE);
     3586        }
     3587        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
     3588            psFree(md);
     3589            exit(EXIT_FAILURE);
     3590        }
     3591        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
     3592            psFree(md);
     3593            exit(EXIT_FAILURE);
     3594        }
     3595        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
     3596            psFree(md);
     3597            exit(EXIT_FAILURE);
     3598        }
     3599        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
     3600            psFree(md);
     3601            exit(EXIT_FAILURE);
     3602        }
     3603        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     3604            psFree(md);
     3605            exit(EXIT_FAILURE);
     3606        }
     3607        if (!psMetadataAdd(md, PS_LIST_TAIL, "accept", PS_DATA_BOOL, NULL, true)) {
     3608            psFree(md);
     3609            exit(EXIT_FAILURE);
     3610        }
     3611            psFree(md);
     3612            exit(EXIT_FAILURE);
     3613        }
     3614
     3615        object = detResidExpObjectFromMetadata(md);
     3616        if (!object) {
     3617            psFree(md);
     3618            exit(EXIT_FAILURE);
     3619        }
     3620
     3621        psFree(md);
     3622
     3623            psFree(object);
     3624            exit(EXIT_FAILURE);
     3625        }
     3626        if (!object->iteration == -32) {
     3627            psFree(object);
     3628            exit(EXIT_FAILURE);
     3629        }
     3630            psFree(object);
     3631            exit(EXIT_FAILURE);
     3632        }
     3633        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     3634            psFree(object);
     3635            exit(EXIT_FAILURE);
     3636        }
     3637        if (!object->bg == 64.64) {
     3638            psFree(object);
     3639            exit(EXIT_FAILURE);
     3640        }
     3641        if (!object->bg_stdev == 64.64) {
     3642            psFree(object);
     3643            exit(EXIT_FAILURE);
     3644        }
     3645        if (!object->bg_mean_stdev == 64.64) {
     3646            psFree(object);
     3647            exit(EXIT_FAILURE);
     3648        }
     3649        if (!object->bg_skewness == 64.64) {
     3650            psFree(object);
     3651            exit(EXIT_FAILURE);
     3652        }
     3653        if (!object->bg_kurtosis == 64.64) {
     3654            psFree(object);
     3655            exit(EXIT_FAILURE);
     3656        }
     3657        if (!object->bin_stdev == 64.64) {
     3658            psFree(object);
     3659            exit(EXIT_FAILURE);
     3660        }
     3661        if (!object->fringe_0 == 64.64) {
     3662            psFree(object);
     3663            exit(EXIT_FAILURE);
     3664        }
     3665        if (!object->fringe_1 == 64.64) {
     3666            psFree(object);
     3667            exit(EXIT_FAILURE);
     3668        }
     3669        if (!object->fringe_2 == 64.64) {
     3670            psFree(object);
     3671            exit(EXIT_FAILURE);
     3672        }
     3673        if (!object->fringe_resid_0 == 64.64) {
     3674            psFree(object);
     3675            exit(EXIT_FAILURE);
     3676        }
     3677        if (!object->fringe_resid_1 == 64.64) {
     3678            psFree(object);
     3679            exit(EXIT_FAILURE);
     3680        }
     3681        if (!object->fringe_resid_2 == 64.64) {
     3682            psFree(object);
     3683            exit(EXIT_FAILURE);
     3684        }
     3685        if (!object->user_1 == 64.64) {
     3686            psFree(object);
     3687            exit(EXIT_FAILURE);
     3688        }
     3689        if (!object->user_2 == 64.64) {
     3690            psFree(object);
     3691            exit(EXIT_FAILURE);
     3692        }
     3693        if (!object->user_3 == 64.64) {
     3694            psFree(object);
     3695            exit(EXIT_FAILURE);
     3696        }
     3697        if (!object->user_4 == 64.64) {
     3698            psFree(object);
     3699            exit(EXIT_FAILURE);
     3700        }
     3701        if (!object->user_5 == 64.64) {
     3702            psFree(object);
     3703            exit(EXIT_FAILURE);
     3704        }
     3705        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     3706            psFree(object);
     3707            exit(EXIT_FAILURE);
     3708        }
     3709        if (!object->accept == true) {
     3710            psFree(object);
     3711            exit(EXIT_FAILURE);
     3712        }
     3713            psFree(object);
     3714            exit(EXIT_FAILURE);
     3715        }
     3716
     3717        psFree(object);
     3718    }
     3719
     3720    {
     3721        psMetadata      *md;
     3722        detRunSummaryRow *object;
     3723
     3724        md = psMetadataAlloc();
     3725            psFree(md);
     3726            exit(EXIT_FAILURE);
     3727        }
     3728        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
     3729            psFree(md);
     3730            exit(EXIT_FAILURE);
     3731        }
     3732        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     3733            psFree(md);
     3734            exit(EXIT_FAILURE);
     3735        }
     3736        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     3737            psFree(md);
     3738            exit(EXIT_FAILURE);
     3739        }
     3740        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     3741            psFree(md);
     3742            exit(EXIT_FAILURE);
     3743        }
     3744        if (!psMetadataAdd(md, PS_LIST_TAIL, "accept", PS_DATA_BOOL, NULL, true)) {
     3745            psFree(md);
     3746            exit(EXIT_FAILURE);
     3747        }
     3748            psFree(md);
     3749            exit(EXIT_FAILURE);
     3750        }
     3751
     3752        object = detRunSummaryObjectFromMetadata(md);
     3753        if (!object) {
     3754            psFree(md);
     3755            exit(EXIT_FAILURE);
     3756        }
     3757
     3758        psFree(md);
     3759
     3760            psFree(object);
     3761            exit(EXIT_FAILURE);
     3762        }
     3763        if (!object->iteration == -32) {
     3764            psFree(object);
     3765            exit(EXIT_FAILURE);
     3766        }
     3767        if (!object->bg == 64.64) {
     3768            psFree(object);
     3769            exit(EXIT_FAILURE);
     3770        }
     3771        if (!object->bg_stdev == 64.64) {
     3772            psFree(object);
     3773            exit(EXIT_FAILURE);
     3774        }
     3775        if (!object->bg_mean_stdev == 64.64) {
     3776            psFree(object);
     3777            exit(EXIT_FAILURE);
     3778        }
     3779        if (!object->accept == true) {
     3780            psFree(object);
     3781            exit(EXIT_FAILURE);
     3782        }
     3783            psFree(object);
     3784            exit(EXIT_FAILURE);
     3785        }
     3786
     3787        psFree(object);
     3788    }
     3789
     3790    {
     3791        psMetadata      *md;
     3792        detRegisteredImfileRow *object;
     3793
     3794        md = psMetadataAlloc();
     3795            psFree(md);
     3796            exit(EXIT_FAILURE);
     3797        }
     3798        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
     3799            psFree(md);
     3800            exit(EXIT_FAILURE);
     3801        }
     3802        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
     3803            psFree(md);
     3804            exit(EXIT_FAILURE);
     3805        }
     3806        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     3807            psFree(md);
     3808            exit(EXIT_FAILURE);
     3809        }
     3810        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     3811            psFree(md);
     3812            exit(EXIT_FAILURE);
     3813        }
     3814        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     3815            psFree(md);
     3816            exit(EXIT_FAILURE);
     3817        }
     3818        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     3819            psFree(md);
     3820            exit(EXIT_FAILURE);
     3821        }
     3822        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
     3823            psFree(md);
     3824            exit(EXIT_FAILURE);
     3825        }
     3826        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
     3827            psFree(md);
     3828            exit(EXIT_FAILURE);
     3829        }
     3830        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
     3831            psFree(md);
     3832            exit(EXIT_FAILURE);
     3833        }
     3834        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
     3835            psFree(md);
     3836            exit(EXIT_FAILURE);
     3837        }
     3838        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
     3839            psFree(md);
     3840            exit(EXIT_FAILURE);
     3841        }
     3842        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     3843            psFree(md);
     3844            exit(EXIT_FAILURE);
     3845        }
     3846            psFree(md);
     3847            exit(EXIT_FAILURE);
     3848        }
     3849
     3850        object = detRegisteredImfileObjectFromMetadata(md);
     3851        if (!object) {
     3852            psFree(md);
     3853            exit(EXIT_FAILURE);
     3854        }
     3855
     3856        psFree(md);
     3857
     3858            psFree(object);
     3859            exit(EXIT_FAILURE);
     3860        }
     3861        if (!object->iteration == -32) {
     3862            psFree(object);
     3863            exit(EXIT_FAILURE);
     3864        }
     3865        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     3866            psFree(object);
     3867            exit(EXIT_FAILURE);
     3868        }
     3869        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     3870            psFree(object);
     3871            exit(EXIT_FAILURE);
     3872        }
     3873        if (!object->bg == 64.64) {
     3874            psFree(object);
     3875            exit(EXIT_FAILURE);
     3876        }
     3877        if (!object->bg_stdev == 64.64) {
     3878            psFree(object);
     3879            exit(EXIT_FAILURE);
     3880        }
     3881        if (!object->bg_mean_stdev == 64.64) {
     3882            psFree(object);
     3883            exit(EXIT_FAILURE);
     3884        }
     3885        if (!object->user_1 == 64.64) {
     3886            psFree(object);
     3887            exit(EXIT_FAILURE);
     3888        }
     3889        if (!object->user_2 == 64.64) {
     3890            psFree(object);
     3891            exit(EXIT_FAILURE);
     3892        }
     3893        if (!object->user_3 == 64.64) {
     3894            psFree(object);
     3895            exit(EXIT_FAILURE);
     3896        }
     3897        if (!object->user_4 == 64.64) {
     3898            psFree(object);
     3899            exit(EXIT_FAILURE);
     3900        }
     3901        if (!object->user_5 == 64.64) {
     3902            psFree(object);
     3903            exit(EXIT_FAILURE);
     3904        }
     3905        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     3906            psFree(object);
     3907            exit(EXIT_FAILURE);
     3908        }
     3909            psFree(object);
     3910            exit(EXIT_FAILURE);
     3911        }
     3912
     3913        psFree(object);
     3914    }
     3915
     3916    {
     3917        psMetadata      *md;
     3918        detCorrectedExpRow *object;
     3919
     3920        md = psMetadataAlloc();
     3921            psFree(md);
     3922            exit(EXIT_FAILURE);
     3923        }
     3924            psFree(md);
     3925            exit(EXIT_FAILURE);
     3926        }
     3927        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     3928            psFree(md);
     3929            exit(EXIT_FAILURE);
     3930        }
     3931            psFree(md);
     3932            exit(EXIT_FAILURE);
     3933        }
     3934        if (!psMetadataAddStr(md, PS_LIST_TAIL, "corr_type", 0, NULL, "a string")) {
     3935            psFree(md);
     3936            exit(EXIT_FAILURE);
     3937        }
     3938        if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
     3939            psFree(md);
     3940            exit(EXIT_FAILURE);
     3941        }
     3942        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     3943            psFree(md);
     3944            exit(EXIT_FAILURE);
     3945        }
     3946            psFree(md);
     3947            exit(EXIT_FAILURE);
     3948        }
     3949
     3950        object = detCorrectedExpObjectFromMetadata(md);
     3951        if (!object) {
     3952            psFree(md);
     3953            exit(EXIT_FAILURE);
     3954        }
     3955
     3956        psFree(md);
     3957
     3958            psFree(object);
     3959            exit(EXIT_FAILURE);
     3960        }
     3961            psFree(object);
     3962            exit(EXIT_FAILURE);
     3963        }
     3964        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     3965            psFree(object);
     3966            exit(EXIT_FAILURE);
     3967        }
     3968            psFree(object);
     3969            exit(EXIT_FAILURE);
     3970        }
     3971        if (strncmp(object->corr_type, "a string", MAX_STRING_LENGTH)) {
     3972            psFree(object);
     3973            exit(EXIT_FAILURE);
     3974        }
     3975        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     3976            psFree(object);
     3977            exit(EXIT_FAILURE);
     3978        }
     3979        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     3980            psFree(object);
     3981            exit(EXIT_FAILURE);
     3982        }
     3983            psFree(object);
     3984            exit(EXIT_FAILURE);
     3985        }
     3986
     3987        psFree(object);
     3988    }
     3989
     3990    {
     3991        psMetadata      *md;
     3992        detCorrectedImfileRow *object;
     3993
     3994        md = psMetadataAlloc();
     3995            psFree(md);
     3996            exit(EXIT_FAILURE);
     3997        }
     3998            psFree(md);
     3999            exit(EXIT_FAILURE);
     4000        }
     4001        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
     4002            psFree(md);
     4003            exit(EXIT_FAILURE);
     4004        }
     4005        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     4006            psFree(md);
     4007            exit(EXIT_FAILURE);
     4008        }
     4009        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     4010            psFree(md);
     4011            exit(EXIT_FAILURE);
     4012        }
     4013            psFree(md);
     4014            exit(EXIT_FAILURE);
     4015        }
     4016
     4017        object = detCorrectedImfileObjectFromMetadata(md);
     4018        if (!object) {
     4019            psFree(md);
     4020            exit(EXIT_FAILURE);
     4021        }
     4022
     4023        psFree(md);
     4024
     4025            psFree(object);
     4026            exit(EXIT_FAILURE);
     4027        }
     4028            psFree(object);
     4029            exit(EXIT_FAILURE);
     4030        }
     4031        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     4032            psFree(object);
     4033            exit(EXIT_FAILURE);
     4034        }
     4035        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     4036            psFree(object);
     4037            exit(EXIT_FAILURE);
     4038        }
     4039        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     4040            psFree(object);
     4041            exit(EXIT_FAILURE);
     4042        }
     4043            psFree(object);
     4044            exit(EXIT_FAILURE);
     4045        }
     4046
     4047        psFree(object);
     4048    }
     4049
     4050    {
     4051        psMetadata      *md;
     4052        magicRunRow     *object;
     4053
     4054        md = psMetadataAlloc();
     4055            psFree(md);
     4056            exit(EXIT_FAILURE);
     4057        }
     4058        if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
     4059            psFree(md);
     4060            exit(EXIT_FAILURE);
     4061        }
     4062        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
     4063            psFree(md);
     4064            exit(EXIT_FAILURE);
     4065        }
     4066        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir_state", 0, NULL, "a string")) {
     4067            psFree(md);
     4068            exit(EXIT_FAILURE);
     4069        }
    13894070        if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
    13904071            psFree(md);
    13914072            exit(EXIT_FAILURE);
    13924073        }
    1393 
    1394         object = chipMaskObjectFromMetadata(md);
    1395         if (!object) {
    1396             psFree(md);
    1397             exit(EXIT_FAILURE);
    1398         }
    1399 
    1400         psFree(md);
    1401 
     4074        if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
     4075            psFree(md);
     4076            exit(EXIT_FAILURE);
     4077        }
     4078            psFree(md);
     4079            exit(EXIT_FAILURE);
     4080        }
     4081
     4082        object = magicRunObjectFromMetadata(md);
     4083        if (!object) {
     4084            psFree(md);
     4085            exit(EXIT_FAILURE);
     4086        }
     4087
     4088        psFree(md);
     4089
     4090            psFree(object);
     4091            exit(EXIT_FAILURE);
     4092        }
     4093        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     4094            psFree(object);
     4095            exit(EXIT_FAILURE);
     4096        }
     4097        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     4098            psFree(object);
     4099            exit(EXIT_FAILURE);
     4100        }
     4101        if (strncmp(object->workdir_state, "a string", MAX_STRING_LENGTH)) {
     4102            psFree(object);
     4103            exit(EXIT_FAILURE);
     4104        }
    14024105        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    14034106            psFree(object);
    14044107            exit(EXIT_FAILURE);
    14054108        }
    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         }
    14884109        if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    14894110            psFree(object);
    14904111            exit(EXIT_FAILURE);
    14914112        }
    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         }
     4113            psFree(object);
     4114            exit(EXIT_FAILURE);
     4115        }
     4116
     4117        psFree(object);
     4118    }
     4119
     4120    {
     4121        psMetadata      *md;
     4122        magicInputSkyfileRow *object;
     4123
     4124        md = psMetadataAlloc();
     4125            psFree(md);
     4126            exit(EXIT_FAILURE);
     4127        }
     4128            psFree(md);
     4129            exit(EXIT_FAILURE);
     4130        }
     4131        if (!psMetadataAddStr(md, PS_LIST_TAIL, "node", 0, NULL, "a string")) {
     4132            psFree(md);
     4133            exit(EXIT_FAILURE);
     4134        }
     4135
     4136        object = magicInputSkyfileObjectFromMetadata(md);
     4137        if (!object) {
     4138            psFree(md);
     4139            exit(EXIT_FAILURE);
     4140        }
     4141
     4142        psFree(md);
     4143
     4144            psFree(object);
     4145            exit(EXIT_FAILURE);
     4146        }
     4147            psFree(object);
     4148            exit(EXIT_FAILURE);
     4149        }
     4150        if (strncmp(object->node, "a string", MAX_STRING_LENGTH)) {
     4151            psFree(object);
     4152            exit(EXIT_FAILURE);
     4153        }
     4154
     4155        psFree(object);
     4156    }
     4157
     4158    {
     4159        psMetadata      *md;
     4160        magicTreeRow    *object;
     4161
     4162        md = psMetadataAlloc();
     4163            psFree(md);
     4164            exit(EXIT_FAILURE);
     4165        }
     4166        if (!psMetadataAddStr(md, PS_LIST_TAIL, "node", 0, NULL, "a string")) {
     4167            psFree(md);
     4168            exit(EXIT_FAILURE);
     4169        }
     4170        if (!psMetadataAddStr(md, PS_LIST_TAIL, "dep", 0, NULL, "a string")) {
     4171            psFree(md);
     4172            exit(EXIT_FAILURE);
     4173        }
     4174
     4175        object = magicTreeObjectFromMetadata(md);
     4176        if (!object) {
     4177            psFree(md);
     4178            exit(EXIT_FAILURE);
     4179        }
     4180
     4181        psFree(md);
     4182
     4183            psFree(object);
     4184            exit(EXIT_FAILURE);
     4185        }
     4186        if (strncmp(object->node, "a string", MAX_STRING_LENGTH)) {
     4187            psFree(object);
     4188            exit(EXIT_FAILURE);
     4189        }
     4190        if (strncmp(object->dep, "a string", MAX_STRING_LENGTH)) {
     4191            psFree(object);
     4192            exit(EXIT_FAILURE);
     4193        }
     4194
     4195        psFree(object);
     4196    }
     4197
     4198    {
     4199        psMetadata      *md;
     4200        magicNodeResultRow *object;
     4201
     4202        md = psMetadataAlloc();
     4203            psFree(md);
     4204            exit(EXIT_FAILURE);
     4205        }
     4206        if (!psMetadataAddStr(md, PS_LIST_TAIL, "node", 0, NULL, "a string")) {
    15044207            psFree(md);
    15054208            exit(EXIT_FAILURE);
     
    15094212            exit(EXIT_FAILURE);
    15104213        }
    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         }
     4214
     4215        object = magicNodeResultObjectFromMetadata(md);
     4216        if (!object) {
     4217            psFree(md);
     4218            exit(EXIT_FAILURE);
     4219        }
     4220
     4221        psFree(md);
     4222
     4223            psFree(object);
     4224            exit(EXIT_FAILURE);
     4225        }
     4226        if (strncmp(object->node, "a string", MAX_STRING_LENGTH)) {
    15824227            psFree(object);
    15834228            exit(EXIT_FAILURE);
     
    15874232            exit(EXIT_FAILURE);
    15884233        }
    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")) {
     4234
     4235        psFree(object);
     4236    }
     4237
     4238    {
     4239        psMetadata      *md;
     4240        magicMaskRow    *object;
     4241
     4242        md = psMetadataAlloc();
    18514243            psFree(md);
    18524244            exit(EXIT_FAILURE);
     
    18564248            exit(EXIT_FAILURE);
    18574249        }
    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)) {
     4250
     4251        object = magicMaskObjectFromMetadata(md);
     4252        if (!object) {
     4253            psFree(md);
     4254            exit(EXIT_FAILURE);
     4255        }
     4256
     4257        psFree(md);
     4258
    18874259            psFree(object);
    18884260            exit(EXIT_FAILURE);
     
    18924264            exit(EXIT_FAILURE);
    18934265        }
    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();
     4266
     4267        psFree(object);
     4268    }
     4269
     4270    {
     4271        psMetadata      *md;
     4272        magicSkyfileMaskRow *object;
     4273
     4274        md = psMetadataAlloc();
     4275            psFree(md);
     4276            exit(EXIT_FAILURE);
     4277        }
    20474278            psFree(md);
    20484279            exit(EXIT_FAILURE);
     
    20524283            exit(EXIT_FAILURE);
    20534284        }
    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 
     4285
     4286        object = magicSkyfileMaskObjectFromMetadata(md);
     4287        if (!object) {
     4288            psFree(md);
     4289            exit(EXIT_FAILURE);
     4290        }
     4291
     4292        psFree(md);
     4293
     4294            psFree(object);
     4295            exit(EXIT_FAILURE);
     4296        }
    20754297            psFree(object);
    20764298            exit(EXIT_FAILURE);
    20774299        }
    20784300        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")) {
    2283             psFree(md);
    2284             exit(EXIT_FAILURE);
    2285         }
    2286         if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
    2287             psFree(md);
    2288             exit(EXIT_FAILURE);
    2289         }
    2290         if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
    2291             psFree(md);
    2292             exit(EXIT_FAILURE);
    2293         }
    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         }
    2546             psFree(md);
    2547             exit(EXIT_FAILURE);
    2548         }
    2549         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
    2550             psFree(md);
    2551             exit(EXIT_FAILURE);
    2552         }
    2553         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    2554             psFree(md);
    2555             exit(EXIT_FAILURE);
    2556         }
    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         }
    2624             psFree(object);
    2625             exit(EXIT_FAILURE);
    2626         }
    2627         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    2628             psFree(object);
    2629             exit(EXIT_FAILURE);
    2630         }
    2631         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    2632             psFree(object);
    2633             exit(EXIT_FAILURE);
    2634         }
    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)) {
    2843             psFree(md);
    2844             exit(EXIT_FAILURE);
    2845         }
    2846         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
    2847             psFree(md);
    2848             exit(EXIT_FAILURE);
    2849         }
    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) {
    2906             psFree(object);
    2907             exit(EXIT_FAILURE);
    2908         }
    2909         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    2910             psFree(object);
    2911             exit(EXIT_FAILURE);
    2912         }
    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)) {
    2969             psFree(md);
    2970             exit(EXIT_FAILURE);
    2971         }
    2972         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
    2973             psFree(md);
    2974             exit(EXIT_FAILURE);
    2975         }
    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         }
    3030         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    3031             psFree(md);
    3032             exit(EXIT_FAILURE);
    3033         }
    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) {
    3086             psFree(object);
    3087             exit(EXIT_FAILURE);
    3088         }
    3089         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    3090             psFree(object);
    3091             exit(EXIT_FAILURE);
    3092         }
    3093         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    3094             psFree(object);
    3095             exit(EXIT_FAILURE);
    3096         }
    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")) {
    3274             psFree(md);
    3275             exit(EXIT_FAILURE);
    3276         }
    3277         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    3278             psFree(md);
    3279             exit(EXIT_FAILURE);
    3280         }
    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)) {
    3360             psFree(object);
    3361             exit(EXIT_FAILURE);
    3362         }
    3363         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    3364             psFree(object);
    3365             exit(EXIT_FAILURE);
    3366         }
    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")) {
    3446             psFree(md);
    3447             exit(EXIT_FAILURE);
    3448         }
    3449         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
    3450             psFree(md);
    3451             exit(EXIT_FAILURE);
    3452         }
    3453         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
    3454             psFree(md);
    3455             exit(EXIT_FAILURE);
    3456         }
    3457         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
    3458             psFree(md);
    3459             exit(EXIT_FAILURE);
    3460         }
    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)) {
    3474             psFree(md);
    3475             exit(EXIT_FAILURE);
    3476         }
    3477         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
    3478             psFree(md);
    3479             exit(EXIT_FAILURE);
    3480         }
    3481         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
    3482             psFree(md);
    3483             exit(EXIT_FAILURE);
    3484         }
    3485         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
    3486             psFree(md);
    3487             exit(EXIT_FAILURE);
    3488         }
    3489         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
    3490             psFree(md);
    3491             exit(EXIT_FAILURE);
    3492         }
    3493         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
    3494             psFree(md);
    3495             exit(EXIT_FAILURE);
    3496         }
    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)) {
    3528             psFree(object);
    3529             exit(EXIT_FAILURE);
    3530         }
    3531         if (!object->bg == 64.64) {
    3532             psFree(object);
    3533             exit(EXIT_FAILURE);
    3534         }
    3535         if (!object->bg_stdev == 64.64) {
    3536             psFree(object);
    3537             exit(EXIT_FAILURE);
    3538         }
    3539         if (!object->bg_mean_stdev == 64.64) {
    3540             psFree(object);
    3541             exit(EXIT_FAILURE);
    3542         }
    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) {
    3556             psFree(object);
    3557             exit(EXIT_FAILURE);
    3558         }
    3559         if (!object->user_1 == 64.64) {
    3560             psFree(object);
    3561             exit(EXIT_FAILURE);
    3562         }
    3563         if (!object->user_2 == 64.64) {
    3564             psFree(object);
    3565             exit(EXIT_FAILURE);
    3566         }
    3567         if (!object->user_3 == 64.64) {
    3568             psFree(object);
    3569             exit(EXIT_FAILURE);
    3570         }
    3571         if (!object->user_4 == 64.64) {
    3572             psFree(object);
    3573             exit(EXIT_FAILURE);
    3574         }
    3575         if (!object->user_5 == 64.64) {
    3576             psFree(object);
    3577             exit(EXIT_FAILURE);
    3578         }
    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)) {
    3603             psFree(md);
    3604             exit(EXIT_FAILURE);
    3605         }
    3606         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
    3607             psFree(md);
    3608             exit(EXIT_FAILURE);
    3609         }
    3610         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
    3611             psFree(md);
    3612             exit(EXIT_FAILURE);
    3613         }
    3614         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
    3615             psFree(md);
    3616             exit(EXIT_FAILURE);
    3617         }
    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) {
    3638             psFree(object);
    3639             exit(EXIT_FAILURE);
    3640         }
    3641         if (!object->bg == 64.64) {
    3642             psFree(object);
    3643             exit(EXIT_FAILURE);
    3644         }
    3645         if (!object->bg_stdev == 64.64) {
    3646             psFree(object);
    3647             exit(EXIT_FAILURE);
    3648         }
    3649         if (!object->bg_mean_stdev == 64.64) {
    3650             psFree(object);
    3651             exit(EXIT_FAILURE);
    3652         }
    3653         if (!object->accept == true) {
    3654             psFree(object);
    3655             exit(EXIT_FAILURE);
    3656         }
    36574301            psFree(object);
    36584302            exit(EXIT_FAILURE);
  • trunk/ippdb/tests/selectrowsfits.c

    r15420 r15421  
    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
    2345        if (!summitExpSelectRowsFits(dbh, fits, NULL, 1)) {
    2446            exit(EXIT_FAILURE);
     
    285307        }
    286308
    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)) {
    8601058            exit(EXIT_FAILURE);
    8611059        }
Note: See TracChangeset for help on using the changeset viewer.