IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 14061


Ignore:
Timestamp:
Jul 6, 2007, 4:55:04 PM (19 years ago)
Author:
jhoblitt
Message:

ippdb 1.2.24

Location:
trunk
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • trunk/dbconfig/config.md

    r13937 r14061  
    22    pkg_name        STR     ippdb
    33    pkg_namespace   STR     ippdb
    4     pkg_version     STR     1.1.23
     4    pkg_version     STR     1.1.24
    55END
  • trunk/ippTools/configure.ac

    r13937 r14061  
    1818PKG_CHECK_MODULES([PSLIB], [pslib >= 1.1.0])
    1919PKG_CHECK_MODULES([PSMODULES], [psmodules >= 1.1.0])
    20 PKG_CHECK_MODULES([IPPDB], [ippdb >= 1.1.23])
     20PKG_CHECK_MODULES([IPPDB], [ippdb >= 1.1.24])
    2121
    2222PXTOOLS_CFLAGS="${PSLIB_CFLAGS=} ${PSMODULES_CFLAGS=} ${IPPDB_CFLAGS=}"
  • trunk/ippdb/Makefile.am

    r12535 r14061  
    1010man_MANS = \
    1111    $(top_builddir)/docs/man/man3/ippdb.3 \
    12     $(top_builddir)/docs/man/man3/expTagCounterRow.3 \
    1312    $(top_builddir)/docs/man/man3/summitExpRow.3 \
    1413    $(top_builddir)/docs/man/man3/summitImfileRow.3 \
     
    2221    $(top_builddir)/docs/man/man3/rawImfileRow.3 \
    2322    $(top_builddir)/docs/man/man3/guidePendingExpRow.3 \
    24     $(top_builddir)/docs/man/man3/chipPendingExpRow.3 \
    25     $(top_builddir)/docs/man/man3/chipPendingImfileRow.3 \
    26     $(top_builddir)/docs/man/man3/chipProcessedExpRow.3 \
     23    $(top_builddir)/docs/man/man3/chipRunRow.3 \
     24    $(top_builddir)/docs/man/man3/chipInputImfileRow.3 \
     25    $(top_builddir)/docs/man/man3/chipProcessedImfileRow.3 \
    2726    $(top_builddir)/docs/man/man3/chipMaskRow.3 \
    28     $(top_builddir)/docs/man/man3/chipProcessedImfileRow.3 \
    29     $(top_builddir)/docs/man/man3/camPendingExpRow.3 \
     27    $(top_builddir)/docs/man/man3/camRunRow.3 \
    3028    $(top_builddir)/docs/man/man3/camProcessedExpRow.3 \
    3129    $(top_builddir)/docs/man/man3/camMaskRow.3 \
     
    5351
    5452
    55 docs/man/man3/ippdb.3 docs/man/man3/expTagCounterRow.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/chipPendingExpRow.3 docs/man/man3/chipPendingImfileRow.3 docs/man/man3/chipProcessedExpRow.3 docs/man/man3/chipMaskRow.3 docs/man/man3/chipProcessedImfileRow.3 docs/man/man3/camPendingExpRow.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:
     53docs/man/man3/ippdb.3 docs/man/man3/summitExpRow.3 docs/man/man3/summitImfileRow.3 docs/man/man3/pzPendingExpRow.3 docs/man/man3/pzPendingImfileRow.3 docs/man/man3/pzDoneExpRow.3 docs/man/man3/pzDoneImfileRow.3 docs/man/man3/newExpRow.3 docs/man/man3/newImfileRow.3 docs/man/man3/rawExpRow.3 docs/man/man3/rawImfileRow.3 docs/man/man3/guidePendingExpRow.3 docs/man/man3/chipRunRow.3 docs/man/man3/chipInputImfileRow.3 docs/man/man3/chipProcessedImfileRow.3 docs/man/man3/chipMaskRow.3 docs/man/man3/camRunRow.3 docs/man/man3/camProcessedExpRow.3 docs/man/man3/camMaskRow.3 docs/man/man3/warpRunRow.3 docs/man/man3/warpInputExpRow.3 docs/man/man3/warpSkyCellMapRow.3 docs/man/man3/warpSkyfileRow.3 docs/man/man3/diffRunRow.3 docs/man/man3/diffInputSkyfileRow.3 docs/man/man3/diffSkyfileRow.3 docs/man/man3/stackRunRow.3 docs/man/man3/stackInputSkyfileRow.3 docs/man/man3/stackSumSkyfileRow.3 docs/man/man3/detRunRow.3 docs/man/man3/detInputExpRow.3 docs/man/man3/detProcessedImfileRow.3 docs/man/man3/detProcessedExpRow.3 docs/man/man3/detStackedImfileRow.3 docs/man/man3/detNormalizedStatImfileRow.3 docs/man/man3/detNormalizedImfileRow.3 docs/man/man3/detNormalizedExpRow.3 docs/man/man3/detResidImfileRow.3 docs/man/man3/detResidExpRow.3 docs/man/man3/detRunSummaryRow.3:
    5654        $(DOXYGEN)
    5755
  • trunk/ippdb/configure.ac

    r13937 r14061  
    77AC_PREREQ(2.59)
    88
    9 AC_INIT([ippdb], [1.1.23], [pan-starrs.ifa.hawaii.edu])
     9AC_INIT([ippdb], [1.1.24], [pan-starrs.ifa.hawaii.edu])
    1010AC_CONFIG_SRCDIR([ippdb.pc.in])
    1111
  • trunk/ippdb/src/ippdb.c

    r13937 r14061  
    3131#include "ippdb.h"
    3232
    33 #define EXPTAGCOUNTER_TABLE_NAME "expTagCounter"
    3433#define SUMMITEXP_TABLE_NAME "summitExp"
    3534#define SUMMITIMFILE_TABLE_NAME "summitImfile"
     
    4342#define RAWIMFILE_TABLE_NAME "rawImfile"
    4443#define GUIDEPENDINGEXP_TABLE_NAME "guidePendingExp"
    45 #define CHIPPENDINGEXP_TABLE_NAME "chipPendingExp"
    46 #define CHIPPENDINGIMFILE_TABLE_NAME "chipPendingImfile"
    47 #define CHIPPROCESSEDEXP_TABLE_NAME "chipProcessedExp"
     44#define CHIPRUN_TABLE_NAME "chipRun"
     45#define CHIPINPUTIMFILE_TABLE_NAME "chipInputImfile"
     46#define CHIPPROCESSEDIMFILE_TABLE_NAME "chipProcessedImfile"
    4847#define CHIPMASK_TABLE_NAME "chipMask"
    49 #define CHIPPROCESSEDIMFILE_TABLE_NAME "chipProcessedImfile"
    50 #define CAMPENDINGEXP_TABLE_NAME "camPendingExp"
     48#define CAMRUN_TABLE_NAME "camRun"
    5149#define CAMPROCESSEDEXP_TABLE_NAME "camProcessedExp"
    5250#define CAMMASK_TABLE_NAME "camMask"
     
    248246}
    249247
    250 static void expTagCounterRowFree(expTagCounterRow *object);
    251 
    252 expTagCounterRow *expTagCounterRowAlloc(psU64 counter)
    253 {
    254     expTagCounterRow *_object;
    255 
    256     _object = psAlloc(sizeof(expTagCounterRow));
    257     psMemSetDeallocator(_object, (psFreeFunc)expTagCounterRowFree);
    258 
    259     _object->counter = counter;
    260 
    261     return _object;
    262 }
    263 
    264 static void expTagCounterRowFree(expTagCounterRow *object)
    265 {
    266 }
    267 
    268 bool expTagCounterCreateTable(psDB *dbh)
    269 {
    270     psMetadata *md = psMetadataAlloc();
    271     if (!psMetadataAdd(md, PS_LIST_TAIL, "counter", PS_DATA_U64, NULL, 0)) {
    272         psError(PS_ERR_UNKNOWN, false, "failed to add item counter");
    273         psFree(md);
    274         return false;
    275     }
    276 
    277     bool status = psDBCreateTable(dbh, EXPTAGCOUNTER_TABLE_NAME, md);
    278 
    279     psFree(md);
    280 
    281     return status;
    282 }
    283 
    284 bool expTagCounterDropTable(psDB *dbh)
    285 {
    286     return psDBDropTable(dbh, EXPTAGCOUNTER_TABLE_NAME);
    287 }
    288 
    289 bool expTagCounterInsert(psDB * dbh, psU64 counter)
    290 {
    291     psMetadata *md = psMetadataAlloc();
    292     if (!psMetadataAdd(md, PS_LIST_TAIL, "counter", PS_DATA_U64, NULL, counter)) {
    293         psError(PS_ERR_UNKNOWN, false, "failed to add item counter");
    294         psFree(md);
    295         return false;
    296     }
    297 
    298     bool status = psDBInsertOneRow(dbh, EXPTAGCOUNTER_TABLE_NAME, md);
    299     psFree(md);
    300 
    301     return status;
    302 }
    303 
    304 long long expTagCounterDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
    305 {
    306     long long       deleted = 0;
    307 
    308     long long count = psDBDeleteRows(dbh, EXPTAGCOUNTER_TABLE_NAME, where, limit);
    309     if (count < 0) {
    310         psError(PS_ERR_UNKNOWN, true, "failed to delete row from expTagCounter");
    311         return count;
    312 
    313         deleted += count;
    314     }
    315 
    316     return deleted;
    317 }
    318 bool expTagCounterInsertObject(psDB *dbh, expTagCounterRow *object)
    319 {
    320     return expTagCounterInsert(dbh, object->counter);
    321 }
    322 
    323 bool expTagCounterInsertObjects(psDB *dbh, psArray *objects)
    324 {
    325     for (long i = 0; i < psArrayLength(objects); i++) {
    326         if (!expTagCounterInsertObject(dbh, objects->data[i])) {
    327             return false;
    328         }
    329     }
    330 
    331     return true;
    332 }
    333 
    334 bool expTagCounterInsertFits(psDB *dbh, const psFits *fits)
    335 {
    336     psArray         *rowSet;
    337 
    338     // move to (the first?) extension named  EXPTAGCOUNTER_TABLE_NAME
    339     if (!psFitsMoveExtName(fits, EXPTAGCOUNTER_TABLE_NAME)) {
    340         psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", EXPTAGCOUNTER_TABLE_NAME);
    341         return false;
    342     }
    343 
    344     // check HDU type
    345     if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
    346         psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
    347         return false;
    348     }
    349 
    350     // read fits table
    351     rowSet = psFitsReadTable(fits);
    352     if (!rowSet) {
    353         psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
    354         psFree(rowSet);
    355         return false;
    356     }
    357 
    358     if (!psDBInsertRows(dbh, EXPTAGCOUNTER_TABLE_NAME, rowSet)) {
    359         psError(PS_ERR_UNKNOWN, false, "databse insert failed");
    360         psFree(rowSet);
    361         return false;
    362     }
    363 
    364     psFree(rowSet);
    365 
    366     return true;
    367 }
    368 
    369 bool expTagCounterSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
    370 {
    371     psArray         *rowSet;
    372 
    373     rowSet = psDBSelectRows(dbh, EXPTAGCOUNTER_TABLE_NAME, where, limit);
    374     if (!rowSet) {
    375         return false;
    376     }
    377 
    378     // output to fits
    379     if (!psFitsWriteTable(fits, NULL, rowSet, EXPTAGCOUNTER_TABLE_NAME)) {
    380         psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
    381         psFree(rowSet);
    382         return false;
    383     }
    384 
    385     psFree(rowSet);
    386 
    387     return true;
    388 }
    389 
    390 psMetadata *expTagCounterMetadataFromObject(const expTagCounterRow *object)
    391 {
    392     psMetadata *md = psMetadataAlloc();
    393     if (!psMetadataAdd(md, PS_LIST_TAIL, "counter", PS_DATA_U64, NULL, object->counter)) {
    394         psError(PS_ERR_UNKNOWN, false, "failed to add item counter");
    395         psFree(md);
    396         return false;
    397     }
    398 
    399 
    400     return md;
    401 }
    402 
    403 expTagCounterRow *expTagCounterObjectFromMetadata(psMetadata *md)
    404 {
    405 
    406 bool status = false;
    407     psU64 counter = psMetadataLookupU64(&status, md, "counter");
    408     if (!status) {
    409         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item counter");
    410         return false;
    411     }
    412 
    413     return expTagCounterRowAlloc(counter);
    414 }
    415 psArray *expTagCounterSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
    416 {
    417     psArray         *rowSet;
    418     psArray         *returnSet;
    419     psU64           i;
    420 
    421     rowSet = psDBSelectRows(dbh, EXPTAGCOUNTER_TABLE_NAME, where, limit);
    422     if (!rowSet) {
    423         return NULL;
    424     }
    425 
    426     // convert psMetadata rows to row objects
    427 
    428     returnSet = psArrayAllocEmpty(rowSet->n);
    429 
    430     for (i = 0; i < rowSet->n; i++) {
    431         expTagCounterRow *object = expTagCounterObjectFromMetadata(rowSet->data[i]);
    432         psArrayAdd(returnSet, 0, object);
    433         psFree(object);
    434     }
    435 
    436     psFree(rowSet);
    437 
    438     return returnSet;
    439 }
    440 bool expTagCounterDeleteObject(psDB *dbh, const expTagCounterRow *object)
    441 {
    442     psMetadata *where = expTagCounterMetadataFromObject(object);
    443     long long count = psDBDeleteRows(dbh, EXPTAGCOUNTER_TABLE_NAME, where, 0);
    444     psFree(where);
    445     if (count < 0) {
    446         psError(PS_ERR_UNKNOWN, true, "failed to delete row from expTagCounter");
    447         return false;
    448     }
    449     if (count > 1) {
    450         // XXX should this be a psAbort() instead?  It is possible that
    451         // having an object match multiple rows was by design.
    452         psError(PS_ERR_UNKNOWN, true, "expTagCounterRow object matched more then one row.  Check your database schema");
    453         return false;
    454     }
    455 
    456     return true;
    457 }
    458 long long expTagCounterDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
    459 {
    460     long long       deleted = 0;
    461 
    462     for (long long i = 0; i < objects->n; i++) {
    463         expTagCounterRow *object = objects->data[i];
    464         psMetadata *where = expTagCounterMetadataFromObject(object);
    465         long long count = psDBDeleteRows(dbh, EXPTAGCOUNTER_TABLE_NAME, where, limit);
    466         psFree(where);
    467         if (count < 0) {
    468             psError(PS_ERR_UNKNOWN, true, "failed to delete row from expTagCounter");
    469             return count;
    470         }
    471 
    472         deleted += count;
    473     }
    474 
    475     return deleted;
    476 }
    477 bool expTagCounterPrintObjects(FILE *stream, psArray *objects, bool mdcf)
    478 {
    479     PS_ASSERT_PTR_NON_NULL(objects, false);
    480 
    481     psMetadata *output = psMetadataAlloc();
    482     for (long i = 0; i < psArrayLength(objects); i++) {
    483         psMetadata *md = expTagCounterMetadataFromObject(objects->data[i]);
    484         if (!psMetadataAddMetadata(
    485             output,
    486             PS_LIST_TAIL,
    487             EXPTAGCOUNTER_TABLE_NAME,
    488             PS_META_DUPLICATE_OK,
    489             NULL,
    490             md
    491         )) {
    492             psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
    493             psFree(md);
    494             psFree(output);
    495             return false;
    496         }
    497         psFree(md);
    498     }
    499 
    500     if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
    501         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    502         psFree(output);
    503     }
    504     psFree(output);
    505 
    506     return true;
    507 }
    508 bool expTagCounterPrintObject(FILE *stream, expTagCounterRow *object, bool mdcf)
    509 {
    510     PS_ASSERT_PTR_NON_NULL(object, false);
    511 
    512     psMetadata *md = expTagCounterMetadataFromObject(object);
    513 
    514     if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
    515         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    516         psFree(md);
    517     }
    518 
    519     psFree(md);
    520 
    521     return true;
    522 }
    523248static void summitExpRowFree(summitExpRow *object);
    524249
    525 summitExpRow *summitExpRowAlloc(const char *exp_id, const char *camera, const char *telescope, psTime* dateobs, const char *exp_type, const char *uri, psS32 imfiles)
     250summitExpRow *summitExpRowAlloc(const char *exp_name, const char *camera, const char *telescope, psTime* dateobs, const char *exp_type, const char *uri, psS32 imfiles)
    526251{
    527252    summitExpRow    *_object;
     
    530255    psMemSetDeallocator(_object, (psFreeFunc)summitExpRowFree);
    531256
    532     _object->exp_id = psStringCopy(exp_id);
     257    _object->exp_name = psStringCopy(exp_name);
    533258    _object->camera = psStringCopy(camera);
    534259    _object->telescope = psStringCopy(telescope);
     
    543268static void summitExpRowFree(summitExpRow *object)
    544269{
    545     psFree(object->exp_id);
     270    psFree(object->exp_name);
    546271    psFree(object->camera);
    547272    psFree(object->telescope);
     
    554279{
    555280    psMetadata *md = psMetadataAlloc();
    556     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_STRING, "Primary Key", "64")) {
    557         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     281    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_name", PS_DATA_STRING, "Primary Key", "64")) {
     282        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_name");
    558283        psFree(md);
    559284        return false;
     
    602327}
    603328
    604 bool summitExpInsert(psDB * dbh, const char *exp_id, const char *camera, const char *telescope, psTime* dateobs, const char *exp_type, const char *uri, psS32 imfiles)
     329bool summitExpInsert(psDB * dbh, const char *exp_name, const char *camera, const char *telescope, psTime* dateobs, const char *exp_type, const char *uri, psS32 imfiles)
    605330{
    606331    psMetadata *md = psMetadataAlloc();
    607     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_STRING, NULL, exp_id)) {
    608         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     332    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_name", PS_DATA_STRING, NULL, exp_name)) {
     333        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_name");
    609334        psFree(md);
    610335        return false;
     
    663388bool summitExpInsertObject(psDB *dbh, summitExpRow *object)
    664389{
    665     return summitExpInsert(dbh, object->exp_id, object->camera, object->telescope, object->dateobs, object->exp_type, object->uri, object->imfiles);
     390    return summitExpInsert(dbh, object->exp_name, object->camera, object->telescope, object->dateobs, object->exp_type, object->uri, object->imfiles);
    666391}
    667392
     
    736461{
    737462    psMetadata *md = psMetadataAlloc();
    738     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_STRING, NULL, object->exp_id)) {
    739         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     463    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_name", PS_DATA_STRING, NULL, object->exp_name)) {
     464        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_name");
    740465        psFree(md);
    741466        return false;
     
    780505
    781506bool status = false;
    782     char* exp_id = psMetadataLookupPtr(&status, md, "exp_id");
    783     if (!status) {
    784         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
     507    char* exp_name = psMetadataLookupPtr(&status, md, "exp_name");
     508    if (!status) {
     509        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_name");
    785510        return false;
    786511    }
     
    816541    }
    817542
    818     return summitExpRowAlloc(exp_id, camera, telescope, dateobs, exp_type, uri, imfiles);
     543    return summitExpRowAlloc(exp_name, camera, telescope, dateobs, exp_type, uri, imfiles);
    819544}
    820545psArray *summitExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    928653static void summitImfileRowFree(summitImfileRow *object);
    929654
    930 summitImfileRow *summitImfileRowAlloc(const char *exp_id, const char *camera, const char *telescope, const char *file_id, psS32 bytes, const char *md5sum, const char *class, const char *class_id, const char *uri)
     655summitImfileRow *summitImfileRowAlloc(const char *exp_name, const char *camera, const char *telescope, const char *file_id, psS32 bytes, const char *md5sum, const char *class, const char *class_id, const char *uri)
    931656{
    932657    summitImfileRow *_object;
     
    935660    psMemSetDeallocator(_object, (psFreeFunc)summitImfileRowFree);
    936661
    937     _object->exp_id = psStringCopy(exp_id);
     662    _object->exp_name = psStringCopy(exp_name);
    938663    _object->camera = psStringCopy(camera);
    939664    _object->telescope = psStringCopy(telescope);
     
    950675static void summitImfileRowFree(summitImfileRow *object)
    951676{
    952     psFree(object->exp_id);
     677    psFree(object->exp_name);
    953678    psFree(object->camera);
    954679    psFree(object->telescope);
     
    963688{
    964689    psMetadata *md = psMetadataAlloc();
    965     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_STRING, "Primary Key", "64")) {
    966         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     690    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_name", PS_DATA_STRING, "Primary Key", "64")) {
     691        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_name");
    967692        psFree(md);
    968693        return false;
     
    1021746}
    1022747
    1023 bool summitImfileInsert(psDB * dbh, const char *exp_id, const char *camera, const char *telescope, const char *file_id, psS32 bytes, const char *md5sum, const char *class, const char *class_id, const char *uri)
     748bool summitImfileInsert(psDB * dbh, const char *exp_name, const char *camera, const char *telescope, const char *file_id, psS32 bytes, const char *md5sum, const char *class, const char *class_id, const char *uri)
    1024749{
    1025750    psMetadata *md = psMetadataAlloc();
    1026     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_STRING, NULL, exp_id)) {
    1027         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     751    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_name", PS_DATA_STRING, NULL, exp_name)) {
     752        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_name");
    1028753        psFree(md);
    1029754        return false;
     
    1092817bool summitImfileInsertObject(psDB *dbh, summitImfileRow *object)
    1093818{
    1094     return summitImfileInsert(dbh, object->exp_id, object->camera, object->telescope, object->file_id, object->bytes, object->md5sum, object->class, object->class_id, object->uri);
     819    return summitImfileInsert(dbh, object->exp_name, object->camera, object->telescope, object->file_id, object->bytes, object->md5sum, object->class, object->class_id, object->uri);
    1095820}
    1096821
     
    1165890{
    1166891    psMetadata *md = psMetadataAlloc();
    1167     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_STRING, NULL, object->exp_id)) {
    1168         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     892    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_name", PS_DATA_STRING, NULL, object->exp_name)) {
     893        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_name");
    1169894        psFree(md);
    1170895        return false;
     
    1219944
    1220945bool status = false;
    1221     char* exp_id = psMetadataLookupPtr(&status, md, "exp_id");
    1222     if (!status) {
    1223         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
     946    char* exp_name = psMetadataLookupPtr(&status, md, "exp_name");
     947    if (!status) {
     948        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_name");
    1224949        return false;
    1225950    }
     
    1265990    }
    1266991
    1267     return summitImfileRowAlloc(exp_id, camera, telescope, file_id, bytes, md5sum, class, class_id, uri);
     992    return summitImfileRowAlloc(exp_name, camera, telescope, file_id, bytes, md5sum, class, class_id, uri);
    1268993}
    1269994psArray *summitImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    13771102static void pzPendingExpRowFree(pzPendingExpRow *object);
    13781103
    1379 pzPendingExpRow *pzPendingExpRowAlloc(const char *exp_id, const char *camera, const char *telescope)
     1104pzPendingExpRow *pzPendingExpRowAlloc(const char *exp_name, const char *camera, const char *telescope)
    13801105{
    13811106    pzPendingExpRow *_object;
     
    13841109    psMemSetDeallocator(_object, (psFreeFunc)pzPendingExpRowFree);
    13851110
    1386     _object->exp_id = psStringCopy(exp_id);
     1111    _object->exp_name = psStringCopy(exp_name);
    13871112    _object->camera = psStringCopy(camera);
    13881113    _object->telescope = psStringCopy(telescope);
     
    13931118static void pzPendingExpRowFree(pzPendingExpRow *object)
    13941119{
    1395     psFree(object->exp_id);
     1120    psFree(object->exp_name);
    13961121    psFree(object->camera);
    13971122    psFree(object->telescope);
     
    14011126{
    14021127    psMetadata *md = psMetadataAlloc();
    1403     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_STRING, "Primary Key", "64")) {
    1404         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     1128    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_name", PS_DATA_STRING, "Primary Key", "64")) {
     1129        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_name");
    14051130        psFree(md);
    14061131        return false;
     
    14291154}
    14301155
    1431 bool pzPendingExpInsert(psDB * dbh, const char *exp_id, const char *camera, const char *telescope)
     1156bool pzPendingExpInsert(psDB * dbh, const char *exp_name, const char *camera, const char *telescope)
    14321157{
    14331158    psMetadata *md = psMetadataAlloc();
    1434     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_STRING, NULL, exp_id)) {
    1435         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     1159    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_name", PS_DATA_STRING, NULL, exp_name)) {
     1160        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_name");
    14361161        psFree(md);
    14371162        return false;
     
    14701195bool pzPendingExpInsertObject(psDB *dbh, pzPendingExpRow *object)
    14711196{
    1472     return pzPendingExpInsert(dbh, object->exp_id, object->camera, object->telescope);
     1197    return pzPendingExpInsert(dbh, object->exp_name, object->camera, object->telescope);
    14731198}
    14741199
     
    15431268{
    15441269    psMetadata *md = psMetadataAlloc();
    1545     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_STRING, NULL, object->exp_id)) {
    1546         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     1270    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_name", PS_DATA_STRING, NULL, object->exp_name)) {
     1271        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_name");
    15471272        psFree(md);
    15481273        return false;
     
    15671292
    15681293bool status = false;
    1569     char* exp_id = psMetadataLookupPtr(&status, md, "exp_id");
    1570     if (!status) {
    1571         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
     1294    char* exp_name = psMetadataLookupPtr(&status, md, "exp_name");
     1295    if (!status) {
     1296        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_name");
    15721297        return false;
    15731298    }
     
    15831308    }
    15841309
    1585     return pzPendingExpRowAlloc(exp_id, camera, telescope);
     1310    return pzPendingExpRowAlloc(exp_name, camera, telescope);
    15861311}
    15871312psArray *pzPendingExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    16951420static void pzPendingImfileRowFree(pzPendingImfileRow *object);
    16961421
    1697 pzPendingImfileRow *pzPendingImfileRowAlloc(const char *exp_id, const char *camera, const char *telescope, const char *class, const char *class_id, const char *exp_tag)
     1422pzPendingImfileRow *pzPendingImfileRowAlloc(const char *exp_name, const char *camera, const char *telescope, const char *class, const char *class_id, psS64 exp_id)
    16981423{
    16991424    pzPendingImfileRow *_object;
     
    17021427    psMemSetDeallocator(_object, (psFreeFunc)pzPendingImfileRowFree);
    17031428
    1704     _object->exp_id = psStringCopy(exp_id);
     1429    _object->exp_name = psStringCopy(exp_name);
    17051430    _object->camera = psStringCopy(camera);
    17061431    _object->telescope = psStringCopy(telescope);
    17071432    _object->class = psStringCopy(class);
    17081433    _object->class_id = psStringCopy(class_id);
    1709     _object->exp_tag = psStringCopy(exp_tag);
     1434    _object->exp_id = exp_id;
    17101435
    17111436    return _object;
     
    17141439static void pzPendingImfileRowFree(pzPendingImfileRow *object)
    17151440{
    1716     psFree(object->exp_id);
     1441    psFree(object->exp_name);
    17171442    psFree(object->camera);
    17181443    psFree(object->telescope);
    17191444    psFree(object->class);
    17201445    psFree(object->class_id);
    1721     psFree(object->exp_tag);
    17221446}
    17231447
     
    17251449{
    17261450    psMetadata *md = psMetadataAlloc();
    1727     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_STRING, "Primary Key", "64")) {
    1728         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     1451    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_name", PS_DATA_STRING, "Primary Key", "64")) {
     1452        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_name");
    17291453        psFree(md);
    17301454        return false;
     
    17501474        return false;
    17511475    }
    1752     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, "Unique Key", "64")) {
    1753         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     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");
    17541478        psFree(md);
    17551479        return false;
     
    17681492}
    17691493
    1770 bool pzPendingImfileInsert(psDB * dbh, const char *exp_id, const char *camera, const char *telescope, const char *class, const char *class_id, const char *exp_tag)
     1494bool pzPendingImfileInsert(psDB * dbh, const char *exp_name, const char *camera, const char *telescope, const char *class, const char *class_id, psS64 exp_id)
    17711495{
    17721496    psMetadata *md = psMetadataAlloc();
    1773     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_STRING, NULL, exp_id)) {
    1774         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     1497    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_name", PS_DATA_STRING, NULL, exp_name)) {
     1498        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_name");
    17751499        psFree(md);
    17761500        return false;
     
    17961520        return false;
    17971521    }
    1798     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, exp_tag)) {
    1799         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     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");
    18001524        psFree(md);
    18011525        return false;
     
    18241548bool pzPendingImfileInsertObject(psDB *dbh, pzPendingImfileRow *object)
    18251549{
    1826     return pzPendingImfileInsert(dbh, object->exp_id, object->camera, object->telescope, object->class, object->class_id, object->exp_tag);
     1550    return pzPendingImfileInsert(dbh, object->exp_name, object->camera, object->telescope, object->class, object->class_id, object->exp_id);
    18271551}
    18281552
     
    18971621{
    18981622    psMetadata *md = psMetadataAlloc();
    1899     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_STRING, NULL, object->exp_id)) {
    1900         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     1623    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_name", PS_DATA_STRING, NULL, object->exp_name)) {
     1624        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_name");
    19011625        psFree(md);
    19021626        return false;
     
    19221646        return false;
    19231647    }
    1924     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, object->exp_tag)) {
    1925         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     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");
    19261650        psFree(md);
    19271651        return false;
     
    19361660
    19371661bool status = false;
    1938     char* exp_id = psMetadataLookupPtr(&status, md, "exp_id");
     1662    char* exp_name = psMetadataLookupPtr(&status, md, "exp_name");
     1663    if (!status) {
     1664        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_name");
     1665        return false;
     1666    }
     1667    char* camera = psMetadataLookupPtr(&status, md, "camera");
     1668    if (!status) {
     1669        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item camera");
     1670        return false;
     1671    }
     1672    char* telescope = psMetadataLookupPtr(&status, md, "telescope");
     1673    if (!status) {
     1674        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item telescope");
     1675        return false;
     1676    }
     1677    char* class = psMetadataLookupPtr(&status, md, "class");
     1678    if (!status) {
     1679        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class");
     1680        return false;
     1681    }
     1682    char* class_id = psMetadataLookupPtr(&status, md, "class_id");
     1683    if (!status) {
     1684        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class_id");
     1685        return false;
     1686    }
     1687    psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id");
    19391688    if (!status) {
    19401689        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
    19411690        return false;
    19421691    }
    1943     char* camera = psMetadataLookupPtr(&status, md, "camera");
    1944     if (!status) {
    1945         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item camera");
    1946         return false;
    1947     }
    1948     char* telescope = psMetadataLookupPtr(&status, md, "telescope");
    1949     if (!status) {
    1950         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item telescope");
    1951         return false;
    1952     }
    1953     char* class = psMetadataLookupPtr(&status, md, "class");
    1954     if (!status) {
    1955         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class");
    1956         return false;
    1957     }
    1958     char* class_id = psMetadataLookupPtr(&status, md, "class_id");
    1959     if (!status) {
    1960         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class_id");
    1961         return false;
    1962     }
    1963     char* exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
    1964     if (!status) {
    1965         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
    1966         return false;
    1967     }
    1968 
    1969     return pzPendingImfileRowAlloc(exp_id, camera, telescope, class, class_id, exp_tag);
     1692
     1693    return pzPendingImfileRowAlloc(exp_name, camera, telescope, class, class_id, exp_id);
    19701694}
    19711695psArray *pzPendingImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    20791803static void pzDoneExpRowFree(pzDoneExpRow *object);
    20801804
    2081 pzDoneExpRow *pzDoneExpRowAlloc(const char *exp_id, const char *camera, const char *telescope)
     1805pzDoneExpRow *pzDoneExpRowAlloc(const char *exp_name, const char *camera, const char *telescope)
    20821806{
    20831807    pzDoneExpRow    *_object;
     
    20861810    psMemSetDeallocator(_object, (psFreeFunc)pzDoneExpRowFree);
    20871811
    2088     _object->exp_id = psStringCopy(exp_id);
     1812    _object->exp_name = psStringCopy(exp_name);
    20891813    _object->camera = psStringCopy(camera);
    20901814    _object->telescope = psStringCopy(telescope);
     
    20951819static void pzDoneExpRowFree(pzDoneExpRow *object)
    20961820{
    2097     psFree(object->exp_id);
     1821    psFree(object->exp_name);
    20981822    psFree(object->camera);
    20991823    psFree(object->telescope);
     
    21031827{
    21041828    psMetadata *md = psMetadataAlloc();
    2105     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_STRING, "Primary Key", "64")) {
    2106         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     1829    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_name", PS_DATA_STRING, "Primary Key", "64")) {
     1830        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_name");
    21071831        psFree(md);
    21081832        return false;
     
    21311855}
    21321856
    2133 bool pzDoneExpInsert(psDB * dbh, const char *exp_id, const char *camera, const char *telescope)
     1857bool pzDoneExpInsert(psDB * dbh, const char *exp_name, const char *camera, const char *telescope)
    21341858{
    21351859    psMetadata *md = psMetadataAlloc();
    2136     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_STRING, NULL, exp_id)) {
    2137         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     1860    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_name", PS_DATA_STRING, NULL, exp_name)) {
     1861        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_name");
    21381862        psFree(md);
    21391863        return false;
     
    21721896bool pzDoneExpInsertObject(psDB *dbh, pzDoneExpRow *object)
    21731897{
    2174     return pzDoneExpInsert(dbh, object->exp_id, object->camera, object->telescope);
     1898    return pzDoneExpInsert(dbh, object->exp_name, object->camera, object->telescope);
    21751899}
    21761900
     
    22451969{
    22461970    psMetadata *md = psMetadataAlloc();
    2247     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_STRING, NULL, object->exp_id)) {
    2248         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     1971    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_name", PS_DATA_STRING, NULL, object->exp_name)) {
     1972        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_name");
    22491973        psFree(md);
    22501974        return false;
     
    22691993
    22701994bool status = false;
    2271     char* exp_id = psMetadataLookupPtr(&status, md, "exp_id");
    2272     if (!status) {
    2273         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
     1995    char* exp_name = psMetadataLookupPtr(&status, md, "exp_name");
     1996    if (!status) {
     1997        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_name");
    22741998        return false;
    22751999    }
     
    22852009    }
    22862010
    2287     return pzDoneExpRowAlloc(exp_id, camera, telescope);
     2011    return pzDoneExpRowAlloc(exp_name, camera, telescope);
    22882012}
    22892013psArray *pzDoneExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    23972121static void pzDoneImfileRowFree(pzDoneImfileRow *object);
    23982122
    2399 pzDoneImfileRow *pzDoneImfileRowAlloc(const char *exp_id, const char *camera, const char *telescope, const char *class, const char *class_id, const char *exp_tag, const char *uri)
     2123pzDoneImfileRow *pzDoneImfileRowAlloc(const char *exp_name, const char *camera, const char *telescope, const char *class, const char *class_id, psS64 exp_id, const char *uri)
    24002124{
    24012125    pzDoneImfileRow *_object;
     
    24042128    psMemSetDeallocator(_object, (psFreeFunc)pzDoneImfileRowFree);
    24052129
    2406     _object->exp_id = psStringCopy(exp_id);
     2130    _object->exp_name = psStringCopy(exp_name);
    24072131    _object->camera = psStringCopy(camera);
    24082132    _object->telescope = psStringCopy(telescope);
    24092133    _object->class = psStringCopy(class);
    24102134    _object->class_id = psStringCopy(class_id);
    2411     _object->exp_tag = psStringCopy(exp_tag);
     2135    _object->exp_id = exp_id;
    24122136    _object->uri = psStringCopy(uri);
    24132137
     
    24172141static void pzDoneImfileRowFree(pzDoneImfileRow *object)
    24182142{
    2419     psFree(object->exp_id);
     2143    psFree(object->exp_name);
    24202144    psFree(object->camera);
    24212145    psFree(object->telescope);
    24222146    psFree(object->class);
    24232147    psFree(object->class_id);
    2424     psFree(object->exp_tag);
    24252148    psFree(object->uri);
    24262149}
     
    24292152{
    24302153    psMetadata *md = psMetadataAlloc();
    2431     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_STRING, "Primary Key", "64")) {
    2432         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     2154    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_name", PS_DATA_STRING, "Primary Key", "64")) {
     2155        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_name");
    24332156        psFree(md);
    24342157        return false;
     
    24542177        return false;
    24552178    }
    2456     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, "Unique Key", "64")) {
    2457         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     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");
    24582181        psFree(md);
    24592182        return false;
     
    24772200}
    24782201
    2479 bool pzDoneImfileInsert(psDB * dbh, const char *exp_id, const char *camera, const char *telescope, const char *class, const char *class_id, const char *exp_tag, const char *uri)
     2202bool pzDoneImfileInsert(psDB * dbh, const char *exp_name, const char *camera, const char *telescope, const char *class, const char *class_id, psS64 exp_id, const char *uri)
    24802203{
    24812204    psMetadata *md = psMetadataAlloc();
    2482     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_STRING, NULL, exp_id)) {
    2483         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     2205    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_name", PS_DATA_STRING, NULL, exp_name)) {
     2206        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_name");
    24842207        psFree(md);
    24852208        return false;
     
    25052228        return false;
    25062229    }
    2507     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, exp_tag)) {
    2508         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     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");
    25092232        psFree(md);
    25102233        return false;
     
    25382261bool pzDoneImfileInsertObject(psDB *dbh, pzDoneImfileRow *object)
    25392262{
    2540     return pzDoneImfileInsert(dbh, object->exp_id, object->camera, object->telescope, object->class, object->class_id, object->exp_tag, object->uri);
     2263    return pzDoneImfileInsert(dbh, object->exp_name, object->camera, object->telescope, object->class, object->class_id, object->exp_id, object->uri);
    25412264}
    25422265
     
    26112334{
    26122335    psMetadata *md = psMetadataAlloc();
    2613     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_STRING, NULL, object->exp_id)) {
    2614         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     2336    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_name", PS_DATA_STRING, NULL, object->exp_name)) {
     2337        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_name");
    26152338        psFree(md);
    26162339        return false;
     
    26362359        return false;
    26372360    }
    2638     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, object->exp_tag)) {
    2639         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     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");
    26402363        psFree(md);
    26412364        return false;
     
    26552378
    26562379bool status = false;
    2657     char* exp_id = psMetadataLookupPtr(&status, md, "exp_id");
     2380    char* exp_name = psMetadataLookupPtr(&status, md, "exp_name");
     2381    if (!status) {
     2382        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_name");
     2383        return false;
     2384    }
     2385    char* camera = psMetadataLookupPtr(&status, md, "camera");
     2386    if (!status) {
     2387        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item camera");
     2388        return false;
     2389    }
     2390    char* telescope = psMetadataLookupPtr(&status, md, "telescope");
     2391    if (!status) {
     2392        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item telescope");
     2393        return false;
     2394    }
     2395    char* class = psMetadataLookupPtr(&status, md, "class");
     2396    if (!status) {
     2397        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class");
     2398        return false;
     2399    }
     2400    char* class_id = psMetadataLookupPtr(&status, md, "class_id");
     2401    if (!status) {
     2402        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class_id");
     2403        return false;
     2404    }
     2405    psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id");
    26582406    if (!status) {
    26592407        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
    26602408        return false;
    26612409    }
    2662     char* camera = psMetadataLookupPtr(&status, md, "camera");
    2663     if (!status) {
    2664         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item camera");
    2665         return false;
    2666     }
    2667     char* telescope = psMetadataLookupPtr(&status, md, "telescope");
    2668     if (!status) {
    2669         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item telescope");
    2670         return false;
    2671     }
    2672     char* class = psMetadataLookupPtr(&status, md, "class");
    2673     if (!status) {
    2674         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class");
    2675         return false;
    2676     }
    2677     char* class_id = psMetadataLookupPtr(&status, md, "class_id");
    2678     if (!status) {
    2679         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class_id");
    2680         return false;
    2681     }
    2682     char* exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
    2683     if (!status) {
    2684         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
    2685         return false;
    2686     }
    26872410    char* uri = psMetadataLookupPtr(&status, md, "uri");
    26882411    if (!status) {
     
    26912414    }
    26922415
    2693     return pzDoneImfileRowAlloc(exp_id, camera, telescope, class, class_id, exp_tag, uri);
     2416    return pzDoneImfileRowAlloc(exp_name, camera, telescope, class, class_id, exp_id, uri);
    26942417}
    26952418psArray *pzDoneImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    28032526static void newExpRowFree(newExpRow *object);
    28042527
    2805 newExpRow *newExpRowAlloc(const char *exp_tag, const char *exp_id, const char *camera, const char *telescope, psS32 imfiles, const char *workdir)
     2528newExpRow *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)
    28062529{
    28072530    newExpRow       *_object;
     
    28102533    psMemSetDeallocator(_object, (psFreeFunc)newExpRowFree);
    28112534
    2812     _object->exp_tag = psStringCopy(exp_tag);
    2813     _object->exp_id = psStringCopy(exp_id);
    2814     _object->camera = psStringCopy(camera);
    2815     _object->telescope = psStringCopy(telescope);
    2816     _object->imfiles = imfiles;
     2535    _object->exp_id = exp_id;
     2536    _object->tmp_exp_name = psStringCopy(tmp_exp_name);
     2537    _object->tmp_camera = psStringCopy(tmp_camera);
     2538    _object->tmp_telescope = psStringCopy(tmp_telescope);
     2539    _object->state = psStringCopy(state);
    28172540    _object->workdir = psStringCopy(workdir);
     2541    _object->workdir_state = psStringCopy(workdir_state);
    28182542
    28192543    return _object;
     
    28222546static void newExpRowFree(newExpRow *object)
    28232547{
    2824     psFree(object->exp_tag);
    2825     psFree(object->exp_id);
    2826     psFree(object->camera);
    2827     psFree(object->telescope);
     2548    psFree(object->tmp_exp_name);
     2549    psFree(object->tmp_camera);
     2550    psFree(object->tmp_telescope);
     2551    psFree(object->state);
    28282552    psFree(object->workdir);
     2553    psFree(object->workdir_state);
    28292554}
    28302555
     
    28322557{
    28332558    psMetadata *md = psMetadataAlloc();
    2834     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, "Primary Key", "64")) {
    2835         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
    2836         psFree(md);
    2837         return false;
    2838     }
    2839     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_STRING, "Key", "64")) {
     2559    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key AUTO_INCREMENT", 0)) {
    28402560        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    28412561        psFree(md);
    28422562        return false;
    28432563    }
    2844     if (!psMetadataAdd(md, PS_LIST_TAIL, "camera", PS_DATA_STRING, "Key", "64")) {
    2845         psError(PS_ERR_UNKNOWN, false, "failed to add item camera");
    2846         psFree(md);
    2847         return false;
    2848     }
    2849     if (!psMetadataAdd(md, PS_LIST_TAIL, "telescope", PS_DATA_STRING, "Key", "64")) {
    2850         psError(PS_ERR_UNKNOWN, false, "failed to add item telescope");
    2851         psFree(md);
    2852         return false;
    2853     }
    2854     if (!psMetadataAdd(md, PS_LIST_TAIL, "imfiles", PS_DATA_S32, NULL, 0)) {
    2855         psError(PS_ERR_UNKNOWN, false, "failed to add item imfiles");
     2564    if (!psMetadataAdd(md, PS_LIST_TAIL, "tmp_exp_name", PS_DATA_STRING, "Key", "64")) {
     2565        psError(PS_ERR_UNKNOWN, false, "failed to add item tmp_exp_name");
     2566        psFree(md);
     2567        return false;
     2568    }
     2569    if (!psMetadataAdd(md, PS_LIST_TAIL, "tmp_camera", PS_DATA_STRING, "Key", "64")) {
     2570        psError(PS_ERR_UNKNOWN, false, "failed to add item tmp_camera");
     2571        psFree(md);
     2572        return false;
     2573    }
     2574    if (!psMetadataAdd(md, PS_LIST_TAIL, "tmp_telescope", PS_DATA_STRING, "Key", "64")) {
     2575        psError(PS_ERR_UNKNOWN, false, "failed to add item tmp_telescope");
     2576        psFree(md);
     2577        return false;
     2578    }
     2579    if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, "Key", "64")) {
     2580        psError(PS_ERR_UNKNOWN, false, "failed to add item state");
    28562581        psFree(md);
    28572582        return false;
     
    28622587        return false;
    28632588    }
     2589    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir_state", PS_DATA_STRING, "key", "64")) {
     2590        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir_state");
     2591        psFree(md);
     2592        return false;
     2593    }
    28642594
    28652595    bool status = psDBCreateTable(dbh, NEWEXP_TABLE_NAME, md);
     
    28752605}
    28762606
    2877 bool newExpInsert(psDB * dbh, const char *exp_tag, const char *exp_id, const char *camera, const char *telescope, psS32 imfiles, const char *workdir)
     2607bool 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)
    28782608{
    28792609    psMetadata *md = psMetadataAlloc();
    2880     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, exp_tag)) {
    2881         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
    2882         psFree(md);
    2883         return false;
    2884     }
    2885     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_STRING, NULL, exp_id)) {
     2610    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, exp_id)) {
    28862611        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    28872612        psFree(md);
    28882613        return false;
    28892614    }
    2890     if (!psMetadataAdd(md, PS_LIST_TAIL, "camera", PS_DATA_STRING, NULL, camera)) {
    2891         psError(PS_ERR_UNKNOWN, false, "failed to add item camera");
    2892         psFree(md);
    2893         return false;
    2894     }
    2895     if (!psMetadataAdd(md, PS_LIST_TAIL, "telescope", PS_DATA_STRING, NULL, telescope)) {
    2896         psError(PS_ERR_UNKNOWN, false, "failed to add item telescope");
    2897         psFree(md);
    2898         return false;
    2899     }
    2900     if (!psMetadataAdd(md, PS_LIST_TAIL, "imfiles", PS_DATA_S32, NULL, imfiles)) {
    2901         psError(PS_ERR_UNKNOWN, false, "failed to add item imfiles");
     2615    if (!psMetadataAdd(md, PS_LIST_TAIL, "tmp_exp_name", PS_DATA_STRING, NULL, tmp_exp_name)) {
     2616        psError(PS_ERR_UNKNOWN, false, "failed to add item tmp_exp_name");
     2617        psFree(md);
     2618        return false;
     2619    }
     2620    if (!psMetadataAdd(md, PS_LIST_TAIL, "tmp_camera", PS_DATA_STRING, NULL, tmp_camera)) {
     2621        psError(PS_ERR_UNKNOWN, false, "failed to add item tmp_camera");
     2622        psFree(md);
     2623        return false;
     2624    }
     2625    if (!psMetadataAdd(md, PS_LIST_TAIL, "tmp_telescope", PS_DATA_STRING, NULL, tmp_telescope)) {
     2626        psError(PS_ERR_UNKNOWN, false, "failed to add item tmp_telescope");
     2627        psFree(md);
     2628        return false;
     2629    }
     2630    if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, NULL, state)) {
     2631        psError(PS_ERR_UNKNOWN, false, "failed to add item state");
    29022632        psFree(md);
    29032633        return false;
     
    29052635    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, workdir)) {
    29062636        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
     2637        psFree(md);
     2638        return false;
     2639    }
     2640    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir_state", PS_DATA_STRING, NULL, workdir_state)) {
     2641        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir_state");
    29072642        psFree(md);
    29082643        return false;
     
    29312666bool newExpInsertObject(psDB *dbh, newExpRow *object)
    29322667{
    2933     return newExpInsert(dbh, object->exp_tag, object->exp_id, object->camera, object->telescope, object->imfiles, object->workdir);
     2668    return newExpInsert(dbh, object->exp_id, object->tmp_exp_name, object->tmp_camera, object->tmp_telescope, object->state, object->workdir, object->workdir_state);
    29342669}
    29352670
     
    30042739{
    30052740    psMetadata *md = psMetadataAlloc();
    3006     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, object->exp_tag)) {
    3007         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
    3008         psFree(md);
    3009         return false;
    3010     }
    3011     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_STRING, NULL, object->exp_id)) {
     2741    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, object->exp_id)) {
    30122742        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    30132743        psFree(md);
    30142744        return false;
    30152745    }
    3016     if (!psMetadataAdd(md, PS_LIST_TAIL, "camera", PS_DATA_STRING, NULL, object->camera)) {
    3017         psError(PS_ERR_UNKNOWN, false, "failed to add item camera");
    3018         psFree(md);
    3019         return false;
    3020     }
    3021     if (!psMetadataAdd(md, PS_LIST_TAIL, "telescope", PS_DATA_STRING, NULL, object->telescope)) {
    3022         psError(PS_ERR_UNKNOWN, false, "failed to add item telescope");
    3023         psFree(md);
    3024         return false;
    3025     }
    3026     if (!psMetadataAdd(md, PS_LIST_TAIL, "imfiles", PS_DATA_S32, NULL, object->imfiles)) {
    3027         psError(PS_ERR_UNKNOWN, false, "failed to add item imfiles");
     2746    if (!psMetadataAdd(md, PS_LIST_TAIL, "tmp_exp_name", PS_DATA_STRING, NULL, object->tmp_exp_name)) {
     2747        psError(PS_ERR_UNKNOWN, false, "failed to add item tmp_exp_name");
     2748        psFree(md);
     2749        return false;
     2750    }
     2751    if (!psMetadataAdd(md, PS_LIST_TAIL, "tmp_camera", PS_DATA_STRING, NULL, object->tmp_camera)) {
     2752        psError(PS_ERR_UNKNOWN, false, "failed to add item tmp_camera");
     2753        psFree(md);
     2754        return false;
     2755    }
     2756    if (!psMetadataAdd(md, PS_LIST_TAIL, "tmp_telescope", PS_DATA_STRING, NULL, object->tmp_telescope)) {
     2757        psError(PS_ERR_UNKNOWN, false, "failed to add item tmp_telescope");
     2758        psFree(md);
     2759        return false;
     2760    }
     2761    if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, NULL, object->state)) {
     2762        psError(PS_ERR_UNKNOWN, false, "failed to add item state");
    30282763        psFree(md);
    30292764        return false;
     
    30342769        return false;
    30352770    }
     2771    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir_state", PS_DATA_STRING, NULL, object->workdir_state)) {
     2772        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir_state");
     2773        psFree(md);
     2774        return false;
     2775    }
    30362776
    30372777
     
    30432783
    30442784bool status = false;
    3045     char* exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
    3046     if (!status) {
    3047         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
    3048         return false;
    3049     }
    3050     char* exp_id = psMetadataLookupPtr(&status, md, "exp_id");
     2785    psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id");
    30512786    if (!status) {
    30522787        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
    30532788        return false;
    30542789    }
    3055     char* camera = psMetadataLookupPtr(&status, md, "camera");
    3056     if (!status) {
    3057         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item camera");
    3058         return false;
    3059     }
    3060     char* telescope = psMetadataLookupPtr(&status, md, "telescope");
    3061     if (!status) {
    3062         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item telescope");
    3063         return false;
    3064     }
    3065     psS32 imfiles = psMetadataLookupS32(&status, md, "imfiles");
    3066     if (!status) {
    3067         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item imfiles");
     2790    char* tmp_exp_name = psMetadataLookupPtr(&status, md, "tmp_exp_name");
     2791    if (!status) {
     2792        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item tmp_exp_name");
     2793        return false;
     2794    }
     2795    char* tmp_camera = psMetadataLookupPtr(&status, md, "tmp_camera");
     2796    if (!status) {
     2797        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item tmp_camera");
     2798        return false;
     2799    }
     2800    char* tmp_telescope = psMetadataLookupPtr(&status, md, "tmp_telescope");
     2801    if (!status) {
     2802        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item tmp_telescope");
     2803        return false;
     2804    }
     2805    char* state = psMetadataLookupPtr(&status, md, "state");
     2806    if (!status) {
     2807        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item state");
    30682808        return false;
    30692809    }
     
    30732813        return false;
    30742814    }
    3075 
    3076     return newExpRowAlloc(exp_tag, exp_id, camera, telescope, imfiles, workdir);
     2815    char* workdir_state = psMetadataLookupPtr(&status, md, "workdir_state");
     2816    if (!status) {
     2817        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item workdir_state");
     2818        return false;
     2819    }
     2820
     2821    return newExpRowAlloc(exp_id, tmp_exp_name, tmp_camera, tmp_telescope, state, workdir, workdir_state);
    30772822}
    30782823psArray *newExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    31862931static void newImfileRowFree(newImfileRow *object);
    31872932
    3188 newImfileRow *newImfileRowAlloc(const char *exp_tag, const char *class, const char *class_id, const char *uri)
     2933newImfileRow *newImfileRowAlloc(psS64 exp_id, const char *tmp_class_id, const char *uri)
    31892934{
    31902935    newImfileRow    *_object;
     
    31932938    psMemSetDeallocator(_object, (psFreeFunc)newImfileRowFree);
    31942939
    3195     _object->exp_tag = psStringCopy(exp_tag);
    3196     _object->class = psStringCopy(class);
    3197     _object->class_id = psStringCopy(class_id);
     2940    _object->exp_id = exp_id;
     2941    _object->tmp_class_id = psStringCopy(tmp_class_id);
    31982942    _object->uri = psStringCopy(uri);
    31992943
     
    32032947static void newImfileRowFree(newImfileRow *object)
    32042948{
    3205     psFree(object->exp_tag);
    3206     psFree(object->class);
    3207     psFree(object->class_id);
     2949    psFree(object->tmp_class_id);
    32082950    psFree(object->uri);
    32092951}
     
    32122954{
    32132955    psMetadata *md = psMetadataAlloc();
    3214     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, "Primary Key", "64")) {
    3215         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
    3216         psFree(md);
    3217         return false;
    3218     }
    3219     if (!psMetadataAdd(md, PS_LIST_TAIL, "class", PS_DATA_STRING, "Primary Key", "64")) {
    3220         psError(PS_ERR_UNKNOWN, false, "failed to add item class");
    3221         psFree(md);
    3222         return false;
    3223     }
    3224     if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, "Primary Key", "64")) {
    3225         psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
     2956    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key fkey(exp_id) ref newExp(exp_id)", 64)) {
     2957        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     2958        psFree(md);
     2959        return false;
     2960    }
     2961    if (!psMetadataAdd(md, PS_LIST_TAIL, "tmp_class_id", PS_DATA_STRING, "Primary Key", "64")) {
     2962        psError(PS_ERR_UNKNOWN, false, "failed to add item tmp_class_id");
    32262963        psFree(md);
    32272964        return false;
     
    32452982}
    32462983
    3247 bool newImfileInsert(psDB * dbh, const char *exp_tag, const char *class, const char *class_id, const char *uri)
     2984bool newImfileInsert(psDB * dbh, psS64 exp_id, const char *tmp_class_id, const char *uri)
    32482985{
    32492986    psMetadata *md = psMetadataAlloc();
    3250     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, exp_tag)) {
    3251         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
    3252         psFree(md);
    3253         return false;
    3254     }
    3255     if (!psMetadataAdd(md, PS_LIST_TAIL, "class", PS_DATA_STRING, NULL, class)) {
    3256         psError(PS_ERR_UNKNOWN, false, "failed to add item class");
    3257         psFree(md);
    3258         return false;
    3259     }
    3260     if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, class_id)) {
    3261         psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
     2987    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, exp_id)) {
     2988        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     2989        psFree(md);
     2990        return false;
     2991    }
     2992    if (!psMetadataAdd(md, PS_LIST_TAIL, "tmp_class_id", PS_DATA_STRING, NULL, tmp_class_id)) {
     2993        psError(PS_ERR_UNKNOWN, false, "failed to add item tmp_class_id");
    32622994        psFree(md);
    32632995        return false;
     
    32913023bool newImfileInsertObject(psDB *dbh, newImfileRow *object)
    32923024{
    3293     return newImfileInsert(dbh, object->exp_tag, object->class, object->class_id, object->uri);
     3025    return newImfileInsert(dbh, object->exp_id, object->tmp_class_id, object->uri);
    32943026}
    32953027
     
    33643096{
    33653097    psMetadata *md = psMetadataAlloc();
    3366     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, object->exp_tag)) {
    3367         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
    3368         psFree(md);
    3369         return false;
    3370     }
    3371     if (!psMetadataAdd(md, PS_LIST_TAIL, "class", PS_DATA_STRING, NULL, object->class)) {
    3372         psError(PS_ERR_UNKNOWN, false, "failed to add item class");
    3373         psFree(md);
    3374         return false;
    3375     }
    3376     if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, object->class_id)) {
    3377         psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
     3098    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, object->exp_id)) {
     3099        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     3100        psFree(md);
     3101        return false;
     3102    }
     3103    if (!psMetadataAdd(md, PS_LIST_TAIL, "tmp_class_id", PS_DATA_STRING, NULL, object->tmp_class_id)) {
     3104        psError(PS_ERR_UNKNOWN, false, "failed to add item tmp_class_id");
    33783105        psFree(md);
    33793106        return false;
     
    33933120
    33943121bool status = false;
    3395     char* exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
    3396     if (!status) {
    3397         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
    3398         return false;
    3399     }
    3400     char* class = psMetadataLookupPtr(&status, md, "class");
    3401     if (!status) {
    3402         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class");
    3403         return false;
    3404     }
    3405     char* class_id = psMetadataLookupPtr(&status, md, "class_id");
    3406     if (!status) {
    3407         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class_id");
     3122    psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id");
     3123    if (!status) {
     3124        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
     3125        return false;
     3126    }
     3127    char* tmp_class_id = psMetadataLookupPtr(&status, md, "tmp_class_id");
     3128    if (!status) {
     3129        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item tmp_class_id");
    34083130        return false;
    34093131    }
     
    34143136    }
    34153137
    3416     return newImfileRowAlloc(exp_tag, class, class_id, uri);
     3138    return newImfileRowAlloc(exp_id, tmp_class_id, uri);
    34173139}
    34183140psArray *newImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    35263248static void rawExpRowFree(rawExpRow *object);
    35273249
    3528 rawExpRow *rawExpRowAlloc(const char *exp_tag, const char *exp_id, const char *camera, const char *telescope, psTime* dateobs, 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)
     3250rawExpRow *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 *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)
    35293251{
    35303252    rawExpRow       *_object;
     
    35333255    psMemSetDeallocator(_object, (psFreeFunc)rawExpRowFree);
    35343256
    3535     _object->exp_tag = psStringCopy(exp_tag);
    3536     _object->exp_id = psStringCopy(exp_id);
     3257    _object->exp_id = exp_id;
     3258    _object->exp_name = psStringCopy(exp_name);
    35373259    _object->camera = psStringCopy(camera);
    35383260    _object->telescope = psStringCopy(telescope);
    35393261    _object->dateobs = psTimeCopy(dateobs);
     3262    _object->exp_tag = psStringCopy(exp_tag);
    35403263    _object->exp_type = psStringCopy(exp_type);
    3541     _object->imfiles = imfiles;
    35423264    _object->filelevel = psStringCopy(filelevel);
    35433265    _object->workdir = psStringCopy(workdir);
     
    35693291static void rawExpRowFree(rawExpRow *object)
    35703292{
    3571     psFree(object->exp_tag);
    3572     psFree(object->exp_id);
     3293    psFree(object->exp_name);
    35733294    psFree(object->camera);
    35743295    psFree(object->telescope);
    35753296    psFree(object->dateobs);
     3297    psFree(object->exp_tag);
    35763298    psFree(object->exp_type);
    35773299    psFree(object->filelevel);
     
    35843306{
    35853307    psMetadata *md = psMetadataAlloc();
    3586     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, "Primary Key", "64")) {
    3587         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
    3588         psFree(md);
    3589         return false;
    3590     }
    3591     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_STRING, "Key", "64")) {
     3308    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key fkey(exp_id) ref newExp(exp_id)", 64)) {
    35923309        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     3310        psFree(md);
     3311        return false;
     3312    }
     3313    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_name", PS_DATA_STRING, NULL, "64")) {
     3314        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_name");
    35933315        psFree(md);
    35943316        return false;
     
    36093331        return false;
    36103332    }
     3333    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, "255")) {
     3334        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     3335        psFree(md);
     3336        return false;
     3337    }
    36113338    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_type", PS_DATA_STRING, NULL, "64")) {
    36123339        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_type");
     
    36143341        return false;
    36153342    }
    3616     if (!psMetadataAdd(md, PS_LIST_TAIL, "imfiles", PS_DATA_S32, NULL, 0)) {
    3617         psError(PS_ERR_UNKNOWN, false, "failed to add item imfiles");
    3618         psFree(md);
    3619         return false;
    3620     }
    36213343    if (!psMetadataAdd(md, PS_LIST_TAIL, "filelevel", PS_DATA_STRING, NULL, "64")) {
    36223344        psError(PS_ERR_UNKNOWN, false, "failed to add item filelevel");
     
    37473469}
    37483470
    3749 bool rawExpInsert(psDB * dbh, const char *exp_tag, const char *exp_id, const char *camera, const char *telescope, psTime* dateobs, 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)
     3471bool 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 *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)
    37503472{
    37513473    psMetadata *md = psMetadataAlloc();
     3474    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, exp_id)) {
     3475        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     3476        psFree(md);
     3477        return false;
     3478    }
     3479    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_name", PS_DATA_STRING, NULL, exp_name)) {
     3480        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_name");
     3481        psFree(md);
     3482        return false;
     3483    }
     3484    if (!psMetadataAdd(md, PS_LIST_TAIL, "camera", PS_DATA_STRING, NULL, camera)) {
     3485        psError(PS_ERR_UNKNOWN, false, "failed to add item camera");
     3486        psFree(md);
     3487        return false;
     3488    }
     3489    if (!psMetadataAdd(md, PS_LIST_TAIL, "telescope", PS_DATA_STRING, NULL, telescope)) {
     3490        psError(PS_ERR_UNKNOWN, false, "failed to add item telescope");
     3491        psFree(md);
     3492        return false;
     3493    }
     3494    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, dateobs)) {
     3495        psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
     3496        psFree(md);
     3497        return false;
     3498    }
    37523499    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, exp_tag)) {
    37533500        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     
    37553502        return false;
    37563503    }
    3757     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_STRING, NULL, exp_id)) {
    3758         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    3759         psFree(md);
    3760         return false;
    3761     }
    3762     if (!psMetadataAdd(md, PS_LIST_TAIL, "camera", PS_DATA_STRING, NULL, camera)) {
    3763         psError(PS_ERR_UNKNOWN, false, "failed to add item camera");
    3764         psFree(md);
    3765         return false;
    3766     }
    3767     if (!psMetadataAdd(md, PS_LIST_TAIL, "telescope", PS_DATA_STRING, NULL, telescope)) {
    3768         psError(PS_ERR_UNKNOWN, false, "failed to add item telescope");
    3769         psFree(md);
    3770         return false;
    3771     }
    3772     if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, dateobs)) {
    3773         psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
    3774         psFree(md);
    3775         return false;
    3776     }
    37773504    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_type", PS_DATA_STRING, NULL, exp_type)) {
    37783505        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_type");
    3779         psFree(md);
    3780         return false;
    3781     }
    3782     if (!psMetadataAdd(md, PS_LIST_TAIL, "imfiles", PS_DATA_S32, NULL, imfiles)) {
    3783         psError(PS_ERR_UNKNOWN, false, "failed to add item imfiles");
    37843506        psFree(md);
    37853507        return false;
     
    39233645bool rawExpInsertObject(psDB *dbh, rawExpRow *object)
    39243646{
    3925     return rawExpInsert(dbh, object->exp_tag, object->exp_id, object->camera, object->telescope, object->dateobs, 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);
     3647    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->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);
    39263648}
    39273649
     
    39963718{
    39973719    psMetadata *md = psMetadataAlloc();
     3720    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, object->exp_id)) {
     3721        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     3722        psFree(md);
     3723        return false;
     3724    }
     3725    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_name", PS_DATA_STRING, NULL, object->exp_name)) {
     3726        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_name");
     3727        psFree(md);
     3728        return false;
     3729    }
     3730    if (!psMetadataAdd(md, PS_LIST_TAIL, "camera", PS_DATA_STRING, NULL, object->camera)) {
     3731        psError(PS_ERR_UNKNOWN, false, "failed to add item camera");
     3732        psFree(md);
     3733        return false;
     3734    }
     3735    if (!psMetadataAdd(md, PS_LIST_TAIL, "telescope", PS_DATA_STRING, NULL, object->telescope)) {
     3736        psError(PS_ERR_UNKNOWN, false, "failed to add item telescope");
     3737        psFree(md);
     3738        return false;
     3739    }
     3740    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, object->dateobs)) {
     3741        psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
     3742        psFree(md);
     3743        return false;
     3744    }
    39983745    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, object->exp_tag)) {
    39993746        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     
    40013748        return false;
    40023749    }
    4003     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_STRING, NULL, object->exp_id)) {
    4004         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    4005         psFree(md);
    4006         return false;
    4007     }
    4008     if (!psMetadataAdd(md, PS_LIST_TAIL, "camera", PS_DATA_STRING, NULL, object->camera)) {
    4009         psError(PS_ERR_UNKNOWN, false, "failed to add item camera");
    4010         psFree(md);
    4011         return false;
    4012     }
    4013     if (!psMetadataAdd(md, PS_LIST_TAIL, "telescope", PS_DATA_STRING, NULL, object->telescope)) {
    4014         psError(PS_ERR_UNKNOWN, false, "failed to add item telescope");
    4015         psFree(md);
    4016         return false;
    4017     }
    4018     if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, object->dateobs)) {
    4019         psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
    4020         psFree(md);
    4021         return false;
    4022     }
    40233750    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_type", PS_DATA_STRING, NULL, object->exp_type)) {
    40243751        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_type");
     
    40263753        return false;
    40273754    }
    4028     if (!psMetadataAdd(md, PS_LIST_TAIL, "imfiles", PS_DATA_S32, NULL, object->imfiles)) {
    4029         psError(PS_ERR_UNKNOWN, false, "failed to add item imfiles");
    4030         psFree(md);
    4031         return false;
    4032     }
    40333755    if (!psMetadataAdd(md, PS_LIST_TAIL, "filelevel", PS_DATA_STRING, NULL, object->filelevel)) {
    40343756        psError(PS_ERR_UNKNOWN, false, "failed to add item filelevel");
     
    41553877
    41563878bool status = false;
     3879    psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id");
     3880    if (!status) {
     3881        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
     3882        return false;
     3883    }
     3884    char* exp_name = psMetadataLookupPtr(&status, md, "exp_name");
     3885    if (!status) {
     3886        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_name");
     3887        return false;
     3888    }
     3889    char* camera = psMetadataLookupPtr(&status, md, "camera");
     3890    if (!status) {
     3891        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item camera");
     3892        return false;
     3893    }
     3894    char* telescope = psMetadataLookupPtr(&status, md, "telescope");
     3895    if (!status) {
     3896        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item telescope");
     3897        return false;
     3898    }
     3899    psTime* dateobs = psMetadataLookupPtr(&status, md, "dateobs");
     3900    if (!status) {
     3901        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dateobs");
     3902        return false;
     3903    }
    41573904    char* exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
    41583905    if (!status) {
     
    41603907        return false;
    41613908    }
    4162     char* exp_id = psMetadataLookupPtr(&status, md, "exp_id");
    4163     if (!status) {
    4164         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
    4165         return false;
    4166     }
    4167     char* camera = psMetadataLookupPtr(&status, md, "camera");
    4168     if (!status) {
    4169         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item camera");
    4170         return false;
    4171     }
    4172     char* telescope = psMetadataLookupPtr(&status, md, "telescope");
    4173     if (!status) {
    4174         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item telescope");
    4175         return false;
    4176     }
    4177     psTime* dateobs = psMetadataLookupPtr(&status, md, "dateobs");
    4178     if (!status) {
    4179         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dateobs");
    4180         return false;
    4181     }
    41823909    char* exp_type = psMetadataLookupPtr(&status, md, "exp_type");
    41833910    if (!status) {
     
    41853912        return false;
    41863913    }
    4187     psS32 imfiles = psMetadataLookupS32(&status, md, "imfiles");
    4188     if (!status) {
    4189         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item imfiles");
    4190         return false;
    4191     }
    41923914    char* filelevel = psMetadataLookupPtr(&status, md, "filelevel");
    41933915    if (!status) {
     
    43064028    }
    43074029
    4308     return rawExpRowAlloc(exp_tag, exp_id, camera, telescope, dateobs, 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);
     4030    return rawExpRowAlloc(exp_id, exp_name, camera, telescope, dateobs, exp_tag, exp_type, 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);
    43094031}
    43104032psArray *rawExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    44184140static void rawImfileRowFree(rawImfileRow *object);
    44194141
    4420 rawImfileRow *rawImfileRowAlloc(const char *exp_tag, const char *class_id, const char *uri, const char *exp_type, const char *filelevel, 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, psTime* dateobs, psS16 fault)
     4142rawImfileRow *rawImfileRowAlloc(psS64 exp_id, const char *exp_name, const char *camera, const char *telescope, psTime* dateobs, const char *tmp_class_id, const char *class_id, const char *uri, const char *exp_type, const char *filelevel, 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, psS16 fault)
    44214143{
    44224144    rawImfileRow    *_object;
     
    44254147    psMemSetDeallocator(_object, (psFreeFunc)rawImfileRowFree);
    44264148
    4427     _object->exp_tag = psStringCopy(exp_tag);
     4149    _object->exp_id = exp_id;
     4150    _object->exp_name = psStringCopy(exp_name);
     4151    _object->camera = psStringCopy(camera);
     4152    _object->telescope = psStringCopy(telescope);
     4153    _object->dateobs = psTimeCopy(dateobs);
     4154    _object->tmp_class_id = psStringCopy(tmp_class_id);
    44284155    _object->class_id = psStringCopy(class_id);
    44294156    _object->uri = psStringCopy(uri);
     
    44494176    _object->user_5 = user_5;
    44504177    _object->object = psStringCopy(object);
    4451     _object->dateobs = psTimeCopy(dateobs);
    44524178    _object->fault = fault;
    44534179
     
    44574183static void rawImfileRowFree(rawImfileRow *object)
    44584184{
    4459     psFree(object->exp_tag);
     4185    psFree(object->exp_name);
     4186    psFree(object->camera);
     4187    psFree(object->telescope);
     4188    psFree(object->dateobs);
     4189    psFree(object->tmp_class_id);
    44604190    psFree(object->class_id);
    44614191    psFree(object->uri);
     
    44644194    psFree(object->filter);
    44654195    psFree(object->object);
    4466     psFree(object->dateobs);
    44674196}
    44684197
     
    44704199{
    44714200    psMetadata *md = psMetadataAlloc();
    4472     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, "Primary Key", "64")) {
    4473         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     4201    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key fkey(exp_id, tmp_class_id) ref newImfile(exp_id, tmp_class_id)", 64)) {
     4202        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     4203        psFree(md);
     4204        return false;
     4205    }
     4206    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_name", PS_DATA_STRING, NULL, "64")) {
     4207        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_name");
     4208        psFree(md);
     4209        return false;
     4210    }
     4211    if (!psMetadataAdd(md, PS_LIST_TAIL, "camera", PS_DATA_STRING, NULL, "64")) {
     4212        psError(PS_ERR_UNKNOWN, false, "failed to add item camera");
     4213        psFree(md);
     4214        return false;
     4215    }
     4216    if (!psMetadataAdd(md, PS_LIST_TAIL, "telescope", PS_DATA_STRING, NULL, "64")) {
     4217        psError(PS_ERR_UNKNOWN, false, "failed to add item telescope");
     4218        psFree(md);
     4219        return false;
     4220    }
     4221    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, NULL)) {
     4222        psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
     4223        psFree(md);
     4224        return false;
     4225    }
     4226    if (!psMetadataAdd(md, PS_LIST_TAIL, "tmp_class_id", PS_DATA_STRING, "Key", "64")) {
     4227        psError(PS_ERR_UNKNOWN, false, "failed to add item tmp_class_id");
    44744228        psFree(md);
    44754229        return false;
     
    45904344        return false;
    45914345    }
    4592     if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, NULL)) {
    4593         psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
    4594         psFree(md);
    4595         return false;
    4596     }
    45974346    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "Key NOT NULL", 0)) {
    45984347        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
     
    46134362}
    46144363
    4615 bool rawImfileInsert(psDB * dbh, const char *exp_tag, const char *class_id, const char *uri, const char *exp_type, const char *filelevel, 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, psTime* dateobs, psS16 fault)
     4364bool rawImfileInsert(psDB * dbh, psS64 exp_id, const char *exp_name, const char *camera, const char *telescope, psTime* dateobs, const char *tmp_class_id, const char *class_id, const char *uri, const char *exp_type, const char *filelevel, 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, psS16 fault)
    46164365{
    46174366    psMetadata *md = psMetadataAlloc();
    4618     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, exp_tag)) {
    4619         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     4367    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, exp_id)) {
     4368        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     4369        psFree(md);
     4370        return false;
     4371    }
     4372    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_name", PS_DATA_STRING, NULL, exp_name)) {
     4373        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_name");
     4374        psFree(md);
     4375        return false;
     4376    }
     4377    if (!psMetadataAdd(md, PS_LIST_TAIL, "camera", PS_DATA_STRING, NULL, camera)) {
     4378        psError(PS_ERR_UNKNOWN, false, "failed to add item camera");
     4379        psFree(md);
     4380        return false;
     4381    }
     4382    if (!psMetadataAdd(md, PS_LIST_TAIL, "telescope", PS_DATA_STRING, NULL, telescope)) {
     4383        psError(PS_ERR_UNKNOWN, false, "failed to add item telescope");
     4384        psFree(md);
     4385        return false;
     4386    }
     4387    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, dateobs)) {
     4388        psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
     4389        psFree(md);
     4390        return false;
     4391    }
     4392    if (!psMetadataAdd(md, PS_LIST_TAIL, "tmp_class_id", PS_DATA_STRING, NULL, tmp_class_id)) {
     4393        psError(PS_ERR_UNKNOWN, false, "failed to add item tmp_class_id");
    46204394        psFree(md);
    46214395        return false;
     
    47334507    if (!psMetadataAdd(md, PS_LIST_TAIL, "object", PS_DATA_STRING, NULL, object)) {
    47344508        psError(PS_ERR_UNKNOWN, false, "failed to add item object");
    4735         psFree(md);
    4736         return false;
    4737     }
    4738     if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, dateobs)) {
    4739         psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
    47404509        psFree(md);
    47414510        return false;
     
    47694538bool rawImfileInsertObject(psDB *dbh, rawImfileRow *object)
    47704539{
    4771     return rawImfileInsert(dbh, object->exp_tag, object->class_id, object->uri, object->exp_type, object->filelevel, 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->dateobs, object->fault);
     4540    return rawImfileInsert(dbh, object->exp_id, object->exp_name, object->camera, object->telescope, object->dateobs, object->tmp_class_id, object->class_id, object->uri, object->exp_type, object->filelevel, 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->fault);
    47724541}
    47734542
     
    48424611{
    48434612    psMetadata *md = psMetadataAlloc();
    4844     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, object->exp_tag)) {
    4845         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     4613    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, object->exp_id)) {
     4614        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     4615        psFree(md);
     4616        return false;
     4617    }
     4618    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_name", PS_DATA_STRING, NULL, object->exp_name)) {
     4619        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_name");
     4620        psFree(md);
     4621        return false;
     4622    }
     4623    if (!psMetadataAdd(md, PS_LIST_TAIL, "camera", PS_DATA_STRING, NULL, object->camera)) {
     4624        psError(PS_ERR_UNKNOWN, false, "failed to add item camera");
     4625        psFree(md);
     4626        return false;
     4627    }
     4628    if (!psMetadataAdd(md, PS_LIST_TAIL, "telescope", PS_DATA_STRING, NULL, object->telescope)) {
     4629        psError(PS_ERR_UNKNOWN, false, "failed to add item telescope");
     4630        psFree(md);
     4631        return false;
     4632    }
     4633    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, object->dateobs)) {
     4634        psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
     4635        psFree(md);
     4636        return false;
     4637    }
     4638    if (!psMetadataAdd(md, PS_LIST_TAIL, "tmp_class_id", PS_DATA_STRING, NULL, object->tmp_class_id)) {
     4639        psError(PS_ERR_UNKNOWN, false, "failed to add item tmp_class_id");
    48464640        psFree(md);
    48474641        return false;
     
    49624756        return false;
    49634757    }
    4964     if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, object->dateobs)) {
    4965         psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
    4966         psFree(md);
    4967         return false;
    4968     }
    49694758    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) {
    49704759        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
     
    49814770
    49824771bool status = false;
    4983     char* exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
    4984     if (!status) {
    4985         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
     4772    psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id");
     4773    if (!status) {
     4774        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
     4775        return false;
     4776    }
     4777    char* exp_name = psMetadataLookupPtr(&status, md, "exp_name");
     4778    if (!status) {
     4779        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_name");
     4780        return false;
     4781    }
     4782    char* camera = psMetadataLookupPtr(&status, md, "camera");
     4783    if (!status) {
     4784        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item camera");
     4785        return false;
     4786    }
     4787    char* telescope = psMetadataLookupPtr(&status, md, "telescope");
     4788    if (!status) {
     4789        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item telescope");
     4790        return false;
     4791    }
     4792    psTime* dateobs = psMetadataLookupPtr(&status, md, "dateobs");
     4793    if (!status) {
     4794        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dateobs");
     4795        return false;
     4796    }
     4797    char* tmp_class_id = psMetadataLookupPtr(&status, md, "tmp_class_id");
     4798    if (!status) {
     4799        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item tmp_class_id");
    49864800        return false;
    49874801    }
     
    51014915        return false;
    51024916    }
    5103     psTime* dateobs = psMetadataLookupPtr(&status, md, "dateobs");
    5104     if (!status) {
    5105         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dateobs");
    5106         return false;
    5107     }
    51084917    psS16 fault = psMetadataLookupS16(&status, md, "fault");
    51094918    if (!status) {
     
    51124921    }
    51134922
    5114     return rawImfileRowAlloc(exp_tag, class_id, uri, exp_type, filelevel, 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, dateobs, fault);
     4923    return rawImfileRowAlloc(exp_id, exp_name, camera, telescope, dateobs, tmp_class_id, class_id, uri, exp_type, filelevel, 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, fault);
    51154924}
    51164925psArray *rawImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    52245033static void guidePendingExpRowFree(guidePendingExpRow *object);
    52255034
    5226 guidePendingExpRow *guidePendingExpRowAlloc(psS64 guide_id, const char *exp_tag, const char *recipe)
     5035guidePendingExpRow *guidePendingExpRowAlloc(psS64 guide_id, psS64 exp_id, const char *recipe)
    52275036{
    52285037    guidePendingExpRow *_object;
     
    52325041
    52335042    _object->guide_id = guide_id;
    5234     _object->exp_tag = psStringCopy(exp_tag);
     5043    _object->exp_id = exp_id;
    52355044    _object->recipe = psStringCopy(recipe);
    52365045
     
    52405049static void guidePendingExpRowFree(guidePendingExpRow *object)
    52415050{
    5242     psFree(object->exp_tag);
    52435051    psFree(object->recipe);
    52445052}
     
    52525060        return false;
    52535061    }
    5254     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, "Key", "64")) {
    5255         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     5062    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Key", 64)) {
     5063        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    52565064        psFree(md);
    52575065        return false;
     
    52755083}
    52765084
    5277 bool guidePendingExpInsert(psDB * dbh, psS64 guide_id, const char *exp_tag, const char *recipe)
     5085bool guidePendingExpInsert(psDB * dbh, psS64 guide_id, psS64 exp_id, const char *recipe)
    52785086{
    52795087    psMetadata *md = psMetadataAlloc();
     
    52835091        return false;
    52845092    }
    5285     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, exp_tag)) {
    5286         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     5093    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, exp_id)) {
     5094        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    52875095        psFree(md);
    52885096        return false;
     
    53165124bool guidePendingExpInsertObject(psDB *dbh, guidePendingExpRow *object)
    53175125{
    5318     return guidePendingExpInsert(dbh, object->guide_id, object->exp_tag, object->recipe);
     5126    return guidePendingExpInsert(dbh, object->guide_id, object->exp_id, object->recipe);
    53195127}
    53205128
     
    53945202        return false;
    53955203    }
    5396     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, object->exp_tag)) {
    5397         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     5204    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, object->exp_id)) {
     5205        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    53985206        psFree(md);
    53995207        return false;
     
    54185226        return false;
    54195227    }
    5420     char* exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
    5421     if (!status) {
    5422         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
     5228    psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id");
     5229    if (!status) {
     5230        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
    54235231        return false;
    54245232    }
     
    54295237    }
    54305238
    5431     return guidePendingExpRowAlloc(guide_id, exp_tag, recipe);
     5239    return guidePendingExpRowAlloc(guide_id, exp_id, recipe);
    54325240}
    54335241psArray *guidePendingExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    55395347    return true;
    55405348}
    5541 static void chipPendingExpRowFree(chipPendingExpRow *object);
    5542 
    5543 chipPendingExpRow *chipPendingExpRowAlloc(psS64 chip_id, const char *exp_tag, psS64 guide_id, const char *workdir, const char *label, const char *reduction, const char *expgroup, const char *dvodb)
    5544 {
    5545     chipPendingExpRow *_object;
    5546 
    5547     _object = psAlloc(sizeof(chipPendingExpRow));
    5548     psMemSetDeallocator(_object, (psFreeFunc)chipPendingExpRowFree);
     5349static void chipRunRowFree(chipRunRow *object);
     5350
     5351chipRunRow *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)
     5352{
     5353    chipRunRow      *_object;
     5354
     5355    _object = psAlloc(sizeof(chipRunRow));
     5356    psMemSetDeallocator(_object, (psFreeFunc)chipRunRowFree);
    55495357
    55505358    _object->chip_id = chip_id;
    5551     _object->exp_tag = psStringCopy(exp_tag);
    5552     _object->guide_id = guide_id;
     5359    _object->state = psStringCopy(state);
    55535360    _object->workdir = psStringCopy(workdir);
     5361    _object->workdir_state = psStringCopy(workdir_state);
    55545362    _object->label = psStringCopy(label);
    55555363    _object->reduction = psStringCopy(reduction);
     
    55605368}
    55615369
    5562 static void chipPendingExpRowFree(chipPendingExpRow *object)
    5563 {
    5564     psFree(object->exp_tag);
     5370static void chipRunRowFree(chipRunRow *object)
     5371{
     5372    psFree(object->state);
    55655373    psFree(object->workdir);
     5374    psFree(object->workdir_state);
    55665375    psFree(object->label);
    55675376    psFree(object->reduction);
     
    55705379}
    55715380
    5572 bool chipPendingExpCreateTable(psDB *dbh)
     5381bool chipRunCreateTable(psDB *dbh)
    55735382{
    55745383    psMetadata *md = psMetadataAlloc();
     
    55785387        return false;
    55795388    }
    5580     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, "Primary Key", "64")) {
    5581         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
    5582         psFree(md);
    5583         return false;
    5584     }
    5585     if (!psMetadataAdd(md, PS_LIST_TAIL, "guide_id", PS_DATA_S64, "Not NULL", 0)) {
    5586         psError(PS_ERR_UNKNOWN, false, "failed to add item guide_id");
     5389    if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, "key", "64")) {
     5390        psError(PS_ERR_UNKNOWN, false, "failed to add item state");
    55875391        psFree(md);
    55885392        return false;
     
    55935397        return false;
    55945398    }
     5399    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir_state", PS_DATA_STRING, "key", "64")) {
     5400        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir_state");
     5401        psFree(md);
     5402        return false;
     5403    }
    55955404    if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, "key", "64")) {
    55965405        psError(PS_ERR_UNKNOWN, false, "failed to add item label");
     
    56145423    }
    56155424
    5616     bool status = psDBCreateTable(dbh, CHIPPENDINGEXP_TABLE_NAME, md);
     5425    bool status = psDBCreateTable(dbh, CHIPRUN_TABLE_NAME, md);
    56175426
    56185427    psFree(md);
     
    56215430}
    56225431
    5623 bool chipPendingExpDropTable(psDB *dbh)
    5624 {
    5625     return psDBDropTable(dbh, CHIPPENDINGEXP_TABLE_NAME);
    5626 }
    5627 
    5628 bool chipPendingExpInsert(psDB * dbh, psS64 chip_id, const char *exp_tag, psS64 guide_id, const char *workdir, const char *label, const char *reduction, const char *expgroup, const char *dvodb)
     5432bool chipRunDropTable(psDB *dbh)
     5433{
     5434    return psDBDropTable(dbh, CHIPRUN_TABLE_NAME);
     5435}
     5436
     5437bool 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)
    56295438{
    56305439    psMetadata *md = psMetadataAlloc();
     
    56345443        return false;
    56355444    }
    5636     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, exp_tag)) {
    5637         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
    5638         psFree(md);
    5639         return false;
    5640     }
    5641     if (!psMetadataAdd(md, PS_LIST_TAIL, "guide_id", PS_DATA_S64, NULL, guide_id)) {
    5642         psError(PS_ERR_UNKNOWN, false, "failed to add item guide_id");
     5445    if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, NULL, state)) {
     5446        psError(PS_ERR_UNKNOWN, false, "failed to add item state");
    56435447        psFree(md);
    56445448        return false;
     
    56495453        return false;
    56505454    }
     5455    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir_state", PS_DATA_STRING, NULL, workdir_state)) {
     5456        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir_state");
     5457        psFree(md);
     5458        return false;
     5459    }
    56515460    if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, label)) {
    56525461        psError(PS_ERR_UNKNOWN, false, "failed to add item label");
     
    56705479    }
    56715480
    5672     bool status = psDBInsertOneRow(dbh, CHIPPENDINGEXP_TABLE_NAME, md);
     5481    bool status = psDBInsertOneRow(dbh, CHIPRUN_TABLE_NAME, md);
    56735482    psFree(md);
    56745483
     
    56765485}
    56775486
    5678 long long chipPendingExpDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
     5487long long chipRunDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
    56795488{
    56805489    long long       deleted = 0;
    56815490
    5682     long long count = psDBDeleteRows(dbh, CHIPPENDINGEXP_TABLE_NAME, where, limit);
     5491    long long count = psDBDeleteRows(dbh, CHIPRUN_TABLE_NAME, where, limit);
    56835492    if (count < 0) {
    5684         psError(PS_ERR_UNKNOWN, true, "failed to delete row from chipPendingExp");
     5493        psError(PS_ERR_UNKNOWN, true, "failed to delete row from chipRun");
    56855494        return count;
    56865495
     
    56905499    return deleted;
    56915500}
    5692 bool chipPendingExpInsertObject(psDB *dbh, chipPendingExpRow *object)
    5693 {
    5694     return chipPendingExpInsert(dbh, object->chip_id, object->exp_tag, object->guide_id, object->workdir, object->label, object->reduction, object->expgroup, object->dvodb);
    5695 }
    5696 
    5697 bool chipPendingExpInsertObjects(psDB *dbh, psArray *objects)
     5501bool chipRunInsertObject(psDB *dbh, chipRunRow *object)
     5502{
     5503    return chipRunInsert(dbh, object->chip_id, object->state, object->workdir, object->workdir_state, object->label, object->reduction, object->expgroup, object->dvodb);
     5504}
     5505
     5506bool chipRunInsertObjects(psDB *dbh, psArray *objects)
    56985507{
    56995508    for (long i = 0; i < psArrayLength(objects); i++) {
    5700         if (!chipPendingExpInsertObject(dbh, objects->data[i])) {
     5509        if (!chipRunInsertObject(dbh, objects->data[i])) {
    57015510            return false;
    57025511        }
     
    57065515}
    57075516
    5708 bool chipPendingExpInsertFits(psDB *dbh, const psFits *fits)
     5517bool chipRunInsertFits(psDB *dbh, const psFits *fits)
    57095518{
    57105519    psArray         *rowSet;
    57115520
    5712     // move to (the first?) extension named  CHIPPENDINGEXP_TABLE_NAME
    5713     if (!psFitsMoveExtName(fits, CHIPPENDINGEXP_TABLE_NAME)) {
    5714         psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", CHIPPENDINGEXP_TABLE_NAME);
     5521    // move to (the first?) extension named  CHIPRUN_TABLE_NAME
     5522    if (!psFitsMoveExtName(fits, CHIPRUN_TABLE_NAME)) {
     5523        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", CHIPRUN_TABLE_NAME);
    57155524        return false;
    57165525    }
     
    57305539    }
    57315540
    5732     if (!psDBInsertRows(dbh, CHIPPENDINGEXP_TABLE_NAME, rowSet)) {
     5541    if (!psDBInsertRows(dbh, CHIPRUN_TABLE_NAME, rowSet)) {
    57335542        psError(PS_ERR_UNKNOWN, false, "databse insert failed");
    57345543        psFree(rowSet);
     
    57415550}
    57425551
    5743 bool chipPendingExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
     5552bool chipRunSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
    57445553{
    57455554    psArray         *rowSet;
    57465555
    5747     rowSet = psDBSelectRows(dbh, CHIPPENDINGEXP_TABLE_NAME, where, limit);
     5556    rowSet = psDBSelectRows(dbh, CHIPRUN_TABLE_NAME, where, limit);
    57485557    if (!rowSet) {
    57495558        return false;
     
    57515560
    57525561    // output to fits
    5753     if (!psFitsWriteTable(fits, NULL, rowSet, CHIPPENDINGEXP_TABLE_NAME)) {
     5562    if (!psFitsWriteTable(fits, NULL, rowSet, CHIPRUN_TABLE_NAME)) {
    57545563        psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
    57555564        psFree(rowSet);
     
    57625571}
    57635572
    5764 psMetadata *chipPendingExpMetadataFromObject(const chipPendingExpRow *object)
     5573psMetadata *chipRunMetadataFromObject(const chipRunRow *object)
    57655574{
    57665575    psMetadata *md = psMetadataAlloc();
     
    57705579        return false;
    57715580    }
    5772     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, object->exp_tag)) {
    5773         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
    5774         psFree(md);
    5775         return false;
    5776     }
    5777     if (!psMetadataAdd(md, PS_LIST_TAIL, "guide_id", PS_DATA_S64, NULL, object->guide_id)) {
    5778         psError(PS_ERR_UNKNOWN, false, "failed to add item guide_id");
     5581    if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, NULL, object->state)) {
     5582        psError(PS_ERR_UNKNOWN, false, "failed to add item state");
    57795583        psFree(md);
    57805584        return false;
     
    57855589        return false;
    57865590    }
     5591    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir_state", PS_DATA_STRING, NULL, object->workdir_state)) {
     5592        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir_state");
     5593        psFree(md);
     5594        return false;
     5595    }
    57875596    if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, object->label)) {
    57885597        psError(PS_ERR_UNKNOWN, false, "failed to add item label");
     
    58105619}
    58115620
    5812 chipPendingExpRow *chipPendingExpObjectFromMetadata(psMetadata *md)
     5621chipRunRow *chipRunObjectFromMetadata(psMetadata *md)
    58135622{
    58145623
     
    58195628        return false;
    58205629    }
    5821     char* exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
    5822     if (!status) {
    5823         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
    5824         return false;
    5825     }
    5826     psS64 guide_id = psMetadataLookupS64(&status, md, "guide_id");
    5827     if (!status) {
    5828         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item guide_id");
     5630    char* state = psMetadataLookupPtr(&status, md, "state");
     5631    if (!status) {
     5632        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item state");
    58295633        return false;
    58305634    }
     
    58345638        return false;
    58355639    }
     5640    char* workdir_state = psMetadataLookupPtr(&status, md, "workdir_state");
     5641    if (!status) {
     5642        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item workdir_state");
     5643        return false;
     5644    }
    58365645    char* label = psMetadataLookupPtr(&status, md, "label");
    58375646    if (!status) {
     
    58555664    }
    58565665
    5857     return chipPendingExpRowAlloc(chip_id, exp_tag, guide_id, workdir, label, reduction, expgroup, dvodb);
    5858 }
    5859 psArray *chipPendingExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     5666    return chipRunRowAlloc(chip_id, state, workdir, workdir_state, label, reduction, expgroup, dvodb);
     5667}
     5668psArray *chipRunSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
    58605669{
    58615670    psArray         *rowSet;
     
    58635672    psU64           i;
    58645673
    5865     rowSet = psDBSelectRows(dbh, CHIPPENDINGEXP_TABLE_NAME, where, limit);
     5674    rowSet = psDBSelectRows(dbh, CHIPRUN_TABLE_NAME, where, limit);
    58665675    if (!rowSet) {
    58675676        return NULL;
     
    58735682
    58745683    for (i = 0; i < rowSet->n; i++) {
    5875         chipPendingExpRow *object = chipPendingExpObjectFromMetadata(rowSet->data[i]);
     5684        chipRunRow *object = chipRunObjectFromMetadata(rowSet->data[i]);
    58765685        psArrayAdd(returnSet, 0, object);
    58775686        psFree(object);
     
    58825691    return returnSet;
    58835692}
    5884 bool chipPendingExpDeleteObject(psDB *dbh, const chipPendingExpRow *object)
    5885 {
    5886     psMetadata *where = chipPendingExpMetadataFromObject(object);
    5887     long long count = psDBDeleteRows(dbh, CHIPPENDINGEXP_TABLE_NAME, where, 0);
     5693bool chipRunDeleteObject(psDB *dbh, const chipRunRow *object)
     5694{
     5695    psMetadata *where = chipRunMetadataFromObject(object);
     5696    long long count = psDBDeleteRows(dbh, CHIPRUN_TABLE_NAME, where, 0);
    58885697    psFree(where);
    58895698    if (count < 0) {
    5890         psError(PS_ERR_UNKNOWN, true, "failed to delete row from chipPendingExp");
     5699        psError(PS_ERR_UNKNOWN, true, "failed to delete row from chipRun");
    58915700        return false;
    58925701    }
     
    58945703        // XXX should this be a psAbort() instead?  It is possible that
    58955704        // having an object match multiple rows was by design.
    5896         psError(PS_ERR_UNKNOWN, true, "chipPendingExpRow object matched more then one row.  Check your database schema");
    5897         return false;
    5898     }
    5899 
    5900     return true;
    5901 }
    5902 long long chipPendingExpDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
     5705        psError(PS_ERR_UNKNOWN, true, "chipRunRow object matched more then one row.  Check your database schema");
     5706        return false;
     5707    }
     5708
     5709    return true;
     5710}
     5711long long chipRunDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
    59035712{
    59045713    long long       deleted = 0;
    59055714
    59065715    for (long long i = 0; i < objects->n; i++) {
    5907         chipPendingExpRow *object = objects->data[i];
    5908         psMetadata *where = chipPendingExpMetadataFromObject(object);
    5909         long long count = psDBDeleteRows(dbh, CHIPPENDINGEXP_TABLE_NAME, where, limit);
     5716        chipRunRow *object = objects->data[i];
     5717        psMetadata *where = chipRunMetadataFromObject(object);
     5718        long long count = psDBDeleteRows(dbh, CHIPRUN_TABLE_NAME, where, limit);
    59105719        psFree(where);
    59115720        if (count < 0) {
    5912             psError(PS_ERR_UNKNOWN, true, "failed to delete row from chipPendingExp");
     5721            psError(PS_ERR_UNKNOWN, true, "failed to delete row from chipRun");
    59135722            return count;
    59145723        }
     
    59195728    return deleted;
    59205729}
    5921 bool chipPendingExpPrintObjects(FILE *stream, psArray *objects, bool mdcf)
     5730bool chipRunPrintObjects(FILE *stream, psArray *objects, bool mdcf)
    59225731{
    59235732    PS_ASSERT_PTR_NON_NULL(objects, false);
     
    59255734    psMetadata *output = psMetadataAlloc();
    59265735    for (long i = 0; i < psArrayLength(objects); i++) {
    5927         psMetadata *md = chipPendingExpMetadataFromObject(objects->data[i]);
     5736        psMetadata *md = chipRunMetadataFromObject(objects->data[i]);
    59285737        if (!psMetadataAddMetadata(
    59295738            output,
    59305739            PS_LIST_TAIL,
    5931             CHIPPENDINGEXP_TABLE_NAME,
     5740            CHIPRUN_TABLE_NAME,
    59325741            PS_META_DUPLICATE_OK,
    59335742            NULL,
     
    59505759    return true;
    59515760}
    5952 bool chipPendingExpPrintObject(FILE *stream, chipPendingExpRow *object, bool mdcf)
     5761bool chipRunPrintObject(FILE *stream, chipRunRow *object, bool mdcf)
    59535762{
    59545763    PS_ASSERT_PTR_NON_NULL(object, false);
    59555764
    5956     psMetadata *md = chipPendingExpMetadataFromObject(object);
     5765    psMetadata *md = chipRunMetadataFromObject(object);
    59575766
    59585767    if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
     
    59655774    return true;
    59665775}
    5967 static void chipPendingImfileRowFree(chipPendingImfileRow *object);
    5968 
    5969 chipPendingImfileRow *chipPendingImfileRowAlloc(psS64 chip_id, const char *class_id, const char *uri)
    5970 {
    5971     chipPendingImfileRow *_object;
    5972 
    5973     _object = psAlloc(sizeof(chipPendingImfileRow));
    5974     psMemSetDeallocator(_object, (psFreeFunc)chipPendingImfileRowFree);
     5776static void chipInputImfileRowFree(chipInputImfileRow *object);
     5777
     5778chipInputImfileRow *chipInputImfileRowAlloc(psS64 chip_id, psS64 exp_id, const char *class_id)
     5779{
     5780    chipInputImfileRow *_object;
     5781
     5782    _object = psAlloc(sizeof(chipInputImfileRow));
     5783    psMemSetDeallocator(_object, (psFreeFunc)chipInputImfileRowFree);
    59755784
    59765785    _object->chip_id = chip_id;
     5786    _object->exp_id = exp_id;
    59775787    _object->class_id = psStringCopy(class_id);
    5978     _object->uri = psStringCopy(uri);
    59795788
    59805789    return _object;
    59815790}
    59825791
    5983 static void chipPendingImfileRowFree(chipPendingImfileRow *object)
     5792static void chipInputImfileRowFree(chipInputImfileRow *object)
    59845793{
    59855794    psFree(object->class_id);
    5986     psFree(object->uri);
    5987 }
    5988 
    5989 bool chipPendingImfileCreateTable(psDB *dbh)
     5795}
     5796
     5797bool chipInputImfileCreateTable(psDB *dbh)
    59905798{
    59915799    psMetadata *md = psMetadataAlloc();
    5992     if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, "Primary Key", 0)) {
     5800    if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, "Primary Key fkey (chip_id) ref chipRun(chip_id)", 0)) {
    59935801        psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
     5802        psFree(md);
     5803        return false;
     5804    }
     5805    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)) {
     5806        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    59945807        psFree(md);
    59955808        return false;
     
    60005813        return false;
    60015814    }
    6002     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, "255")) {
    6003         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    6004         psFree(md);
    6005         return false;
    6006     }
    6007 
    6008     bool status = psDBCreateTable(dbh, CHIPPENDINGIMFILE_TABLE_NAME, md);
     5815
     5816    bool status = psDBCreateTable(dbh, CHIPINPUTIMFILE_TABLE_NAME, md);
    60095817
    60105818    psFree(md);
     
    60135821}
    60145822
    6015 bool chipPendingImfileDropTable(psDB *dbh)
    6016 {
    6017     return psDBDropTable(dbh, CHIPPENDINGIMFILE_TABLE_NAME);
    6018 }
    6019 
    6020 bool chipPendingImfileInsert(psDB * dbh, psS64 chip_id, const char *class_id, const char *uri)
     5823bool chipInputImfileDropTable(psDB *dbh)
     5824{
     5825    return psDBDropTable(dbh, CHIPINPUTIMFILE_TABLE_NAME);
     5826}
     5827
     5828bool chipInputImfileInsert(psDB * dbh, psS64 chip_id, psS64 exp_id, const char *class_id)
    60215829{
    60225830    psMetadata *md = psMetadataAlloc();
     
    60265834        return false;
    60275835    }
     5836    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, exp_id)) {
     5837        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     5838        psFree(md);
     5839        return false;
     5840    }
    60285841    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, class_id)) {
    60295842        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
     
    60315844        return false;
    60325845    }
    6033     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) {
    6034         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    6035         psFree(md);
    6036         return false;
    6037     }
    6038 
    6039     bool status = psDBInsertOneRow(dbh, CHIPPENDINGIMFILE_TABLE_NAME, md);
     5846
     5847    bool status = psDBInsertOneRow(dbh, CHIPINPUTIMFILE_TABLE_NAME, md);
    60405848    psFree(md);
    60415849
     
    60435851}
    60445852
    6045 long long chipPendingImfileDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
     5853long long chipInputImfileDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
    60465854{
    60475855    long long       deleted = 0;
    60485856
    6049     long long count = psDBDeleteRows(dbh, CHIPPENDINGIMFILE_TABLE_NAME, where, limit);
     5857    long long count = psDBDeleteRows(dbh, CHIPINPUTIMFILE_TABLE_NAME, where, limit);
    60505858    if (count < 0) {
    6051         psError(PS_ERR_UNKNOWN, true, "failed to delete row from chipPendingImfile");
     5859        psError(PS_ERR_UNKNOWN, true, "failed to delete row from chipInputImfile");
    60525860        return count;
    60535861
     
    60575865    return deleted;
    60585866}
    6059 bool chipPendingImfileInsertObject(psDB *dbh, chipPendingImfileRow *object)
    6060 {
    6061     return chipPendingImfileInsert(dbh, object->chip_id, object->class_id, object->uri);
    6062 }
    6063 
    6064 bool chipPendingImfileInsertObjects(psDB *dbh, psArray *objects)
     5867bool chipInputImfileInsertObject(psDB *dbh, chipInputImfileRow *object)
     5868{
     5869    return chipInputImfileInsert(dbh, object->chip_id, object->exp_id, object->class_id);
     5870}
     5871
     5872bool chipInputImfileInsertObjects(psDB *dbh, psArray *objects)
    60655873{
    60665874    for (long i = 0; i < psArrayLength(objects); i++) {
    6067         if (!chipPendingImfileInsertObject(dbh, objects->data[i])) {
     5875        if (!chipInputImfileInsertObject(dbh, objects->data[i])) {
    60685876            return false;
    60695877        }
     
    60735881}
    60745882
    6075 bool chipPendingImfileInsertFits(psDB *dbh, const psFits *fits)
     5883bool chipInputImfileInsertFits(psDB *dbh, const psFits *fits)
    60765884{
    60775885    psArray         *rowSet;
    60785886
    6079     // move to (the first?) extension named  CHIPPENDINGIMFILE_TABLE_NAME
    6080     if (!psFitsMoveExtName(fits, CHIPPENDINGIMFILE_TABLE_NAME)) {
    6081         psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", CHIPPENDINGIMFILE_TABLE_NAME);
     5887    // move to (the first?) extension named  CHIPINPUTIMFILE_TABLE_NAME
     5888    if (!psFitsMoveExtName(fits, CHIPINPUTIMFILE_TABLE_NAME)) {
     5889        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", CHIPINPUTIMFILE_TABLE_NAME);
    60825890        return false;
    60835891    }
     
    60975905    }
    60985906
    6099     if (!psDBInsertRows(dbh, CHIPPENDINGIMFILE_TABLE_NAME, rowSet)) {
     5907    if (!psDBInsertRows(dbh, CHIPINPUTIMFILE_TABLE_NAME, rowSet)) {
    61005908        psError(PS_ERR_UNKNOWN, false, "databse insert failed");
    61015909        psFree(rowSet);
     
    61085916}
    61095917
    6110 bool chipPendingImfileSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
     5918bool chipInputImfileSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
    61115919{
    61125920    psArray         *rowSet;
    61135921
    6114     rowSet = psDBSelectRows(dbh, CHIPPENDINGIMFILE_TABLE_NAME, where, limit);
     5922    rowSet = psDBSelectRows(dbh, CHIPINPUTIMFILE_TABLE_NAME, where, limit);
    61155923    if (!rowSet) {
    61165924        return false;
     
    61185926
    61195927    // output to fits
    6120     if (!psFitsWriteTable(fits, NULL, rowSet, CHIPPENDINGIMFILE_TABLE_NAME)) {
     5928    if (!psFitsWriteTable(fits, NULL, rowSet, CHIPINPUTIMFILE_TABLE_NAME)) {
    61215929        psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
    61225930        psFree(rowSet);
     
    61295937}
    61305938
    6131 psMetadata *chipPendingImfileMetadataFromObject(const chipPendingImfileRow *object)
     5939psMetadata *chipInputImfileMetadataFromObject(const chipInputImfileRow *object)
    61325940{
    61335941    psMetadata *md = psMetadataAlloc();
     
    61375945        return false;
    61385946    }
     5947    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, object->exp_id)) {
     5948        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     5949        psFree(md);
     5950        return false;
     5951    }
    61395952    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, object->class_id)) {
    61405953        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
     
    61425955        return false;
    61435956    }
    6144     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) {
    6145         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    6146         psFree(md);
    6147         return false;
    6148     }
    61495957
    61505958
     
    61525960}
    61535961
    6154 chipPendingImfileRow *chipPendingImfileObjectFromMetadata(psMetadata *md)
     5962chipInputImfileRow *chipInputImfileObjectFromMetadata(psMetadata *md)
    61555963{
    61565964
     
    61615969        return false;
    61625970    }
     5971    psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id");
     5972    if (!status) {
     5973        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
     5974        return false;
     5975    }
    61635976    char* class_id = psMetadataLookupPtr(&status, md, "class_id");
    61645977    if (!status) {
     
    61665979        return false;
    61675980    }
    6168     char* uri = psMetadataLookupPtr(&status, md, "uri");
    6169     if (!status) {
    6170         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
    6171         return false;
    6172     }
    6173 
    6174     return chipPendingImfileRowAlloc(chip_id, class_id, uri);
    6175 }
    6176 psArray *chipPendingImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     5981
     5982    return chipInputImfileRowAlloc(chip_id, exp_id, class_id);
     5983}
     5984psArray *chipInputImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
    61775985{
    61785986    psArray         *rowSet;
     
    61805988    psU64           i;
    61815989
    6182     rowSet = psDBSelectRows(dbh, CHIPPENDINGIMFILE_TABLE_NAME, where, limit);
     5990    rowSet = psDBSelectRows(dbh, CHIPINPUTIMFILE_TABLE_NAME, where, limit);
    61835991    if (!rowSet) {
    61845992        return NULL;
     
    61905998
    61915999    for (i = 0; i < rowSet->n; i++) {
    6192         chipPendingImfileRow *object = chipPendingImfileObjectFromMetadata(rowSet->data[i]);
     6000        chipInputImfileRow *object = chipInputImfileObjectFromMetadata(rowSet->data[i]);
    61936001        psArrayAdd(returnSet, 0, object);
    61946002        psFree(object);
     
    61996007    return returnSet;
    62006008}
    6201 bool chipPendingImfileDeleteObject(psDB *dbh, const chipPendingImfileRow *object)
    6202 {
    6203     psMetadata *where = chipPendingImfileMetadataFromObject(object);
    6204     long long count = psDBDeleteRows(dbh, CHIPPENDINGIMFILE_TABLE_NAME, where, 0);
     6009bool chipInputImfileDeleteObject(psDB *dbh, const chipInputImfileRow *object)
     6010{
     6011    psMetadata *where = chipInputImfileMetadataFromObject(object);
     6012    long long count = psDBDeleteRows(dbh, CHIPINPUTIMFILE_TABLE_NAME, where, 0);
    62056013    psFree(where);
    62066014    if (count < 0) {
    6207         psError(PS_ERR_UNKNOWN, true, "failed to delete row from chipPendingImfile");
     6015        psError(PS_ERR_UNKNOWN, true, "failed to delete row from chipInputImfile");
    62086016        return false;
    62096017    }
     
    62116019        // XXX should this be a psAbort() instead?  It is possible that
    62126020        // having an object match multiple rows was by design.
    6213         psError(PS_ERR_UNKNOWN, true, "chipPendingImfileRow object matched more then one row.  Check your database schema");
    6214         return false;
    6215     }
    6216 
    6217     return true;
    6218 }
    6219 long long chipPendingImfileDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
     6021        psError(PS_ERR_UNKNOWN, true, "chipInputImfileRow object matched more then one row.  Check your database schema");
     6022        return false;
     6023    }
     6024
     6025    return true;
     6026}
     6027long long chipInputImfileDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
    62206028{
    62216029    long long       deleted = 0;
    62226030
    62236031    for (long long i = 0; i < objects->n; i++) {
    6224         chipPendingImfileRow *object = objects->data[i];
    6225         psMetadata *where = chipPendingImfileMetadataFromObject(object);
    6226         long long count = psDBDeleteRows(dbh, CHIPPENDINGIMFILE_TABLE_NAME, where, limit);
     6032        chipInputImfileRow *object = objects->data[i];
     6033        psMetadata *where = chipInputImfileMetadataFromObject(object);
     6034        long long count = psDBDeleteRows(dbh, CHIPINPUTIMFILE_TABLE_NAME, where, limit);
    62276035        psFree(where);
    62286036        if (count < 0) {
    6229             psError(PS_ERR_UNKNOWN, true, "failed to delete row from chipPendingImfile");
     6037            psError(PS_ERR_UNKNOWN, true, "failed to delete row from chipInputImfile");
    62306038            return count;
    62316039        }
     
    62366044    return deleted;
    62376045}
    6238 bool chipPendingImfilePrintObjects(FILE *stream, psArray *objects, bool mdcf)
     6046bool chipInputImfilePrintObjects(FILE *stream, psArray *objects, bool mdcf)
    62396047{
    62406048    PS_ASSERT_PTR_NON_NULL(objects, false);
     
    62426050    psMetadata *output = psMetadataAlloc();
    62436051    for (long i = 0; i < psArrayLength(objects); i++) {
    6244         psMetadata *md = chipPendingImfileMetadataFromObject(objects->data[i]);
     6052        psMetadata *md = chipInputImfileMetadataFromObject(objects->data[i]);
    62456053        if (!psMetadataAddMetadata(
    62466054            output,
    62476055            PS_LIST_TAIL,
    6248             CHIPPENDINGIMFILE_TABLE_NAME,
     6056            CHIPINPUTIMFILE_TABLE_NAME,
    62496057            PS_META_DUPLICATE_OK,
    62506058            NULL,
     
    62676075    return true;
    62686076}
    6269 bool chipPendingImfilePrintObject(FILE *stream, chipPendingImfileRow *object, bool mdcf)
     6077bool chipInputImfilePrintObject(FILE *stream, chipInputImfileRow *object, bool mdcf)
    62706078{
    62716079    PS_ASSERT_PTR_NON_NULL(object, false);
    62726080
    6273     psMetadata *md = chipPendingImfileMetadataFromObject(object);
     6081    psMetadata *md = chipInputImfileMetadataFromObject(object);
    62746082
    62756083    if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
     
    62826090    return true;
    62836091}
    6284 static void chipProcessedExpRowFree(chipProcessedExpRow *object);
    6285 
    6286 chipProcessedExpRow *chipProcessedExpRowAlloc(psS64 chip_id, const char *exp_tag, psS64 guide_id, const char *workdir, const char *label, const char *reduction, const char *expgroup, const char *dvodb)
    6287 {
    6288     chipProcessedExpRow *_object;
    6289 
    6290     _object = psAlloc(sizeof(chipProcessedExpRow));
    6291     psMemSetDeallocator(_object, (psFreeFunc)chipProcessedExpRowFree);
    6292 
    6293     _object->chip_id = chip_id;
    6294     _object->exp_tag = psStringCopy(exp_tag);
    6295     _object->guide_id = guide_id;
    6296     _object->workdir = psStringCopy(workdir);
    6297     _object->label = psStringCopy(label);
    6298     _object->reduction = psStringCopy(reduction);
    6299     _object->expgroup = psStringCopy(expgroup);
    6300     _object->dvodb = psStringCopy(dvodb);
    6301 
    6302     return _object;
    6303 }
    6304 
    6305 static void chipProcessedExpRowFree(chipProcessedExpRow *object)
    6306 {
    6307     psFree(object->exp_tag);
    6308     psFree(object->workdir);
    6309     psFree(object->label);
    6310     psFree(object->reduction);
    6311     psFree(object->expgroup);
    6312     psFree(object->dvodb);
    6313 }
    6314 
    6315 bool chipProcessedExpCreateTable(psDB *dbh)
    6316 {
    6317     psMetadata *md = psMetadataAlloc();
    6318     if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, "Primary Key", 0)) {
    6319         psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
    6320         psFree(md);
    6321         return false;
    6322     }
    6323     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, "Primary Key", "64")) {
    6324         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
    6325         psFree(md);
    6326         return false;
    6327     }
    6328     if (!psMetadataAdd(md, PS_LIST_TAIL, "guide_id", PS_DATA_S64, "Not NULL", 0)) {
    6329         psError(PS_ERR_UNKNOWN, false, "failed to add item guide_id");
    6330         psFree(md);
    6331         return false;
    6332     }
    6333     if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, "255")) {
    6334         psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
    6335         psFree(md);
    6336         return false;
    6337     }
    6338     if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, "key", "64")) {
    6339         psError(PS_ERR_UNKNOWN, false, "failed to add item label");
    6340         psFree(md);
    6341         return false;
    6342     }
    6343     if (!psMetadataAdd(md, PS_LIST_TAIL, "reduction", PS_DATA_STRING, NULL, "64")) {
    6344         psError(PS_ERR_UNKNOWN, false, "failed to add item reduction");
    6345         psFree(md);
    6346         return false;
    6347     }
    6348     if (!psMetadataAdd(md, PS_LIST_TAIL, "expgroup", PS_DATA_STRING, "key", "64")) {
    6349         psError(PS_ERR_UNKNOWN, false, "failed to add item expgroup");
    6350         psFree(md);
    6351         return false;
    6352     }
    6353     if (!psMetadataAdd(md, PS_LIST_TAIL, "dvodb", PS_DATA_STRING, NULL, "255")) {
    6354         psError(PS_ERR_UNKNOWN, false, "failed to add item dvodb");
    6355         psFree(md);
    6356         return false;
    6357     }
    6358 
    6359     bool status = psDBCreateTable(dbh, CHIPPROCESSEDEXP_TABLE_NAME, md);
    6360 
    6361     psFree(md);
    6362 
    6363     return status;
    6364 }
    6365 
    6366 bool chipProcessedExpDropTable(psDB *dbh)
    6367 {
    6368     return psDBDropTable(dbh, CHIPPROCESSEDEXP_TABLE_NAME);
    6369 }
    6370 
    6371 bool chipProcessedExpInsert(psDB * dbh, psS64 chip_id, const char *exp_tag, psS64 guide_id, const char *workdir, const char *label, const char *reduction, const char *expgroup, const char *dvodb)
    6372 {
    6373     psMetadata *md = psMetadataAlloc();
    6374     if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, NULL, chip_id)) {
    6375         psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
    6376         psFree(md);
    6377         return false;
    6378     }
    6379     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, exp_tag)) {
    6380         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
    6381         psFree(md);
    6382         return false;
    6383     }
    6384     if (!psMetadataAdd(md, PS_LIST_TAIL, "guide_id", PS_DATA_S64, NULL, guide_id)) {
    6385         psError(PS_ERR_UNKNOWN, false, "failed to add item guide_id");
    6386         psFree(md);
    6387         return false;
    6388     }
    6389     if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, workdir)) {
    6390         psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
    6391         psFree(md);
    6392         return false;
    6393     }
    6394     if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, label)) {
    6395         psError(PS_ERR_UNKNOWN, false, "failed to add item label");
    6396         psFree(md);
    6397         return false;
    6398     }
    6399     if (!psMetadataAdd(md, PS_LIST_TAIL, "reduction", PS_DATA_STRING, NULL, reduction)) {
    6400         psError(PS_ERR_UNKNOWN, false, "failed to add item reduction");
    6401         psFree(md);
    6402         return false;
    6403     }
    6404     if (!psMetadataAdd(md, PS_LIST_TAIL, "expgroup", PS_DATA_STRING, NULL, expgroup)) {
    6405         psError(PS_ERR_UNKNOWN, false, "failed to add item expgroup");
    6406         psFree(md);
    6407         return false;
    6408     }
    6409     if (!psMetadataAdd(md, PS_LIST_TAIL, "dvodb", PS_DATA_STRING, NULL, dvodb)) {
    6410         psError(PS_ERR_UNKNOWN, false, "failed to add item dvodb");
    6411         psFree(md);
    6412         return false;
    6413     }
    6414 
    6415     bool status = psDBInsertOneRow(dbh, CHIPPROCESSEDEXP_TABLE_NAME, md);
    6416     psFree(md);
    6417 
    6418     return status;
    6419 }
    6420 
    6421 long long chipProcessedExpDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
    6422 {
    6423     long long       deleted = 0;
    6424 
    6425     long long count = psDBDeleteRows(dbh, CHIPPROCESSEDEXP_TABLE_NAME, where, limit);
    6426     if (count < 0) {
    6427         psError(PS_ERR_UNKNOWN, true, "failed to delete row from chipProcessedExp");
    6428         return count;
    6429 
    6430         deleted += count;
    6431     }
    6432 
    6433     return deleted;
    6434 }
    6435 bool chipProcessedExpInsertObject(psDB *dbh, chipProcessedExpRow *object)
    6436 {
    6437     return chipProcessedExpInsert(dbh, object->chip_id, object->exp_tag, object->guide_id, object->workdir, object->label, object->reduction, object->expgroup, object->dvodb);
    6438 }
    6439 
    6440 bool chipProcessedExpInsertObjects(psDB *dbh, psArray *objects)
    6441 {
    6442     for (long i = 0; i < psArrayLength(objects); i++) {
    6443         if (!chipProcessedExpInsertObject(dbh, objects->data[i])) {
    6444             return false;
    6445         }
    6446     }
    6447 
    6448     return true;
    6449 }
    6450 
    6451 bool chipProcessedExpInsertFits(psDB *dbh, const psFits *fits)
    6452 {
    6453     psArray         *rowSet;
    6454 
    6455     // move to (the first?) extension named  CHIPPROCESSEDEXP_TABLE_NAME
    6456     if (!psFitsMoveExtName(fits, CHIPPROCESSEDEXP_TABLE_NAME)) {
    6457         psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", CHIPPROCESSEDEXP_TABLE_NAME);
    6458         return false;
    6459     }
    6460 
    6461     // check HDU type
    6462     if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
    6463         psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
    6464         return false;
    6465     }
    6466 
    6467     // read fits table
    6468     rowSet = psFitsReadTable(fits);
    6469     if (!rowSet) {
    6470         psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
    6471         psFree(rowSet);
    6472         return false;
    6473     }
    6474 
    6475     if (!psDBInsertRows(dbh, CHIPPROCESSEDEXP_TABLE_NAME, rowSet)) {
    6476         psError(PS_ERR_UNKNOWN, false, "databse insert failed");
    6477         psFree(rowSet);
    6478         return false;
    6479     }
    6480 
    6481     psFree(rowSet);
    6482 
    6483     return true;
    6484 }
    6485 
    6486 bool chipProcessedExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
    6487 {
    6488     psArray         *rowSet;
    6489 
    6490     rowSet = psDBSelectRows(dbh, CHIPPROCESSEDEXP_TABLE_NAME, where, limit);
    6491     if (!rowSet) {
    6492         return false;
    6493     }
    6494 
    6495     // output to fits
    6496     if (!psFitsWriteTable(fits, NULL, rowSet, CHIPPROCESSEDEXP_TABLE_NAME)) {
    6497         psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
    6498         psFree(rowSet);
    6499         return false;
    6500     }
    6501 
    6502     psFree(rowSet);
    6503 
    6504     return true;
    6505 }
    6506 
    6507 psMetadata *chipProcessedExpMetadataFromObject(const chipProcessedExpRow *object)
    6508 {
    6509     psMetadata *md = psMetadataAlloc();
    6510     if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, NULL, object->chip_id)) {
    6511         psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
    6512         psFree(md);
    6513         return false;
    6514     }
    6515     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, object->exp_tag)) {
    6516         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
    6517         psFree(md);
    6518         return false;
    6519     }
    6520     if (!psMetadataAdd(md, PS_LIST_TAIL, "guide_id", PS_DATA_S64, NULL, object->guide_id)) {
    6521         psError(PS_ERR_UNKNOWN, false, "failed to add item guide_id");
    6522         psFree(md);
    6523         return false;
    6524     }
    6525     if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, object->workdir)) {
    6526         psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
    6527         psFree(md);
    6528         return false;
    6529     }
    6530     if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, object->label)) {
    6531         psError(PS_ERR_UNKNOWN, false, "failed to add item label");
    6532         psFree(md);
    6533         return false;
    6534     }
    6535     if (!psMetadataAdd(md, PS_LIST_TAIL, "reduction", PS_DATA_STRING, NULL, object->reduction)) {
    6536         psError(PS_ERR_UNKNOWN, false, "failed to add item reduction");
    6537         psFree(md);
    6538         return false;
    6539     }
    6540     if (!psMetadataAdd(md, PS_LIST_TAIL, "expgroup", PS_DATA_STRING, NULL, object->expgroup)) {
    6541         psError(PS_ERR_UNKNOWN, false, "failed to add item expgroup");
    6542         psFree(md);
    6543         return false;
    6544     }
    6545     if (!psMetadataAdd(md, PS_LIST_TAIL, "dvodb", PS_DATA_STRING, NULL, object->dvodb)) {
    6546         psError(PS_ERR_UNKNOWN, false, "failed to add item dvodb");
    6547         psFree(md);
    6548         return false;
    6549     }
    6550 
    6551 
    6552     return md;
    6553 }
    6554 
    6555 chipProcessedExpRow *chipProcessedExpObjectFromMetadata(psMetadata *md)
    6556 {
    6557 
    6558 bool status = false;
    6559     psS64 chip_id = psMetadataLookupS64(&status, md, "chip_id");
    6560     if (!status) {
    6561         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item chip_id");
    6562         return false;
    6563     }
    6564     char* exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
    6565     if (!status) {
    6566         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
    6567         return false;
    6568     }
    6569     psS64 guide_id = psMetadataLookupS64(&status, md, "guide_id");
    6570     if (!status) {
    6571         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item guide_id");
    6572         return false;
    6573     }
    6574     char* workdir = psMetadataLookupPtr(&status, md, "workdir");
    6575     if (!status) {
    6576         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item workdir");
    6577         return false;
    6578     }
    6579     char* label = psMetadataLookupPtr(&status, md, "label");
    6580     if (!status) {
    6581         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item label");
    6582         return false;
    6583     }
    6584     char* reduction = psMetadataLookupPtr(&status, md, "reduction");
    6585     if (!status) {
    6586         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item reduction");
    6587         return false;
    6588     }
    6589     char* expgroup = psMetadataLookupPtr(&status, md, "expgroup");
    6590     if (!status) {
    6591         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item expgroup");
    6592         return false;
    6593     }
    6594     char* dvodb = psMetadataLookupPtr(&status, md, "dvodb");
    6595     if (!status) {
    6596         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dvodb");
    6597         return false;
    6598     }
    6599 
    6600     return chipProcessedExpRowAlloc(chip_id, exp_tag, guide_id, workdir, label, reduction, expgroup, dvodb);
    6601 }
    6602 psArray *chipProcessedExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
    6603 {
    6604     psArray         *rowSet;
    6605     psArray         *returnSet;
    6606     psU64           i;
    6607 
    6608     rowSet = psDBSelectRows(dbh, CHIPPROCESSEDEXP_TABLE_NAME, where, limit);
    6609     if (!rowSet) {
    6610         return NULL;
    6611     }
    6612 
    6613     // convert psMetadata rows to row objects
    6614 
    6615     returnSet = psArrayAllocEmpty(rowSet->n);
    6616 
    6617     for (i = 0; i < rowSet->n; i++) {
    6618         chipProcessedExpRow *object = chipProcessedExpObjectFromMetadata(rowSet->data[i]);
    6619         psArrayAdd(returnSet, 0, object);
    6620         psFree(object);
    6621     }
    6622 
    6623     psFree(rowSet);
    6624 
    6625     return returnSet;
    6626 }
    6627 bool chipProcessedExpDeleteObject(psDB *dbh, const chipProcessedExpRow *object)
    6628 {
    6629     psMetadata *where = chipProcessedExpMetadataFromObject(object);
    6630     long long count = psDBDeleteRows(dbh, CHIPPROCESSEDEXP_TABLE_NAME, where, 0);
    6631     psFree(where);
    6632     if (count < 0) {
    6633         psError(PS_ERR_UNKNOWN, true, "failed to delete row from chipProcessedExp");
    6634         return false;
    6635     }
    6636     if (count > 1) {
    6637         // XXX should this be a psAbort() instead?  It is possible that
    6638         // having an object match multiple rows was by design.
    6639         psError(PS_ERR_UNKNOWN, true, "chipProcessedExpRow object matched more then one row.  Check your database schema");
    6640         return false;
    6641     }
    6642 
    6643     return true;
    6644 }
    6645 long long chipProcessedExpDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
    6646 {
    6647     long long       deleted = 0;
    6648 
    6649     for (long long i = 0; i < objects->n; i++) {
    6650         chipProcessedExpRow *object = objects->data[i];
    6651         psMetadata *where = chipProcessedExpMetadataFromObject(object);
    6652         long long count = psDBDeleteRows(dbh, CHIPPROCESSEDEXP_TABLE_NAME, where, limit);
    6653         psFree(where);
    6654         if (count < 0) {
    6655             psError(PS_ERR_UNKNOWN, true, "failed to delete row from chipProcessedExp");
    6656             return count;
    6657         }
    6658 
    6659         deleted += count;
    6660     }
    6661 
    6662     return deleted;
    6663 }
    6664 bool chipProcessedExpPrintObjects(FILE *stream, psArray *objects, bool mdcf)
    6665 {
    6666     PS_ASSERT_PTR_NON_NULL(objects, false);
    6667 
    6668     psMetadata *output = psMetadataAlloc();
    6669     for (long i = 0; i < psArrayLength(objects); i++) {
    6670         psMetadata *md = chipProcessedExpMetadataFromObject(objects->data[i]);
    6671         if (!psMetadataAddMetadata(
    6672             output,
    6673             PS_LIST_TAIL,
    6674             CHIPPROCESSEDEXP_TABLE_NAME,
    6675             PS_META_DUPLICATE_OK,
    6676             NULL,
    6677             md
    6678         )) {
    6679             psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
    6680             psFree(md);
    6681             psFree(output);
    6682             return false;
    6683         }
    6684         psFree(md);
    6685     }
    6686 
    6687     if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
    6688         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    6689         psFree(output);
    6690     }
    6691     psFree(output);
    6692 
    6693     return true;
    6694 }
    6695 bool chipProcessedExpPrintObject(FILE *stream, chipProcessedExpRow *object, bool mdcf)
    6696 {
    6697     PS_ASSERT_PTR_NON_NULL(object, false);
    6698 
    6699     psMetadata *md = chipProcessedExpMetadataFromObject(object);
    6700 
    6701     if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
    6702         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    6703         psFree(md);
    6704     }
    6705 
    6706     psFree(md);
    6707 
    6708     return true;
    6709 }
    6710 static void chipMaskRowFree(chipMaskRow *object);
    6711 
    6712 chipMaskRow *chipMaskRowAlloc(const char *label)
    6713 {
    6714     chipMaskRow     *_object;
    6715 
    6716     _object = psAlloc(sizeof(chipMaskRow));
    6717     psMemSetDeallocator(_object, (psFreeFunc)chipMaskRowFree);
    6718 
    6719     _object->label = psStringCopy(label);
    6720 
    6721     return _object;
    6722 }
    6723 
    6724 static void chipMaskRowFree(chipMaskRow *object)
    6725 {
    6726     psFree(object->label);
    6727 }
    6728 
    6729 bool chipMaskCreateTable(psDB *dbh)
    6730 {
    6731     psMetadata *md = psMetadataAlloc();
    6732     if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, "Primary Key", "64")) {
    6733         psError(PS_ERR_UNKNOWN, false, "failed to add item label");
    6734         psFree(md);
    6735         return false;
    6736     }
    6737 
    6738     bool status = psDBCreateTable(dbh, CHIPMASK_TABLE_NAME, md);
    6739 
    6740     psFree(md);
    6741 
    6742     return status;
    6743 }
    6744 
    6745 bool chipMaskDropTable(psDB *dbh)
    6746 {
    6747     return psDBDropTable(dbh, CHIPMASK_TABLE_NAME);
    6748 }
    6749 
    6750 bool chipMaskInsert(psDB * dbh, const char *label)
    6751 {
    6752     psMetadata *md = psMetadataAlloc();
    6753     if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, label)) {
    6754         psError(PS_ERR_UNKNOWN, false, "failed to add item label");
    6755         psFree(md);
    6756         return false;
    6757     }
    6758 
    6759     bool status = psDBInsertOneRow(dbh, CHIPMASK_TABLE_NAME, md);
    6760     psFree(md);
    6761 
    6762     return status;
    6763 }
    6764 
    6765 long long chipMaskDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
    6766 {
    6767     long long       deleted = 0;
    6768 
    6769     long long count = psDBDeleteRows(dbh, CHIPMASK_TABLE_NAME, where, limit);
    6770     if (count < 0) {
    6771         psError(PS_ERR_UNKNOWN, true, "failed to delete row from chipMask");
    6772         return count;
    6773 
    6774         deleted += count;
    6775     }
    6776 
    6777     return deleted;
    6778 }
    6779 bool chipMaskInsertObject(psDB *dbh, chipMaskRow *object)
    6780 {
    6781     return chipMaskInsert(dbh, object->label);
    6782 }
    6783 
    6784 bool chipMaskInsertObjects(psDB *dbh, psArray *objects)
    6785 {
    6786     for (long i = 0; i < psArrayLength(objects); i++) {
    6787         if (!chipMaskInsertObject(dbh, objects->data[i])) {
    6788             return false;
    6789         }
    6790     }
    6791 
    6792     return true;
    6793 }
    6794 
    6795 bool chipMaskInsertFits(psDB *dbh, const psFits *fits)
    6796 {
    6797     psArray         *rowSet;
    6798 
    6799     // move to (the first?) extension named  CHIPMASK_TABLE_NAME
    6800     if (!psFitsMoveExtName(fits, CHIPMASK_TABLE_NAME)) {
    6801         psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", CHIPMASK_TABLE_NAME);
    6802         return false;
    6803     }
    6804 
    6805     // check HDU type
    6806     if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
    6807         psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
    6808         return false;
    6809     }
    6810 
    6811     // read fits table
    6812     rowSet = psFitsReadTable(fits);
    6813     if (!rowSet) {
    6814         psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
    6815         psFree(rowSet);
    6816         return false;
    6817     }
    6818 
    6819     if (!psDBInsertRows(dbh, CHIPMASK_TABLE_NAME, rowSet)) {
    6820         psError(PS_ERR_UNKNOWN, false, "databse insert failed");
    6821         psFree(rowSet);
    6822         return false;
    6823     }
    6824 
    6825     psFree(rowSet);
    6826 
    6827     return true;
    6828 }
    6829 
    6830 bool chipMaskSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
    6831 {
    6832     psArray         *rowSet;
    6833 
    6834     rowSet = psDBSelectRows(dbh, CHIPMASK_TABLE_NAME, where, limit);
    6835     if (!rowSet) {
    6836         return false;
    6837     }
    6838 
    6839     // output to fits
    6840     if (!psFitsWriteTable(fits, NULL, rowSet, CHIPMASK_TABLE_NAME)) {
    6841         psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
    6842         psFree(rowSet);
    6843         return false;
    6844     }
    6845 
    6846     psFree(rowSet);
    6847 
    6848     return true;
    6849 }
    6850 
    6851 psMetadata *chipMaskMetadataFromObject(const chipMaskRow *object)
    6852 {
    6853     psMetadata *md = psMetadataAlloc();
    6854     if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, object->label)) {
    6855         psError(PS_ERR_UNKNOWN, false, "failed to add item label");
    6856         psFree(md);
    6857         return false;
    6858     }
    6859 
    6860 
    6861     return md;
    6862 }
    6863 
    6864 chipMaskRow *chipMaskObjectFromMetadata(psMetadata *md)
    6865 {
    6866 
    6867 bool status = false;
    6868     char* label = psMetadataLookupPtr(&status, md, "label");
    6869     if (!status) {
    6870         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item label");
    6871         return false;
    6872     }
    6873 
    6874     return chipMaskRowAlloc(label);
    6875 }
    6876 psArray *chipMaskSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
    6877 {
    6878     psArray         *rowSet;
    6879     psArray         *returnSet;
    6880     psU64           i;
    6881 
    6882     rowSet = psDBSelectRows(dbh, CHIPMASK_TABLE_NAME, where, limit);
    6883     if (!rowSet) {
    6884         return NULL;
    6885     }
    6886 
    6887     // convert psMetadata rows to row objects
    6888 
    6889     returnSet = psArrayAllocEmpty(rowSet->n);
    6890 
    6891     for (i = 0; i < rowSet->n; i++) {
    6892         chipMaskRow *object = chipMaskObjectFromMetadata(rowSet->data[i]);
    6893         psArrayAdd(returnSet, 0, object);
    6894         psFree(object);
    6895     }
    6896 
    6897     psFree(rowSet);
    6898 
    6899     return returnSet;
    6900 }
    6901 bool chipMaskDeleteObject(psDB *dbh, const chipMaskRow *object)
    6902 {
    6903     psMetadata *where = chipMaskMetadataFromObject(object);
    6904     long long count = psDBDeleteRows(dbh, CHIPMASK_TABLE_NAME, where, 0);
    6905     psFree(where);
    6906     if (count < 0) {
    6907         psError(PS_ERR_UNKNOWN, true, "failed to delete row from chipMask");
    6908         return false;
    6909     }
    6910     if (count > 1) {
    6911         // XXX should this be a psAbort() instead?  It is possible that
    6912         // having an object match multiple rows was by design.
    6913         psError(PS_ERR_UNKNOWN, true, "chipMaskRow object matched more then one row.  Check your database schema");
    6914         return false;
    6915     }
    6916 
    6917     return true;
    6918 }
    6919 long long chipMaskDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
    6920 {
    6921     long long       deleted = 0;
    6922 
    6923     for (long long i = 0; i < objects->n; i++) {
    6924         chipMaskRow *object = objects->data[i];
    6925         psMetadata *where = chipMaskMetadataFromObject(object);
    6926         long long count = psDBDeleteRows(dbh, CHIPMASK_TABLE_NAME, where, limit);
    6927         psFree(where);
    6928         if (count < 0) {
    6929             psError(PS_ERR_UNKNOWN, true, "failed to delete row from chipMask");
    6930             return count;
    6931         }
    6932 
    6933         deleted += count;
    6934     }
    6935 
    6936     return deleted;
    6937 }
    6938 bool chipMaskPrintObjects(FILE *stream, psArray *objects, bool mdcf)
    6939 {
    6940     PS_ASSERT_PTR_NON_NULL(objects, false);
    6941 
    6942     psMetadata *output = psMetadataAlloc();
    6943     for (long i = 0; i < psArrayLength(objects); i++) {
    6944         psMetadata *md = chipMaskMetadataFromObject(objects->data[i]);
    6945         if (!psMetadataAddMetadata(
    6946             output,
    6947             PS_LIST_TAIL,
    6948             CHIPMASK_TABLE_NAME,
    6949             PS_META_DUPLICATE_OK,
    6950             NULL,
    6951             md
    6952         )) {
    6953             psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
    6954             psFree(md);
    6955             psFree(output);
    6956             return false;
    6957         }
    6958         psFree(md);
    6959     }
    6960 
    6961     if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
    6962         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    6963         psFree(output);
    6964     }
    6965     psFree(output);
    6966 
    6967     return true;
    6968 }
    6969 bool chipMaskPrintObject(FILE *stream, chipMaskRow *object, bool mdcf)
    6970 {
    6971     PS_ASSERT_PTR_NON_NULL(object, false);
    6972 
    6973     psMetadata *md = chipMaskMetadataFromObject(object);
    6974 
    6975     if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
    6976         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    6977         psFree(md);
    6978     }
    6979 
    6980     psFree(md);
    6981 
    6982     return true;
    6983 }
    69846092static void chipProcessedImfileRowFree(chipProcessedImfileRow *object);
    69856093
    6986 chipProcessedImfileRow *chipProcessedImfileRowAlloc(psS64 chip_id, const char *class_id, const char *uri, psF32 bg, psF32 bg_stdev, psF32 bg_mean_stdev, psF32 bias, psF32 bias_stdev, psF32 fringe_0, psF32 fringe_1, psF32 fringe_2, psF32 sigma_ra, psF32 sigma_dec, psF32 ap_resid, psF32 ap_resid_stdev, psF32 fwhm, psF32 fwhm_range, psS32 n_stars, psS32 n_extended, psS32 n_cr, psS32 n_astrom, const char *path_base, psS16 fault)
     6094chipProcessedImfileRow *chipProcessedImfileRowAlloc(psS64 chip_id, psS64 exp_id, const char *class_id, const char *uri, psF32 bg, psF32 bg_stdev, psF32 bg_mean_stdev, psF32 bias, psF32 bias_stdev, psF32 fringe_0, psF32 fringe_1, psF32 fringe_2, psF32 sigma_ra, psF32 sigma_dec, psF32 ap_resid, psF32 ap_resid_stdev, psF32 fwhm, psF32 fwhm_range, psS32 n_stars, psS32 n_extended, psS32 n_cr, psS32 n_astrom, const char *path_base, psS16 fault)
    69876095{
    69886096    chipProcessedImfileRow *_object;
     
    69926100
    69936101    _object->chip_id = chip_id;
     6102    _object->exp_id = exp_id;
    69946103    _object->class_id = psStringCopy(class_id);
    69956104    _object->uri = psStringCopy(uri);
     
    70286137{
    70296138    psMetadata *md = psMetadataAlloc();
    7030     if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, "Primary Key", 0)) {
     6139    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)) {
    70316140        psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
     6141        psFree(md);
     6142        return false;
     6143    }
     6144    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key", 64)) {
     6145        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    70326146        psFree(md);
    70336147        return false;
     
    71566270}
    71576271
    7158 bool chipProcessedImfileInsert(psDB * dbh, psS64 chip_id, const char *class_id, const char *uri, psF32 bg, psF32 bg_stdev, psF32 bg_mean_stdev, psF32 bias, psF32 bias_stdev, psF32 fringe_0, psF32 fringe_1, psF32 fringe_2, psF32 sigma_ra, psF32 sigma_dec, psF32 ap_resid, psF32 ap_resid_stdev, psF32 fwhm, psF32 fwhm_range, psS32 n_stars, psS32 n_extended, psS32 n_cr, psS32 n_astrom, const char *path_base, psS16 fault)
     6272bool chipProcessedImfileInsert(psDB * dbh, psS64 chip_id, psS64 exp_id, const char *class_id, const char *uri, psF32 bg, psF32 bg_stdev, psF32 bg_mean_stdev, psF32 bias, psF32 bias_stdev, psF32 fringe_0, psF32 fringe_1, psF32 fringe_2, psF32 sigma_ra, psF32 sigma_dec, psF32 ap_resid, psF32 ap_resid_stdev, psF32 fwhm, psF32 fwhm_range, psS32 n_stars, psS32 n_extended, psS32 n_cr, psS32 n_astrom, const char *path_base, psS16 fault)
    71596273{
    71606274    psMetadata *md = psMetadataAlloc();
    71616275    if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, NULL, chip_id)) {
    71626276        psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
     6277        psFree(md);
     6278        return false;
     6279    }
     6280    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, exp_id)) {
     6281        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    71636282        psFree(md);
    71646283        return false;
     
    72976416bool chipProcessedImfileInsertObject(psDB *dbh, chipProcessedImfileRow *object)
    72986417{
    7299     return chipProcessedImfileInsert(dbh, object->chip_id, object->class_id, object->uri, object->bg, object->bg_stdev, object->bg_mean_stdev, object->bias, object->bias_stdev, object->fringe_0, object->fringe_1, object->fringe_2, object->sigma_ra, object->sigma_dec, object->ap_resid, object->ap_resid_stdev, object->fwhm, object->fwhm_range, object->n_stars, object->n_extended, object->n_cr, object->n_astrom, object->path_base, object->fault);
     6418    return chipProcessedImfileInsert(dbh, object->chip_id, object->exp_id, object->class_id, object->uri, object->bg, object->bg_stdev, object->bg_mean_stdev, object->bias, object->bias_stdev, object->fringe_0, object->fringe_1, object->fringe_2, object->sigma_ra, object->sigma_dec, object->ap_resid, object->ap_resid_stdev, object->fwhm, object->fwhm_range, object->n_stars, object->n_extended, object->n_cr, object->n_astrom, object->path_base, object->fault);
    73006419}
    73016420
     
    73756494        return false;
    73766495    }
     6496    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, object->exp_id)) {
     6497        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     6498        psFree(md);
     6499        return false;
     6500    }
    73776501    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, object->class_id)) {
    73786502        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
     
    74996623        return false;
    75006624    }
     6625    psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id");
     6626    if (!status) {
     6627        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
     6628        return false;
     6629    }
    75016630    char* class_id = psMetadataLookupPtr(&status, md, "class_id");
    75026631    if (!status) {
     
    76106739    }
    76116740
    7612     return chipProcessedImfileRowAlloc(chip_id, class_id, uri, bg, bg_stdev, bg_mean_stdev, bias, bias_stdev, fringe_0, fringe_1, fringe_2, sigma_ra, sigma_dec, ap_resid, ap_resid_stdev, fwhm, fwhm_range, n_stars, n_extended, n_cr, n_astrom, path_base, fault);
     6741    return chipProcessedImfileRowAlloc(chip_id, exp_id, class_id, uri, bg, bg_stdev, bg_mean_stdev, bias, bias_stdev, fringe_0, fringe_1, fringe_2, sigma_ra, sigma_dec, ap_resid, ap_resid_stdev, fwhm, fwhm_range, n_stars, n_extended, n_cr, n_astrom, path_base, fault);
    76136742}
    76146743psArray *chipProcessedImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    77206849    return true;
    77216850}
    7722 static void camPendingExpRowFree(camPendingExpRow *object);
    7723 
    7724 camPendingExpRow *camPendingExpRowAlloc(psS64 cam_id, psS64 chip_id, const char *workdir, const char *label, const char *reduction, const char *expgroup, const char *dvodb)
    7725 {
    7726     camPendingExpRow *_object;
    7727 
    7728     _object = psAlloc(sizeof(camPendingExpRow));
    7729     psMemSetDeallocator(_object, (psFreeFunc)camPendingExpRowFree);
    7730 
    7731     _object->cam_id = cam_id;
    7732     _object->chip_id = chip_id;
    7733     _object->workdir = psStringCopy(workdir);
     6851static void chipMaskRowFree(chipMaskRow *object);
     6852
     6853chipMaskRow *chipMaskRowAlloc(const char *label)
     6854{
     6855    chipMaskRow     *_object;
     6856
     6857    _object = psAlloc(sizeof(chipMaskRow));
     6858    psMemSetDeallocator(_object, (psFreeFunc)chipMaskRowFree);
     6859
    77346860    _object->label = psStringCopy(label);
    7735     _object->reduction = psStringCopy(reduction);
    7736     _object->expgroup = psStringCopy(expgroup);
    7737     _object->dvodb = psStringCopy(dvodb);
    77386861
    77396862    return _object;
    77406863}
    77416864
    7742 static void camPendingExpRowFree(camPendingExpRow *object)
    7743 {
    7744     psFree(object->workdir);
     6865static void chipMaskRowFree(chipMaskRow *object)
     6866{
    77456867    psFree(object->label);
    7746     psFree(object->reduction);
    7747     psFree(object->expgroup);
    7748     psFree(object->dvodb);
    7749 }
    7750 
    7751 bool camPendingExpCreateTable(psDB *dbh)
     6868}
     6869
     6870bool chipMaskCreateTable(psDB *dbh)
    77526871{
    77536872    psMetadata *md = psMetadataAlloc();
    7754     if (!psMetadataAdd(md, PS_LIST_TAIL, "cam_id", PS_DATA_S64, "Primary Key AUTO_INCREMENT", 0)) {
    7755         psError(PS_ERR_UNKNOWN, false, "failed to add item cam_id");
    7756         psFree(md);
    7757         return false;
    7758     }
    7759     if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, "Primary Key fkey(chip_id) ref chipProcessedExp(chip_id)", 0)) {
    7760         psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
    7761         psFree(md);
    7762         return false;
    7763     }
    7764     if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, "255")) {
    7765         psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
    7766         psFree(md);
    7767         return false;
    7768     }
    7769     if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, "key", "64")) {
     6873    if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, "Primary Key", "64")) {
    77706874        psError(PS_ERR_UNKNOWN, false, "failed to add item label");
    77716875        psFree(md);
    77726876        return false;
    77736877    }
    7774     if (!psMetadataAdd(md, PS_LIST_TAIL, "reduction", PS_DATA_STRING, NULL, "64")) {
    7775         psError(PS_ERR_UNKNOWN, false, "failed to add item reduction");
    7776         psFree(md);
    7777         return false;
    7778     }
    7779     if (!psMetadataAdd(md, PS_LIST_TAIL, "expgroup", PS_DATA_STRING, "key", "64")) {
    7780         psError(PS_ERR_UNKNOWN, false, "failed to add item expgroup");
    7781         psFree(md);
    7782         return false;
    7783     }
    7784     if (!psMetadataAdd(md, PS_LIST_TAIL, "dvodb", PS_DATA_STRING, NULL, "255")) {
    7785         psError(PS_ERR_UNKNOWN, false, "failed to add item dvodb");
    7786         psFree(md);
    7787         return false;
    7788     }
    7789 
    7790     bool status = psDBCreateTable(dbh, CAMPENDINGEXP_TABLE_NAME, md);
     6878
     6879    bool status = psDBCreateTable(dbh, CHIPMASK_TABLE_NAME, md);
    77916880
    77926881    psFree(md);
     
    77956884}
    77966885
    7797 bool camPendingExpDropTable(psDB *dbh)
    7798 {
    7799     return psDBDropTable(dbh, CAMPENDINGEXP_TABLE_NAME);
    7800 }
    7801 
    7802 bool camPendingExpInsert(psDB * dbh, psS64 cam_id, psS64 chip_id, const char *workdir, const char *label, const char *reduction, const char *expgroup, const char *dvodb)
     6886bool chipMaskDropTable(psDB *dbh)
     6887{
     6888    return psDBDropTable(dbh, CHIPMASK_TABLE_NAME);
     6889}
     6890
     6891bool chipMaskInsert(psDB * dbh, const char *label)
    78036892{
    78046893    psMetadata *md = psMetadataAlloc();
    7805     if (!psMetadataAdd(md, PS_LIST_TAIL, "cam_id", PS_DATA_S64, NULL, cam_id)) {
    7806         psError(PS_ERR_UNKNOWN, false, "failed to add item cam_id");
    7807         psFree(md);
    7808         return false;
    7809     }
    7810     if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, NULL, chip_id)) {
    7811         psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
    7812         psFree(md);
    7813         return false;
    7814     }
    7815     if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, workdir)) {
    7816         psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
    7817         psFree(md);
    7818         return false;
    7819     }
    78206894    if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, label)) {
    78216895        psError(PS_ERR_UNKNOWN, false, "failed to add item label");
     
    78236897        return false;
    78246898    }
    7825     if (!psMetadataAdd(md, PS_LIST_TAIL, "reduction", PS_DATA_STRING, NULL, reduction)) {
    7826         psError(PS_ERR_UNKNOWN, false, "failed to add item reduction");
    7827         psFree(md);
    7828         return false;
    7829     }
    7830     if (!psMetadataAdd(md, PS_LIST_TAIL, "expgroup", PS_DATA_STRING, NULL, expgroup)) {
    7831         psError(PS_ERR_UNKNOWN, false, "failed to add item expgroup");
    7832         psFree(md);
    7833         return false;
    7834     }
    7835     if (!psMetadataAdd(md, PS_LIST_TAIL, "dvodb", PS_DATA_STRING, NULL, dvodb)) {
    7836         psError(PS_ERR_UNKNOWN, false, "failed to add item dvodb");
    7837         psFree(md);
    7838         return false;
    7839     }
    7840 
    7841     bool status = psDBInsertOneRow(dbh, CAMPENDINGEXP_TABLE_NAME, md);
     6899
     6900    bool status = psDBInsertOneRow(dbh, CHIPMASK_TABLE_NAME, md);
    78426901    psFree(md);
    78436902
     
    78456904}
    78466905
    7847 long long camPendingExpDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
     6906long long chipMaskDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
    78486907{
    78496908    long long       deleted = 0;
    78506909
    7851     long long count = psDBDeleteRows(dbh, CAMPENDINGEXP_TABLE_NAME, where, limit);
     6910    long long count = psDBDeleteRows(dbh, CHIPMASK_TABLE_NAME, where, limit);
    78526911    if (count < 0) {
    7853         psError(PS_ERR_UNKNOWN, true, "failed to delete row from camPendingExp");
     6912        psError(PS_ERR_UNKNOWN, true, "failed to delete row from chipMask");
    78546913        return count;
    78556914
     
    78596918    return deleted;
    78606919}
    7861 bool camPendingExpInsertObject(psDB *dbh, camPendingExpRow *object)
    7862 {
    7863     return camPendingExpInsert(dbh, object->cam_id, object->chip_id, object->workdir, object->label, object->reduction, object->expgroup, object->dvodb);
    7864 }
    7865 
    7866 bool camPendingExpInsertObjects(psDB *dbh, psArray *objects)
     6920bool chipMaskInsertObject(psDB *dbh, chipMaskRow *object)
     6921{
     6922    return chipMaskInsert(dbh, object->label);
     6923}
     6924
     6925bool chipMaskInsertObjects(psDB *dbh, psArray *objects)
    78676926{
    78686927    for (long i = 0; i < psArrayLength(objects); i++) {
    7869         if (!camPendingExpInsertObject(dbh, objects->data[i])) {
     6928        if (!chipMaskInsertObject(dbh, objects->data[i])) {
    78706929            return false;
    78716930        }
     
    78756934}
    78766935
    7877 bool camPendingExpInsertFits(psDB *dbh, const psFits *fits)
     6936bool chipMaskInsertFits(psDB *dbh, const psFits *fits)
    78786937{
    78796938    psArray         *rowSet;
    78806939
    7881     // move to (the first?) extension named  CAMPENDINGEXP_TABLE_NAME
    7882     if (!psFitsMoveExtName(fits, CAMPENDINGEXP_TABLE_NAME)) {
    7883         psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", CAMPENDINGEXP_TABLE_NAME);
     6940    // move to (the first?) extension named  CHIPMASK_TABLE_NAME
     6941    if (!psFitsMoveExtName(fits, CHIPMASK_TABLE_NAME)) {
     6942        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", CHIPMASK_TABLE_NAME);
    78846943        return false;
    78856944    }
     
    78996958    }
    79006959
    7901     if (!psDBInsertRows(dbh, CAMPENDINGEXP_TABLE_NAME, rowSet)) {
     6960    if (!psDBInsertRows(dbh, CHIPMASK_TABLE_NAME, rowSet)) {
    79026961        psError(PS_ERR_UNKNOWN, false, "databse insert failed");
    79036962        psFree(rowSet);
     
    79106969}
    79116970
    7912 bool camPendingExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
     6971bool chipMaskSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
    79136972{
    79146973    psArray         *rowSet;
    79156974
    7916     rowSet = psDBSelectRows(dbh, CAMPENDINGEXP_TABLE_NAME, where, limit);
     6975    rowSet = psDBSelectRows(dbh, CHIPMASK_TABLE_NAME, where, limit);
    79176976    if (!rowSet) {
    79186977        return false;
     
    79206979
    79216980    // output to fits
    7922     if (!psFitsWriteTable(fits, NULL, rowSet, CAMPENDINGEXP_TABLE_NAME)) {
     6981    if (!psFitsWriteTable(fits, NULL, rowSet, CHIPMASK_TABLE_NAME)) {
    79236982        psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
    79246983        psFree(rowSet);
     
    79316990}
    79326991
    7933 psMetadata *camPendingExpMetadataFromObject(const camPendingExpRow *object)
     6992psMetadata *chipMaskMetadataFromObject(const chipMaskRow *object)
    79346993{
    79356994    psMetadata *md = psMetadataAlloc();
    7936     if (!psMetadataAdd(md, PS_LIST_TAIL, "cam_id", PS_DATA_S64, NULL, object->cam_id)) {
    7937         psError(PS_ERR_UNKNOWN, false, "failed to add item cam_id");
    7938         psFree(md);
    7939         return false;
    7940     }
    7941     if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, NULL, object->chip_id)) {
    7942         psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
    7943         psFree(md);
    7944         return false;
    7945     }
    7946     if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, object->workdir)) {
    7947         psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
    7948         psFree(md);
    7949         return false;
    7950     }
    79516995    if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, object->label)) {
    79526996        psError(PS_ERR_UNKNOWN, false, "failed to add item label");
     
    79546998        return false;
    79556999    }
    7956     if (!psMetadataAdd(md, PS_LIST_TAIL, "reduction", PS_DATA_STRING, NULL, object->reduction)) {
    7957         psError(PS_ERR_UNKNOWN, false, "failed to add item reduction");
    7958         psFree(md);
    7959         return false;
    7960     }
    7961     if (!psMetadataAdd(md, PS_LIST_TAIL, "expgroup", PS_DATA_STRING, NULL, object->expgroup)) {
    7962         psError(PS_ERR_UNKNOWN, false, "failed to add item expgroup");
    7963         psFree(md);
    7964         return false;
    7965     }
    7966     if (!psMetadataAdd(md, PS_LIST_TAIL, "dvodb", PS_DATA_STRING, NULL, object->dvodb)) {
    7967         psError(PS_ERR_UNKNOWN, false, "failed to add item dvodb");
    7968         psFree(md);
    7969         return false;
    7970     }
    79717000
    79727001
     
    79747003}
    79757004
    7976 camPendingExpRow *camPendingExpObjectFromMetadata(psMetadata *md)
     7005chipMaskRow *chipMaskObjectFromMetadata(psMetadata *md)
    79777006{
    79787007
    79797008bool status = false;
    7980     psS64 cam_id = psMetadataLookupS64(&status, md, "cam_id");
    7981     if (!status) {
    7982         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item cam_id");
    7983         return false;
    7984     }
    7985     psS64 chip_id = psMetadataLookupS64(&status, md, "chip_id");
    7986     if (!status) {
    7987         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item chip_id");
    7988         return false;
    7989     }
    7990     char* workdir = psMetadataLookupPtr(&status, md, "workdir");
    7991     if (!status) {
    7992         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item workdir");
    7993         return false;
    7994     }
    79957009    char* label = psMetadataLookupPtr(&status, md, "label");
    79967010    if (!status) {
     
    79987012        return false;
    79997013    }
    8000     char* reduction = psMetadataLookupPtr(&status, md, "reduction");
    8001     if (!status) {
    8002         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item reduction");
    8003         return false;
    8004     }
    8005     char* expgroup = psMetadataLookupPtr(&status, md, "expgroup");
    8006     if (!status) {
    8007         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item expgroup");
    8008         return false;
    8009     }
    8010     char* dvodb = psMetadataLookupPtr(&status, md, "dvodb");
    8011     if (!status) {
    8012         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dvodb");
    8013         return false;
    8014     }
    8015 
    8016     return camPendingExpRowAlloc(cam_id, chip_id, workdir, label, reduction, expgroup, dvodb);
    8017 }
    8018 psArray *camPendingExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     7014
     7015    return chipMaskRowAlloc(label);
     7016}
     7017psArray *chipMaskSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
    80197018{
    80207019    psArray         *rowSet;
     
    80227021    psU64           i;
    80237022
    8024     rowSet = psDBSelectRows(dbh, CAMPENDINGEXP_TABLE_NAME, where, limit);
     7023    rowSet = psDBSelectRows(dbh, CHIPMASK_TABLE_NAME, where, limit);
    80257024    if (!rowSet) {
    80267025        return NULL;
     
    80327031
    80337032    for (i = 0; i < rowSet->n; i++) {
    8034         camPendingExpRow *object = camPendingExpObjectFromMetadata(rowSet->data[i]);
     7033        chipMaskRow *object = chipMaskObjectFromMetadata(rowSet->data[i]);
    80357034        psArrayAdd(returnSet, 0, object);
    80367035        psFree(object);
     
    80417040    return returnSet;
    80427041}
    8043 bool camPendingExpDeleteObject(psDB *dbh, const camPendingExpRow *object)
    8044 {
    8045     psMetadata *where = camPendingExpMetadataFromObject(object);
    8046     long long count = psDBDeleteRows(dbh, CAMPENDINGEXP_TABLE_NAME, where, 0);
     7042bool chipMaskDeleteObject(psDB *dbh, const chipMaskRow *object)
     7043{
     7044    psMetadata *where = chipMaskMetadataFromObject(object);
     7045    long long count = psDBDeleteRows(dbh, CHIPMASK_TABLE_NAME, where, 0);
    80477046    psFree(where);
    80487047    if (count < 0) {
    8049         psError(PS_ERR_UNKNOWN, true, "failed to delete row from camPendingExp");
     7048        psError(PS_ERR_UNKNOWN, true, "failed to delete row from chipMask");
    80507049        return false;
    80517050    }
     
    80537052        // XXX should this be a psAbort() instead?  It is possible that
    80547053        // having an object match multiple rows was by design.
    8055         psError(PS_ERR_UNKNOWN, true, "camPendingExpRow object matched more then one row.  Check your database schema");
    8056         return false;
    8057     }
    8058 
    8059     return true;
    8060 }
    8061 long long camPendingExpDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
     7054        psError(PS_ERR_UNKNOWN, true, "chipMaskRow object matched more then one row.  Check your database schema");
     7055        return false;
     7056    }
     7057
     7058    return true;
     7059}
     7060long long chipMaskDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
    80627061{
    80637062    long long       deleted = 0;
    80647063
    80657064    for (long long i = 0; i < objects->n; i++) {
    8066         camPendingExpRow *object = objects->data[i];
    8067         psMetadata *where = camPendingExpMetadataFromObject(object);
    8068         long long count = psDBDeleteRows(dbh, CAMPENDINGEXP_TABLE_NAME, where, limit);
     7065        chipMaskRow *object = objects->data[i];
     7066        psMetadata *where = chipMaskMetadataFromObject(object);
     7067        long long count = psDBDeleteRows(dbh, CHIPMASK_TABLE_NAME, where, limit);
    80697068        psFree(where);
    80707069        if (count < 0) {
    8071             psError(PS_ERR_UNKNOWN, true, "failed to delete row from camPendingExp");
     7070            psError(PS_ERR_UNKNOWN, true, "failed to delete row from chipMask");
    80727071            return count;
    80737072        }
     
    80787077    return deleted;
    80797078}
    8080 bool camPendingExpPrintObjects(FILE *stream, psArray *objects, bool mdcf)
     7079bool chipMaskPrintObjects(FILE *stream, psArray *objects, bool mdcf)
    80817080{
    80827081    PS_ASSERT_PTR_NON_NULL(objects, false);
     
    80847083    psMetadata *output = psMetadataAlloc();
    80857084    for (long i = 0; i < psArrayLength(objects); i++) {
    8086         psMetadata *md = camPendingExpMetadataFromObject(objects->data[i]);
     7085        psMetadata *md = chipMaskMetadataFromObject(objects->data[i]);
    80877086        if (!psMetadataAddMetadata(
    80887087            output,
    80897088            PS_LIST_TAIL,
    8090             CAMPENDINGEXP_TABLE_NAME,
     7089            CHIPMASK_TABLE_NAME,
    80917090            PS_META_DUPLICATE_OK,
    80927091            NULL,
     
    81097108    return true;
    81107109}
    8111 bool camPendingExpPrintObject(FILE *stream, camPendingExpRow *object, bool mdcf)
     7110bool chipMaskPrintObject(FILE *stream, chipMaskRow *object, bool mdcf)
    81127111{
    81137112    PS_ASSERT_PTR_NON_NULL(object, false);
    81147113
    8115     psMetadata *md = camPendingExpMetadataFromObject(object);
     7114    psMetadata *md = chipMaskMetadataFromObject(object);
    81167115
    81177116    if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
     
    81247123    return true;
    81257124}
    8126 static void camProcessedExpRowFree(camProcessedExpRow *object);
    8127 
    8128 camProcessedExpRow *camProcessedExpRowAlloc(psS64 cam_id, psS64 chip_id, const char *workdir, const char *label, const char *reduction, const char *expgroup, const char *dvodb, const char *uri, psF32 bg, psF32 bg_stdev, psF32 bg_mean_stdev, psF32 sigma_ra, psF32 sigma_dec, psF32 zp_mean, psF32 zp_stdev, psF32 fwhm, psF32 fwhm_range, psS32 n_stars, psS32 n_extended, psS32 n_cr, psS32 n_astrom, const char *path_base, psS16 fault)
    8129 {
    8130     camProcessedExpRow *_object;
    8131 
    8132     _object = psAlloc(sizeof(camProcessedExpRow));
    8133     psMemSetDeallocator(_object, (psFreeFunc)camProcessedExpRowFree);
     7125static void camRunRowFree(camRunRow *object);
     7126
     7127camRunRow *camRunRowAlloc(psS64 cam_id, 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)
     7128{
     7129    camRunRow      *_object;
     7130
     7131    _object = psAlloc(sizeof(camRunRow));
     7132    psMemSetDeallocator(_object, (psFreeFunc)camRunRowFree);
    81347133
    81357134    _object->cam_id = cam_id;
    81367135    _object->chip_id = chip_id;
     7136    _object->state = psStringCopy(state);
    81377137    _object->workdir = psStringCopy(workdir);
     7138    _object->workdir_state = psStringCopy(workdir_state);
    81387139    _object->label = psStringCopy(label);
    81397140    _object->reduction = psStringCopy(reduction);
    81407141    _object->expgroup = psStringCopy(expgroup);
    81417142    _object->dvodb = psStringCopy(dvodb);
     7143
     7144    return _object;
     7145}
     7146
     7147static void camRunRowFree(camRunRow *object)
     7148{
     7149    psFree(object->state);
     7150    psFree(object->workdir);
     7151    psFree(object->workdir_state);
     7152    psFree(object->label);
     7153    psFree(object->reduction);
     7154    psFree(object->expgroup);
     7155    psFree(object->dvodb);
     7156}
     7157
     7158bool camRunCreateTable(psDB *dbh)
     7159{
     7160    psMetadata *md = psMetadataAlloc();
     7161    if (!psMetadataAdd(md, PS_LIST_TAIL, "cam_id", PS_DATA_S64, "Primary Key AUTO_INCREMENT", 0)) {
     7162        psError(PS_ERR_UNKNOWN, false, "failed to add item cam_id");
     7163        psFree(md);
     7164        return false;
     7165    }
     7166    if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, "Primary Key fkey(chip_id) ref chipRun(chip_id)", 0)) {
     7167        psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
     7168        psFree(md);
     7169        return false;
     7170    }
     7171    if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, "key", "64")) {
     7172        psError(PS_ERR_UNKNOWN, false, "failed to add item state");
     7173        psFree(md);
     7174        return false;
     7175    }
     7176    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, "255")) {
     7177        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
     7178        psFree(md);
     7179        return false;
     7180    }
     7181    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir_state", PS_DATA_STRING, "key", "64")) {
     7182        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir_state");
     7183        psFree(md);
     7184        return false;
     7185    }
     7186    if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, "key", "64")) {
     7187        psError(PS_ERR_UNKNOWN, false, "failed to add item label");
     7188        psFree(md);
     7189        return false;
     7190    }
     7191    if (!psMetadataAdd(md, PS_LIST_TAIL, "reduction", PS_DATA_STRING, NULL, "64")) {
     7192        psError(PS_ERR_UNKNOWN, false, "failed to add item reduction");
     7193        psFree(md);
     7194        return false;
     7195    }
     7196    if (!psMetadataAdd(md, PS_LIST_TAIL, "expgroup", PS_DATA_STRING, "key", "64")) {
     7197        psError(PS_ERR_UNKNOWN, false, "failed to add item expgroup");
     7198        psFree(md);
     7199        return false;
     7200    }
     7201    if (!psMetadataAdd(md, PS_LIST_TAIL, "dvodb", PS_DATA_STRING, NULL, "255")) {
     7202        psError(PS_ERR_UNKNOWN, false, "failed to add item dvodb");
     7203        psFree(md);
     7204        return false;
     7205    }
     7206
     7207    bool status = psDBCreateTable(dbh, CAMRUN_TABLE_NAME, md);
     7208
     7209    psFree(md);
     7210
     7211    return status;
     7212}
     7213
     7214bool camRunDropTable(psDB *dbh)
     7215{
     7216    return psDBDropTable(dbh, CAMRUN_TABLE_NAME);
     7217}
     7218
     7219bool camRunInsert(psDB * dbh, psS64 cam_id, 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)
     7220{
     7221    psMetadata *md = psMetadataAlloc();
     7222    if (!psMetadataAdd(md, PS_LIST_TAIL, "cam_id", PS_DATA_S64, NULL, cam_id)) {
     7223        psError(PS_ERR_UNKNOWN, false, "failed to add item cam_id");
     7224        psFree(md);
     7225        return false;
     7226    }
     7227    if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, NULL, chip_id)) {
     7228        psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
     7229        psFree(md);
     7230        return false;
     7231    }
     7232    if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, NULL, state)) {
     7233        psError(PS_ERR_UNKNOWN, false, "failed to add item state");
     7234        psFree(md);
     7235        return false;
     7236    }
     7237    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, workdir)) {
     7238        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
     7239        psFree(md);
     7240        return false;
     7241    }
     7242    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir_state", PS_DATA_STRING, NULL, workdir_state)) {
     7243        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir_state");
     7244        psFree(md);
     7245        return false;
     7246    }
     7247    if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, label)) {
     7248        psError(PS_ERR_UNKNOWN, false, "failed to add item label");
     7249        psFree(md);
     7250        return false;
     7251    }
     7252    if (!psMetadataAdd(md, PS_LIST_TAIL, "reduction", PS_DATA_STRING, NULL, reduction)) {
     7253        psError(PS_ERR_UNKNOWN, false, "failed to add item reduction");
     7254        psFree(md);
     7255        return false;
     7256    }
     7257    if (!psMetadataAdd(md, PS_LIST_TAIL, "expgroup", PS_DATA_STRING, NULL, expgroup)) {
     7258        psError(PS_ERR_UNKNOWN, false, "failed to add item expgroup");
     7259        psFree(md);
     7260        return false;
     7261    }
     7262    if (!psMetadataAdd(md, PS_LIST_TAIL, "dvodb", PS_DATA_STRING, NULL, dvodb)) {
     7263        psError(PS_ERR_UNKNOWN, false, "failed to add item dvodb");
     7264        psFree(md);
     7265        return false;
     7266    }
     7267
     7268    bool status = psDBInsertOneRow(dbh, CAMRUN_TABLE_NAME, md);
     7269    psFree(md);
     7270
     7271    return status;
     7272}
     7273
     7274long long camRunDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
     7275{
     7276    long long       deleted = 0;
     7277
     7278    long long count = psDBDeleteRows(dbh, CAMRUN_TABLE_NAME, where, limit);
     7279    if (count < 0) {
     7280        psError(PS_ERR_UNKNOWN, true, "failed to delete row from camRun");
     7281        return count;
     7282
     7283        deleted += count;
     7284    }
     7285
     7286    return deleted;
     7287}
     7288bool camRunInsertObject(psDB *dbh, camRunRow *object)
     7289{
     7290    return camRunInsert(dbh, object->cam_id, object->chip_id, object->state, object->workdir, object->workdir_state, object->label, object->reduction, object->expgroup, object->dvodb);
     7291}
     7292
     7293bool camRunInsertObjects(psDB *dbh, psArray *objects)
     7294{
     7295    for (long i = 0; i < psArrayLength(objects); i++) {
     7296        if (!camRunInsertObject(dbh, objects->data[i])) {
     7297            return false;
     7298        }
     7299    }
     7300
     7301    return true;
     7302}
     7303
     7304bool camRunInsertFits(psDB *dbh, const psFits *fits)
     7305{
     7306    psArray         *rowSet;
     7307
     7308    // move to (the first?) extension named  CAMRUN_TABLE_NAME
     7309    if (!psFitsMoveExtName(fits, CAMRUN_TABLE_NAME)) {
     7310        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", CAMRUN_TABLE_NAME);
     7311        return false;
     7312    }
     7313
     7314    // check HDU type
     7315    if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
     7316        psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
     7317        return false;
     7318    }
     7319
     7320    // read fits table
     7321    rowSet = psFitsReadTable(fits);
     7322    if (!rowSet) {
     7323        psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
     7324        psFree(rowSet);
     7325        return false;
     7326    }
     7327
     7328    if (!psDBInsertRows(dbh, CAMRUN_TABLE_NAME, rowSet)) {
     7329        psError(PS_ERR_UNKNOWN, false, "databse insert failed");
     7330        psFree(rowSet);
     7331        return false;
     7332    }
     7333
     7334    psFree(rowSet);
     7335
     7336    return true;
     7337}
     7338
     7339bool camRunSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
     7340{
     7341    psArray         *rowSet;
     7342
     7343    rowSet = psDBSelectRows(dbh, CAMRUN_TABLE_NAME, where, limit);
     7344    if (!rowSet) {
     7345        return false;
     7346    }
     7347
     7348    // output to fits
     7349    if (!psFitsWriteTable(fits, NULL, rowSet, CAMRUN_TABLE_NAME)) {
     7350        psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
     7351        psFree(rowSet);
     7352        return false;
     7353    }
     7354
     7355    psFree(rowSet);
     7356
     7357    return true;
     7358}
     7359
     7360psMetadata *camRunMetadataFromObject(const camRunRow *object)
     7361{
     7362    psMetadata *md = psMetadataAlloc();
     7363    if (!psMetadataAdd(md, PS_LIST_TAIL, "cam_id", PS_DATA_S64, NULL, object->cam_id)) {
     7364        psError(PS_ERR_UNKNOWN, false, "failed to add item cam_id");
     7365        psFree(md);
     7366        return false;
     7367    }
     7368    if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, NULL, object->chip_id)) {
     7369        psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
     7370        psFree(md);
     7371        return false;
     7372    }
     7373    if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, NULL, object->state)) {
     7374        psError(PS_ERR_UNKNOWN, false, "failed to add item state");
     7375        psFree(md);
     7376        return false;
     7377    }
     7378    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, object->workdir)) {
     7379        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
     7380        psFree(md);
     7381        return false;
     7382    }
     7383    if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir_state", PS_DATA_STRING, NULL, object->workdir_state)) {
     7384        psError(PS_ERR_UNKNOWN, false, "failed to add item workdir_state");
     7385        psFree(md);
     7386        return false;
     7387    }
     7388    if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, object->label)) {
     7389        psError(PS_ERR_UNKNOWN, false, "failed to add item label");
     7390        psFree(md);
     7391        return false;
     7392    }
     7393    if (!psMetadataAdd(md, PS_LIST_TAIL, "reduction", PS_DATA_STRING, NULL, object->reduction)) {
     7394        psError(PS_ERR_UNKNOWN, false, "failed to add item reduction");
     7395        psFree(md);
     7396        return false;
     7397    }
     7398    if (!psMetadataAdd(md, PS_LIST_TAIL, "expgroup", PS_DATA_STRING, NULL, object->expgroup)) {
     7399        psError(PS_ERR_UNKNOWN, false, "failed to add item expgroup");
     7400        psFree(md);
     7401        return false;
     7402    }
     7403    if (!psMetadataAdd(md, PS_LIST_TAIL, "dvodb", PS_DATA_STRING, NULL, object->dvodb)) {
     7404        psError(PS_ERR_UNKNOWN, false, "failed to add item dvodb");
     7405        psFree(md);
     7406        return false;
     7407    }
     7408
     7409
     7410    return md;
     7411}
     7412
     7413camRunRow *camRunObjectFromMetadata(psMetadata *md)
     7414{
     7415
     7416bool status = false;
     7417    psS64 cam_id = psMetadataLookupS64(&status, md, "cam_id");
     7418    if (!status) {
     7419        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item cam_id");
     7420        return false;
     7421    }
     7422    psS64 chip_id = psMetadataLookupS64(&status, md, "chip_id");
     7423    if (!status) {
     7424        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item chip_id");
     7425        return false;
     7426    }
     7427    char* state = psMetadataLookupPtr(&status, md, "state");
     7428    if (!status) {
     7429        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item state");
     7430        return false;
     7431    }
     7432    char* workdir = psMetadataLookupPtr(&status, md, "workdir");
     7433    if (!status) {
     7434        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item workdir");
     7435        return false;
     7436    }
     7437    char* workdir_state = psMetadataLookupPtr(&status, md, "workdir_state");
     7438    if (!status) {
     7439        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item workdir_state");
     7440        return false;
     7441    }
     7442    char* label = psMetadataLookupPtr(&status, md, "label");
     7443    if (!status) {
     7444        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item label");
     7445        return false;
     7446    }
     7447    char* reduction = psMetadataLookupPtr(&status, md, "reduction");
     7448    if (!status) {
     7449        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item reduction");
     7450        return false;
     7451    }
     7452    char* expgroup = psMetadataLookupPtr(&status, md, "expgroup");
     7453    if (!status) {
     7454        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item expgroup");
     7455        return false;
     7456    }
     7457    char* dvodb = psMetadataLookupPtr(&status, md, "dvodb");
     7458    if (!status) {
     7459        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dvodb");
     7460        return false;
     7461    }
     7462
     7463    return camRunRowAlloc(cam_id, chip_id, state, workdir, workdir_state, label, reduction, expgroup, dvodb);
     7464}
     7465psArray *camRunSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     7466{
     7467    psArray         *rowSet;
     7468    psArray         *returnSet;
     7469    psU64           i;
     7470
     7471    rowSet = psDBSelectRows(dbh, CAMRUN_TABLE_NAME, where, limit);
     7472    if (!rowSet) {
     7473        return NULL;
     7474    }
     7475
     7476    // convert psMetadata rows to row objects
     7477
     7478    returnSet = psArrayAllocEmpty(rowSet->n);
     7479
     7480    for (i = 0; i < rowSet->n; i++) {
     7481        camRunRow *object = camRunObjectFromMetadata(rowSet->data[i]);
     7482        psArrayAdd(returnSet, 0, object);
     7483        psFree(object);
     7484    }
     7485
     7486    psFree(rowSet);
     7487
     7488    return returnSet;
     7489}
     7490bool camRunDeleteObject(psDB *dbh, const camRunRow *object)
     7491{
     7492    psMetadata *where = camRunMetadataFromObject(object);
     7493    long long count = psDBDeleteRows(dbh, CAMRUN_TABLE_NAME, where, 0);
     7494    psFree(where);
     7495    if (count < 0) {
     7496        psError(PS_ERR_UNKNOWN, true, "failed to delete row from camRun");
     7497        return false;
     7498    }
     7499    if (count > 1) {
     7500        // XXX should this be a psAbort() instead?  It is possible that
     7501        // having an object match multiple rows was by design.
     7502        psError(PS_ERR_UNKNOWN, true, "camRunRow object matched more then one row.  Check your database schema");
     7503        return false;
     7504    }
     7505
     7506    return true;
     7507}
     7508long long camRunDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
     7509{
     7510    long long       deleted = 0;
     7511
     7512    for (long long i = 0; i < objects->n; i++) {
     7513        camRunRow *object = objects->data[i];
     7514        psMetadata *where = camRunMetadataFromObject(object);
     7515        long long count = psDBDeleteRows(dbh, CAMRUN_TABLE_NAME, where, limit);
     7516        psFree(where);
     7517        if (count < 0) {
     7518            psError(PS_ERR_UNKNOWN, true, "failed to delete row from camRun");
     7519            return count;
     7520        }
     7521
     7522        deleted += count;
     7523    }
     7524
     7525    return deleted;
     7526}
     7527bool camRunPrintObjects(FILE *stream, psArray *objects, bool mdcf)
     7528{
     7529    PS_ASSERT_PTR_NON_NULL(objects, false);
     7530
     7531    psMetadata *output = psMetadataAlloc();
     7532    for (long i = 0; i < psArrayLength(objects); i++) {
     7533        psMetadata *md = camRunMetadataFromObject(objects->data[i]);
     7534        if (!psMetadataAddMetadata(
     7535            output,
     7536            PS_LIST_TAIL,
     7537            CAMRUN_TABLE_NAME,
     7538            PS_META_DUPLICATE_OK,
     7539            NULL,
     7540            md
     7541        )) {
     7542            psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
     7543            psFree(md);
     7544            psFree(output);
     7545            return false;
     7546        }
     7547        psFree(md);
     7548    }
     7549
     7550    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
     7551        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     7552        psFree(output);
     7553    }
     7554    psFree(output);
     7555
     7556    return true;
     7557}
     7558bool camRunPrintObject(FILE *stream, camRunRow *object, bool mdcf)
     7559{
     7560    PS_ASSERT_PTR_NON_NULL(object, false);
     7561
     7562    psMetadata *md = camRunMetadataFromObject(object);
     7563
     7564    if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
     7565        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     7566        psFree(md);
     7567    }
     7568
     7569    psFree(md);
     7570
     7571    return true;
     7572}
     7573static void camProcessedExpRowFree(camProcessedExpRow *object);
     7574
     7575camProcessedExpRow *camProcessedExpRowAlloc(psS64 cam_id, psS64 chip_id, const char *uri, psF32 bg, psF32 bg_stdev, psF32 bg_mean_stdev, psF32 sigma_ra, psF32 sigma_dec, psF32 zp_mean, psF32 zp_stdev, psF32 fwhm, psF32 fwhm_range, psS32 n_stars, psS32 n_extended, psS32 n_cr, psS32 n_astrom, const char *path_base, psS16 fault)
     7576{
     7577    camProcessedExpRow *_object;
     7578
     7579    _object = psAlloc(sizeof(camProcessedExpRow));
     7580    psMemSetDeallocator(_object, (psFreeFunc)camProcessedExpRowFree);
     7581
     7582    _object->cam_id = cam_id;
     7583    _object->chip_id = chip_id;
    81427584    _object->uri = psStringCopy(uri);
    81437585    _object->bg = bg;
     
    81627604static void camProcessedExpRowFree(camProcessedExpRow *object)
    81637605{
    8164     psFree(object->workdir);
    8165     psFree(object->label);
    8166     psFree(object->reduction);
    8167     psFree(object->expgroup);
    8168     psFree(object->dvodb);
    81697606    psFree(object->uri);
    81707607    psFree(object->path_base);
     
    81797616        return false;
    81807617    }
    8181     if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, "Primary Key fkey(chip_id) ref chipProcessedExp(chip_id)", 0)) {
     7618    if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, "Primary Key fkey(cam_id, chip_id) ref camRun(cam_id, chip_id)", 0)) {
    81827619        psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
    8183         psFree(md);
    8184         return false;
    8185     }
    8186     if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, "255")) {
    8187         psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
    8188         psFree(md);
    8189         return false;
    8190     }
    8191     if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, "key", "64")) {
    8192         psError(PS_ERR_UNKNOWN, false, "failed to add item label");
    8193         psFree(md);
    8194         return false;
    8195     }
    8196     if (!psMetadataAdd(md, PS_LIST_TAIL, "reduction", PS_DATA_STRING, NULL, "64")) {
    8197         psError(PS_ERR_UNKNOWN, false, "failed to add item reduction");
    8198         psFree(md);
    8199         return false;
    8200     }
    8201     if (!psMetadataAdd(md, PS_LIST_TAIL, "expgroup", PS_DATA_STRING, "key", "64")) {
    8202         psError(PS_ERR_UNKNOWN, false, "failed to add item expgroup");
    8203         psFree(md);
    8204         return false;
    8205     }
    8206     if (!psMetadataAdd(md, PS_LIST_TAIL, "dvodb", PS_DATA_STRING, NULL, "255")) {
    8207         psError(PS_ERR_UNKNOWN, false, "failed to add item dvodb");
    82087620        psFree(md);
    82097621        return false;
     
    83027714}
    83037715
    8304 bool camProcessedExpInsert(psDB * dbh, psS64 cam_id, psS64 chip_id, const char *workdir, const char *label, const char *reduction, const char *expgroup, const char *dvodb, const char *uri, psF32 bg, psF32 bg_stdev, psF32 bg_mean_stdev, psF32 sigma_ra, psF32 sigma_dec, psF32 zp_mean, psF32 zp_stdev, psF32 fwhm, psF32 fwhm_range, psS32 n_stars, psS32 n_extended, psS32 n_cr, psS32 n_astrom, const char *path_base, psS16 fault)
     7716bool camProcessedExpInsert(psDB * dbh, psS64 cam_id, psS64 chip_id, const char *uri, psF32 bg, psF32 bg_stdev, psF32 bg_mean_stdev, psF32 sigma_ra, psF32 sigma_dec, psF32 zp_mean, psF32 zp_stdev, psF32 fwhm, psF32 fwhm_range, psS32 n_stars, psS32 n_extended, psS32 n_cr, psS32 n_astrom, const char *path_base, psS16 fault)
    83057717{
    83067718    psMetadata *md = psMetadataAlloc();
     
    83127724    if (!psMetadataAdd(md, PS_LIST_TAIL, "chip_id", PS_DATA_S64, NULL, chip_id)) {
    83137725        psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
    8314         psFree(md);
    8315         return false;
    8316     }
    8317     if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, workdir)) {
    8318         psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
    8319         psFree(md);
    8320         return false;
    8321     }
    8322     if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, label)) {
    8323         psError(PS_ERR_UNKNOWN, false, "failed to add item label");
    8324         psFree(md);
    8325         return false;
    8326     }
    8327     if (!psMetadataAdd(md, PS_LIST_TAIL, "reduction", PS_DATA_STRING, NULL, reduction)) {
    8328         psError(PS_ERR_UNKNOWN, false, "failed to add item reduction");
    8329         psFree(md);
    8330         return false;
    8331     }
    8332     if (!psMetadataAdd(md, PS_LIST_TAIL, "expgroup", PS_DATA_STRING, NULL, expgroup)) {
    8333         psError(PS_ERR_UNKNOWN, false, "failed to add item expgroup");
    8334         psFree(md);
    8335         return false;
    8336     }
    8337     if (!psMetadataAdd(md, PS_LIST_TAIL, "dvodb", PS_DATA_STRING, NULL, dvodb)) {
    8338         psError(PS_ERR_UNKNOWN, false, "failed to add item dvodb");
    83397726        psFree(md);
    83407727        return false;
     
    84437830bool camProcessedExpInsertObject(psDB *dbh, camProcessedExpRow *object)
    84447831{
    8445     return camProcessedExpInsert(dbh, object->cam_id, object->chip_id, object->workdir, object->label, object->reduction, object->expgroup, object->dvodb, object->uri, object->bg, object->bg_stdev, object->bg_mean_stdev, object->sigma_ra, object->sigma_dec, object->zp_mean, object->zp_stdev, object->fwhm, object->fwhm_range, object->n_stars, object->n_extended, object->n_cr, object->n_astrom, object->path_base, object->fault);
     7832    return camProcessedExpInsert(dbh, object->cam_id, object->chip_id, object->uri, object->bg, object->bg_stdev, object->bg_mean_stdev, object->sigma_ra, object->sigma_dec, object->zp_mean, object->zp_stdev, object->fwhm, object->fwhm_range, object->n_stars, object->n_extended, object->n_cr, object->n_astrom, object->path_base, object->fault);
    84467833}
    84477834
     
    85267913        return false;
    85277914    }
    8528     if (!psMetadataAdd(md, PS_LIST_TAIL, "workdir", PS_DATA_STRING, NULL, object->workdir)) {
    8529         psError(PS_ERR_UNKNOWN, false, "failed to add item workdir");
    8530         psFree(md);
    8531         return false;
    8532     }
    8533     if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, object->label)) {
    8534         psError(PS_ERR_UNKNOWN, false, "failed to add item label");
    8535         psFree(md);
    8536         return false;
    8537     }
    8538     if (!psMetadataAdd(md, PS_LIST_TAIL, "reduction", PS_DATA_STRING, NULL, object->reduction)) {
    8539         psError(PS_ERR_UNKNOWN, false, "failed to add item reduction");
    8540         psFree(md);
    8541         return false;
    8542     }
    8543     if (!psMetadataAdd(md, PS_LIST_TAIL, "expgroup", PS_DATA_STRING, NULL, object->expgroup)) {
    8544         psError(PS_ERR_UNKNOWN, false, "failed to add item expgroup");
    8545         psFree(md);
    8546         return false;
    8547     }
    8548     if (!psMetadataAdd(md, PS_LIST_TAIL, "dvodb", PS_DATA_STRING, NULL, object->dvodb)) {
    8549         psError(PS_ERR_UNKNOWN, false, "failed to add item dvodb");
    8550         psFree(md);
    8551         return false;
    8552     }
    85537915    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) {
    85547916        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     
    86508012        return false;
    86518013    }
    8652     char* workdir = psMetadataLookupPtr(&status, md, "workdir");
    8653     if (!status) {
    8654         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item workdir");
    8655         return false;
    8656     }
    8657     char* label = psMetadataLookupPtr(&status, md, "label");
    8658     if (!status) {
    8659         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item label");
    8660         return false;
    8661     }
    8662     char* reduction = psMetadataLookupPtr(&status, md, "reduction");
    8663     if (!status) {
    8664         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item reduction");
    8665         return false;
    8666     }
    8667     char* expgroup = psMetadataLookupPtr(&status, md, "expgroup");
    8668     if (!status) {
    8669         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item expgroup");
    8670         return false;
    8671     }
    8672     char* dvodb = psMetadataLookupPtr(&status, md, "dvodb");
    8673     if (!status) {
    8674         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dvodb");
    8675         return false;
    8676     }
    86778014    char* uri = psMetadataLookupPtr(&status, md, "uri");
    86788015    if (!status) {
     
    87568093    }
    87578094
    8758     return camProcessedExpRowAlloc(cam_id, chip_id, workdir, label, reduction, expgroup, dvodb, uri, bg, bg_stdev, bg_mean_stdev, sigma_ra, sigma_dec, zp_mean, zp_stdev, fwhm, fwhm_range, n_stars, n_extended, n_cr, n_astrom, path_base, fault);
     8095    return camProcessedExpRowAlloc(cam_id, chip_id, uri, bg, bg_stdev, bg_mean_stdev, sigma_ra, sigma_dec, zp_mean, zp_stdev, fwhm, fwhm_range, n_stars, n_extended, n_cr, n_astrom, path_base, fault);
    87598096}
    87608097psArray *camProcessedExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    1370413041static void detInputExpRowFree(detInputExpRow *object);
    1370513042
    13706 detInputExpRow *detInputExpRowAlloc(psS64 det_id, psS32 iteration, const char *exp_tag, bool include)
     13043detInputExpRow *detInputExpRowAlloc(psS64 det_id, psS32 iteration, psS64 exp_id, bool include)
    1370713044{
    1370813045    detInputExpRow  *_object;
     
    1371313050    _object->det_id = det_id;
    1371413051    _object->iteration = iteration;
    13715     _object->exp_tag = psStringCopy(exp_tag);
     13052    _object->exp_id = exp_id;
    1371613053    _object->include = include;
    1371713054
     
    1372113058static void detInputExpRowFree(detInputExpRow *object)
    1372213059{
    13723     psFree(object->exp_tag);
    1372413060}
    1372513061
     
    1373713073        return false;
    1373813074    }
    13739     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, "Primary Key", "64")) {
    13740         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     13075    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key", 64)) {
     13076        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1374113077        psFree(md);
    1374213078        return false;
     
    1376013096}
    1376113097
    13762 bool detInputExpInsert(psDB * dbh, psS64 det_id, psS32 iteration, const char *exp_tag, bool include)
     13098bool detInputExpInsert(psDB * dbh, psS64 det_id, psS32 iteration, psS64 exp_id, bool include)
    1376313099{
    1376413100    psMetadata *md = psMetadataAlloc();
     
    1377313109        return false;
    1377413110    }
    13775     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, exp_tag)) {
    13776         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     13111    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, exp_id)) {
     13112        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1377713113        psFree(md);
    1377813114        return false;
     
    1380613142bool detInputExpInsertObject(psDB *dbh, detInputExpRow *object)
    1380713143{
    13808     return detInputExpInsert(dbh, object->det_id, object->iteration, object->exp_tag, object->include);
     13144    return detInputExpInsert(dbh, object->det_id, object->iteration, object->exp_id, object->include);
    1380913145}
    1381013146
     
    1388913225        return false;
    1389013226    }
    13891     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, object->exp_tag)) {
    13892         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     13227    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, object->exp_id)) {
     13228        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1389313229        psFree(md);
    1389413230        return false;
     
    1391813254        return false;
    1391913255    }
    13920     char* exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
    13921     if (!status) {
    13922         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
     13256    psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id");
     13257    if (!status) {
     13258        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
    1392313259        return false;
    1392413260    }
     
    1392913265    }
    1393013266
    13931     return detInputExpRowAlloc(det_id, iteration, exp_tag, include);
     13267    return detInputExpRowAlloc(det_id, iteration, exp_id, include);
    1393213268}
    1393313269psArray *detInputExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    1404113377static void detProcessedImfileRowFree(detProcessedImfileRow *object);
    1404213378
    14043 detProcessedImfileRow *detProcessedImfileRowAlloc(psS64 det_id, const char *exp_tag, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_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)
     13379detProcessedImfileRow *detProcessedImfileRowAlloc(psS64 det_id, psS64 exp_id, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_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)
    1404413380{
    1404513381    detProcessedImfileRow *_object;
     
    1404913385
    1405013386    _object->det_id = det_id;
    14051     _object->exp_tag = psStringCopy(exp_tag);
     13387    _object->exp_id = exp_id;
    1405213388    _object->class_id = psStringCopy(class_id);
    1405313389    _object->uri = psStringCopy(uri);
     
    1407213408static void detProcessedImfileRowFree(detProcessedImfileRow *object)
    1407313409{
    14074     psFree(object->exp_tag);
    1407513410    psFree(object->class_id);
    1407613411    psFree(object->uri);
     
    1408713422        return false;
    1408813423    }
    14089     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, "Primary Key", "64")) {
    14090         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     13424    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key", 64)) {
     13425        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1409113426        psFree(md);
    1409213427        return false;
     
    1418513520}
    1418613521
    14187 bool detProcessedImfileInsert(psDB * dbh, psS64 det_id, const char *exp_tag, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_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)
     13522bool detProcessedImfileInsert(psDB * dbh, psS64 det_id, psS64 exp_id, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_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)
    1418813523{
    1418913524    psMetadata *md = psMetadataAlloc();
     
    1419313528        return false;
    1419413529    }
    14195     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, exp_tag)) {
    14196         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     13530    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, exp_id)) {
     13531        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1419713532        psFree(md);
    1419813533        return false;
     
    1430113636bool detProcessedImfileInsertObject(psDB *dbh, detProcessedImfileRow *object)
    1430213637{
    14303     return detProcessedImfileInsert(dbh, object->det_id, object->exp_tag, object->class_id, object->uri, object->recipe, object->bg, object->bg_stdev, object->bg_mean_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);
     13638    return detProcessedImfileInsert(dbh, object->det_id, object->exp_id, object->class_id, object->uri, object->recipe, object->bg, object->bg_stdev, object->bg_mean_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);
    1430413639}
    1430513640
     
    1437913714        return false;
    1438013715    }
    14381     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, object->exp_tag)) {
    14382         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     13716    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, object->exp_id)) {
     13717        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1438313718        psFree(md);
    1438413719        return false;
     
    1447813813        return false;
    1447913814    }
    14480     char* exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
    14481     if (!status) {
    14482         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
     13815    psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id");
     13816    if (!status) {
     13817        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
    1448313818        return false;
    1448413819    }
     
    1456413899    }
    1456513900
    14566     return detProcessedImfileRowAlloc(det_id, exp_tag, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, fringe_0, fringe_1, fringe_2, user_1, user_2, user_3, user_4, user_5, path_base, fault);
     13901    return detProcessedImfileRowAlloc(det_id, exp_id, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, fringe_0, fringe_1, fringe_2, user_1, user_2, user_3, user_4, user_5, path_base, fault);
    1456713902}
    1456813903psArray *detProcessedImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    1467614011static void detProcessedExpRowFree(detProcessedExpRow *object);
    1467714012
    14678 detProcessedExpRow *detProcessedExpRowAlloc(psS64 det_id, const char *exp_tag, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_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)
     14013detProcessedExpRow *detProcessedExpRowAlloc(psS64 det_id, psS64 exp_id, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_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)
    1467914014{
    1468014015    detProcessedExpRow *_object;
     
    1468414019
    1468514020    _object->det_id = det_id;
    14686     _object->exp_tag = psStringCopy(exp_tag);
     14021    _object->exp_id = exp_id;
    1468714022    _object->recipe = psStringCopy(recipe);
    1468814023    _object->bg = bg;
     
    1470514040static void detProcessedExpRowFree(detProcessedExpRow *object)
    1470614041{
    14707     psFree(object->exp_tag);
    1470814042    psFree(object->recipe);
    1470914043    psFree(object->path_base);
     
    1471814052        return false;
    1471914053    }
    14720     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, "Primary Key", "64")) {
    14721         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     14054    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key", 64)) {
     14055        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1472214056        psFree(md);
    1472314057        return false;
     
    1480614140}
    1480714141
    14808 bool detProcessedExpInsert(psDB * dbh, psS64 det_id, const char *exp_tag, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_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)
     14142bool detProcessedExpInsert(psDB * dbh, psS64 det_id, psS64 exp_id, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_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)
    1480914143{
    1481014144    psMetadata *md = psMetadataAlloc();
     
    1481414148        return false;
    1481514149    }
    14816     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, exp_tag)) {
    14817         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     14150    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, exp_id)) {
     14151        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1481814152        psFree(md);
    1481914153        return false;
     
    1491214246bool detProcessedExpInsertObject(psDB *dbh, detProcessedExpRow *object)
    1491314247{
    14914     return detProcessedExpInsert(dbh, object->det_id, object->exp_tag, object->recipe, object->bg, object->bg_stdev, object->bg_mean_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);
     14248    return detProcessedExpInsert(dbh, object->det_id, object->exp_id, object->recipe, object->bg, object->bg_stdev, object->bg_mean_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);
    1491514249}
    1491614250
     
    1499014324        return false;
    1499114325    }
    14992     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, object->exp_tag)) {
    14993         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     14326    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, object->exp_id)) {
     14327        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1499414328        psFree(md);
    1499514329        return false;
     
    1507914413        return false;
    1508014414    }
    15081     char* exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
    15082     if (!status) {
    15083         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
     14415    psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id");
     14416    if (!status) {
     14417        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
    1508414418        return false;
    1508514419    }
     
    1515514489    }
    1515614490
    15157     return detProcessedExpRowAlloc(det_id, exp_tag, recipe, bg, bg_stdev, bg_mean_stdev, fringe_0, fringe_1, fringe_2, user_1, user_2, user_3, user_4, user_5, path_base, fault);
     14491    return detProcessedExpRowAlloc(det_id, exp_id, recipe, bg, bg_stdev, bg_mean_stdev, fringe_0, fringe_1, fringe_2, user_1, user_2, user_3, user_4, user_5, path_base, fault);
    1515814492}
    1515914493psArray *detProcessedExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    1725016584static void detResidImfileRowFree(detResidImfileRow *object);
    1725116585
    17252 detResidImfileRow *detResidImfileRowAlloc(psS64 det_id, psS32 iteration, const char *exp_tag, 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)
     16586detResidImfileRow *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)
    1725316587{
    1725416588    detResidImfileRow *_object;
     
    1725916593    _object->det_id = det_id;
    1726016594    _object->iteration = iteration;
    17261     _object->exp_tag = psStringCopy(exp_tag);
     16595    _object->exp_id = exp_id;
    1726216596    _object->class_id = psStringCopy(class_id);
    1726316597    _object->uri = psStringCopy(uri);
     
    1728316617static void detResidImfileRowFree(detResidImfileRow *object)
    1728416618{
    17285     psFree(object->exp_tag);
    1728616619    psFree(object->class_id);
    1728716620    psFree(object->uri);
     
    1730316636        return false;
    1730416637    }
    17305     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, "Primary Key", "64")) {
    17306         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     16638    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key", 64)) {
     16639        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1730716640        psFree(md);
    1730816641        return false;
     
    1740616739}
    1740716740
    17408 bool detResidImfileInsert(psDB * dbh, psS64 det_id, psS32 iteration, const char *exp_tag, 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)
     16741bool 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)
    1740916742{
    1741016743    psMetadata *md = psMetadataAlloc();
     
    1741916752        return false;
    1742016753    }
    17421     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, exp_tag)) {
    17422         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     16754    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, exp_id)) {
     16755        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1742316756        psFree(md);
    1742416757        return false;
     
    1753216865bool detResidImfileInsertObject(psDB *dbh, detResidImfileRow *object)
    1753316866{
    17534     return detResidImfileInsert(dbh, object->det_id, object->iteration, object->exp_tag, 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);
     16867    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);
    1753516868}
    1753616869
     
    1761516948        return false;
    1761616949    }
    17617     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, object->exp_tag)) {
    17618         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     16950    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, object->exp_id)) {
     16951        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1761916952        psFree(md);
    1762016953        return false;
     
    1772417057        return false;
    1772517058    }
    17726     char* exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
    17727     if (!status) {
    17728         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
     17059    psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id");
     17060    if (!status) {
     17061        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
    1772917062        return false;
    1773017063    }
     
    1781517148    }
    1781617149
    17817     return detResidImfileRowAlloc(det_id, iteration, exp_tag, 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);
     17150    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);
    1781817151}
    1781917152psArray *detResidImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    1792717260static void detResidExpRowFree(detResidExpRow *object);
    1792817261
    17929 detResidExpRow *detResidExpRowAlloc(psS64 det_id, psS32 iteration, const char *exp_tag, 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)
     17262detResidExpRow *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)
    1793017263{
    1793117264    detResidExpRow  *_object;
     
    1793617269    _object->det_id = det_id;
    1793717270    _object->iteration = iteration;
    17938     _object->exp_tag = psStringCopy(exp_tag);
     17271    _object->exp_id = exp_id;
    1793917272    _object->recipe = psStringCopy(recipe);
    1794017273    _object->bg = bg;
     
    1795917292static void detResidExpRowFree(detResidExpRow *object)
    1796017293{
    17961     psFree(object->exp_tag);
    1796217294    psFree(object->recipe);
    1796317295    psFree(object->path_base);
     
    1797717309        return false;
    1797817310    }
    17979     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, "Primary Key", "64")) {
    17980         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     17311    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key", 64)) {
     17312        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1798117313        psFree(md);
    1798217314        return false;
     
    1807517407}
    1807617408
    18077 bool detResidExpInsert(psDB * dbh, psS64 det_id, psS32 iteration, const char *exp_tag, 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)
     17409bool 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)
    1807817410{
    1807917411    psMetadata *md = psMetadataAlloc();
     
    1808817420        return false;
    1808917421    }
    18090     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, exp_tag)) {
    18091         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     17422    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, exp_id)) {
     17423        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1809217424        psFree(md);
    1809317425        return false;
     
    1819617528bool detResidExpInsertObject(psDB *dbh, detResidExpRow *object)
    1819717529{
    18198     return detResidExpInsert(dbh, object->det_id, object->iteration, object->exp_tag, 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);
     17530    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);
    1819917531}
    1820017532
     
    1827917611        return false;
    1828017612    }
    18281     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, object->exp_tag)) {
    18282         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     17613    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, object->exp_id)) {
     17614        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    1828317615        psFree(md);
    1828417616        return false;
     
    1838317715        return false;
    1838417716    }
    18385     char* exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
    18386     if (!status) {
    18387         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
     17717    psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id");
     17718    if (!status) {
     17719        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
    1838817720        return false;
    1838917721    }
     
    1846917801    }
    1847017802
    18471     return detResidExpRowAlloc(det_id, iteration, exp_tag, 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);
     17803    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);
    1847217804}
    1847317805psArray *detResidExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
  • trunk/ippdb/src/ippdb.h

    r13937 r14061  
    125125);
    126126
    127 /** expTagCounterRow data structure
    128  *
    129  * Structure for representing a single row of expTagCounter table data.
     127/** summitExpRow data structure
     128 *
     129 * Structure for representing a single row of summitExp table data.
    130130 */
    131131
    132132typedef struct {
    133     psU64           counter;
    134 } expTagCounterRow;
    135 
    136 /** Creates a new expTagCounterRow object
    137  *
    138  *  @return A new expTagCounterRow object or NULL on failure.
    139  */
    140 
    141 expTagCounterRow *expTagCounterRowAlloc(
    142     psU64           counter
    143 );
    144 
    145 /** Creates a new expTagCounter table
    146  *
    147  * @return true on success
    148  */
    149 
    150 bool expTagCounterCreateTable(
    151     psDB            *dbh                ///< Database handle
    152 );
    153 
    154 /** Deletes a expTagCounter table
    155  *
    156  * @return true on success
    157  */
    158 
    159 bool expTagCounterDropTable(
    160     psDB            *dbh                ///< Database handle
    161 );
    162 
    163 /** Insert a single row into a table
    164  *
    165  * This function constructs and inserts a single row based on it's parameters.
    166  *
    167  * @return true on success
    168  */
    169 
    170 bool expTagCounterInsert(
    171     psDB            *dbh,               ///< Database handle
    172     psU64           counter
    173 );
    174 
    175 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    176  *
    177  * @return A The number of rows removed or a negative value on error
    178  */
    179 
    180 long long expTagCounterDelete(
    181     psDB            *dbh,               ///< Database handle
    182     const psMetadata *where,            ///< Row match criteria
    183     unsigned long long limit            ///< Maximum number of elements to delete
    184 );
    185 
    186 /** Insert a single expTagCounterRow object into a table
    187  *
    188  * This function constructs and inserts a single row based on it's parameters.
    189  *
    190  * @return true on success
    191  */
    192 
    193 bool expTagCounterInsertObject(
    194     psDB            *dbh,               ///< Database handle
    195     expTagCounterRow *object             ///< expTagCounterRow object
    196 );
    197 
    198 /** Insert an array of expTagCounterRow object into a table
    199  *
    200  * This function constructs and inserts multiple rows based on it's parameters.
    201  *
    202  * @return true on success
    203  */
    204 
    205 bool expTagCounterInsertObjects(
    206     psDB            *dbh,               ///< Database handle
    207     psArray         *objects            ///< array of expTagCounterRow objects
    208 );
    209 
    210 /** Insert data from a binary FITS table expTagCounterRow into the database
    211  *
    212  * This function expects a psFits object with a FITS table as the first
    213  * extension.  The table must have at least one row of data in it, that is of
    214  * the appropriate format (number of columns and their type).  All other
    215  * extensions are ignored.
    216  *
    217  * @return true on success
    218  */
    219 
    220 bool expTagCounterInsertFits(
    221     psDB            *dbh,               ///< Database handle
    222     const psFits    *fits               ///< psFits object
    223 );
    224 
    225 /** Selects up to limit from the database and returns them in a binary FITS table
    226  *
    227  * This function assumes an empty psFits object and will create a FITS table
    228  * as the first extension.
    229  *
    230  *  See psDBSelectRows() for documentation on the format of where.
    231  *
    232  * @return true on success
    233  */
    234 
    235 bool expTagCounterSelectRowsFits(
    236     psDB            *dbh,               ///< Database handle
    237     psFits          *fits,              ///< psFits object
    238     const psMetadata *where,            ///< Row match criteria
    239     unsigned long long limit            ///< Maximum number of elements to return
    240 );
    241 
    242 /** Convert a expTagCounterRow into an equivalent psMetadata
    243  *
    244  * @return A psMetadata pointer or NULL on error
    245  */
    246 
    247 psMetadata *expTagCounterMetadataFromObject(
    248     const expTagCounterRow *object             ///< fooRow to convert into a psMetadata
    249 );
    250 
    251 /** Convert a psMetadata into an equivalent fooRow
    252  *
    253  * @return A expTagCounterRow pointer or NULL on error
    254  */
    255 
    256 expTagCounterRow *expTagCounterObjectFromMetadata(
    257     psMetadata      *md                 ///< psMetadata to convert into a fooRow
    258 );
    259 /** Selects up to limit rows from the database and returns as expTagCounterRow objects in a psArray
    260  *
    261  *  See psDBSelectRows() for documentation on the format of where.
    262  *
    263  * @return A psArray pointer or NULL on error
    264  */
    265 
    266 psArray *expTagCounterSelectRowObjects(
    267     psDB            *dbh,               ///< Database handle
    268     const psMetadata *where,            ///< Row match criteria
    269     unsigned long long limit            ///< Maximum number of elements to return
    270 );
    271 /** Deletes a row from the database coresponding to an expTagCounter
    272  *
    273  *  Note that a 'where' search psMetadata is constructed from each object and
    274  *  used to find rows to delete.
    275  *
    276  * @return A The number of rows removed or a negative value on error
    277  */
    278 
    279 bool expTagCounterDeleteObject(
    280     psDB            *dbh,               ///< Database handle
    281     const expTagCounterRow *object    ///< Object to delete
    282 );
    283 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    284  *
    285  *  Note that a 'where' search psMetadata is constructed from each object and
    286  *  used to find rows to delete.
    287  *
    288  * @return A The number of rows removed or a negative value on error
    289  */
    290 
    291 long long expTagCounterDeleteRowObjects(
    292     psDB            *dbh,               ///< Database handle
    293     const psArray   *objects,           ///< Array of objects to delete
    294     unsigned long long limit            ///< Maximum number of elements to delete
    295 );
    296 /** Formats and prints an array of expTagCounterRow objects
    297  *
    298  * When mdcf is set the formated output is in psMetadataConfig
    299  * format, otherwise it is in a simple tabular format.
    300  *
    301  * @return true on success
    302  */
    303 
    304 bool expTagCounterPrintObjects(
    305     FILE            *stream,            ///< a stream
    306     psArray         *objects,           ///< An array of expTagCounterRow objects
    307     bool            mdcf                ///< format as mdconfig or simple
    308 );
    309 /** Formats and prints an expTagCounterRow object
    310  *
    311  * When mdcf is set the formated output is in psMetadataConfig
    312  * format, otherwise it is in a simple tabular format.
    313  *
    314  * @return true on success
    315  */
    316 
    317 bool expTagCounterPrintObject(
    318     FILE            *stream,            ///< a stream
    319     expTagCounterRow *object,    ///< an expTagCounterRow object
    320     bool            mdcf                ///< format as mdconfig or simple
    321 );
    322 /** summitExpRow data structure
    323  *
    324  * Structure for representing a single row of summitExp table data.
    325  */
    326 
    327 typedef struct {
    328     char            *exp_id;
     133    char            *exp_name;
    329134    char            *camera;
    330135    char            *telescope;
     
    341146
    342147summitExpRow *summitExpRowAlloc(
    343     const char      *exp_id,
     148    const char      *exp_name,
    344149    const char      *camera,
    345150    const char      *telescope,
     
    377182bool summitExpInsert(
    378183    psDB            *dbh,               ///< Database handle
    379     const char      *exp_id,
     184    const char      *exp_name,
    380185    const char      *camera,
    381186    const char      *telescope,
     
    539344
    540345typedef struct {
    541     char            *exp_id;
     346    char            *exp_name;
    542347    char            *camera;
    543348    char            *telescope;
     
    556361
    557362summitImfileRow *summitImfileRowAlloc(
    558     const char      *exp_id,
     363    const char      *exp_name,
    559364    const char      *camera,
    560365    const char      *telescope,
     
    594399bool summitImfileInsert(
    595400    psDB            *dbh,               ///< Database handle
    596     const char      *exp_id,
     401    const char      *exp_name,
    597402    const char      *camera,
    598403    const char      *telescope,
     
    758563
    759564typedef struct {
    760     char            *exp_id;
     565    char            *exp_name;
    761566    char            *camera;
    762567    char            *telescope;
     
    769574
    770575pzPendingExpRow *pzPendingExpRowAlloc(
    771     const char      *exp_id,
     576    const char      *exp_name,
    772577    const char      *camera,
    773578    const char      *telescope
     
    801606bool pzPendingExpInsert(
    802607    psDB            *dbh,               ///< Database handle
    803     const char      *exp_id,
     608    const char      *exp_name,
    804609    const char      *camera,
    805610    const char      *telescope
     
    959764
    960765typedef struct {
    961     char            *exp_id;
     766    char            *exp_name;
    962767    char            *camera;
    963768    char            *telescope;
    964769    char            *class;
    965770    char            *class_id;
    966     char            *exp_tag;
     771    psS64           exp_id;
    967772} pzPendingImfileRow;
    968773
     
    973778
    974779pzPendingImfileRow *pzPendingImfileRowAlloc(
    975     const char      *exp_id,
     780    const char      *exp_name,
    976781    const char      *camera,
    977782    const char      *telescope,
    978783    const char      *class,
    979784    const char      *class_id,
    980     const char      *exp_tag
     785    psS64           exp_id
    981786);
    982787
     
    1008813bool pzPendingImfileInsert(
    1009814    psDB            *dbh,               ///< Database handle
    1010     const char      *exp_id,
     815    const char      *exp_name,
    1011816    const char      *camera,
    1012817    const char      *telescope,
    1013818    const char      *class,
    1014819    const char      *class_id,
    1015     const char      *exp_tag
     820    psS64           exp_id
    1016821);
    1017822
     
    1169974
    1170975typedef struct {
    1171     char            *exp_id;
     976    char            *exp_name;
    1172977    char            *camera;
    1173978    char            *telescope;
     
    1180985
    1181986pzDoneExpRow *pzDoneExpRowAlloc(
    1182     const char      *exp_id,
     987    const char      *exp_name,
    1183988    const char      *camera,
    1184989    const char      *telescope
     
    12121017bool pzDoneExpInsert(
    12131018    psDB            *dbh,               ///< Database handle
    1214     const char      *exp_id,
     1019    const char      *exp_name,
    12151020    const char      *camera,
    12161021    const char      *telescope
     
    13701175
    13711176typedef struct {
    1372     char            *exp_id;
     1177    char            *exp_name;
    13731178    char            *camera;
    13741179    char            *telescope;
    13751180    char            *class;
    13761181    char            *class_id;
    1377     char            *exp_tag;
     1182    psS64           exp_id;
    13781183    char            *uri;
    13791184} pzDoneImfileRow;
     
    13851190
    13861191pzDoneImfileRow *pzDoneImfileRowAlloc(
    1387     const char      *exp_id,
     1192    const char      *exp_name,
    13881193    const char      *camera,
    13891194    const char      *telescope,
    13901195    const char      *class,
    13911196    const char      *class_id,
    1392     const char      *exp_tag,
     1197    psS64           exp_id,
    13931198    const char      *uri
    13941199);
     
    14211226bool pzDoneImfileInsert(
    14221227    psDB            *dbh,               ///< Database handle
    1423     const char      *exp_id,
     1228    const char      *exp_name,
    14241229    const char      *camera,
    14251230    const char      *telescope,
    14261231    const char      *class,
    14271232    const char      *class_id,
    1428     const char      *exp_tag,
     1233    psS64           exp_id,
    14291234    const char      *uri
    14301235);
     
    15831388
    15841389typedef struct {
    1585     char            *exp_tag;
    1586     char            *exp_id;
    1587     char            *camera;
    1588     char            *telescope;
    1589     psS32           imfiles;
     1390    psS64           exp_id;
     1391    char            *tmp_exp_name;
     1392    char            *tmp_camera;
     1393    char            *tmp_telescope;
     1394    char            *state;
    15901395    char            *workdir;
     1396    char            *workdir_state;
    15911397} newExpRow;
    15921398
     
    15971403
    15981404newExpRow *newExpRowAlloc(
    1599     const char      *exp_tag,
    1600     const char      *exp_id,
    1601     const char      *camera,
    1602     const char      *telescope,
    1603     psS32           imfiles,
    1604     const char      *workdir
     1405    psS64           exp_id,
     1406    const char      *tmp_exp_name,
     1407    const char      *tmp_camera,
     1408    const char      *tmp_telescope,
     1409    const char      *state,
     1410    const char      *workdir,
     1411    const char      *workdir_state
    16051412);
    16061413
     
    16321439bool newExpInsert(
    16331440    psDB            *dbh,               ///< Database handle
    1634     const char      *exp_tag,
    1635     const char      *exp_id,
    1636     const char      *camera,
    1637     const char      *telescope,
    1638     psS32           imfiles,
    1639     const char      *workdir
     1441    psS64           exp_id,
     1442    const char      *tmp_exp_name,
     1443    const char      *tmp_camera,
     1444    const char      *tmp_telescope,
     1445    const char      *state,
     1446    const char      *workdir,
     1447    const char      *workdir_state
    16401448);
    16411449
     
    17931601
    17941602typedef struct {
    1795     char            *exp_tag;
    1796     char            *class;
    1797     char            *class_id;
     1603    psS64           exp_id;
     1604    char            *tmp_class_id;
    17981605    char            *uri;
    17991606} newImfileRow;
     
    18051612
    18061613newImfileRow *newImfileRowAlloc(
    1807     const char      *exp_tag,
    1808     const char      *class,
    1809     const char      *class_id,
     1614    psS64           exp_id,
     1615    const char      *tmp_class_id,
    18101616    const char      *uri
    18111617);
     
    18381644bool newImfileInsert(
    18391645    psDB            *dbh,               ///< Database handle
    1840     const char      *exp_tag,
    1841     const char      *class,
    1842     const char      *class_id,
     1646    psS64           exp_id,
     1647    const char      *tmp_class_id,
    18431648    const char      *uri
    18441649);
     
    19971802
    19981803typedef struct {
    1999     char            *exp_tag;
    2000     char            *exp_id;
     1804    psS64           exp_id;
     1805    char            *exp_name;
    20011806    char            *camera;
    20021807    char            *telescope;
    20031808    psTime*         dateobs;
     1809    char            *exp_tag;
    20041810    char            *exp_type;
    2005     psS32           imfiles;
    20061811    char            *filelevel;
    20071812    char            *workdir;
     
    20351840
    20361841rawExpRow *rawExpRowAlloc(
    2037     const char      *exp_tag,
    2038     const char      *exp_id,
     1842    psS64           exp_id,
     1843    const char      *exp_name,
    20391844    const char      *camera,
    20401845    const char      *telescope,
    20411846    psTime*         dateobs,
     1847    const char      *exp_tag,
    20421848    const char      *exp_type,
    2043     psS32           imfiles,
    20441849    const char      *filelevel,
    20451850    const char      *workdir,
     
    20941899bool rawExpInsert(
    20951900    psDB            *dbh,               ///< Database handle
    2096     const char      *exp_tag,
    2097     const char      *exp_id,
     1901    psS64           exp_id,
     1902    const char      *exp_name,
    20981903    const char      *camera,
    20991904    const char      *telescope,
    21001905    psTime*         dateobs,
     1906    const char      *exp_tag,
    21011907    const char      *exp_type,
    2102     psS32           imfiles,
    21031908    const char      *filelevel,
    21041909    const char      *workdir,
     
    22792084
    22802085typedef struct {
    2281     char            *exp_tag;
     2086    psS64           exp_id;
     2087    char            *exp_name;
     2088    char            *camera;
     2089    char            *telescope;
     2090    psTime*         dateobs;
     2091    char            *tmp_class_id;
    22822092    char            *class_id;
    22832093    char            *uri;
     
    23032113    psF64           user_5;
    23042114    char            *object;
    2305     psTime*         dateobs;
    23062115    psS16           fault;
    23072116} rawImfileRow;
     
    23132122
    23142123rawImfileRow *rawImfileRowAlloc(
    2315     const char      *exp_tag,
     2124    psS64           exp_id,
     2125    const char      *exp_name,
     2126    const char      *camera,
     2127    const char      *telescope,
     2128    psTime*         dateobs,
     2129    const char      *tmp_class_id,
    23162130    const char      *class_id,
    23172131    const char      *uri,
     
    23372151    psF64           user_5,
    23382152    const char      *object,
    2339     psTime*         dateobs,
    23402153    psS16           fault
    23412154);
     
    23682181bool rawImfileInsert(
    23692182    psDB            *dbh,               ///< Database handle
    2370     const char      *exp_tag,
     2183    psS64           exp_id,
     2184    const char      *exp_name,
     2185    const char      *camera,
     2186    const char      *telescope,
     2187    psTime*         dateobs,
     2188    const char      *tmp_class_id,
    23712189    const char      *class_id,
    23722190    const char      *uri,
     
    23922210    psF64           user_5,
    23932211    const char      *object,
    2394     psTime*         dateobs,
    23952212    psS16           fault
    23962213);
     
    25502367typedef struct {
    25512368    psS64           guide_id;
    2552     char            *exp_tag;
     2369    psS64           exp_id;
    25532370    char            *recipe;
    25542371} guidePendingExpRow;
     
    25612378guidePendingExpRow *guidePendingExpRowAlloc(
    25622379    psS64           guide_id,
    2563     const char      *exp_tag,
     2380    psS64           exp_id,
    25642381    const char      *recipe
    25652382);
     
    25932410    psDB            *dbh,               ///< Database handle
    25942411    psS64           guide_id,
    2595     const char      *exp_tag,
     2412    psS64           exp_id,
    25962413    const char      *recipe
    25972414);
     
    27442561    bool            mdcf                ///< format as mdconfig or simple
    27452562);
    2746 /** chipPendingExpRow data structure
    2747  *
    2748  * Structure for representing a single row of chipPendingExp table data.
     2563/** chipRunRow data structure
     2564 *
     2565 * Structure for representing a single row of chipRun table data.
    27492566 */
    27502567
    27512568typedef struct {
    27522569    psS64           chip_id;
    2753     char            *exp_tag;
    2754     psS64           guide_id;
     2570    char            *state;
    27552571    char            *workdir;
     2572    char            *workdir_state;
    27562573    char            *label;
    27572574    char            *reduction;
    27582575    char            *expgroup;
    27592576    char            *dvodb;
    2760 } chipPendingExpRow;
    2761 
    2762 /** Creates a new chipPendingExpRow object
    2763  *
    2764  *  @return A new chipPendingExpRow object or NULL on failure.
    2765  */
    2766 
    2767 chipPendingExpRow *chipPendingExpRowAlloc(
     2577} chipRunRow;
     2578
     2579/** Creates a new chipRunRow object
     2580 *
     2581 *  @return A new chipRunRow object or NULL on failure.
     2582 */
     2583
     2584chipRunRow *chipRunRowAlloc(
    27682585    psS64           chip_id,
    2769     const char      *exp_tag,
    2770     psS64           guide_id,
     2586    const char      *state,
    27712587    const char      *workdir,
     2588    const char      *workdir_state,
    27722589    const char      *label,
    27732590    const char      *reduction,
     
    27762593);
    27772594
    2778 /** Creates a new chipPendingExp table
    2779  *
    2780  * @return true on success
    2781  */
    2782 
    2783 bool chipPendingExpCreateTable(
     2595/** Creates a new chipRun table
     2596 *
     2597 * @return true on success
     2598 */
     2599
     2600bool chipRunCreateTable(
    27842601    psDB            *dbh                ///< Database handle
    27852602);
    27862603
    2787 /** Deletes a chipPendingExp table
    2788  *
    2789  * @return true on success
    2790  */
    2791 
    2792 bool chipPendingExpDropTable(
     2604/** Deletes a chipRun table
     2605 *
     2606 * @return true on success
     2607 */
     2608
     2609bool chipRunDropTable(
    27932610    psDB            *dbh                ///< Database handle
    27942611);
     
    28012618 */
    28022619
    2803 bool chipPendingExpInsert(
     2620bool chipRunInsert(
    28042621    psDB            *dbh,               ///< Database handle
    28052622    psS64           chip_id,
    2806     const char      *exp_tag,
    2807     psS64           guide_id,
     2623    const char      *state,
    28082624    const char      *workdir,
     2625    const char      *workdir_state,
    28092626    const char      *label,
    28102627    const char      *reduction,
     
    28182635 */
    28192636
    2820 long long chipPendingExpDelete(
     2637long long chipRunDelete(
    28212638    psDB            *dbh,               ///< Database handle
    28222639    const psMetadata *where,            ///< Row match criteria
     
    28242641);
    28252642
    2826 /** Insert a single chipPendingExpRow object into a table
     2643/** Insert a single chipRunRow object into a table
    28272644 *
    28282645 * This function constructs and inserts a single row based on it's parameters.
     
    28312648 */
    28322649
    2833 bool chipPendingExpInsertObject(
    2834     psDB            *dbh,               ///< Database handle
    2835     chipPendingExpRow *object             ///< chipPendingExpRow object
    2836 );
    2837 
    2838 /** Insert an array of chipPendingExpRow object into a table
     2650bool chipRunInsertObject(
     2651    psDB            *dbh,               ///< Database handle
     2652    chipRunRow      *object             ///< chipRunRow object
     2653);
     2654
     2655/** Insert an array of chipRunRow object into a table
    28392656 *
    28402657 * This function constructs and inserts multiple rows based on it's parameters.
     
    28432660 */
    28442661
    2845 bool chipPendingExpInsertObjects(
    2846     psDB            *dbh,               ///< Database handle
    2847     psArray         *objects            ///< array of chipPendingExpRow objects
    2848 );
    2849 
    2850 /** Insert data from a binary FITS table chipPendingExpRow into the database
     2662bool chipRunInsertObjects(
     2663    psDB            *dbh,               ///< Database handle
     2664    psArray         *objects            ///< array of chipRunRow objects
     2665);
     2666
     2667/** Insert data from a binary FITS table chipRunRow into the database
    28512668 *
    28522669 * This function expects a psFits object with a FITS table as the first
     
    28582675 */
    28592676
    2860 bool chipPendingExpInsertFits(
     2677bool chipRunInsertFits(
    28612678    psDB            *dbh,               ///< Database handle
    28622679    const psFits    *fits               ///< psFits object
     
    28732690 */
    28742691
    2875 bool chipPendingExpSelectRowsFits(
     2692bool chipRunSelectRowsFits(
    28762693    psDB            *dbh,               ///< Database handle
    28772694    psFits          *fits,              ///< psFits object
     
    28802697);
    28812698
    2882 /** Convert a chipPendingExpRow into an equivalent psMetadata
     2699/** Convert a chipRunRow into an equivalent psMetadata
    28832700 *
    28842701 * @return A psMetadata pointer or NULL on error
    28852702 */
    28862703
    2887 psMetadata *chipPendingExpMetadataFromObject(
    2888     const chipPendingExpRow *object             ///< fooRow to convert into a psMetadata
     2704psMetadata *chipRunMetadataFromObject(
     2705    const chipRunRow *object             ///< fooRow to convert into a psMetadata
    28892706);
    28902707
    28912708/** Convert a psMetadata into an equivalent fooRow
    28922709 *
    2893  * @return A chipPendingExpRow pointer or NULL on error
    2894  */
    2895 
    2896 chipPendingExpRow *chipPendingExpObjectFromMetadata(
     2710 * @return A chipRunRow pointer or NULL on error
     2711 */
     2712
     2713chipRunRow *chipRunObjectFromMetadata(
    28972714    psMetadata      *md                 ///< psMetadata to convert into a fooRow
    28982715);
    2899 /** Selects up to limit rows from the database and returns as chipPendingExpRow objects in a psArray
     2716/** Selects up to limit rows from the database and returns as chipRunRow objects in a psArray
    29002717 *
    29012718 *  See psDBSelectRows() for documentation on the format of where.
     
    29042721 */
    29052722
    2906 psArray *chipPendingExpSelectRowObjects(
     2723psArray *chipRunSelectRowObjects(
    29072724    psDB            *dbh,               ///< Database handle
    29082725    const psMetadata *where,            ///< Row match criteria
    29092726    unsigned long long limit            ///< Maximum number of elements to return
    29102727);
    2911 /** Deletes a row from the database coresponding to an chipPendingExp
     2728/** Deletes a row from the database coresponding to an chipRun
    29122729 *
    29132730 *  Note that a 'where' search psMetadata is constructed from each object and
     
    29172734 */
    29182735
    2919 bool chipPendingExpDeleteObject(
    2920     psDB            *dbh,               ///< Database handle
    2921     const chipPendingExpRow *object    ///< Object to delete
     2736bool chipRunDeleteObject(
     2737    psDB            *dbh,               ///< Database handle
     2738    const chipRunRow *object    ///< Object to delete
    29222739);
    29232740/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     
    29292746 */
    29302747
    2931 long long chipPendingExpDeleteRowObjects(
     2748long long chipRunDeleteRowObjects(
    29322749    psDB            *dbh,               ///< Database handle
    29332750    const psArray   *objects,           ///< Array of objects to delete
    29342751    unsigned long long limit            ///< Maximum number of elements to delete
    29352752);
    2936 /** Formats and prints an array of chipPendingExpRow objects
     2753/** Formats and prints an array of chipRunRow objects
    29372754 *
    29382755 * When mdcf is set the formated output is in psMetadataConfig
     
    29422759 */
    29432760
    2944 bool chipPendingExpPrintObjects(
     2761bool chipRunPrintObjects(
    29452762    FILE            *stream,            ///< a stream
    2946     psArray         *objects,           ///< An array of chipPendingExpRow objects
     2763    psArray         *objects,           ///< An array of chipRunRow objects
    29472764    bool            mdcf                ///< format as mdconfig or simple
    29482765);
    2949 /** Formats and prints an chipPendingExpRow object
     2766/** Formats and prints an chipRunRow object
    29502767 *
    29512768 * When mdcf is set the formated output is in psMetadataConfig
     
    29552772 */
    29562773
    2957 bool chipPendingExpPrintObject(
     2774bool chipRunPrintObject(
    29582775    FILE            *stream,            ///< a stream
    2959     chipPendingExpRow *object,    ///< an chipPendingExpRow object
     2776    chipRunRow *object,    ///< an chipRunRow object
    29602777    bool            mdcf                ///< format as mdconfig or simple
    29612778);
    2962 /** chipPendingImfileRow data structure
    2963  *
    2964  * Structure for representing a single row of chipPendingImfile table data.
     2779/** chipInputImfileRow data structure
     2780 *
     2781 * Structure for representing a single row of chipInputImfile table data.
    29652782 */
    29662783
    29672784typedef struct {
    29682785    psS64           chip_id;
     2786    psS64           exp_id;
    29692787    char            *class_id;
    2970     char            *uri;
    2971 } chipPendingImfileRow;
    2972 
    2973 /** Creates a new chipPendingImfileRow object
    2974  *
    2975  *  @return A new chipPendingImfileRow object or NULL on failure.
    2976  */
    2977 
    2978 chipPendingImfileRow *chipPendingImfileRowAlloc(
     2788} chipInputImfileRow;
     2789
     2790/** Creates a new chipInputImfileRow object
     2791 *
     2792 *  @return A new chipInputImfileRow object or NULL on failure.
     2793 */
     2794
     2795chipInputImfileRow *chipInputImfileRowAlloc(
    29792796    psS64           chip_id,
    2980     const char      *class_id,
    2981     const char      *uri
    2982 );
    2983 
    2984 /** Creates a new chipPendingImfile table
    2985  *
    2986  * @return true on success
    2987  */
    2988 
    2989 bool chipPendingImfileCreateTable(
     2797    psS64           exp_id,
     2798    const char      *class_id
     2799);
     2800
     2801/** Creates a new chipInputImfile table
     2802 *
     2803 * @return true on success
     2804 */
     2805
     2806bool chipInputImfileCreateTable(
    29902807    psDB            *dbh                ///< Database handle
    29912808);
    29922809
    2993 /** Deletes a chipPendingImfile table
    2994  *
    2995  * @return true on success
    2996  */
    2997 
    2998 bool chipPendingImfileDropTable(
     2810/** Deletes a chipInputImfile table
     2811 *
     2812 * @return true on success
     2813 */
     2814
     2815bool chipInputImfileDropTable(
    29992816    psDB            *dbh                ///< Database handle
    30002817);
     
    30072824 */
    30082825
    3009 bool chipPendingImfileInsert(
     2826bool chipInputImfileInsert(
    30102827    psDB            *dbh,               ///< Database handle
    30112828    psS64           chip_id,
    3012     const char      *class_id,
    3013     const char      *uri
     2829    psS64           exp_id,
     2830    const char      *class_id
    30142831);
    30152832
     
    30192836 */
    30202837
    3021 long long chipPendingImfileDelete(
     2838long long chipInputImfileDelete(
    30222839    psDB            *dbh,               ///< Database handle
    30232840    const psMetadata *where,            ///< Row match criteria
     
    30252842);
    30262843
    3027 /** Insert a single chipPendingImfileRow object into a table
     2844/** Insert a single chipInputImfileRow object into a table
    30282845 *
    30292846 * This function constructs and inserts a single row based on it's parameters.
     
    30322849 */
    30332850
    3034 bool chipPendingImfileInsertObject(
    3035     psDB            *dbh,               ///< Database handle
    3036     chipPendingImfileRow *object             ///< chipPendingImfileRow object
    3037 );
    3038 
    3039 /** Insert an array of chipPendingImfileRow object into a table
     2851bool chipInputImfileInsertObject(
     2852    psDB            *dbh,               ///< Database handle
     2853    chipInputImfileRow *object             ///< chipInputImfileRow object
     2854);
     2855
     2856/** Insert an array of chipInputImfileRow object into a table
    30402857 *
    30412858 * This function constructs and inserts multiple rows based on it's parameters.
     
    30442861 */
    30452862
    3046 bool chipPendingImfileInsertObjects(
    3047     psDB            *dbh,               ///< Database handle
    3048     psArray         *objects            ///< array of chipPendingImfileRow objects
    3049 );
    3050 
    3051 /** Insert data from a binary FITS table chipPendingImfileRow into the database
     2863bool chipInputImfileInsertObjects(
     2864    psDB            *dbh,               ///< Database handle
     2865    psArray         *objects            ///< array of chipInputImfileRow objects
     2866);
     2867
     2868/** Insert data from a binary FITS table chipInputImfileRow into the database
    30522869 *
    30532870 * This function expects a psFits object with a FITS table as the first
     
    30592876 */
    30602877
    3061 bool chipPendingImfileInsertFits(
     2878bool chipInputImfileInsertFits(
    30622879    psDB            *dbh,               ///< Database handle
    30632880    const psFits    *fits               ///< psFits object
     
    30742891 */
    30752892
    3076 bool chipPendingImfileSelectRowsFits(
     2893bool chipInputImfileSelectRowsFits(
    30772894    psDB            *dbh,               ///< Database handle
    30782895    psFits          *fits,              ///< psFits object
     
    30812898);
    30822899
    3083 /** Convert a chipPendingImfileRow into an equivalent psMetadata
     2900/** Convert a chipInputImfileRow into an equivalent psMetadata
    30842901 *
    30852902 * @return A psMetadata pointer or NULL on error
    30862903 */
    30872904
    3088 psMetadata *chipPendingImfileMetadataFromObject(
    3089     const chipPendingImfileRow *object             ///< fooRow to convert into a psMetadata
     2905psMetadata *chipInputImfileMetadataFromObject(
     2906    const chipInputImfileRow *object             ///< fooRow to convert into a psMetadata
    30902907);
    30912908
    30922909/** Convert a psMetadata into an equivalent fooRow
    30932910 *
    3094  * @return A chipPendingImfileRow pointer or NULL on error
    3095  */
    3096 
    3097 chipPendingImfileRow *chipPendingImfileObjectFromMetadata(
     2911 * @return A chipInputImfileRow pointer or NULL on error
     2912 */
     2913
     2914chipInputImfileRow *chipInputImfileObjectFromMetadata(
    30982915    psMetadata      *md                 ///< psMetadata to convert into a fooRow
    30992916);
    3100 /** Selects up to limit rows from the database and returns as chipPendingImfileRow objects in a psArray
     2917/** Selects up to limit rows from the database and returns as chipInputImfileRow objects in a psArray
    31012918 *
    31022919 *  See psDBSelectRows() for documentation on the format of where.
     
    31052922 */
    31062923
    3107 psArray *chipPendingImfileSelectRowObjects(
     2924psArray *chipInputImfileSelectRowObjects(
    31082925    psDB            *dbh,               ///< Database handle
    31092926    const psMetadata *where,            ///< Row match criteria
    31102927    unsigned long long limit            ///< Maximum number of elements to return
    31112928);
    3112 /** Deletes a row from the database coresponding to an chipPendingImfile
     2929/** Deletes a row from the database coresponding to an chipInputImfile
    31132930 *
    31142931 *  Note that a 'where' search psMetadata is constructed from each object and
     
    31182935 */
    31192936
    3120 bool chipPendingImfileDeleteObject(
    3121     psDB            *dbh,               ///< Database handle
    3122     const chipPendingImfileRow *object    ///< Object to delete
     2937bool chipInputImfileDeleteObject(
     2938    psDB            *dbh,               ///< Database handle
     2939    const chipInputImfileRow *object    ///< Object to delete
    31232940);
    31242941/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     
    31302947 */
    31312948
    3132 long long chipPendingImfileDeleteRowObjects(
     2949long long chipInputImfileDeleteRowObjects(
    31332950    psDB            *dbh,               ///< Database handle
    31342951    const psArray   *objects,           ///< Array of objects to delete
    31352952    unsigned long long limit            ///< Maximum number of elements to delete
    31362953);
    3137 /** Formats and prints an array of chipPendingImfileRow objects
     2954/** Formats and prints an array of chipInputImfileRow objects
    31382955 *
    31392956 * When mdcf is set the formated output is in psMetadataConfig
     
    31432960 */
    31442961
    3145 bool chipPendingImfilePrintObjects(
     2962bool chipInputImfilePrintObjects(
    31462963    FILE            *stream,            ///< a stream
    3147     psArray         *objects,           ///< An array of chipPendingImfileRow objects
     2964    psArray         *objects,           ///< An array of chipInputImfileRow objects
    31482965    bool            mdcf                ///< format as mdconfig or simple
    31492966);
    3150 /** Formats and prints an chipPendingImfileRow object
     2967/** Formats and prints an chipInputImfileRow object
    31512968 *
    31522969 * When mdcf is set the formated output is in psMetadataConfig
     
    31562973 */
    31572974
    3158 bool chipPendingImfilePrintObject(
     2975bool chipInputImfilePrintObject(
    31592976    FILE            *stream,            ///< a stream
    3160     chipPendingImfileRow *object,    ///< an chipPendingImfileRow object
     2977    chipInputImfileRow *object,    ///< an chipInputImfileRow object
    31612978    bool            mdcf                ///< format as mdconfig or simple
    31622979);
    3163 /** chipProcessedExpRow data structure
    3164  *
    3165  * Structure for representing a single row of chipProcessedExp table data.
     2980/** chipProcessedImfileRow data structure
     2981 *
     2982 * Structure for representing a single row of chipProcessedImfile table data.
    31662983 */
    31672984
    31682985typedef struct {
    31692986    psS64           chip_id;
    3170     char            *exp_tag;
    3171     psS64           guide_id;
    3172     char            *workdir;
    3173     char            *label;
    3174     char            *reduction;
    3175     char            *expgroup;
    3176     char            *dvodb;
    3177 } chipProcessedExpRow;
    3178 
    3179 /** Creates a new chipProcessedExpRow object
    3180  *
    3181  *  @return A new chipProcessedExpRow object or NULL on failure.
    3182  */
    3183 
    3184 chipProcessedExpRow *chipProcessedExpRowAlloc(
    3185     psS64           chip_id,
    3186     const char      *exp_tag,
    3187     psS64           guide_id,
    3188     const char      *workdir,
    3189     const char      *label,
    3190     const char      *reduction,
    3191     const char      *expgroup,
    3192     const char      *dvodb
    3193 );
    3194 
    3195 /** Creates a new chipProcessedExp table
    3196  *
    3197  * @return true on success
    3198  */
    3199 
    3200 bool chipProcessedExpCreateTable(
    3201     psDB            *dbh                ///< Database handle
    3202 );
    3203 
    3204 /** Deletes a chipProcessedExp table
    3205  *
    3206  * @return true on success
    3207  */
    3208 
    3209 bool chipProcessedExpDropTable(
    3210     psDB            *dbh                ///< Database handle
    3211 );
    3212 
    3213 /** Insert a single row into a table
    3214  *
    3215  * This function constructs and inserts a single row based on it's parameters.
    3216  *
    3217  * @return true on success
    3218  */
    3219 
    3220 bool chipProcessedExpInsert(
    3221     psDB            *dbh,               ///< Database handle
    3222     psS64           chip_id,
    3223     const char      *exp_tag,
    3224     psS64           guide_id,
    3225     const char      *workdir,
    3226     const char      *label,
    3227     const char      *reduction,
    3228     const char      *expgroup,
    3229     const char      *dvodb
    3230 );
    3231 
    3232 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    3233  *
    3234  * @return A The number of rows removed or a negative value on error
    3235  */
    3236 
    3237 long long chipProcessedExpDelete(
    3238     psDB            *dbh,               ///< Database handle
    3239     const psMetadata *where,            ///< Row match criteria
    3240     unsigned long long limit            ///< Maximum number of elements to delete
    3241 );
    3242 
    3243 /** Insert a single chipProcessedExpRow object into a table
    3244  *
    3245  * This function constructs and inserts a single row based on it's parameters.
    3246  *
    3247  * @return true on success
    3248  */
    3249 
    3250 bool chipProcessedExpInsertObject(
    3251     psDB            *dbh,               ///< Database handle
    3252     chipProcessedExpRow *object             ///< chipProcessedExpRow object
    3253 );
    3254 
    3255 /** Insert an array of chipProcessedExpRow object into a table
    3256  *
    3257  * This function constructs and inserts multiple rows based on it's parameters.
    3258  *
    3259  * @return true on success
    3260  */
    3261 
    3262 bool chipProcessedExpInsertObjects(
    3263     psDB            *dbh,               ///< Database handle
    3264     psArray         *objects            ///< array of chipProcessedExpRow objects
    3265 );
    3266 
    3267 /** Insert data from a binary FITS table chipProcessedExpRow into the database
    3268  *
    3269  * This function expects a psFits object with a FITS table as the first
    3270  * extension.  The table must have at least one row of data in it, that is of
    3271  * the appropriate format (number of columns and their type).  All other
    3272  * extensions are ignored.
    3273  *
    3274  * @return true on success
    3275  */
    3276 
    3277 bool chipProcessedExpInsertFits(
    3278     psDB            *dbh,               ///< Database handle
    3279     const psFits    *fits               ///< psFits object
    3280 );
    3281 
    3282 /** Selects up to limit from the database and returns them in a binary FITS table
    3283  *
    3284  * This function assumes an empty psFits object and will create a FITS table
    3285  * as the first extension.
    3286  *
    3287  *  See psDBSelectRows() for documentation on the format of where.
    3288  *
    3289  * @return true on success
    3290  */
    3291 
    3292 bool chipProcessedExpSelectRowsFits(
    3293     psDB            *dbh,               ///< Database handle
    3294     psFits          *fits,              ///< psFits object
    3295     const psMetadata *where,            ///< Row match criteria
    3296     unsigned long long limit            ///< Maximum number of elements to return
    3297 );
    3298 
    3299 /** Convert a chipProcessedExpRow into an equivalent psMetadata
    3300  *
    3301  * @return A psMetadata pointer or NULL on error
    3302  */
    3303 
    3304 psMetadata *chipProcessedExpMetadataFromObject(
    3305     const chipProcessedExpRow *object             ///< fooRow to convert into a psMetadata
    3306 );
    3307 
    3308 /** Convert a psMetadata into an equivalent fooRow
    3309  *
    3310  * @return A chipProcessedExpRow pointer or NULL on error
    3311  */
    3312 
    3313 chipProcessedExpRow *chipProcessedExpObjectFromMetadata(
    3314     psMetadata      *md                 ///< psMetadata to convert into a fooRow
    3315 );
    3316 /** Selects up to limit rows from the database and returns as chipProcessedExpRow objects in a psArray
    3317  *
    3318  *  See psDBSelectRows() for documentation on the format of where.
    3319  *
    3320  * @return A psArray pointer or NULL on error
    3321  */
    3322 
    3323 psArray *chipProcessedExpSelectRowObjects(
    3324     psDB            *dbh,               ///< Database handle
    3325     const psMetadata *where,            ///< Row match criteria
    3326     unsigned long long limit            ///< Maximum number of elements to return
    3327 );
    3328 /** Deletes a row from the database coresponding to an chipProcessedExp
    3329  *
    3330  *  Note that a 'where' search psMetadata is constructed from each object and
    3331  *  used to find rows to delete.
    3332  *
    3333  * @return A The number of rows removed or a negative value on error
    3334  */
    3335 
    3336 bool chipProcessedExpDeleteObject(
    3337     psDB            *dbh,               ///< Database handle
    3338     const chipProcessedExpRow *object    ///< Object to delete
    3339 );
    3340 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    3341  *
    3342  *  Note that a 'where' search psMetadata is constructed from each object and
    3343  *  used to find rows to delete.
    3344  *
    3345  * @return A The number of rows removed or a negative value on error
    3346  */
    3347 
    3348 long long chipProcessedExpDeleteRowObjects(
    3349     psDB            *dbh,               ///< Database handle
    3350     const psArray   *objects,           ///< Array of objects to delete
    3351     unsigned long long limit            ///< Maximum number of elements to delete
    3352 );
    3353 /** Formats and prints an array of chipProcessedExpRow objects
    3354  *
    3355  * When mdcf is set the formated output is in psMetadataConfig
    3356  * format, otherwise it is in a simple tabular format.
    3357  *
    3358  * @return true on success
    3359  */
    3360 
    3361 bool chipProcessedExpPrintObjects(
    3362     FILE            *stream,            ///< a stream
    3363     psArray         *objects,           ///< An array of chipProcessedExpRow objects
    3364     bool            mdcf                ///< format as mdconfig or simple
    3365 );
    3366 /** Formats and prints an chipProcessedExpRow object
    3367  *
    3368  * When mdcf is set the formated output is in psMetadataConfig
    3369  * format, otherwise it is in a simple tabular format.
    3370  *
    3371  * @return true on success
    3372  */
    3373 
    3374 bool chipProcessedExpPrintObject(
    3375     FILE            *stream,            ///< a stream
    3376     chipProcessedExpRow *object,    ///< an chipProcessedExpRow object
    3377     bool            mdcf                ///< format as mdconfig or simple
    3378 );
    3379 /** chipMaskRow data structure
    3380  *
    3381  * Structure for representing a single row of chipMask table data.
    3382  */
    3383 
    3384 typedef struct {
    3385     char            *label;
    3386 } chipMaskRow;
    3387 
    3388 /** Creates a new chipMaskRow object
    3389  *
    3390  *  @return A new chipMaskRow object or NULL on failure.
    3391  */
    3392 
    3393 chipMaskRow *chipMaskRowAlloc(
    3394     const char      *label
    3395 );
    3396 
    3397 /** Creates a new chipMask table
    3398  *
    3399  * @return true on success
    3400  */
    3401 
    3402 bool chipMaskCreateTable(
    3403     psDB            *dbh                ///< Database handle
    3404 );
    3405 
    3406 /** Deletes a chipMask table
    3407  *
    3408  * @return true on success
    3409  */
    3410 
    3411 bool chipMaskDropTable(
    3412     psDB            *dbh                ///< Database handle
    3413 );
    3414 
    3415 /** Insert a single row into a table
    3416  *
    3417  * This function constructs and inserts a single row based on it's parameters.
    3418  *
    3419  * @return true on success
    3420  */
    3421 
    3422 bool chipMaskInsert(
    3423     psDB            *dbh,               ///< Database handle
    3424     const char      *label
    3425 );
    3426 
    3427 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    3428  *
    3429  * @return A The number of rows removed or a negative value on error
    3430  */
    3431 
    3432 long long chipMaskDelete(
    3433     psDB            *dbh,               ///< Database handle
    3434     const psMetadata *where,            ///< Row match criteria
    3435     unsigned long long limit            ///< Maximum number of elements to delete
    3436 );
    3437 
    3438 /** Insert a single chipMaskRow object into a table
    3439  *
    3440  * This function constructs and inserts a single row based on it's parameters.
    3441  *
    3442  * @return true on success
    3443  */
    3444 
    3445 bool chipMaskInsertObject(
    3446     psDB            *dbh,               ///< Database handle
    3447     chipMaskRow     *object             ///< chipMaskRow object
    3448 );
    3449 
    3450 /** Insert an array of chipMaskRow object into a table
    3451  *
    3452  * This function constructs and inserts multiple rows based on it's parameters.
    3453  *
    3454  * @return true on success
    3455  */
    3456 
    3457 bool chipMaskInsertObjects(
    3458     psDB            *dbh,               ///< Database handle
    3459     psArray         *objects            ///< array of chipMaskRow objects
    3460 );
    3461 
    3462 /** Insert data from a binary FITS table chipMaskRow into the database
    3463  *
    3464  * This function expects a psFits object with a FITS table as the first
    3465  * extension.  The table must have at least one row of data in it, that is of
    3466  * the appropriate format (number of columns and their type).  All other
    3467  * extensions are ignored.
    3468  *
    3469  * @return true on success
    3470  */
    3471 
    3472 bool chipMaskInsertFits(
    3473     psDB            *dbh,               ///< Database handle
    3474     const psFits    *fits               ///< psFits object
    3475 );
    3476 
    3477 /** Selects up to limit from the database and returns them in a binary FITS table
    3478  *
    3479  * This function assumes an empty psFits object and will create a FITS table
    3480  * as the first extension.
    3481  *
    3482  *  See psDBSelectRows() for documentation on the format of where.
    3483  *
    3484  * @return true on success
    3485  */
    3486 
    3487 bool chipMaskSelectRowsFits(
    3488     psDB            *dbh,               ///< Database handle
    3489     psFits          *fits,              ///< psFits object
    3490     const psMetadata *where,            ///< Row match criteria
    3491     unsigned long long limit            ///< Maximum number of elements to return
    3492 );
    3493 
    3494 /** Convert a chipMaskRow into an equivalent psMetadata
    3495  *
    3496  * @return A psMetadata pointer or NULL on error
    3497  */
    3498 
    3499 psMetadata *chipMaskMetadataFromObject(
    3500     const chipMaskRow *object             ///< fooRow to convert into a psMetadata
    3501 );
    3502 
    3503 /** Convert a psMetadata into an equivalent fooRow
    3504  *
    3505  * @return A chipMaskRow pointer or NULL on error
    3506  */
    3507 
    3508 chipMaskRow *chipMaskObjectFromMetadata(
    3509     psMetadata      *md                 ///< psMetadata to convert into a fooRow
    3510 );
    3511 /** Selects up to limit rows from the database and returns as chipMaskRow objects in a psArray
    3512  *
    3513  *  See psDBSelectRows() for documentation on the format of where.
    3514  *
    3515  * @return A psArray pointer or NULL on error
    3516  */
    3517 
    3518 psArray *chipMaskSelectRowObjects(
    3519     psDB            *dbh,               ///< Database handle
    3520     const psMetadata *where,            ///< Row match criteria
    3521     unsigned long long limit            ///< Maximum number of elements to return
    3522 );
    3523 /** Deletes a row from the database coresponding to an chipMask
    3524  *
    3525  *  Note that a 'where' search psMetadata is constructed from each object and
    3526  *  used to find rows to delete.
    3527  *
    3528  * @return A The number of rows removed or a negative value on error
    3529  */
    3530 
    3531 bool chipMaskDeleteObject(
    3532     psDB            *dbh,               ///< Database handle
    3533     const chipMaskRow *object    ///< Object to delete
    3534 );
    3535 /** Deletes up to limit rows from the database and returns the number of rows actually deleted.
    3536  *
    3537  *  Note that a 'where' search psMetadata is constructed from each object and
    3538  *  used to find rows to delete.
    3539  *
    3540  * @return A The number of rows removed or a negative value on error
    3541  */
    3542 
    3543 long long chipMaskDeleteRowObjects(
    3544     psDB            *dbh,               ///< Database handle
    3545     const psArray   *objects,           ///< Array of objects to delete
    3546     unsigned long long limit            ///< Maximum number of elements to delete
    3547 );
    3548 /** Formats and prints an array of chipMaskRow objects
    3549  *
    3550  * When mdcf is set the formated output is in psMetadataConfig
    3551  * format, otherwise it is in a simple tabular format.
    3552  *
    3553  * @return true on success
    3554  */
    3555 
    3556 bool chipMaskPrintObjects(
    3557     FILE            *stream,            ///< a stream
    3558     psArray         *objects,           ///< An array of chipMaskRow objects
    3559     bool            mdcf                ///< format as mdconfig or simple
    3560 );
    3561 /** Formats and prints an chipMaskRow object
    3562  *
    3563  * When mdcf is set the formated output is in psMetadataConfig
    3564  * format, otherwise it is in a simple tabular format.
    3565  *
    3566  * @return true on success
    3567  */
    3568 
    3569 bool chipMaskPrintObject(
    3570     FILE            *stream,            ///< a stream
    3571     chipMaskRow *object,    ///< an chipMaskRow object
    3572     bool            mdcf                ///< format as mdconfig or simple
    3573 );
    3574 /** chipProcessedImfileRow data structure
    3575  *
    3576  * Structure for representing a single row of chipProcessedImfile table data.
    3577  */
    3578 
    3579 typedef struct {
    3580     psS64           chip_id;
     2987    psS64           exp_id;
    35812988    char            *class_id;
    35822989    char            *uri;
     
    36103017chipProcessedImfileRow *chipProcessedImfileRowAlloc(
    36113018    psS64           chip_id,
     3019    psS64           exp_id,
    36123020    const char      *class_id,
    36133021    const char      *uri,
     
    36623070    psDB            *dbh,               ///< Database handle
    36633071    psS64           chip_id,
     3072    psS64           exp_id,
    36643073    const char      *class_id,
    36653074    const char      *uri,
     
    38333242    bool            mdcf                ///< format as mdconfig or simple
    38343243);
    3835 /** camPendingExpRow data structure
    3836  *
    3837  * Structure for representing a single row of camPendingExp table data.
     3244/** chipMaskRow data structure
     3245 *
     3246 * Structure for representing a single row of chipMask table data.
     3247 */
     3248
     3249typedef struct {
     3250    char            *label;
     3251} chipMaskRow;
     3252
     3253/** Creates a new chipMaskRow object
     3254 *
     3255 *  @return A new chipMaskRow object or NULL on failure.
     3256 */
     3257
     3258chipMaskRow *chipMaskRowAlloc(
     3259    const char      *label
     3260);
     3261
     3262/** Creates a new chipMask table
     3263 *
     3264 * @return true on success
     3265 */
     3266
     3267bool chipMaskCreateTable(
     3268    psDB            *dbh                ///< Database handle
     3269);
     3270
     3271/** Deletes a chipMask table
     3272 *
     3273 * @return true on success
     3274 */
     3275
     3276bool chipMaskDropTable(
     3277    psDB            *dbh                ///< Database handle
     3278);
     3279
     3280/** Insert a single row into a table
     3281 *
     3282 * This function constructs and inserts a single row based on it's parameters.
     3283 *
     3284 * @return true on success
     3285 */
     3286
     3287bool chipMaskInsert(
     3288    psDB            *dbh,               ///< Database handle
     3289    const char      *label
     3290);
     3291
     3292/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     3293 *
     3294 * @return A The number of rows removed or a negative value on error
     3295 */
     3296
     3297long long chipMaskDelete(
     3298    psDB            *dbh,               ///< Database handle
     3299    const psMetadata *where,            ///< Row match criteria
     3300    unsigned long long limit            ///< Maximum number of elements to delete
     3301);
     3302
     3303/** Insert a single chipMaskRow object into a table
     3304 *
     3305 * This function constructs and inserts a single row based on it's parameters.
     3306 *
     3307 * @return true on success
     3308 */
     3309
     3310bool chipMaskInsertObject(
     3311    psDB            *dbh,               ///< Database handle
     3312    chipMaskRow     *object             ///< chipMaskRow object
     3313);
     3314
     3315/** Insert an array of chipMaskRow object into a table
     3316 *
     3317 * This function constructs and inserts multiple rows based on it's parameters.
     3318 *
     3319 * @return true on success
     3320 */
     3321
     3322bool chipMaskInsertObjects(
     3323    psDB            *dbh,               ///< Database handle
     3324    psArray         *objects            ///< array of chipMaskRow objects
     3325);
     3326
     3327/** Insert data from a binary FITS table chipMaskRow into the database
     3328 *
     3329 * This function expects a psFits object with a FITS table as the first
     3330 * extension.  The table must have at least one row of data in it, that is of
     3331 * the appropriate format (number of columns and their type).  All other
     3332 * extensions are ignored.
     3333 *
     3334 * @return true on success
     3335 */
     3336
     3337bool chipMaskInsertFits(
     3338    psDB            *dbh,               ///< Database handle
     3339    const psFits    *fits               ///< psFits object
     3340);
     3341
     3342/** Selects up to limit from the database and returns them in a binary FITS table
     3343 *
     3344 * This function assumes an empty psFits object and will create a FITS table
     3345 * as the first extension.
     3346 *
     3347 *  See psDBSelectRows() for documentation on the format of where.
     3348 *
     3349 * @return true on success
     3350 */
     3351
     3352bool chipMaskSelectRowsFits(
     3353    psDB            *dbh,               ///< Database handle
     3354    psFits          *fits,              ///< psFits object
     3355    const psMetadata *where,            ///< Row match criteria
     3356    unsigned long long limit            ///< Maximum number of elements to return
     3357);
     3358
     3359/** Convert a chipMaskRow into an equivalent psMetadata
     3360 *
     3361 * @return A psMetadata pointer or NULL on error
     3362 */
     3363
     3364psMetadata *chipMaskMetadataFromObject(
     3365    const chipMaskRow *object             ///< fooRow to convert into a psMetadata
     3366);
     3367
     3368/** Convert a psMetadata into an equivalent fooRow
     3369 *
     3370 * @return A chipMaskRow pointer or NULL on error
     3371 */
     3372
     3373chipMaskRow *chipMaskObjectFromMetadata(
     3374    psMetadata      *md                 ///< psMetadata to convert into a fooRow
     3375);
     3376/** Selects up to limit rows from the database and returns as chipMaskRow objects in a psArray
     3377 *
     3378 *  See psDBSelectRows() for documentation on the format of where.
     3379 *
     3380 * @return A psArray pointer or NULL on error
     3381 */
     3382
     3383psArray *chipMaskSelectRowObjects(
     3384    psDB            *dbh,               ///< Database handle
     3385    const psMetadata *where,            ///< Row match criteria
     3386    unsigned long long limit            ///< Maximum number of elements to return
     3387);
     3388/** Deletes a row from the database coresponding to an chipMask
     3389 *
     3390 *  Note that a 'where' search psMetadata is constructed from each object and
     3391 *  used to find rows to delete.
     3392 *
     3393 * @return A The number of rows removed or a negative value on error
     3394 */
     3395
     3396bool chipMaskDeleteObject(
     3397    psDB            *dbh,               ///< Database handle
     3398    const chipMaskRow *object    ///< Object to delete
     3399);
     3400/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     3401 *
     3402 *  Note that a 'where' search psMetadata is constructed from each object and
     3403 *  used to find rows to delete.
     3404 *
     3405 * @return A The number of rows removed or a negative value on error
     3406 */
     3407
     3408long long chipMaskDeleteRowObjects(
     3409    psDB            *dbh,               ///< Database handle
     3410    const psArray   *objects,           ///< Array of objects to delete
     3411    unsigned long long limit            ///< Maximum number of elements to delete
     3412);
     3413/** Formats and prints an array of chipMaskRow objects
     3414 *
     3415 * When mdcf is set the formated output is in psMetadataConfig
     3416 * format, otherwise it is in a simple tabular format.
     3417 *
     3418 * @return true on success
     3419 */
     3420
     3421bool chipMaskPrintObjects(
     3422    FILE            *stream,            ///< a stream
     3423    psArray         *objects,           ///< An array of chipMaskRow objects
     3424    bool            mdcf                ///< format as mdconfig or simple
     3425);
     3426/** Formats and prints an chipMaskRow object
     3427 *
     3428 * When mdcf is set the formated output is in psMetadataConfig
     3429 * format, otherwise it is in a simple tabular format.
     3430 *
     3431 * @return true on success
     3432 */
     3433
     3434bool chipMaskPrintObject(
     3435    FILE            *stream,            ///< a stream
     3436    chipMaskRow *object,    ///< an chipMaskRow object
     3437    bool            mdcf                ///< format as mdconfig or simple
     3438);
     3439/** camRunRow data structure
     3440 *
     3441 * Structure for representing a single row of camRun table data.
    38383442 */
    38393443
     
    38413445    psS64           cam_id;
    38423446    psS64           chip_id;
     3447    char            *state;
    38433448    char            *workdir;
     3449    char            *workdir_state;
    38443450    char            *label;
    38453451    char            *reduction;
    38463452    char            *expgroup;
    38473453    char            *dvodb;
    3848 } camPendingExpRow;
    3849 
    3850 /** Creates a new camPendingExpRow object
    3851  *
    3852  *  @return A new camPendingExpRow object or NULL on failure.
    3853  */
    3854 
    3855 camPendingExpRow *camPendingExpRowAlloc(
     3454} camRunRow;
     3455
     3456/** Creates a new camRunRow object
     3457 *
     3458 *  @return A new camRunRow object or NULL on failure.
     3459 */
     3460
     3461camRunRow *camRunRowAlloc(
    38563462    psS64           cam_id,
    38573463    psS64           chip_id,
     3464    const char      *state,
    38583465    const char      *workdir,
     3466    const char      *workdir_state,
    38593467    const char      *label,
    38603468    const char      *reduction,
     
    38633471);
    38643472
    3865 /** Creates a new camPendingExp table
    3866  *
    3867  * @return true on success
    3868  */
    3869 
    3870 bool camPendingExpCreateTable(
     3473/** Creates a new camRun table
     3474 *
     3475 * @return true on success
     3476 */
     3477
     3478bool camRunCreateTable(
    38713479    psDB            *dbh                ///< Database handle
    38723480);
    38733481
    3874 /** Deletes a camPendingExp table
    3875  *
    3876  * @return true on success
    3877  */
    3878 
    3879 bool camPendingExpDropTable(
     3482/** Deletes a camRun table
     3483 *
     3484 * @return true on success
     3485 */
     3486
     3487bool camRunDropTable(
    38803488    psDB            *dbh                ///< Database handle
    38813489);
     
    38883496 */
    38893497
    3890 bool camPendingExpInsert(
     3498bool camRunInsert(
    38913499    psDB            *dbh,               ///< Database handle
    38923500    psS64           cam_id,
    38933501    psS64           chip_id,
     3502    const char      *state,
    38943503    const char      *workdir,
     3504    const char      *workdir_state,
    38953505    const char      *label,
    38963506    const char      *reduction,
     
    39043514 */
    39053515
    3906 long long camPendingExpDelete(
     3516long long camRunDelete(
    39073517    psDB            *dbh,               ///< Database handle
    39083518    const psMetadata *where,            ///< Row match criteria
     
    39103520);
    39113521
    3912 /** Insert a single camPendingExpRow object into a table
     3522/** Insert a single camRunRow object into a table
    39133523 *
    39143524 * This function constructs and inserts a single row based on it's parameters.
     
    39173527 */
    39183528
    3919 bool camPendingExpInsertObject(
    3920     psDB            *dbh,               ///< Database handle
    3921     camPendingExpRow *object             ///< camPendingExpRow object
    3922 );
    3923 
    3924 /** Insert an array of camPendingExpRow object into a table
     3529bool camRunInsertObject(
     3530    psDB            *dbh,               ///< Database handle
     3531    camRunRow       *object             ///< camRunRow object
     3532);
     3533
     3534/** Insert an array of camRunRow object into a table
    39253535 *
    39263536 * This function constructs and inserts multiple rows based on it's parameters.
     
    39293539 */
    39303540
    3931 bool camPendingExpInsertObjects(
    3932     psDB            *dbh,               ///< Database handle
    3933     psArray         *objects            ///< array of camPendingExpRow objects
    3934 );
    3935 
    3936 /** Insert data from a binary FITS table camPendingExpRow into the database
     3541bool camRunInsertObjects(
     3542    psDB            *dbh,               ///< Database handle
     3543    psArray         *objects            ///< array of camRunRow objects
     3544);
     3545
     3546/** Insert data from a binary FITS table camRunRow into the database
    39373547 *
    39383548 * This function expects a psFits object with a FITS table as the first
     
    39443554 */
    39453555
    3946 bool camPendingExpInsertFits(
     3556bool camRunInsertFits(
    39473557    psDB            *dbh,               ///< Database handle
    39483558    const psFits    *fits               ///< psFits object
     
    39593569 */
    39603570
    3961 bool camPendingExpSelectRowsFits(
     3571bool camRunSelectRowsFits(
    39623572    psDB            *dbh,               ///< Database handle
    39633573    psFits          *fits,              ///< psFits object
     
    39663576);
    39673577
    3968 /** Convert a camPendingExpRow into an equivalent psMetadata
     3578/** Convert a camRunRow into an equivalent psMetadata
    39693579 *
    39703580 * @return A psMetadata pointer or NULL on error
    39713581 */
    39723582
    3973 psMetadata *camPendingExpMetadataFromObject(
    3974     const camPendingExpRow *object             ///< fooRow to convert into a psMetadata
     3583psMetadata *camRunMetadataFromObject(
     3584    const camRunRow *object             ///< fooRow to convert into a psMetadata
    39753585);
    39763586
    39773587/** Convert a psMetadata into an equivalent fooRow
    39783588 *
    3979  * @return A camPendingExpRow pointer or NULL on error
    3980  */
    3981 
    3982 camPendingExpRow *camPendingExpObjectFromMetadata(
     3589 * @return A camRunRow pointer or NULL on error
     3590 */
     3591
     3592camRunRow *camRunObjectFromMetadata(
    39833593    psMetadata      *md                 ///< psMetadata to convert into a fooRow
    39843594);
    3985 /** Selects up to limit rows from the database and returns as camPendingExpRow objects in a psArray
     3595/** Selects up to limit rows from the database and returns as camRunRow objects in a psArray
    39863596 *
    39873597 *  See psDBSelectRows() for documentation on the format of where.
     
    39903600 */
    39913601
    3992 psArray *camPendingExpSelectRowObjects(
     3602psArray *camRunSelectRowObjects(
    39933603    psDB            *dbh,               ///< Database handle
    39943604    const psMetadata *where,            ///< Row match criteria
    39953605    unsigned long long limit            ///< Maximum number of elements to return
    39963606);
    3997 /** Deletes a row from the database coresponding to an camPendingExp
     3607/** Deletes a row from the database coresponding to an camRun
    39983608 *
    39993609 *  Note that a 'where' search psMetadata is constructed from each object and
     
    40033613 */
    40043614
    4005 bool camPendingExpDeleteObject(
    4006     psDB            *dbh,               ///< Database handle
    4007     const camPendingExpRow *object    ///< Object to delete
     3615bool camRunDeleteObject(
     3616    psDB            *dbh,               ///< Database handle
     3617    const camRunRow *object    ///< Object to delete
    40083618);
    40093619/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     
    40153625 */
    40163626
    4017 long long camPendingExpDeleteRowObjects(
     3627long long camRunDeleteRowObjects(
    40183628    psDB            *dbh,               ///< Database handle
    40193629    const psArray   *objects,           ///< Array of objects to delete
    40203630    unsigned long long limit            ///< Maximum number of elements to delete
    40213631);
    4022 /** Formats and prints an array of camPendingExpRow objects
     3632/** Formats and prints an array of camRunRow objects
    40233633 *
    40243634 * When mdcf is set the formated output is in psMetadataConfig
     
    40283638 */
    40293639
    4030 bool camPendingExpPrintObjects(
     3640bool camRunPrintObjects(
    40313641    FILE            *stream,            ///< a stream
    4032     psArray         *objects,           ///< An array of camPendingExpRow objects
     3642    psArray         *objects,           ///< An array of camRunRow objects
    40333643    bool            mdcf                ///< format as mdconfig or simple
    40343644);
    4035 /** Formats and prints an camPendingExpRow object
     3645/** Formats and prints an camRunRow object
    40363646 *
    40373647 * When mdcf is set the formated output is in psMetadataConfig
     
    40413651 */
    40423652
    4043 bool camPendingExpPrintObject(
     3653bool camRunPrintObject(
    40443654    FILE            *stream,            ///< a stream
    4045     camPendingExpRow *object,    ///< an camPendingExpRow object
     3655    camRunRow *object,    ///< an camRunRow object
    40463656    bool            mdcf                ///< format as mdconfig or simple
    40473657);
     
    40543664    psS64           cam_id;
    40553665    psS64           chip_id;
    4056     char            *workdir;
    4057     char            *label;
    4058     char            *reduction;
    4059     char            *expgroup;
    4060     char            *dvodb;
    40613666    char            *uri;
    40623667    psF32           bg;
     
    40853690    psS64           cam_id,
    40863691    psS64           chip_id,
    4087     const char      *workdir,
    4088     const char      *label,
    4089     const char      *reduction,
    4090     const char      *expgroup,
    4091     const char      *dvodb,
    40923692    const char      *uri,
    40933693    psF32           bg,
     
    41373737    psS64           cam_id,
    41383738    psS64           chip_id,
    4139     const char      *workdir,
    4140     const char      *label,
    4141     const char      *reduction,
    4142     const char      *expgroup,
    4143     const char      *dvodb,
    41443739    const char      *uri,
    41453740    psF32           bg,
     
    68716466    psS64           det_id;
    68726467    psS32           iteration;
    6873     char            *exp_tag;
     6468    psS64           exp_id;
    68746469    bool            include;
    68756470} detInputExpRow;
     
    68836478    psS64           det_id,
    68846479    psS32           iteration,
    6885     const char      *exp_tag,
     6480    psS64           exp_id,
    68866481    bool            include
    68876482);
     
    69166511    psS64           det_id,
    69176512    psS32           iteration,
    6918     const char      *exp_tag,
     6513    psS64           exp_id,
    69196514    bool            include
    69206515);
     
    70746669typedef struct {
    70756670    psS64           det_id;
    7076     char            *exp_tag;
     6671    psS64           exp_id;
    70776672    char            *class_id;
    70786673    char            *uri;
     
    71006695detProcessedImfileRow *detProcessedImfileRowAlloc(
    71016696    psS64           det_id,
    7102     const char      *exp_tag,
     6697    psS64           exp_id,
    71036698    const char      *class_id,
    71046699    const char      *uri,
     
    71476742    psDB            *dbh,               ///< Database handle
    71486743    psS64           det_id,
    7149     const char      *exp_tag,
     6744    psS64           exp_id,
    71506745    const char      *class_id,
    71516746    const char      *uri,
     
    73206915typedef struct {
    73216916    psS64           det_id;
    7322     char            *exp_tag;
     6917    psS64           exp_id;
    73236918    char            *recipe;
    73246919    psF64           bg;
     
    73446939detProcessedExpRow *detProcessedExpRowAlloc(
    73456940    psS64           det_id,
    7346     const char      *exp_tag,
     6941    psS64           exp_id,
    73476942    const char      *recipe,
    73486943    psF64           bg,
     
    73896984    psDB            *dbh,               ///< Database handle
    73906985    psS64           det_id,
    7391     const char      *exp_tag,
     6986    psS64           exp_id,
    73926987    const char      *recipe,
    73936988    psF64           bg,
     
    84678062    psS64           det_id;
    84688063    psS32           iteration;
    8469     char            *exp_tag;
     8064    psS64           exp_id;
    84708065    char            *class_id;
    84718066    char            *uri;
     
    84958090    psS64           det_id,
    84968091    psS32           iteration,
    8497     const char      *exp_tag,
     8092    psS64           exp_id,
    84988093    const char      *class_id,
    84998094    const char      *uri,
     
    85448139    psS64           det_id,
    85458140    psS32           iteration,
    8546     const char      *exp_tag,
     8141    psS64           exp_id,
    85478142    const char      *class_id,
    85488143    const char      *uri,
     
    87198314    psS64           det_id;
    87208315    psS32           iteration;
    8721     char            *exp_tag;
     8316    psS64           exp_id;
    87228317    char            *recipe;
    87238318    psF64           bg;
     
    87468341    psS64           det_id,
    87478342    psS32           iteration,
    8748     const char      *exp_tag,
     8343    psS64           exp_id,
    87498344    const char      *recipe,
    87508345    psF64           bg,
     
    87948389    psS64           det_id,
    87958390    psS32           iteration,
    8796     const char      *exp_tag,
     8391    psS64           exp_id,
    87978392    const char      *recipe,
    87988393    psF64           bg,
  • trunk/ippdb/tests/alloc.c

    r13937 r14061  
    99{
    1010    {
    11         expTagCounterRow *object;
    12 
    13         object = expTagCounterRowAlloc(64    );
    14 
    15         if (!object) {
    16             exit(EXIT_FAILURE);
    17         }
    18 
    19         if (!object->counter == 64) {
    20             psFree(object);
    21             exit(EXIT_FAILURE);
    22         }
    23 
    24         psFree(object);
    25     }
    26 
    27     {
    2811        summitExpRow    *object;
    2912
     
    3417        }
    3518
    36         if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
     19        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    3720            psFree(object);
    3821            exit(EXIT_FAILURE);
     
    7457        }
    7558
    76         if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
     59        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    7760            psFree(object);
    7861            exit(EXIT_FAILURE);
     
    123106        }
    124107
    125         if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
     108        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    126109            psFree(object);
    127110            exit(EXIT_FAILURE);
     
    142125        pzPendingImfileRow *object;
    143126
    144         object = pzPendingImfileRowAlloc("a string", "a string", "a string", "a string", "a string", "a string"    );
    145 
    146         if (!object) {
    147             exit(EXIT_FAILURE);
    148         }
    149 
    150         if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
     127        object = pzPendingImfileRowAlloc("a string", "a string", "a string", "a string", "a string", -64    );
     128
     129        if (!object) {
     130            exit(EXIT_FAILURE);
     131        }
     132
     133        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    151134            psFree(object);
    152135            exit(EXIT_FAILURE);
     
    168151            exit(EXIT_FAILURE);
    169152        }
     153        if (!object->exp_id == -64) {
     154            psFree(object);
     155            exit(EXIT_FAILURE);
     156        }
     157
     158        psFree(object);
     159    }
     160
     161    {
     162        pzDoneExpRow    *object;
     163
     164        object = pzDoneExpRowAlloc("a string", "a string", "a string"    );
     165
     166        if (!object) {
     167            exit(EXIT_FAILURE);
     168        }
     169
     170        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
     171            psFree(object);
     172            exit(EXIT_FAILURE);
     173        }
     174        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
     175            psFree(object);
     176            exit(EXIT_FAILURE);
     177        }
     178        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
     179            psFree(object);
     180            exit(EXIT_FAILURE);
     181        }
     182
     183        psFree(object);
     184    }
     185
     186    {
     187        pzDoneImfileRow *object;
     188
     189        object = pzDoneImfileRowAlloc("a string", "a string", "a string", "a string", "a string", -64, "a string"    );
     190
     191        if (!object) {
     192            exit(EXIT_FAILURE);
     193        }
     194
     195        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
     196            psFree(object);
     197            exit(EXIT_FAILURE);
     198        }
     199        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
     200            psFree(object);
     201            exit(EXIT_FAILURE);
     202        }
     203        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
     204            psFree(object);
     205            exit(EXIT_FAILURE);
     206        }
     207        if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
     208            psFree(object);
     209            exit(EXIT_FAILURE);
     210        }
     211        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     212            psFree(object);
     213            exit(EXIT_FAILURE);
     214        }
     215        if (!object->exp_id == -64) {
     216            psFree(object);
     217            exit(EXIT_FAILURE);
     218        }
     219        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     220            psFree(object);
     221            exit(EXIT_FAILURE);
     222        }
     223
     224        psFree(object);
     225    }
     226
     227    {
     228        newExpRow       *object;
     229
     230        object = newExpRowAlloc(-64, "a string", "a string", "a string", "a string", "a string", "a string"    );
     231
     232        if (!object) {
     233            exit(EXIT_FAILURE);
     234        }
     235
     236        if (!object->exp_id == -64) {
     237            psFree(object);
     238            exit(EXIT_FAILURE);
     239        }
     240        if (strncmp(object->tmp_exp_name, "a string", MAX_STRING_LENGTH)) {
     241            psFree(object);
     242            exit(EXIT_FAILURE);
     243        }
     244        if (strncmp(object->tmp_camera, "a string", MAX_STRING_LENGTH)) {
     245            psFree(object);
     246            exit(EXIT_FAILURE);
     247        }
     248        if (strncmp(object->tmp_telescope, "a string", MAX_STRING_LENGTH)) {
     249            psFree(object);
     250            exit(EXIT_FAILURE);
     251        }
     252        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     253            psFree(object);
     254            exit(EXIT_FAILURE);
     255        }
     256        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     257            psFree(object);
     258            exit(EXIT_FAILURE);
     259        }
     260        if (strncmp(object->workdir_state, "a string", MAX_STRING_LENGTH)) {
     261            psFree(object);
     262            exit(EXIT_FAILURE);
     263        }
     264
     265        psFree(object);
     266    }
     267
     268    {
     269        newImfileRow    *object;
     270
     271        object = newImfileRowAlloc(-64, "a string", "a string"    );
     272
     273        if (!object) {
     274            exit(EXIT_FAILURE);
     275        }
     276
     277        if (!object->exp_id == -64) {
     278            psFree(object);
     279            exit(EXIT_FAILURE);
     280        }
     281        if (strncmp(object->tmp_class_id, "a string", MAX_STRING_LENGTH)) {
     282            psFree(object);
     283            exit(EXIT_FAILURE);
     284        }
     285        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     286            psFree(object);
     287            exit(EXIT_FAILURE);
     288        }
     289
     290        psFree(object);
     291    }
     292
     293    {
     294        rawExpRow       *object;
     295
     296        object = rawExpRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "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    );
     297
     298        if (!object) {
     299            exit(EXIT_FAILURE);
     300        }
     301
     302        if (!object->exp_id == -64) {
     303            psFree(object);
     304            exit(EXIT_FAILURE);
     305        }
     306        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
     307            psFree(object);
     308            exit(EXIT_FAILURE);
     309        }
     310        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
     311            psFree(object);
     312            exit(EXIT_FAILURE);
     313        }
     314        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
     315            psFree(object);
     316            exit(EXIT_FAILURE);
     317        }
     318            psFree(object);
     319            exit(EXIT_FAILURE);
     320        }
    170321        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    171322            psFree(object);
    172323            exit(EXIT_FAILURE);
    173324        }
    174 
    175         psFree(object);
    176     }
    177 
    178     {
    179         pzDoneExpRow    *object;
    180 
    181         object = pzDoneExpRowAlloc("a string", "a string", "a string"    );
    182 
    183         if (!object) {
    184             exit(EXIT_FAILURE);
    185         }
    186 
    187         if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
     325        if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
     326            psFree(object);
     327            exit(EXIT_FAILURE);
     328        }
     329        if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
     330            psFree(object);
     331            exit(EXIT_FAILURE);
     332        }
     333        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     334            psFree(object);
     335            exit(EXIT_FAILURE);
     336        }
     337        if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
     338            psFree(object);
     339            exit(EXIT_FAILURE);
     340        }
     341        if (!object->airmass == 32.32) {
     342            psFree(object);
     343            exit(EXIT_FAILURE);
     344        }
     345        if (!object->ra == 64.64) {
     346            psFree(object);
     347            exit(EXIT_FAILURE);
     348        }
     349        if (!object->decl == 64.64) {
     350            psFree(object);
     351            exit(EXIT_FAILURE);
     352        }
     353        if (!object->exp_time == 32.32) {
     354            psFree(object);
     355            exit(EXIT_FAILURE);
     356        }
     357        if (!object->sat_pixel_frac == 32.32) {
     358            psFree(object);
     359            exit(EXIT_FAILURE);
     360        }
     361        if (!object->bg == 64.64) {
     362            psFree(object);
     363            exit(EXIT_FAILURE);
     364        }
     365        if (!object->bg_stdev == 64.64) {
     366            psFree(object);
     367            exit(EXIT_FAILURE);
     368        }
     369        if (!object->bg_mean_stdev == 64.64) {
     370            psFree(object);
     371            exit(EXIT_FAILURE);
     372        }
     373        if (!object->alt == 64.64) {
     374            psFree(object);
     375            exit(EXIT_FAILURE);
     376        }
     377        if (!object->az == 64.64) {
     378            psFree(object);
     379            exit(EXIT_FAILURE);
     380        }
     381        if (!object->ccd_temp == 32.32) {
     382            psFree(object);
     383            exit(EXIT_FAILURE);
     384        }
     385        if (!object->posang == 64.64) {
     386            psFree(object);
     387            exit(EXIT_FAILURE);
     388        }
     389        if (!object->user_1 == 64.64) {
     390            psFree(object);
     391            exit(EXIT_FAILURE);
     392        }
     393        if (!object->user_2 == 64.64) {
     394            psFree(object);
     395            exit(EXIT_FAILURE);
     396        }
     397        if (!object->user_3 == 64.64) {
     398            psFree(object);
     399            exit(EXIT_FAILURE);
     400        }
     401        if (!object->user_4 == 64.64) {
     402            psFree(object);
     403            exit(EXIT_FAILURE);
     404        }
     405        if (!object->user_5 == 64.64) {
     406            psFree(object);
     407            exit(EXIT_FAILURE);
     408        }
     409        if (strncmp(object->object, "a string", MAX_STRING_LENGTH)) {
     410            psFree(object);
     411            exit(EXIT_FAILURE);
     412        }
     413        if (!object->solang == 32.32) {
     414            psFree(object);
     415            exit(EXIT_FAILURE);
     416        }
     417        if (!object->fault == -16) {
     418            psFree(object);
     419            exit(EXIT_FAILURE);
     420        }
     421
     422        psFree(object);
     423    }
     424
     425    {
     426        rawImfileRow    *object;
     427
     428        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    );
     429
     430        if (!object) {
     431            exit(EXIT_FAILURE);
     432        }
     433
     434        if (!object->exp_id == -64) {
     435            psFree(object);
     436            exit(EXIT_FAILURE);
     437        }
     438        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    188439            psFree(object);
    189440            exit(EXIT_FAILURE);
     
    197448            exit(EXIT_FAILURE);
    198449        }
    199 
    200         psFree(object);
    201     }
    202 
    203     {
    204         pzDoneImfileRow *object;
    205 
    206         object = pzDoneImfileRowAlloc("a string", "a string", "a string", "a string", "a string", "a string", "a string"    );
    207 
    208         if (!object) {
    209             exit(EXIT_FAILURE);
    210         }
    211 
    212         if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
     450            psFree(object);
     451            exit(EXIT_FAILURE);
     452        }
     453        if (strncmp(object->tmp_class_id, "a string", MAX_STRING_LENGTH)) {
     454            psFree(object);
     455            exit(EXIT_FAILURE);
     456        }
     457        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     458            psFree(object);
     459            exit(EXIT_FAILURE);
     460        }
     461        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     462            psFree(object);
     463            exit(EXIT_FAILURE);
     464        }
     465        if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
     466            psFree(object);
     467            exit(EXIT_FAILURE);
     468        }
     469        if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
     470            psFree(object);
     471            exit(EXIT_FAILURE);
     472        }
     473        if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
     474            psFree(object);
     475            exit(EXIT_FAILURE);
     476        }
     477        if (!object->airmass == 32.32) {
     478            psFree(object);
     479            exit(EXIT_FAILURE);
     480        }
     481        if (!object->ra == 64.64) {
     482            psFree(object);
     483            exit(EXIT_FAILURE);
     484        }
     485        if (!object->decl == 64.64) {
     486            psFree(object);
     487            exit(EXIT_FAILURE);
     488        }
     489        if (!object->exp_time == 32.32) {
     490            psFree(object);
     491            exit(EXIT_FAILURE);
     492        }
     493        if (!object->sat_pixel_frac == 32.32) {
     494            psFree(object);
     495            exit(EXIT_FAILURE);
     496        }
     497        if (!object->bg == 64.64) {
     498            psFree(object);
     499            exit(EXIT_FAILURE);
     500        }
     501        if (!object->bg_stdev == 64.64) {
     502            psFree(object);
     503            exit(EXIT_FAILURE);
     504        }
     505        if (!object->bg_mean_stdev == 64.64) {
     506            psFree(object);
     507            exit(EXIT_FAILURE);
     508        }
     509        if (!object->alt == 64.64) {
     510            psFree(object);
     511            exit(EXIT_FAILURE);
     512        }
     513        if (!object->az == 64.64) {
     514            psFree(object);
     515            exit(EXIT_FAILURE);
     516        }
     517        if (!object->ccd_temp == 32.32) {
     518            psFree(object);
     519            exit(EXIT_FAILURE);
     520        }
     521        if (!object->posang == 64.64) {
     522            psFree(object);
     523            exit(EXIT_FAILURE);
     524        }
     525        if (!object->user_1 == 64.64) {
     526            psFree(object);
     527            exit(EXIT_FAILURE);
     528        }
     529        if (!object->user_2 == 64.64) {
     530            psFree(object);
     531            exit(EXIT_FAILURE);
     532        }
     533        if (!object->user_3 == 64.64) {
     534            psFree(object);
     535            exit(EXIT_FAILURE);
     536        }
     537        if (!object->user_4 == 64.64) {
     538            psFree(object);
     539            exit(EXIT_FAILURE);
     540        }
     541        if (!object->user_5 == 64.64) {
     542            psFree(object);
     543            exit(EXIT_FAILURE);
     544        }
     545        if (strncmp(object->object, "a string", MAX_STRING_LENGTH)) {
     546            psFree(object);
     547            exit(EXIT_FAILURE);
     548        }
     549        if (!object->fault == -16) {
     550            psFree(object);
     551            exit(EXIT_FAILURE);
     552        }
     553
     554        psFree(object);
     555    }
     556
     557    {
     558        guidePendingExpRow *object;
     559
     560        object = guidePendingExpRowAlloc(-64, -64, "a string"    );
     561
     562        if (!object) {
     563            exit(EXIT_FAILURE);
     564        }
     565
     566        if (!object->guide_id == -64) {
     567            psFree(object);
     568            exit(EXIT_FAILURE);
     569        }
     570        if (!object->exp_id == -64) {
     571            psFree(object);
     572            exit(EXIT_FAILURE);
     573        }
     574        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     575            psFree(object);
     576            exit(EXIT_FAILURE);
     577        }
     578
     579        psFree(object);
     580    }
     581
     582    {
     583        chipRunRow      *object;
     584
     585        object = chipRunRowAlloc(-64, "a string", "a string", "a string", "a string", "a string", "a string", "a string"    );
     586
     587        if (!object) {
     588            exit(EXIT_FAILURE);
     589        }
     590
     591        if (!object->chip_id == -64) {
     592            psFree(object);
     593            exit(EXIT_FAILURE);
     594        }
     595        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     596            psFree(object);
     597            exit(EXIT_FAILURE);
     598        }
     599        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     600            psFree(object);
     601            exit(EXIT_FAILURE);
     602        }
     603        if (strncmp(object->workdir_state, "a string", MAX_STRING_LENGTH)) {
     604            psFree(object);
     605            exit(EXIT_FAILURE);
     606        }
     607        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     608            psFree(object);
     609            exit(EXIT_FAILURE);
     610        }
     611        if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
     612            psFree(object);
     613            exit(EXIT_FAILURE);
     614        }
     615        if (strncmp(object->expgroup, "a string", MAX_STRING_LENGTH)) {
     616            psFree(object);
     617            exit(EXIT_FAILURE);
     618        }
     619        if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
     620            psFree(object);
     621            exit(EXIT_FAILURE);
     622        }
     623
     624        psFree(object);
     625    }
     626
     627    {
     628        chipInputImfileRow *object;
     629
     630        object = chipInputImfileRowAlloc(-64, -64, "a string"    );
     631
     632        if (!object) {
     633            exit(EXIT_FAILURE);
     634        }
     635
     636        if (!object->chip_id == -64) {
     637            psFree(object);
     638            exit(EXIT_FAILURE);
     639        }
     640        if (!object->exp_id == -64) {
     641            psFree(object);
     642            exit(EXIT_FAILURE);
     643        }
     644        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     645            psFree(object);
     646            exit(EXIT_FAILURE);
     647        }
     648
     649        psFree(object);
     650    }
     651
     652    {
     653        chipProcessedImfileRow *object;
     654
     655        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    );
     656
     657        if (!object) {
     658            exit(EXIT_FAILURE);
     659        }
     660
     661        if (!object->chip_id == -64) {
     662            psFree(object);
     663            exit(EXIT_FAILURE);
     664        }
     665        if (!object->exp_id == -64) {
     666            psFree(object);
     667            exit(EXIT_FAILURE);
     668        }
     669        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     670            psFree(object);
     671            exit(EXIT_FAILURE);
     672        }
     673        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     674            psFree(object);
     675            exit(EXIT_FAILURE);
     676        }
     677        if (!object->bg == 32.32) {
     678            psFree(object);
     679            exit(EXIT_FAILURE);
     680        }
     681        if (!object->bg_stdev == 32.32) {
     682            psFree(object);
     683            exit(EXIT_FAILURE);
     684        }
     685        if (!object->bg_mean_stdev == 32.32) {
     686            psFree(object);
     687            exit(EXIT_FAILURE);
     688        }
     689        if (!object->bias == 32.32) {
     690            psFree(object);
     691            exit(EXIT_FAILURE);
     692        }
     693        if (!object->bias_stdev == 32.32) {
     694            psFree(object);
     695            exit(EXIT_FAILURE);
     696        }
     697        if (!object->fringe_0 == 32.32) {
     698            psFree(object);
     699            exit(EXIT_FAILURE);
     700        }
     701        if (!object->fringe_1 == 32.32) {
     702            psFree(object);
     703            exit(EXIT_FAILURE);
     704        }
     705        if (!object->fringe_2 == 32.32) {
     706            psFree(object);
     707            exit(EXIT_FAILURE);
     708        }
     709        if (!object->sigma_ra == 32.32) {
     710            psFree(object);
     711            exit(EXIT_FAILURE);
     712        }
     713        if (!object->sigma_dec == 32.32) {
     714            psFree(object);
     715            exit(EXIT_FAILURE);
     716        }
     717        if (!object->ap_resid == 32.32) {
     718            psFree(object);
     719            exit(EXIT_FAILURE);
     720        }
     721        if (!object->ap_resid_stdev == 32.32) {
     722            psFree(object);
     723            exit(EXIT_FAILURE);
     724        }
     725        if (!object->fwhm == 32.32) {
     726            psFree(object);
     727            exit(EXIT_FAILURE);
     728        }
     729        if (!object->fwhm_range == 32.32) {
     730            psFree(object);
     731            exit(EXIT_FAILURE);
     732        }
     733        if (!object->n_stars == -32) {
     734            psFree(object);
     735            exit(EXIT_FAILURE);
     736        }
     737        if (!object->n_extended == -32) {
     738            psFree(object);
     739            exit(EXIT_FAILURE);
     740        }
     741        if (!object->n_cr == -32) {
     742            psFree(object);
     743            exit(EXIT_FAILURE);
     744        }
     745        if (!object->n_astrom == -32) {
     746            psFree(object);
     747            exit(EXIT_FAILURE);
     748        }
     749        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     750            psFree(object);
     751            exit(EXIT_FAILURE);
     752        }
     753        if (!object->fault == -16) {
     754            psFree(object);
     755            exit(EXIT_FAILURE);
     756        }
     757
     758        psFree(object);
     759    }
     760
     761    {
     762        chipMaskRow     *object;
     763
     764        object = chipMaskRowAlloc("a string"    );
     765
     766        if (!object) {
     767            exit(EXIT_FAILURE);
     768        }
     769
     770        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     771            psFree(object);
     772            exit(EXIT_FAILURE);
     773        }
     774
     775        psFree(object);
     776    }
     777
     778    {
     779        camRunRow       *object;
     780
     781        object = camRunRowAlloc(-64, -64, "a string", "a string", "a string", "a string", "a string", "a string", "a string"    );
     782
     783        if (!object) {
     784            exit(EXIT_FAILURE);
     785        }
     786
     787        if (!object->cam_id == -64) {
     788            psFree(object);
     789            exit(EXIT_FAILURE);
     790        }
     791        if (!object->chip_id == -64) {
     792            psFree(object);
     793            exit(EXIT_FAILURE);
     794        }
     795        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     796            psFree(object);
     797            exit(EXIT_FAILURE);
     798        }
     799        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     800            psFree(object);
     801            exit(EXIT_FAILURE);
     802        }
     803        if (strncmp(object->workdir_state, "a string", MAX_STRING_LENGTH)) {
     804            psFree(object);
     805            exit(EXIT_FAILURE);
     806        }
     807        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     808            psFree(object);
     809            exit(EXIT_FAILURE);
     810        }
     811        if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
     812            psFree(object);
     813            exit(EXIT_FAILURE);
     814        }
     815        if (strncmp(object->expgroup, "a string", MAX_STRING_LENGTH)) {
     816            psFree(object);
     817            exit(EXIT_FAILURE);
     818        }
     819        if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
     820            psFree(object);
     821            exit(EXIT_FAILURE);
     822        }
     823
     824        psFree(object);
     825    }
     826
     827    {
     828        camProcessedExpRow *object;
     829
     830        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    );
     831
     832        if (!object) {
     833            exit(EXIT_FAILURE);
     834        }
     835
     836        if (!object->cam_id == -64) {
     837            psFree(object);
     838            exit(EXIT_FAILURE);
     839        }
     840        if (!object->chip_id == -64) {
     841            psFree(object);
     842            exit(EXIT_FAILURE);
     843        }
     844        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     845            psFree(object);
     846            exit(EXIT_FAILURE);
     847        }
     848        if (!object->bg == 32.32) {
     849            psFree(object);
     850            exit(EXIT_FAILURE);
     851        }
     852        if (!object->bg_stdev == 32.32) {
     853            psFree(object);
     854            exit(EXIT_FAILURE);
     855        }
     856        if (!object->bg_mean_stdev == 32.32) {
     857            psFree(object);
     858            exit(EXIT_FAILURE);
     859        }
     860        if (!object->sigma_ra == 32.32) {
     861            psFree(object);
     862            exit(EXIT_FAILURE);
     863        }
     864        if (!object->sigma_dec == 32.32) {
     865            psFree(object);
     866            exit(EXIT_FAILURE);
     867        }
     868        if (!object->zp_mean == 32.32) {
     869            psFree(object);
     870            exit(EXIT_FAILURE);
     871        }
     872        if (!object->zp_stdev == 32.32) {
     873            psFree(object);
     874            exit(EXIT_FAILURE);
     875        }
     876        if (!object->fwhm == 32.32) {
     877            psFree(object);
     878            exit(EXIT_FAILURE);
     879        }
     880        if (!object->fwhm_range == 32.32) {
     881            psFree(object);
     882            exit(EXIT_FAILURE);
     883        }
     884        if (!object->n_stars == -32) {
     885            psFree(object);
     886            exit(EXIT_FAILURE);
     887        }
     888        if (!object->n_extended == -32) {
     889            psFree(object);
     890            exit(EXIT_FAILURE);
     891        }
     892        if (!object->n_cr == -32) {
     893            psFree(object);
     894            exit(EXIT_FAILURE);
     895        }
     896        if (!object->n_astrom == -32) {
     897            psFree(object);
     898            exit(EXIT_FAILURE);
     899        }
     900        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     901            psFree(object);
     902            exit(EXIT_FAILURE);
     903        }
     904        if (!object->fault == -16) {
     905            psFree(object);
     906            exit(EXIT_FAILURE);
     907        }
     908
     909        psFree(object);
     910    }
     911
     912    {
     913        camMaskRow      *object;
     914
     915        object = camMaskRowAlloc("a string"    );
     916
     917        if (!object) {
     918            exit(EXIT_FAILURE);
     919        }
     920
     921        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     922            psFree(object);
     923            exit(EXIT_FAILURE);
     924        }
     925
     926        psFree(object);
     927    }
     928
     929    {
     930        warpRunRow      *object;
     931
     932        object = warpRunRowAlloc(-64, "a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z"    );
     933
     934        if (!object) {
     935            exit(EXIT_FAILURE);
     936        }
     937
     938        if (!object->warp_id == -64) {
     939            psFree(object);
     940            exit(EXIT_FAILURE);
     941        }
     942        if (strncmp(object->mode, "a string", MAX_STRING_LENGTH)) {
     943            psFree(object);
     944            exit(EXIT_FAILURE);
     945        }
     946        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     947            psFree(object);
     948            exit(EXIT_FAILURE);
     949        }
     950        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     951            psFree(object);
     952            exit(EXIT_FAILURE);
     953        }
     954        if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
     955            psFree(object);
     956            exit(EXIT_FAILURE);
     957        }
     958            psFree(object);
     959            exit(EXIT_FAILURE);
     960        }
     961
     962        psFree(object);
     963    }
     964
     965    {
     966        warpInputExpRow *object;
     967
     968        object = warpInputExpRowAlloc(-64, -64, true    );
     969
     970        if (!object) {
     971            exit(EXIT_FAILURE);
     972        }
     973
     974        if (!object->warp_id == -64) {
     975            psFree(object);
     976            exit(EXIT_FAILURE);
     977        }
     978        if (!object->cam_id == -64) {
     979            psFree(object);
     980            exit(EXIT_FAILURE);
     981        }
     982        if (!object->magiced == true) {
     983            psFree(object);
     984            exit(EXIT_FAILURE);
     985        }
     986
     987        psFree(object);
     988    }
     989
     990    {
     991        warpSkyCellMapRow *object;
     992
     993        object = warpSkyCellMapRowAlloc(-64, "a string", "a string", -64, "a string", -16    );
     994
     995        if (!object) {
     996            exit(EXIT_FAILURE);
     997        }
     998
     999        if (!object->warp_id == -64) {
     1000            psFree(object);
     1001            exit(EXIT_FAILURE);
     1002        }
     1003        if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
     1004            psFree(object);
     1005            exit(EXIT_FAILURE);
     1006        }
     1007        if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
     1008            psFree(object);
     1009            exit(EXIT_FAILURE);
     1010        }
     1011        if (!object->cam_id == -64) {
     1012            psFree(object);
     1013            exit(EXIT_FAILURE);
     1014        }
     1015        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     1016            psFree(object);
     1017            exit(EXIT_FAILURE);
     1018        }
     1019        if (!object->fault == -16) {
     1020            psFree(object);
     1021            exit(EXIT_FAILURE);
     1022        }
     1023
     1024        psFree(object);
     1025    }
     1026
     1027    {
     1028        warpSkyfileRow  *object;
     1029
     1030        object = warpSkyfileRowAlloc(-64, "a string", "a string", "a string", "a string", 64.64, 64.64    );
     1031
     1032        if (!object) {
     1033            exit(EXIT_FAILURE);
     1034        }
     1035
     1036        if (!object->warp_id == -64) {
     1037            psFree(object);
     1038            exit(EXIT_FAILURE);
     1039        }
     1040        if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
     1041            psFree(object);
     1042            exit(EXIT_FAILURE);
     1043        }
     1044        if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
     1045            psFree(object);
     1046            exit(EXIT_FAILURE);
     1047        }
     1048        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     1049            psFree(object);
     1050            exit(EXIT_FAILURE);
     1051        }
     1052        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1053            psFree(object);
     1054            exit(EXIT_FAILURE);
     1055        }
     1056        if (!object->bg == 64.64) {
     1057            psFree(object);
     1058            exit(EXIT_FAILURE);
     1059        }
     1060        if (!object->bg_stdev == 64.64) {
     1061            psFree(object);
     1062            exit(EXIT_FAILURE);
     1063        }
     1064
     1065        psFree(object);
     1066    }
     1067
     1068    {
     1069        diffRunRow      *object;
     1070
     1071        object = diffRunRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string"    );
     1072
     1073        if (!object) {
     1074            exit(EXIT_FAILURE);
     1075        }
     1076
     1077        if (!object->diff_id == -64) {
     1078            psFree(object);
     1079            exit(EXIT_FAILURE);
     1080        }
     1081        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     1082            psFree(object);
     1083            exit(EXIT_FAILURE);
     1084        }
     1085        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     1086            psFree(object);
     1087            exit(EXIT_FAILURE);
     1088        }
     1089        if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
     1090            psFree(object);
     1091            exit(EXIT_FAILURE);
     1092        }
     1093            psFree(object);
     1094            exit(EXIT_FAILURE);
     1095        }
     1096        if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
     1097            psFree(object);
     1098            exit(EXIT_FAILURE);
     1099        }
     1100        if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
     1101            psFree(object);
     1102            exit(EXIT_FAILURE);
     1103        }
     1104
     1105        psFree(object);
     1106    }
     1107
     1108    {
     1109        diffInputSkyfileRow *object;
     1110
     1111        object = diffInputSkyfileRowAlloc(-64, -64, "a string", "a string", "a string", true    );
     1112
     1113        if (!object) {
     1114            exit(EXIT_FAILURE);
     1115        }
     1116
     1117        if (!object->diff_id == -64) {
     1118            psFree(object);
     1119            exit(EXIT_FAILURE);
     1120        }
     1121        if (!object->warp_id == -64) {
     1122            psFree(object);
     1123            exit(EXIT_FAILURE);
     1124        }
     1125        if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
     1126            psFree(object);
     1127            exit(EXIT_FAILURE);
     1128        }
     1129        if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
     1130            psFree(object);
     1131            exit(EXIT_FAILURE);
     1132        }
     1133        if (strncmp(object->kind, "a string", MAX_STRING_LENGTH)) {
     1134            psFree(object);
     1135            exit(EXIT_FAILURE);
     1136        }
     1137        if (!object->template == true) {
     1138            psFree(object);
     1139            exit(EXIT_FAILURE);
     1140        }
     1141
     1142        psFree(object);
     1143    }
     1144
     1145    {
     1146        diffSkyfileRow  *object;
     1147
     1148        object = diffSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64    );
     1149
     1150        if (!object) {
     1151            exit(EXIT_FAILURE);
     1152        }
     1153
     1154        if (!object->diff_id == -64) {
     1155            psFree(object);
     1156            exit(EXIT_FAILURE);
     1157        }
     1158        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     1159            psFree(object);
     1160            exit(EXIT_FAILURE);
     1161        }
     1162        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1163            psFree(object);
     1164            exit(EXIT_FAILURE);
     1165        }
     1166        if (!object->bg == 64.64) {
     1167            psFree(object);
     1168            exit(EXIT_FAILURE);
     1169        }
     1170        if (!object->bg_stdev == 64.64) {
     1171            psFree(object);
     1172            exit(EXIT_FAILURE);
     1173        }
     1174
     1175        psFree(object);
     1176    }
     1177
     1178    {
     1179        stackRunRow     *object;
     1180
     1181        object = stackRunRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string"    );
     1182
     1183        if (!object) {
     1184            exit(EXIT_FAILURE);
     1185        }
     1186
     1187        if (!object->stack_id == -64) {
     1188            psFree(object);
     1189            exit(EXIT_FAILURE);
     1190        }
     1191        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     1192            psFree(object);
     1193            exit(EXIT_FAILURE);
     1194        }
     1195        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     1196            psFree(object);
     1197            exit(EXIT_FAILURE);
     1198        }
     1199        if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
     1200            psFree(object);
     1201            exit(EXIT_FAILURE);
     1202        }
     1203            psFree(object);
     1204            exit(EXIT_FAILURE);
     1205        }
     1206        if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
     1207            psFree(object);
     1208            exit(EXIT_FAILURE);
     1209        }
     1210        if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
     1211            psFree(object);
     1212            exit(EXIT_FAILURE);
     1213        }
     1214
     1215        psFree(object);
     1216    }
     1217
     1218    {
     1219        stackInputSkyfileRow *object;
     1220
     1221        object = stackInputSkyfileRowAlloc(-64, -64    );
     1222
     1223        if (!object) {
     1224            exit(EXIT_FAILURE);
     1225        }
     1226
     1227        if (!object->stack_id == -64) {
     1228            psFree(object);
     1229            exit(EXIT_FAILURE);
     1230        }
     1231        if (!object->warp_id == -64) {
     1232            psFree(object);
     1233            exit(EXIT_FAILURE);
     1234        }
     1235
     1236        psFree(object);
     1237    }
     1238
     1239    {
     1240        stackSumSkyfileRow *object;
     1241
     1242        object = stackSumSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64    );
     1243
     1244        if (!object) {
     1245            exit(EXIT_FAILURE);
     1246        }
     1247
     1248        if (!object->stack_id == -64) {
     1249            psFree(object);
     1250            exit(EXIT_FAILURE);
     1251        }
     1252        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     1253            psFree(object);
     1254            exit(EXIT_FAILURE);
     1255        }
     1256        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1257            psFree(object);
     1258            exit(EXIT_FAILURE);
     1259        }
     1260        if (!object->bg == 64.64) {
     1261            psFree(object);
     1262            exit(EXIT_FAILURE);
     1263        }
     1264        if (!object->bg_stdev == 64.64) {
     1265            psFree(object);
     1266            exit(EXIT_FAILURE);
     1267        }
     1268
     1269        psFree(object);
     1270    }
     1271
     1272    {
     1273        detRunRow       *object;
     1274
     1275        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    );
     1276
     1277        if (!object) {
     1278            exit(EXIT_FAILURE);
     1279        }
     1280
     1281        if (!object->det_id == -64) {
     1282            psFree(object);
     1283            exit(EXIT_FAILURE);
     1284        }
     1285        if (!object->iteration == -32) {
     1286            psFree(object);
     1287            exit(EXIT_FAILURE);
     1288        }
     1289        if (strncmp(object->det_type, "a string", MAX_STRING_LENGTH)) {
     1290            psFree(object);
     1291            exit(EXIT_FAILURE);
     1292        }
     1293        if (strncmp(object->mode, "a string", MAX_STRING_LENGTH)) {
     1294            psFree(object);
     1295            exit(EXIT_FAILURE);
     1296        }
     1297        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     1298            psFree(object);
     1299            exit(EXIT_FAILURE);
     1300        }
     1301        if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
     1302            psFree(object);
     1303            exit(EXIT_FAILURE);
     1304        }
     1305        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    2131306            psFree(object);
    2141307            exit(EXIT_FAILURE);
     
    2221315            exit(EXIT_FAILURE);
    2231316        }
    224         if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
     1317        if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
     1318            psFree(object);
     1319            exit(EXIT_FAILURE);
     1320        }
     1321        if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
     1322            psFree(object);
     1323            exit(EXIT_FAILURE);
     1324        }
     1325        if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
     1326            psFree(object);
     1327            exit(EXIT_FAILURE);
     1328        }
     1329        if (!object->airmass_min == 32.32) {
     1330            psFree(object);
     1331            exit(EXIT_FAILURE);
     1332        }
     1333        if (!object->airmass_max == 32.32) {
     1334            psFree(object);
     1335            exit(EXIT_FAILURE);
     1336        }
     1337        if (!object->exp_time_min == 32.32) {
     1338            psFree(object);
     1339            exit(EXIT_FAILURE);
     1340        }
     1341        if (!object->exp_time_max == 32.32) {
     1342            psFree(object);
     1343            exit(EXIT_FAILURE);
     1344        }
     1345        if (!object->ccd_temp_min == 32.32) {
     1346            psFree(object);
     1347            exit(EXIT_FAILURE);
     1348        }
     1349        if (!object->ccd_temp_max == 32.32) {
     1350            psFree(object);
     1351            exit(EXIT_FAILURE);
     1352        }
     1353        if (!object->posang_min == 64.64) {
     1354            psFree(object);
     1355            exit(EXIT_FAILURE);
     1356        }
     1357        if (!object->posang_max == 64.64) {
     1358            psFree(object);
     1359            exit(EXIT_FAILURE);
     1360        }
     1361            psFree(object);
     1362            exit(EXIT_FAILURE);
     1363        }
     1364            psFree(object);
     1365            exit(EXIT_FAILURE);
     1366        }
     1367            psFree(object);
     1368            exit(EXIT_FAILURE);
     1369        }
     1370            psFree(object);
     1371            exit(EXIT_FAILURE);
     1372        }
     1373            psFree(object);
     1374            exit(EXIT_FAILURE);
     1375        }
     1376        if (!object->solang_min == 32.32) {
     1377            psFree(object);
     1378            exit(EXIT_FAILURE);
     1379        }
     1380        if (!object->solang_max == 32.32) {
     1381            psFree(object);
     1382            exit(EXIT_FAILURE);
     1383        }
     1384        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     1385            psFree(object);
     1386            exit(EXIT_FAILURE);
     1387        }
     1388        if (!object->parent == -32) {
     1389            psFree(object);
     1390            exit(EXIT_FAILURE);
     1391        }
     1392
     1393        psFree(object);
     1394    }
     1395
     1396    {
     1397        detInputExpRow  *object;
     1398
     1399        object = detInputExpRowAlloc(-64, -32, -64, true    );
     1400
     1401        if (!object) {
     1402            exit(EXIT_FAILURE);
     1403        }
     1404
     1405        if (!object->det_id == -64) {
     1406            psFree(object);
     1407            exit(EXIT_FAILURE);
     1408        }
     1409        if (!object->iteration == -32) {
     1410            psFree(object);
     1411            exit(EXIT_FAILURE);
     1412        }
     1413        if (!object->exp_id == -64) {
     1414            psFree(object);
     1415            exit(EXIT_FAILURE);
     1416        }
     1417        if (!object->include == true) {
     1418            psFree(object);
     1419            exit(EXIT_FAILURE);
     1420        }
     1421
     1422        psFree(object);
     1423    }
     1424
     1425    {
     1426        detProcessedImfileRow *object;
     1427
     1428        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    );
     1429
     1430        if (!object) {
     1431            exit(EXIT_FAILURE);
     1432        }
     1433
     1434        if (!object->det_id == -64) {
     1435            psFree(object);
     1436            exit(EXIT_FAILURE);
     1437        }
     1438        if (!object->exp_id == -64) {
    2251439            psFree(object);
    2261440            exit(EXIT_FAILURE);
     
    2301444            exit(EXIT_FAILURE);
    2311445        }
    232         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    233             psFree(object);
    234             exit(EXIT_FAILURE);
    235         }
    2361446        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    2371447            psFree(object);
    2381448            exit(EXIT_FAILURE);
    2391449        }
    240 
    241         psFree(object);
    242     }
    243 
    244     {
    245         newExpRow       *object;
    246 
    247         object = newExpRowAlloc("a string", "a string", "a string", "a string", -32, "a string"    );
    248 
    249         if (!object) {
    250             exit(EXIT_FAILURE);
    251         }
    252 
    253         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    254             psFree(object);
    255             exit(EXIT_FAILURE);
    256         }
    257         if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
    258             psFree(object);
    259             exit(EXIT_FAILURE);
    260         }
    261         if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    262             psFree(object);
    263             exit(EXIT_FAILURE);
    264         }
    265         if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
    266             psFree(object);
    267             exit(EXIT_FAILURE);
    268         }
    269         if (!object->imfiles == -32) {
    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 
    278         psFree(object);
    279     }
    280 
    281     {
    282         newImfileRow    *object;
    283 
    284         object = newImfileRowAlloc("a string", "a string", "a string", "a string"    );
    285 
    286         if (!object) {
    287             exit(EXIT_FAILURE);
    288         }
    289 
    290         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    291             psFree(object);
    292             exit(EXIT_FAILURE);
    293         }
    294         if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
     1450        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     1451            psFree(object);
     1452            exit(EXIT_FAILURE);
     1453        }
     1454        if (!object->bg == 64.64) {
     1455            psFree(object);
     1456            exit(EXIT_FAILURE);
     1457        }
     1458        if (!object->bg_stdev == 64.64) {
     1459            psFree(object);
     1460            exit(EXIT_FAILURE);
     1461        }
     1462        if (!object->bg_mean_stdev == 64.64) {
     1463            psFree(object);
     1464            exit(EXIT_FAILURE);
     1465        }
     1466        if (!object->fringe_0 == 64.64) {
     1467            psFree(object);
     1468            exit(EXIT_FAILURE);
     1469        }
     1470        if (!object->fringe_1 == 64.64) {
     1471            psFree(object);
     1472            exit(EXIT_FAILURE);
     1473        }
     1474        if (!object->fringe_2 == 64.64) {
     1475            psFree(object);
     1476            exit(EXIT_FAILURE);
     1477        }
     1478        if (!object->user_1 == 64.64) {
     1479            psFree(object);
     1480            exit(EXIT_FAILURE);
     1481        }
     1482        if (!object->user_2 == 64.64) {
     1483            psFree(object);
     1484            exit(EXIT_FAILURE);
     1485        }
     1486        if (!object->user_3 == 64.64) {
     1487            psFree(object);
     1488            exit(EXIT_FAILURE);
     1489        }
     1490        if (!object->user_4 == 64.64) {
     1491            psFree(object);
     1492            exit(EXIT_FAILURE);
     1493        }
     1494        if (!object->user_5 == 64.64) {
     1495            psFree(object);
     1496            exit(EXIT_FAILURE);
     1497        }
     1498        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1499            psFree(object);
     1500            exit(EXIT_FAILURE);
     1501        }
     1502        if (!object->fault == -16) {
     1503            psFree(object);
     1504            exit(EXIT_FAILURE);
     1505        }
     1506
     1507        psFree(object);
     1508    }
     1509
     1510    {
     1511        detProcessedExpRow *object;
     1512
     1513        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    );
     1514
     1515        if (!object) {
     1516            exit(EXIT_FAILURE);
     1517        }
     1518
     1519        if (!object->det_id == -64) {
     1520            psFree(object);
     1521            exit(EXIT_FAILURE);
     1522        }
     1523        if (!object->exp_id == -64) {
     1524            psFree(object);
     1525            exit(EXIT_FAILURE);
     1526        }
     1527        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     1528            psFree(object);
     1529            exit(EXIT_FAILURE);
     1530        }
     1531        if (!object->bg == 64.64) {
     1532            psFree(object);
     1533            exit(EXIT_FAILURE);
     1534        }
     1535        if (!object->bg_stdev == 64.64) {
     1536            psFree(object);
     1537            exit(EXIT_FAILURE);
     1538        }
     1539        if (!object->bg_mean_stdev == 64.64) {
     1540            psFree(object);
     1541            exit(EXIT_FAILURE);
     1542        }
     1543        if (!object->fringe_0 == 64.64) {
     1544            psFree(object);
     1545            exit(EXIT_FAILURE);
     1546        }
     1547        if (!object->fringe_1 == 64.64) {
     1548            psFree(object);
     1549            exit(EXIT_FAILURE);
     1550        }
     1551        if (!object->fringe_2 == 64.64) {
     1552            psFree(object);
     1553            exit(EXIT_FAILURE);
     1554        }
     1555        if (!object->user_1 == 64.64) {
     1556            psFree(object);
     1557            exit(EXIT_FAILURE);
     1558        }
     1559        if (!object->user_2 == 64.64) {
     1560            psFree(object);
     1561            exit(EXIT_FAILURE);
     1562        }
     1563        if (!object->user_3 == 64.64) {
     1564            psFree(object);
     1565            exit(EXIT_FAILURE);
     1566        }
     1567        if (!object->user_4 == 64.64) {
     1568            psFree(object);
     1569            exit(EXIT_FAILURE);
     1570        }
     1571        if (!object->user_5 == 64.64) {
     1572            psFree(object);
     1573            exit(EXIT_FAILURE);
     1574        }
     1575        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1576            psFree(object);
     1577            exit(EXIT_FAILURE);
     1578        }
     1579        if (!object->fault == -16) {
     1580            psFree(object);
     1581            exit(EXIT_FAILURE);
     1582        }
     1583
     1584        psFree(object);
     1585    }
     1586
     1587    {
     1588        detStackedImfileRow *object;
     1589
     1590        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    );
     1591
     1592        if (!object) {
     1593            exit(EXIT_FAILURE);
     1594        }
     1595
     1596        if (!object->det_id == -64) {
     1597            psFree(object);
     1598            exit(EXIT_FAILURE);
     1599        }
     1600        if (!object->iteration == -32) {
    2951601            psFree(object);
    2961602            exit(EXIT_FAILURE);
     
    3041610            exit(EXIT_FAILURE);
    3051611        }
    306 
    307         psFree(object);
    308     }
    309 
    310     {
    311         rawExpRow       *object;
    312 
    313         object = rawExpRowAlloc("a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z", "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    );
    314 
    315         if (!object) {
    316             exit(EXIT_FAILURE);
    317         }
    318 
    319         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    320             psFree(object);
    321             exit(EXIT_FAILURE);
    322         }
    323         if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
    324             psFree(object);
    325             exit(EXIT_FAILURE);
    326         }
    327         if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    328             psFree(object);
    329             exit(EXIT_FAILURE);
    330         }
    331         if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
    332             psFree(object);
    333             exit(EXIT_FAILURE);
    334         }
    335             psFree(object);
    336             exit(EXIT_FAILURE);
    337         }
    338         if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
    339             psFree(object);
    340             exit(EXIT_FAILURE);
    341         }
    342         if (!object->imfiles == -32) {
    343             psFree(object);
    344             exit(EXIT_FAILURE);
    345         }
    346         if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
    347             psFree(object);
    348             exit(EXIT_FAILURE);
    349         }
    350         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    351             psFree(object);
    352             exit(EXIT_FAILURE);
    353         }
    354         if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
    355             psFree(object);
    356             exit(EXIT_FAILURE);
    357         }
    358         if (!object->airmass == 32.32) {
    359             psFree(object);
    360             exit(EXIT_FAILURE);
    361         }
    362         if (!object->ra == 64.64) {
    363             psFree(object);
    364             exit(EXIT_FAILURE);
    365         }
    366         if (!object->decl == 64.64) {
    367             psFree(object);
    368             exit(EXIT_FAILURE);
    369         }
    370         if (!object->exp_time == 32.32) {
    371             psFree(object);
    372             exit(EXIT_FAILURE);
    373         }
    374         if (!object->sat_pixel_frac == 32.32) {
     1612        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    3751613            psFree(object);
    3761614            exit(EXIT_FAILURE);
     
    3881626            exit(EXIT_FAILURE);
    3891627        }
    390         if (!object->alt == 64.64) {
    391             psFree(object);
    392             exit(EXIT_FAILURE);
    393         }
    394         if (!object->az == 64.64) {
    395             psFree(object);
    396             exit(EXIT_FAILURE);
    397         }
    398         if (!object->ccd_temp == 32.32) {
    399             psFree(object);
    400             exit(EXIT_FAILURE);
    401         }
    402         if (!object->posang == 64.64) {
    403             psFree(object);
    404             exit(EXIT_FAILURE);
    405         }
    4061628        if (!object->user_1 == 64.64) {
    4071629            psFree(object);
     
    4241646            exit(EXIT_FAILURE);
    4251647        }
    426         if (strncmp(object->object, "a string", MAX_STRING_LENGTH)) {
    427             psFree(object);
    428             exit(EXIT_FAILURE);
    429         }
    430         if (!object->solang == 32.32) {
    431             psFree(object);
    432             exit(EXIT_FAILURE);
    433         }
    4341648        if (!object->fault == -16) {
    4351649            psFree(object);
     
    4411655
    4421656    {
    443         rawImfileRow    *object;
    444 
    445         object = rawImfileRowAlloc("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", "0001-01-01T00:00:00Z", -16    );
    446 
    447         if (!object) {
    448             exit(EXIT_FAILURE);
    449         }
    450 
    451         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
     1657        detNormalizedStatImfileRow *object;
     1658
     1659        object = detNormalizedStatImfileRowAlloc(-64, -32, "a string", 32.32, -16    );
     1660
     1661        if (!object) {
     1662            exit(EXIT_FAILURE);
     1663        }
     1664
     1665        if (!object->det_id == -64) {
     1666            psFree(object);
     1667            exit(EXIT_FAILURE);
     1668        }
     1669        if (!object->iteration == -32) {
    4521670            psFree(object);
    4531671            exit(EXIT_FAILURE);
     
    4571675            exit(EXIT_FAILURE);
    4581676        }
     1677        if (!object->norm == 32.32) {
     1678            psFree(object);
     1679            exit(EXIT_FAILURE);
     1680        }
     1681        if (!object->fault == -16) {
     1682            psFree(object);
     1683            exit(EXIT_FAILURE);
     1684        }
     1685
     1686        psFree(object);
     1687    }
     1688
     1689    {
     1690        detNormalizedImfileRow *object;
     1691
     1692        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    );
     1693
     1694        if (!object) {
     1695            exit(EXIT_FAILURE);
     1696        }
     1697
     1698        if (!object->det_id == -64) {
     1699            psFree(object);
     1700            exit(EXIT_FAILURE);
     1701        }
     1702        if (!object->iteration == -32) {
     1703            psFree(object);
     1704            exit(EXIT_FAILURE);
     1705        }
     1706        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     1707            psFree(object);
     1708            exit(EXIT_FAILURE);
     1709        }
    4591710        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    4601711            psFree(object);
    4611712            exit(EXIT_FAILURE);
    4621713        }
    463         if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
    464             psFree(object);
    465             exit(EXIT_FAILURE);
    466         }
    467         if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
    468             psFree(object);
    469             exit(EXIT_FAILURE);
    470         }
    471         if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
    472             psFree(object);
    473             exit(EXIT_FAILURE);
    474         }
    475         if (!object->airmass == 32.32) {
    476             psFree(object);
    477             exit(EXIT_FAILURE);
    478         }
    479         if (!object->ra == 64.64) {
    480             psFree(object);
    481             exit(EXIT_FAILURE);
    482         }
    483         if (!object->decl == 64.64) {
    484             psFree(object);
    485             exit(EXIT_FAILURE);
    486         }
    487         if (!object->exp_time == 32.32) {
    488             psFree(object);
    489             exit(EXIT_FAILURE);
    490         }
    491         if (!object->sat_pixel_frac == 32.32) {
    492             psFree(object);
    493             exit(EXIT_FAILURE);
    494         }
    4951714        if (!object->bg == 64.64) {
    4961715            psFree(object);
     
    5051724            exit(EXIT_FAILURE);
    5061725        }
    507         if (!object->alt == 64.64) {
    508             psFree(object);
    509             exit(EXIT_FAILURE);
    510         }
    511         if (!object->az == 64.64) {
    512             psFree(object);
    513             exit(EXIT_FAILURE);
    514         }
    515         if (!object->ccd_temp == 32.32) {
    516             psFree(object);
    517             exit(EXIT_FAILURE);
    518         }
    519         if (!object->posang == 64.64) {
    520             psFree(object);
    521             exit(EXIT_FAILURE);
    522         }
    5231726        if (!object->user_1 == 64.64) {
    5241727            psFree(object);
     
    5411744            exit(EXIT_FAILURE);
    5421745        }
    543         if (strncmp(object->object, "a string", MAX_STRING_LENGTH)) {
    544             psFree(object);
    545             exit(EXIT_FAILURE);
    546         }
     1746        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    5471747            psFree(object);
    5481748            exit(EXIT_FAILURE);
     
    5571757
    5581758    {
    559         guidePendingExpRow *object;
    560 
    561         object = guidePendingExpRowAlloc(-64, "a string", "a string"    );
    562 
    563         if (!object) {
    564             exit(EXIT_FAILURE);
    565         }
    566 
    567         if (!object->guide_id == -64) {
    568             psFree(object);
    569             exit(EXIT_FAILURE);
    570         }
    571         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
     1759        detNormalizedExpRow *object;
     1760
     1761        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    );
     1762
     1763        if (!object) {
     1764            exit(EXIT_FAILURE);
     1765        }
     1766
     1767        if (!object->det_id == -64) {
     1768            psFree(object);
     1769            exit(EXIT_FAILURE);
     1770        }
     1771        if (!object->iteration == -32) {
    5721772            psFree(object);
    5731773            exit(EXIT_FAILURE);
     
    5771777            exit(EXIT_FAILURE);
    5781778        }
    579 
    580         psFree(object);
    581     }
    582 
    583     {
    584         chipPendingExpRow *object;
    585 
    586         object = chipPendingExpRowAlloc(-64, "a string", -64, "a string", "a string", "a string", "a string", "a string"    );
    587 
    588         if (!object) {
    589             exit(EXIT_FAILURE);
    590         }
    591 
    592         if (!object->chip_id == -64) {
    593             psFree(object);
    594             exit(EXIT_FAILURE);
    595         }
    596         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    597             psFree(object);
    598             exit(EXIT_FAILURE);
    599         }
    600         if (!object->guide_id == -64) {
    601             psFree(object);
    602             exit(EXIT_FAILURE);
    603         }
    604         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    605             psFree(object);
    606             exit(EXIT_FAILURE);
    607         }
    608         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    609             psFree(object);
    610             exit(EXIT_FAILURE);
    611         }
    612         if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
    613             psFree(object);
    614             exit(EXIT_FAILURE);
    615         }
    616         if (strncmp(object->expgroup, "a string", MAX_STRING_LENGTH)) {
    617             psFree(object);
    618             exit(EXIT_FAILURE);
    619         }
    620         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    621             psFree(object);
    622             exit(EXIT_FAILURE);
    623         }
    624 
    625         psFree(object);
    626     }
    627 
    628     {
    629         chipPendingImfileRow *object;
    630 
    631         object = chipPendingImfileRowAlloc(-64, "a string", "a string"    );
    632 
    633         if (!object) {
    634             exit(EXIT_FAILURE);
    635         }
    636 
    637         if (!object->chip_id == -64) {
     1779        if (!object->bg == 64.64) {
     1780            psFree(object);
     1781            exit(EXIT_FAILURE);
     1782        }
     1783        if (!object->bg_stdev == 64.64) {
     1784            psFree(object);
     1785            exit(EXIT_FAILURE);
     1786        }
     1787        if (!object->bg_mean_stdev == 64.64) {
     1788            psFree(object);
     1789            exit(EXIT_FAILURE);
     1790        }
     1791        if (!object->user_1 == 64.64) {
     1792            psFree(object);
     1793            exit(EXIT_FAILURE);
     1794        }
     1795        if (!object->user_2 == 64.64) {
     1796            psFree(object);
     1797            exit(EXIT_FAILURE);
     1798        }
     1799        if (!object->user_3 == 64.64) {
     1800            psFree(object);
     1801            exit(EXIT_FAILURE);
     1802        }
     1803        if (!object->user_4 == 64.64) {
     1804            psFree(object);
     1805            exit(EXIT_FAILURE);
     1806        }
     1807        if (!object->user_5 == 64.64) {
     1808            psFree(object);
     1809            exit(EXIT_FAILURE);
     1810        }
     1811        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1812            psFree(object);
     1813            exit(EXIT_FAILURE);
     1814        }
     1815        if (!object->fault == -16) {
     1816            psFree(object);
     1817            exit(EXIT_FAILURE);
     1818        }
     1819
     1820        psFree(object);
     1821    }
     1822
     1823    {
     1824        detResidImfileRow *object;
     1825
     1826        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    );
     1827
     1828        if (!object) {
     1829            exit(EXIT_FAILURE);
     1830        }
     1831
     1832        if (!object->det_id == -64) {
     1833            psFree(object);
     1834            exit(EXIT_FAILURE);
     1835        }
     1836        if (!object->iteration == -32) {
     1837            psFree(object);
     1838            exit(EXIT_FAILURE);
     1839        }
     1840        if (!object->exp_id == -64) {
    6381841            psFree(object);
    6391842            exit(EXIT_FAILURE);
     
    6471850            exit(EXIT_FAILURE);
    6481851        }
    649 
    650         psFree(object);
    651     }
    652 
    653     {
    654         chipProcessedExpRow *object;
    655 
    656         object = chipProcessedExpRowAlloc(-64, "a string", -64, "a string", "a string", "a string", "a string", "a string"    );
    657 
    658         if (!object) {
    659             exit(EXIT_FAILURE);
    660         }
    661 
    662         if (!object->chip_id == -64) {
    663             psFree(object);
    664             exit(EXIT_FAILURE);
    665         }
    666         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    667             psFree(object);
    668             exit(EXIT_FAILURE);
    669         }
    670         if (!object->guide_id == -64) {
    671             psFree(object);
    672             exit(EXIT_FAILURE);
    673         }
    674         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    675             psFree(object);
    676             exit(EXIT_FAILURE);
    677         }
    678         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    679             psFree(object);
    680             exit(EXIT_FAILURE);
    681         }
    682         if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
    683             psFree(object);
    684             exit(EXIT_FAILURE);
    685         }
    686         if (strncmp(object->expgroup, "a string", MAX_STRING_LENGTH)) {
    687             psFree(object);
    688             exit(EXIT_FAILURE);
    689         }
    690         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    691             psFree(object);
    692             exit(EXIT_FAILURE);
    693         }
    694 
    695         psFree(object);
    696     }
    697 
    698     {
    699         chipMaskRow     *object;
    700 
    701         object = chipMaskRowAlloc("a string"    );
    702 
    703         if (!object) {
    704             exit(EXIT_FAILURE);
    705         }
    706 
    707         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    708             psFree(object);
    709             exit(EXIT_FAILURE);
    710         }
    711 
    712         psFree(object);
    713     }
    714 
    715     {
    716         chipProcessedImfileRow *object;
    717 
    718         object = chipProcessedImfileRowAlloc(-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    );
    719 
    720         if (!object) {
    721             exit(EXIT_FAILURE);
    722         }
    723 
    724         if (!object->chip_id == -64) {
    725             psFree(object);
    726             exit(EXIT_FAILURE);
    727         }
    728         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    729             psFree(object);
    730             exit(EXIT_FAILURE);
    731         }
    732         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    733             psFree(object);
    734             exit(EXIT_FAILURE);
    735         }
    736         if (!object->bg == 32.32) {
    737             psFree(object);
    738             exit(EXIT_FAILURE);
    739         }
    740         if (!object->bg_stdev == 32.32) {
    741             psFree(object);
    742             exit(EXIT_FAILURE);
    743         }
    744         if (!object->bg_mean_stdev == 32.32) {
    745             psFree(object);
    746             exit(EXIT_FAILURE);
    747         }
    748         if (!object->bias == 32.32) {
    749             psFree(object);
    750             exit(EXIT_FAILURE);
    751         }
    752         if (!object->bias_stdev == 32.32) {
    753             psFree(object);
    754             exit(EXIT_FAILURE);
    755         }
    756         if (!object->fringe_0 == 32.32) {
    757             psFree(object);
    758             exit(EXIT_FAILURE);
    759         }
    760         if (!object->fringe_1 == 32.32) {
    761             psFree(object);
    762             exit(EXIT_FAILURE);
    763         }
    764         if (!object->fringe_2 == 32.32) {
    765             psFree(object);
    766             exit(EXIT_FAILURE);
    767         }
    768         if (!object->sigma_ra == 32.32) {
    769             psFree(object);
    770             exit(EXIT_FAILURE);
    771         }
    772         if (!object->sigma_dec == 32.32) {
    773             psFree(object);
    774             exit(EXIT_FAILURE);
    775         }
    776         if (!object->ap_resid == 32.32) {
    777             psFree(object);
    778             exit(EXIT_FAILURE);
    779         }
    780         if (!object->ap_resid_stdev == 32.32) {
    781             psFree(object);
    782             exit(EXIT_FAILURE);
    783         }
    784         if (!object->fwhm == 32.32) {
    785             psFree(object);
    786             exit(EXIT_FAILURE);
    787         }
    788         if (!object->fwhm_range == 32.32) {
    789             psFree(object);
    790             exit(EXIT_FAILURE);
    791         }
    792         if (!object->n_stars == -32) {
    793             psFree(object);
    794             exit(EXIT_FAILURE);
    795         }
    796         if (!object->n_extended == -32) {
    797             psFree(object);
    798             exit(EXIT_FAILURE);
    799         }
    800         if (!object->n_cr == -32) {
    801             psFree(object);
    802             exit(EXIT_FAILURE);
    803         }
    804         if (!object->n_astrom == -32) {
     1852        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     1853            psFree(object);
     1854            exit(EXIT_FAILURE);
     1855        }
     1856        if (!object->bg == 64.64) {
     1857            psFree(object);
     1858            exit(EXIT_FAILURE);
     1859        }
     1860        if (!object->bg_stdev == 64.64) {
     1861            psFree(object);
     1862            exit(EXIT_FAILURE);
     1863        }
     1864        if (!object->bg_mean_stdev == 64.64) {
     1865            psFree(object);
     1866            exit(EXIT_FAILURE);
     1867        }
     1868        if (!object->bin_stdev == 64.64) {
     1869            psFree(object);
     1870            exit(EXIT_FAILURE);
     1871        }
     1872        if (!object->fringe_0 == 64.64) {
     1873            psFree(object);
     1874            exit(EXIT_FAILURE);
     1875        }
     1876        if (!object->fringe_1 == 64.64) {
     1877            psFree(object);
     1878            exit(EXIT_FAILURE);
     1879        }
     1880        if (!object->fringe_2 == 64.64) {
     1881            psFree(object);
     1882            exit(EXIT_FAILURE);
     1883        }
     1884        if (!object->user_1 == 64.64) {
     1885            psFree(object);
     1886            exit(EXIT_FAILURE);
     1887        }
     1888        if (!object->user_2 == 64.64) {
     1889            psFree(object);
     1890            exit(EXIT_FAILURE);
     1891        }
     1892        if (!object->user_3 == 64.64) {
     1893            psFree(object);
     1894            exit(EXIT_FAILURE);
     1895        }
     1896        if (!object->user_4 == 64.64) {
     1897            psFree(object);
     1898            exit(EXIT_FAILURE);
     1899        }
     1900        if (!object->user_5 == 64.64) {
    8051901            psFree(object);
    8061902            exit(EXIT_FAILURE);
     
    8191915
    8201916    {
    821         camPendingExpRow *object;
    822 
    823         object = camPendingExpRowAlloc(-64, -64, "a string", "a string", "a string", "a string", "a string"    );
    824 
    825         if (!object) {
    826             exit(EXIT_FAILURE);
    827         }
    828 
    829         if (!object->cam_id == -64) {
    830             psFree(object);
    831             exit(EXIT_FAILURE);
    832         }
    833         if (!object->chip_id == -64) {
    834             psFree(object);
    835             exit(EXIT_FAILURE);
    836         }
    837         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    838             psFree(object);
    839             exit(EXIT_FAILURE);
    840         }
    841         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    842             psFree(object);
    843             exit(EXIT_FAILURE);
    844         }
    845         if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
    846             psFree(object);
    847             exit(EXIT_FAILURE);
    848         }
    849         if (strncmp(object->expgroup, "a string", MAX_STRING_LENGTH)) {
    850             psFree(object);
    851             exit(EXIT_FAILURE);
    852         }
    853         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    854             psFree(object);
    855             exit(EXIT_FAILURE);
    856         }
    857 
    858         psFree(object);
    859     }
    860 
    861     {
    862         camProcessedExpRow *object;
    863 
    864         object = camProcessedExpRowAlloc(-64, -64, "a string", "a string", "a string", "a string", "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, "a string", -16    );
    865 
    866         if (!object) {
    867             exit(EXIT_FAILURE);
    868         }
    869 
    870         if (!object->cam_id == -64) {
    871             psFree(object);
    872             exit(EXIT_FAILURE);
    873         }
    874         if (!object->chip_id == -64) {
    875             psFree(object);
    876             exit(EXIT_FAILURE);
    877         }
    878         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    879             psFree(object);
    880             exit(EXIT_FAILURE);
    881         }
    882         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    883             psFree(object);
    884             exit(EXIT_FAILURE);
    885         }
    886         if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
    887             psFree(object);
    888             exit(EXIT_FAILURE);
    889         }
    890         if (strncmp(object->expgroup, "a string", MAX_STRING_LENGTH)) {
    891             psFree(object);
    892             exit(EXIT_FAILURE);
    893         }
    894         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    895             psFree(object);
    896             exit(EXIT_FAILURE);
    897         }
    898         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    899             psFree(object);
    900             exit(EXIT_FAILURE);
    901         }
    902         if (!object->bg == 32.32) {
    903             psFree(object);
    904             exit(EXIT_FAILURE);
    905         }
    906         if (!object->bg_stdev == 32.32) {
    907             psFree(object);
    908             exit(EXIT_FAILURE);
    909         }
    910         if (!object->bg_mean_stdev == 32.32) {
    911             psFree(object);
    912             exit(EXIT_FAILURE);
    913         }
    914         if (!object->sigma_ra == 32.32) {
    915             psFree(object);
    916             exit(EXIT_FAILURE);
    917         }
    918         if (!object->sigma_dec == 32.32) {
    919             psFree(object);
    920             exit(EXIT_FAILURE);
    921         }
    922         if (!object->zp_mean == 32.32) {
    923             psFree(object);
    924             exit(EXIT_FAILURE);
    925         }
    926         if (!object->zp_stdev == 32.32) {
    927             psFree(object);
    928             exit(EXIT_FAILURE);
    929         }
    930         if (!object->fwhm == 32.32) {
    931             psFree(object);
    932             exit(EXIT_FAILURE);
    933         }
    934         if (!object->fwhm_range == 32.32) {
    935             psFree(object);
    936             exit(EXIT_FAILURE);
    937         }
    938         if (!object->n_stars == -32) {
    939             psFree(object);
    940             exit(EXIT_FAILURE);
    941         }
    942         if (!object->n_extended == -32) {
    943             psFree(object);
    944             exit(EXIT_FAILURE);
    945         }
    946         if (!object->n_cr == -32) {
    947             psFree(object);
    948             exit(EXIT_FAILURE);
    949         }
    950         if (!object->n_astrom == -32) {
    951             psFree(object);
    952             exit(EXIT_FAILURE);
    953         }
    954         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    955             psFree(object);
    956             exit(EXIT_FAILURE);
    957         }
    958         if (!object->fault == -16) {
    959             psFree(object);
    960             exit(EXIT_FAILURE);
    961         }
    962 
    963         psFree(object);
    964     }
    965 
    966     {
    967         camMaskRow      *object;
    968 
    969         object = camMaskRowAlloc("a string"    );
    970 
    971         if (!object) {
    972             exit(EXIT_FAILURE);
    973         }
    974 
    975         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    976             psFree(object);
    977             exit(EXIT_FAILURE);
    978         }
    979 
    980         psFree(object);
    981     }
    982 
    983     {
    984         warpRunRow      *object;
    985 
    986         object = warpRunRowAlloc(-64, "a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z"    );
    987 
    988         if (!object) {
    989             exit(EXIT_FAILURE);
    990         }
    991 
    992         if (!object->warp_id == -64) {
    993             psFree(object);
    994             exit(EXIT_FAILURE);
    995         }
    996         if (strncmp(object->mode, "a string", MAX_STRING_LENGTH)) {
    997             psFree(object);
    998             exit(EXIT_FAILURE);
    999         }
    1000         if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    1001             psFree(object);
    1002             exit(EXIT_FAILURE);
    1003         }
    1004         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    1005             psFree(object);
    1006             exit(EXIT_FAILURE);
    1007         }
    1008         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    1009             psFree(object);
    1010             exit(EXIT_FAILURE);
    1011         }
    1012             psFree(object);
    1013             exit(EXIT_FAILURE);
    1014         }
    1015 
    1016         psFree(object);
    1017     }
    1018 
    1019     {
    1020         warpInputExpRow *object;
    1021 
    1022         object = warpInputExpRowAlloc(-64, -64, true    );
    1023 
    1024         if (!object) {
    1025             exit(EXIT_FAILURE);
    1026         }
    1027 
    1028         if (!object->warp_id == -64) {
    1029             psFree(object);
    1030             exit(EXIT_FAILURE);
    1031         }
    1032         if (!object->cam_id == -64) {
    1033             psFree(object);
    1034             exit(EXIT_FAILURE);
    1035         }
    1036         if (!object->magiced == true) {
    1037             psFree(object);
    1038             exit(EXIT_FAILURE);
    1039         }
    1040 
    1041         psFree(object);
    1042     }
    1043 
    1044     {
    1045         warpSkyCellMapRow *object;
    1046 
    1047         object = warpSkyCellMapRowAlloc(-64, "a string", "a string", -64, "a string", -16    );
    1048 
    1049         if (!object) {
    1050             exit(EXIT_FAILURE);
    1051         }
    1052 
    1053         if (!object->warp_id == -64) {
    1054             psFree(object);
    1055             exit(EXIT_FAILURE);
    1056         }
    1057         if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
    1058             psFree(object);
    1059             exit(EXIT_FAILURE);
    1060         }
    1061         if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
    1062             psFree(object);
    1063             exit(EXIT_FAILURE);
    1064         }
    1065         if (!object->cam_id == -64) {
    1066             psFree(object);
    1067             exit(EXIT_FAILURE);
    1068         }
    1069         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    1070             psFree(object);
    1071             exit(EXIT_FAILURE);
    1072         }
    1073         if (!object->fault == -16) {
    1074             psFree(object);
    1075             exit(EXIT_FAILURE);
    1076         }
    1077 
    1078         psFree(object);
    1079     }
    1080 
    1081     {
    1082         warpSkyfileRow  *object;
    1083 
    1084         object = warpSkyfileRowAlloc(-64, "a string", "a string", "a string", "a string", 64.64, 64.64    );
    1085 
    1086         if (!object) {
    1087             exit(EXIT_FAILURE);
    1088         }
    1089 
    1090         if (!object->warp_id == -64) {
    1091             psFree(object);
    1092             exit(EXIT_FAILURE);
    1093         }
    1094         if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
    1095             psFree(object);
    1096             exit(EXIT_FAILURE);
    1097         }
    1098         if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
    1099             psFree(object);
    1100             exit(EXIT_FAILURE);
    1101         }
    1102         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    1103             psFree(object);
    1104             exit(EXIT_FAILURE);
    1105         }
    1106         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    1107             psFree(object);
    1108             exit(EXIT_FAILURE);
    1109         }
    1110         if (!object->bg == 64.64) {
    1111             psFree(object);
    1112             exit(EXIT_FAILURE);
    1113         }
    1114         if (!object->bg_stdev == 64.64) {
    1115             psFree(object);
    1116             exit(EXIT_FAILURE);
    1117         }
    1118 
    1119         psFree(object);
    1120     }
    1121 
    1122     {
    1123         diffRunRow      *object;
    1124 
    1125         object = diffRunRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string"    );
    1126 
    1127         if (!object) {
    1128             exit(EXIT_FAILURE);
    1129         }
    1130 
    1131         if (!object->diff_id == -64) {
    1132             psFree(object);
    1133             exit(EXIT_FAILURE);
    1134         }
    1135         if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    1136             psFree(object);
    1137             exit(EXIT_FAILURE);
    1138         }
    1139         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    1140             psFree(object);
    1141             exit(EXIT_FAILURE);
    1142         }
    1143         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    1144             psFree(object);
    1145             exit(EXIT_FAILURE);
    1146         }
    1147             psFree(object);
    1148             exit(EXIT_FAILURE);
    1149         }
    1150         if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
    1151             psFree(object);
    1152             exit(EXIT_FAILURE);
    1153         }
    1154         if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
    1155             psFree(object);
    1156             exit(EXIT_FAILURE);
    1157         }
    1158 
    1159         psFree(object);
    1160     }
    1161 
    1162     {
    1163         diffInputSkyfileRow *object;
    1164 
    1165         object = diffInputSkyfileRowAlloc(-64, -64, "a string", "a string", "a string", true    );
    1166 
    1167         if (!object) {
    1168             exit(EXIT_FAILURE);
    1169         }
    1170 
    1171         if (!object->diff_id == -64) {
    1172             psFree(object);
    1173             exit(EXIT_FAILURE);
    1174         }
    1175         if (!object->warp_id == -64) {
    1176             psFree(object);
    1177             exit(EXIT_FAILURE);
    1178         }
    1179         if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
    1180             psFree(object);
    1181             exit(EXIT_FAILURE);
    1182         }
    1183         if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
    1184             psFree(object);
    1185             exit(EXIT_FAILURE);
    1186         }
    1187         if (strncmp(object->kind, "a string", MAX_STRING_LENGTH)) {
    1188             psFree(object);
    1189             exit(EXIT_FAILURE);
    1190         }
    1191         if (!object->template == true) {
    1192             psFree(object);
    1193             exit(EXIT_FAILURE);
    1194         }
    1195 
    1196         psFree(object);
    1197     }
    1198 
    1199     {
    1200         diffSkyfileRow  *object;
    1201 
    1202         object = diffSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64    );
    1203 
    1204         if (!object) {
    1205             exit(EXIT_FAILURE);
    1206         }
    1207 
    1208         if (!object->diff_id == -64) {
    1209             psFree(object);
    1210             exit(EXIT_FAILURE);
    1211         }
    1212         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    1213             psFree(object);
    1214             exit(EXIT_FAILURE);
    1215         }
    1216         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    1217             psFree(object);
    1218             exit(EXIT_FAILURE);
    1219         }
    1220         if (!object->bg == 64.64) {
    1221             psFree(object);
    1222             exit(EXIT_FAILURE);
    1223         }
    1224         if (!object->bg_stdev == 64.64) {
    1225             psFree(object);
    1226             exit(EXIT_FAILURE);
    1227         }
    1228 
    1229         psFree(object);
    1230     }
    1231 
    1232     {
    1233         stackRunRow     *object;
    1234 
    1235         object = stackRunRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string"    );
    1236 
    1237         if (!object) {
    1238             exit(EXIT_FAILURE);
    1239         }
    1240 
    1241         if (!object->stack_id == -64) {
    1242             psFree(object);
    1243             exit(EXIT_FAILURE);
    1244         }
    1245         if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    1246             psFree(object);
    1247             exit(EXIT_FAILURE);
    1248         }
    1249         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    1250             psFree(object);
    1251             exit(EXIT_FAILURE);
    1252         }
    1253         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    1254             psFree(object);
    1255             exit(EXIT_FAILURE);
    1256         }
    1257             psFree(object);
    1258             exit(EXIT_FAILURE);
    1259         }
    1260         if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
    1261             psFree(object);
    1262             exit(EXIT_FAILURE);
    1263         }
    1264         if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
    1265             psFree(object);
    1266             exit(EXIT_FAILURE);
    1267         }
    1268 
    1269         psFree(object);
    1270     }
    1271 
    1272     {
    1273         stackInputSkyfileRow *object;
    1274 
    1275         object = stackInputSkyfileRowAlloc(-64, -64    );
    1276 
    1277         if (!object) {
    1278             exit(EXIT_FAILURE);
    1279         }
    1280 
    1281         if (!object->stack_id == -64) {
    1282             psFree(object);
    1283             exit(EXIT_FAILURE);
    1284         }
    1285         if (!object->warp_id == -64) {
    1286             psFree(object);
    1287             exit(EXIT_FAILURE);
    1288         }
    1289 
    1290         psFree(object);
    1291     }
    1292 
    1293     {
    1294         stackSumSkyfileRow *object;
    1295 
    1296         object = stackSumSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64    );
    1297 
    1298         if (!object) {
    1299             exit(EXIT_FAILURE);
    1300         }
    1301 
    1302         if (!object->stack_id == -64) {
    1303             psFree(object);
    1304             exit(EXIT_FAILURE);
    1305         }
    1306         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    1307             psFree(object);
    1308             exit(EXIT_FAILURE);
    1309         }
    1310         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    1311             psFree(object);
    1312             exit(EXIT_FAILURE);
    1313         }
    1314         if (!object->bg == 64.64) {
    1315             psFree(object);
    1316             exit(EXIT_FAILURE);
    1317         }
    1318         if (!object->bg_stdev == 64.64) {
    1319             psFree(object);
    1320             exit(EXIT_FAILURE);
    1321         }
    1322 
    1323         psFree(object);
    1324     }
    1325 
    1326     {
    1327         detRunRow       *object;
    1328 
    1329         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    );
     1917        detResidExpRow  *object;
     1918
     1919        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    );
    13301920
    13311921        if (!object) {
     
    13411931            exit(EXIT_FAILURE);
    13421932        }
    1343         if (strncmp(object->det_type, "a string", MAX_STRING_LENGTH)) {
    1344             psFree(object);
    1345             exit(EXIT_FAILURE);
    1346         }
    1347         if (strncmp(object->mode, "a string", MAX_STRING_LENGTH)) {
    1348             psFree(object);
    1349             exit(EXIT_FAILURE);
    1350         }
    1351         if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    1352             psFree(object);
    1353             exit(EXIT_FAILURE);
    1354         }
    1355         if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
    1356             psFree(object);
    1357             exit(EXIT_FAILURE);
    1358         }
    1359         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    1360             psFree(object);
    1361             exit(EXIT_FAILURE);
    1362         }
    1363         if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    1364             psFree(object);
    1365             exit(EXIT_FAILURE);
    1366         }
    1367         if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
    1368             psFree(object);
    1369             exit(EXIT_FAILURE);
    1370         }
    1371         if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
    1372             psFree(object);
    1373             exit(EXIT_FAILURE);
    1374         }
    1375         if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
    1376             psFree(object);
    1377             exit(EXIT_FAILURE);
    1378         }
    1379         if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
    1380             psFree(object);
    1381             exit(EXIT_FAILURE);
    1382         }
    1383         if (!object->airmass_min == 32.32) {
    1384             psFree(object);
    1385             exit(EXIT_FAILURE);
    1386         }
    1387         if (!object->airmass_max == 32.32) {
    1388             psFree(object);
    1389             exit(EXIT_FAILURE);
    1390         }
    1391         if (!object->exp_time_min == 32.32) {
    1392             psFree(object);
    1393             exit(EXIT_FAILURE);
    1394         }
    1395         if (!object->exp_time_max == 32.32) {
    1396             psFree(object);
    1397             exit(EXIT_FAILURE);
    1398         }
    1399         if (!object->ccd_temp_min == 32.32) {
    1400             psFree(object);
    1401             exit(EXIT_FAILURE);
    1402         }
    1403         if (!object->ccd_temp_max == 32.32) {
    1404             psFree(object);
    1405             exit(EXIT_FAILURE);
    1406         }
    1407         if (!object->posang_min == 64.64) {
    1408             psFree(object);
    1409             exit(EXIT_FAILURE);
    1410         }
    1411         if (!object->posang_max == 64.64) {
    1412             psFree(object);
    1413             exit(EXIT_FAILURE);
    1414         }
    1415             psFree(object);
    1416             exit(EXIT_FAILURE);
    1417         }
    1418             psFree(object);
    1419             exit(EXIT_FAILURE);
    1420         }
    1421             psFree(object);
    1422             exit(EXIT_FAILURE);
    1423         }
    1424             psFree(object);
    1425             exit(EXIT_FAILURE);
    1426         }
    1427             psFree(object);
    1428             exit(EXIT_FAILURE);
    1429         }
    1430         if (!object->solang_min == 32.32) {
    1431             psFree(object);
    1432             exit(EXIT_FAILURE);
    1433         }
    1434         if (!object->solang_max == 32.32) {
    1435             psFree(object);
    1436             exit(EXIT_FAILURE);
    1437         }
    1438         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    1439             psFree(object);
    1440             exit(EXIT_FAILURE);
    1441         }
    1442         if (!object->parent == -32) {
    1443             psFree(object);
    1444             exit(EXIT_FAILURE);
    1445         }
    1446 
    1447         psFree(object);
    1448     }
    1449 
    1450     {
    1451         detInputExpRow  *object;
    1452 
    1453         object = detInputExpRowAlloc(-64, -32, "a string", true    );
    1454 
    1455         if (!object) {
    1456             exit(EXIT_FAILURE);
    1457         }
    1458 
    1459         if (!object->det_id == -64) {
    1460             psFree(object);
    1461             exit(EXIT_FAILURE);
    1462         }
    1463         if (!object->iteration == -32) {
    1464             psFree(object);
    1465             exit(EXIT_FAILURE);
    1466         }
    1467         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    1468             psFree(object);
    1469             exit(EXIT_FAILURE);
    1470         }
    1471         if (!object->include == true) {
    1472             psFree(object);
    1473             exit(EXIT_FAILURE);
    1474         }
    1475 
    1476         psFree(object);
    1477     }
    1478 
    1479     {
    1480         detProcessedImfileRow *object;
    1481 
    1482         object = detProcessedImfileRowAlloc(-64, "a string", "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    );
    1483 
    1484         if (!object) {
    1485             exit(EXIT_FAILURE);
    1486         }
    1487 
    1488         if (!object->det_id == -64) {
    1489             psFree(object);
    1490             exit(EXIT_FAILURE);
    1491         }
    1492         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    1493             psFree(object);
    1494             exit(EXIT_FAILURE);
    1495         }
    1496         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    1497             psFree(object);
    1498             exit(EXIT_FAILURE);
    1499         }
    1500         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    1501             psFree(object);
    1502             exit(EXIT_FAILURE);
    1503         }
    1504         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    1505             psFree(object);
    1506             exit(EXIT_FAILURE);
    1507         }
    1508         if (!object->bg == 64.64) {
    1509             psFree(object);
    1510             exit(EXIT_FAILURE);
    1511         }
    1512         if (!object->bg_stdev == 64.64) {
    1513             psFree(object);
    1514             exit(EXIT_FAILURE);
    1515         }
    1516         if (!object->bg_mean_stdev == 64.64) {
    1517             psFree(object);
    1518             exit(EXIT_FAILURE);
    1519         }
    1520         if (!object->fringe_0 == 64.64) {
    1521             psFree(object);
    1522             exit(EXIT_FAILURE);
    1523         }
    1524         if (!object->fringe_1 == 64.64) {
    1525             psFree(object);
    1526             exit(EXIT_FAILURE);
    1527         }
    1528         if (!object->fringe_2 == 64.64) {
    1529             psFree(object);
    1530             exit(EXIT_FAILURE);
    1531         }
    1532         if (!object->user_1 == 64.64) {
    1533             psFree(object);
    1534             exit(EXIT_FAILURE);
    1535         }
    1536         if (!object->user_2 == 64.64) {
    1537             psFree(object);
    1538             exit(EXIT_FAILURE);
    1539         }
    1540         if (!object->user_3 == 64.64) {
    1541             psFree(object);
    1542             exit(EXIT_FAILURE);
    1543         }
    1544         if (!object->user_4 == 64.64) {
    1545             psFree(object);
    1546             exit(EXIT_FAILURE);
    1547         }
    1548         if (!object->user_5 == 64.64) {
    1549             psFree(object);
    1550             exit(EXIT_FAILURE);
    1551         }
    1552         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    1553             psFree(object);
    1554             exit(EXIT_FAILURE);
    1555         }
    1556         if (!object->fault == -16) {
    1557             psFree(object);
    1558             exit(EXIT_FAILURE);
    1559         }
    1560 
    1561         psFree(object);
    1562     }
    1563 
    1564     {
    1565         detProcessedExpRow *object;
    1566 
    1567         object = detProcessedExpRowAlloc(-64, "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    );
    1568 
    1569         if (!object) {
    1570             exit(EXIT_FAILURE);
    1571         }
    1572 
    1573         if (!object->det_id == -64) {
    1574             psFree(object);
    1575             exit(EXIT_FAILURE);
    1576         }
    1577         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    1578             psFree(object);
    1579             exit(EXIT_FAILURE);
    1580         }
    1581         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    1582             psFree(object);
    1583             exit(EXIT_FAILURE);
    1584         }
    1585         if (!object->bg == 64.64) {
    1586             psFree(object);
    1587             exit(EXIT_FAILURE);
    1588         }
    1589         if (!object->bg_stdev == 64.64) {
    1590             psFree(object);
    1591             exit(EXIT_FAILURE);
    1592         }
    1593         if (!object->bg_mean_stdev == 64.64) {
    1594             psFree(object);
    1595             exit(EXIT_FAILURE);
    1596         }
    1597         if (!object->fringe_0 == 64.64) {
    1598             psFree(object);
    1599             exit(EXIT_FAILURE);
    1600         }
    1601         if (!object->fringe_1 == 64.64) {
    1602             psFree(object);
    1603             exit(EXIT_FAILURE);
    1604         }
    1605         if (!object->fringe_2 == 64.64) {
    1606             psFree(object);
    1607             exit(EXIT_FAILURE);
    1608         }
    1609         if (!object->user_1 == 64.64) {
    1610             psFree(object);
    1611             exit(EXIT_FAILURE);
    1612         }
    1613         if (!object->user_2 == 64.64) {
    1614             psFree(object);
    1615             exit(EXIT_FAILURE);
    1616         }
    1617         if (!object->user_3 == 64.64) {
    1618             psFree(object);
    1619             exit(EXIT_FAILURE);
    1620         }
    1621         if (!object->user_4 == 64.64) {
    1622             psFree(object);
    1623             exit(EXIT_FAILURE);
    1624         }
    1625         if (!object->user_5 == 64.64) {
    1626             psFree(object);
    1627             exit(EXIT_FAILURE);
    1628         }
    1629         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    1630             psFree(object);
    1631             exit(EXIT_FAILURE);
    1632         }
    1633         if (!object->fault == -16) {
    1634             psFree(object);
    1635             exit(EXIT_FAILURE);
    1636         }
    1637 
    1638         psFree(object);
    1639     }
    1640 
    1641     {
    1642         detStackedImfileRow *object;
    1643 
    1644         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    );
    1645 
    1646         if (!object) {
    1647             exit(EXIT_FAILURE);
    1648         }
    1649 
    1650         if (!object->det_id == -64) {
    1651             psFree(object);
    1652             exit(EXIT_FAILURE);
    1653         }
    1654         if (!object->iteration == -32) {
    1655             psFree(object);
    1656             exit(EXIT_FAILURE);
    1657         }
    1658         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    1659             psFree(object);
    1660             exit(EXIT_FAILURE);
    1661         }
    1662         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    1663             psFree(object);
    1664             exit(EXIT_FAILURE);
    1665         }
    1666         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    1667             psFree(object);
    1668             exit(EXIT_FAILURE);
    1669         }
    1670         if (!object->bg == 64.64) {
    1671             psFree(object);
    1672             exit(EXIT_FAILURE);
    1673         }
    1674         if (!object->bg_stdev == 64.64) {
    1675             psFree(object);
    1676             exit(EXIT_FAILURE);
    1677         }
    1678         if (!object->bg_mean_stdev == 64.64) {
    1679             psFree(object);
    1680             exit(EXIT_FAILURE);
    1681         }
    1682         if (!object->user_1 == 64.64) {
    1683             psFree(object);
    1684             exit(EXIT_FAILURE);
    1685         }
    1686         if (!object->user_2 == 64.64) {
    1687             psFree(object);
    1688             exit(EXIT_FAILURE);
    1689         }
    1690         if (!object->user_3 == 64.64) {
    1691             psFree(object);
    1692             exit(EXIT_FAILURE);
    1693         }
    1694         if (!object->user_4 == 64.64) {
    1695             psFree(object);
    1696             exit(EXIT_FAILURE);
    1697         }
    1698         if (!object->user_5 == 64.64) {
    1699             psFree(object);
    1700             exit(EXIT_FAILURE);
    1701         }
    1702         if (!object->fault == -16) {
    1703             psFree(object);
    1704             exit(EXIT_FAILURE);
    1705         }
    1706 
    1707         psFree(object);
    1708     }
    1709 
    1710     {
    1711         detNormalizedStatImfileRow *object;
    1712 
    1713         object = detNormalizedStatImfileRowAlloc(-64, -32, "a string", 32.32, -16    );
    1714 
    1715         if (!object) {
    1716             exit(EXIT_FAILURE);
    1717         }
    1718 
    1719         if (!object->det_id == -64) {
    1720             psFree(object);
    1721             exit(EXIT_FAILURE);
    1722         }
    1723         if (!object->iteration == -32) {
    1724             psFree(object);
    1725             exit(EXIT_FAILURE);
    1726         }
    1727         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    1728             psFree(object);
    1729             exit(EXIT_FAILURE);
    1730         }
    1731         if (!object->norm == 32.32) {
    1732             psFree(object);
    1733             exit(EXIT_FAILURE);
    1734         }
    1735         if (!object->fault == -16) {
    1736             psFree(object);
    1737             exit(EXIT_FAILURE);
    1738         }
    1739 
    1740         psFree(object);
    1741     }
    1742 
    1743     {
    1744         detNormalizedImfileRow *object;
    1745 
    1746         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    );
    1747 
    1748         if (!object) {
    1749             exit(EXIT_FAILURE);
    1750         }
    1751 
    1752         if (!object->det_id == -64) {
    1753             psFree(object);
    1754             exit(EXIT_FAILURE);
    1755         }
    1756         if (!object->iteration == -32) {
    1757             psFree(object);
    1758             exit(EXIT_FAILURE);
    1759         }
    1760         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    1761             psFree(object);
    1762             exit(EXIT_FAILURE);
    1763         }
    1764         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    1765             psFree(object);
    1766             exit(EXIT_FAILURE);
    1767         }
    1768         if (!object->bg == 64.64) {
    1769             psFree(object);
    1770             exit(EXIT_FAILURE);
    1771         }
    1772         if (!object->bg_stdev == 64.64) {
    1773             psFree(object);
    1774             exit(EXIT_FAILURE);
    1775         }
    1776         if (!object->bg_mean_stdev == 64.64) {
    1777             psFree(object);
    1778             exit(EXIT_FAILURE);
    1779         }
    1780         if (!object->user_1 == 64.64) {
    1781             psFree(object);
    1782             exit(EXIT_FAILURE);
    1783         }
    1784         if (!object->user_2 == 64.64) {
    1785             psFree(object);
    1786             exit(EXIT_FAILURE);
    1787         }
    1788         if (!object->user_3 == 64.64) {
    1789             psFree(object);
    1790             exit(EXIT_FAILURE);
    1791         }
    1792         if (!object->user_4 == 64.64) {
    1793             psFree(object);
    1794             exit(EXIT_FAILURE);
    1795         }
    1796         if (!object->user_5 == 64.64) {
    1797             psFree(object);
    1798             exit(EXIT_FAILURE);
    1799         }
    1800         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    1801             psFree(object);
    1802             exit(EXIT_FAILURE);
    1803         }
    1804         if (!object->fault == -16) {
    1805             psFree(object);
    1806             exit(EXIT_FAILURE);
    1807         }
    1808 
    1809         psFree(object);
    1810     }
    1811 
    1812     {
    1813         detNormalizedExpRow *object;
    1814 
    1815         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    );
    1816 
    1817         if (!object) {
    1818             exit(EXIT_FAILURE);
    1819         }
    1820 
    1821         if (!object->det_id == -64) {
    1822             psFree(object);
    1823             exit(EXIT_FAILURE);
    1824         }
    1825         if (!object->iteration == -32) {
    1826             psFree(object);
    1827             exit(EXIT_FAILURE);
    1828         }
    1829         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    1830             psFree(object);
    1831             exit(EXIT_FAILURE);
    1832         }
    1833         if (!object->bg == 64.64) {
    1834             psFree(object);
    1835             exit(EXIT_FAILURE);
    1836         }
    1837         if (!object->bg_stdev == 64.64) {
    1838             psFree(object);
    1839             exit(EXIT_FAILURE);
    1840         }
    1841         if (!object->bg_mean_stdev == 64.64) {
    1842             psFree(object);
    1843             exit(EXIT_FAILURE);
    1844         }
    1845         if (!object->user_1 == 64.64) {
    1846             psFree(object);
    1847             exit(EXIT_FAILURE);
    1848         }
    1849         if (!object->user_2 == 64.64) {
    1850             psFree(object);
    1851             exit(EXIT_FAILURE);
    1852         }
    1853         if (!object->user_3 == 64.64) {
    1854             psFree(object);
    1855             exit(EXIT_FAILURE);
    1856         }
    1857         if (!object->user_4 == 64.64) {
    1858             psFree(object);
    1859             exit(EXIT_FAILURE);
    1860         }
    1861         if (!object->user_5 == 64.64) {
    1862             psFree(object);
    1863             exit(EXIT_FAILURE);
    1864         }
    1865         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    1866             psFree(object);
    1867             exit(EXIT_FAILURE);
    1868         }
    1869         if (!object->fault == -16) {
    1870             psFree(object);
    1871             exit(EXIT_FAILURE);
    1872         }
    1873 
    1874         psFree(object);
    1875     }
    1876 
    1877     {
    1878         detResidImfileRow *object;
    1879 
    1880         object = detResidImfileRowAlloc(-64, -32, "a string", "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    );
    1881 
    1882         if (!object) {
    1883             exit(EXIT_FAILURE);
    1884         }
    1885 
    1886         if (!object->det_id == -64) {
    1887             psFree(object);
    1888             exit(EXIT_FAILURE);
    1889         }
    1890         if (!object->iteration == -32) {
    1891             psFree(object);
    1892             exit(EXIT_FAILURE);
    1893         }
    1894         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    1895             psFree(object);
    1896             exit(EXIT_FAILURE);
    1897         }
    1898         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    1899             psFree(object);
    1900             exit(EXIT_FAILURE);
    1901         }
    1902         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    1903             psFree(object);
    1904             exit(EXIT_FAILURE);
    1905         }
    1906         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    1907             psFree(object);
    1908             exit(EXIT_FAILURE);
    1909         }
    1910         if (!object->bg == 64.64) {
    1911             psFree(object);
    1912             exit(EXIT_FAILURE);
    1913         }
    1914         if (!object->bg_stdev == 64.64) {
    1915             psFree(object);
    1916             exit(EXIT_FAILURE);
    1917         }
    1918         if (!object->bg_mean_stdev == 64.64) {
    1919             psFree(object);
    1920             exit(EXIT_FAILURE);
    1921         }
    1922         if (!object->bin_stdev == 64.64) {
    1923             psFree(object);
    1924             exit(EXIT_FAILURE);
    1925         }
    1926         if (!object->fringe_0 == 64.64) {
    1927             psFree(object);
    1928             exit(EXIT_FAILURE);
    1929         }
    1930         if (!object->fringe_1 == 64.64) {
    1931             psFree(object);
    1932             exit(EXIT_FAILURE);
    1933         }
    1934         if (!object->fringe_2 == 64.64) {
    1935             psFree(object);
    1936             exit(EXIT_FAILURE);
    1937         }
    1938         if (!object->user_1 == 64.64) {
    1939             psFree(object);
    1940             exit(EXIT_FAILURE);
    1941         }
    1942         if (!object->user_2 == 64.64) {
    1943             psFree(object);
    1944             exit(EXIT_FAILURE);
    1945         }
    1946         if (!object->user_3 == 64.64) {
    1947             psFree(object);
    1948             exit(EXIT_FAILURE);
    1949         }
    1950         if (!object->user_4 == 64.64) {
    1951             psFree(object);
    1952             exit(EXIT_FAILURE);
    1953         }
    1954         if (!object->user_5 == 64.64) {
    1955             psFree(object);
    1956             exit(EXIT_FAILURE);
    1957         }
    1958         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    1959             psFree(object);
    1960             exit(EXIT_FAILURE);
    1961         }
    1962         if (!object->fault == -16) {
    1963             psFree(object);
    1964             exit(EXIT_FAILURE);
    1965         }
    1966 
    1967         psFree(object);
    1968     }
    1969 
    1970     {
    1971         detResidExpRow  *object;
    1972 
    1973         object = detResidExpRowAlloc(-64, -32, "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", true, -16    );
    1974 
    1975         if (!object) {
    1976             exit(EXIT_FAILURE);
    1977         }
    1978 
    1979         if (!object->det_id == -64) {
    1980             psFree(object);
    1981             exit(EXIT_FAILURE);
    1982         }
    1983         if (!object->iteration == -32) {
    1984             psFree(object);
    1985             exit(EXIT_FAILURE);
    1986         }
    1987         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
     1933        if (!object->exp_id == -64) {
    19881934            psFree(object);
    19891935            exit(EXIT_FAILURE);
  • trunk/ippdb/tests/createtable.c

    r12535 r14061  
    1313        }
    1414
    15         if(!expTagCounterCreateTable(dbh)) {
    16             exit(EXIT_FAILURE);
    17         }
    18 
    19         psDBCleanup(dbh);
    20     }
    21 
    22     {
    23         psDB            *dbh;
    24 
    25         dbh = psDBInit("localhost", "test", NULL, "test");
    26         if (!dbh) {
    27             exit(EXIT_FAILURE);
    28         }
    29 
    3015        if(!summitExpCreateTable(dbh)) {
    3116            exit(EXIT_FAILURE);
     
    193178        }
    194179
    195         if(!chipPendingExpCreateTable(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 
    210         if(!chipPendingImfileCreateTable(dbh)) {
    211             exit(EXIT_FAILURE);
    212         }
    213 
    214         psDBCleanup(dbh);
    215     }
    216 
    217     {
    218         psDB            *dbh;
    219 
    220         dbh = psDBInit("localhost", "test", NULL, "test");
    221         if (!dbh) {
    222             exit(EXIT_FAILURE);
    223         }
    224 
    225         if(!chipProcessedExpCreateTable(dbh)) {
     180        if(!chipRunCreateTable(dbh)) {
     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(!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
     210        if(!chipProcessedImfileCreateTable(dbh)) {
    226211            exit(EXIT_FAILURE);
    227212        }
     
    253238        }
    254239
    255         if(!chipProcessedImfileCreateTable(dbh)) {
    256             exit(EXIT_FAILURE);
    257         }
    258 
    259         psDBCleanup(dbh);
    260     }
    261 
    262     {
    263         psDB            *dbh;
    264 
    265         dbh = psDBInit("localhost", "test", NULL, "test");
    266         if (!dbh) {
    267             exit(EXIT_FAILURE);
    268         }
    269 
    270         if(!camPendingExpCreateTable(dbh)) {
     240        if(!camRunCreateTable(dbh)) {
    271241            exit(EXIT_FAILURE);
    272242        }
  • trunk/ippdb/tests/dbcleanup.c

    r12535 r14061  
    1111    }
    1212
    13     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS expTagCounter");
    1413    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS summitExp");
    1514    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS summitImfile");
     
    2322    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS rawImfile");
    2423    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS guidePendingExp");
    25     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS chipPendingExp");
    26     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS chipPendingImfile");
    27     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS chipProcessedExp");
     24    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS chipRun");
     25    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS chipInputImfile");
     26    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS chipProcessedImfile");
    2827    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS chipMask");
    29     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS chipProcessedImfile");
    30     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS camPendingExp");
     28    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS camRun");
    3129    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS camProcessedExp");
    3230    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS camMask");
  • trunk/ippdb/tests/dbsetup.c

    r12535 r14061  
    1313
    1414    // remove the table if it already exists
    15     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS expTagCounter");
    16     expTagCounterCreateTable(dbh);
    17 
    1815    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS summitExp");
    1916    summitExpCreateTable(dbh);
     
    4946    guidePendingExpCreateTable(dbh);
    5047
    51     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS chipPendingExp");
    52     chipPendingExpCreateTable(dbh);
     48    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS chipRun");
     49    chipRunCreateTable(dbh);
    5350
    54     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS chipPendingImfile");
    55     chipPendingImfileCreateTable(dbh);
     51    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS chipInputImfile");
     52    chipInputImfileCreateTable(dbh);
    5653
    57     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS chipProcessedExp");
    58     chipProcessedExpCreateTable(dbh);
     54    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS chipProcessedImfile");
     55    chipProcessedImfileCreateTable(dbh);
    5956
    6057    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS chipMask");
    6158    chipMaskCreateTable(dbh);
    6259
    63     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS chipProcessedImfile");
    64     chipProcessedImfileCreateTable(dbh);
    65 
    66     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS camPendingExp");
    67     camPendingExpCreateTable(dbh);
     60    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS camRun");
     61    camRunCreateTable(dbh);
    6862
    6963    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS camProcessedExp");
  • trunk/ippdb/tests/droptable.c

    r12535 r14061  
    1313        }
    1414
    15         if (!expTagCounterDropTable(dbh)) {
    16             exit(EXIT_FAILURE);
    17         }
    18 
    19         psDBCleanup(dbh);
    20     }
    21 
    22     {
    23         psDB            *dbh;
    24 
    25         dbh = psDBInit("localhost", "test", NULL, "test");
    26         if (!dbh) {
    27             exit(EXIT_FAILURE);
    28         }
    29 
    3015        if (!summitExpDropTable(dbh)) {
    3116            exit(EXIT_FAILURE);
     
    193178        }
    194179
    195         if (!chipPendingExpDropTable(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 
    210         if (!chipPendingImfileDropTable(dbh)) {
    211             exit(EXIT_FAILURE);
    212         }
    213 
    214         psDBCleanup(dbh);
    215     }
    216 
    217     {
    218         psDB            *dbh;
    219 
    220         dbh = psDBInit("localhost", "test", NULL, "test");
    221         if (!dbh) {
    222             exit(EXIT_FAILURE);
    223         }
    224 
    225         if (!chipProcessedExpDropTable(dbh)) {
     180        if (!chipRunDropTable(dbh)) {
     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 (!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
     210        if (!chipProcessedImfileDropTable(dbh)) {
    226211            exit(EXIT_FAILURE);
    227212        }
     
    253238        }
    254239
    255         if (!chipProcessedImfileDropTable(dbh)) {
    256             exit(EXIT_FAILURE);
    257         }
    258 
    259         psDBCleanup(dbh);
    260     }
    261 
    262     {
    263         psDB            *dbh;
    264 
    265         dbh = psDBInit("localhost", "test", NULL, "test");
    266         if (!dbh) {
    267             exit(EXIT_FAILURE);
    268         }
    269 
    270         if (!camPendingExpDropTable(dbh)) {
     240        if (!camRunDropTable(dbh)) {
    271241            exit(EXIT_FAILURE);
    272242        }
  • trunk/ippdb/tests/insert.c

    r13937 r14061  
    1313        }
    1414
    15         if (!expTagCounterInsert(dbh, 64)) {
    16             exit(EXIT_FAILURE);
    17         }
    18 
    19         psDBCleanup(dbh);
    20     }
    21 
    22     {
    23         psDB            *dbh;
    24 
    25         dbh = psDBInit("localhost", "test", NULL, "test");
    26         if (!dbh) {
    27             exit(EXIT_FAILURE);
    28         }
    29 
    3015        if (!summitExpInsert(dbh, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", -32)) {
    3116            exit(EXIT_FAILURE);
     
    7358        }
    7459
    75         if (!pzPendingImfileInsert(dbh, "a string", "a string", "a string", "a string", "a string", "a string")) {
     60        if (!pzPendingImfileInsert(dbh, "a string", "a string", "a string", "a string", "a string", -64)) {
    7661            exit(EXIT_FAILURE);
    7762        }
     
    10388        }
    10489
    105         if (!pzDoneImfileInsert(dbh, "a string", "a string", "a string", "a string", "a string", "a string", "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, "a string", "a string", "a string", "a string", -32, "a string")) {
    121             exit(EXIT_FAILURE);
    122         }
    123 
    124         psDBCleanup(dbh);
    125     }
    126 
    127     {
    128         psDB            *dbh;
    129 
    130         dbh = psDBInit("localhost", "test", NULL, "test");
    131         if (!dbh) {
    132             exit(EXIT_FAILURE);
    133         }
    134 
    135         if (!newImfileInsert(dbh, "a string", "a string", "a string", "a string")) {
    136             exit(EXIT_FAILURE);
    137         }
    138 
    139         psDBCleanup(dbh);
    140     }
    141 
    142     {
    143         psDB            *dbh;
    144 
    145         dbh = psDBInit("localhost", "test", NULL, "test");
    146         if (!dbh) {
    147             exit(EXIT_FAILURE);
    148         }
    149 
    150         if (!rawExpInsert(dbh, "a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z", "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)) {
    151             exit(EXIT_FAILURE);
    152         }
    153 
    154         psDBCleanup(dbh);
    155     }
    156 
    157     {
    158         psDB            *dbh;
    159 
    160         dbh = psDBInit("localhost", "test", NULL, "test");
    161         if (!dbh) {
    162             exit(EXIT_FAILURE);
    163         }
    164 
    165         if (!rawImfileInsert(dbh, "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", "0001-01-01T00:00:00Z", -16)) {
    166             exit(EXIT_FAILURE);
    167         }
    168 
    169         psDBCleanup(dbh);
    170     }
    171 
    172     {
    173         psDB            *dbh;
    174 
    175         dbh = psDBInit("localhost", "test", NULL, "test");
    176         if (!dbh) {
    177             exit(EXIT_FAILURE);
    178         }
    179 
    180         if (!guidePendingExpInsert(dbh, -64, "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 (!chipPendingExpInsert(dbh, -64, "a string", -64, "a string", "a string", "a string", "a string", "a string")) {
    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 
    210         if (!chipPendingImfileInsert(dbh, -64, "a string", "a string")) {
    211             exit(EXIT_FAILURE);
    212         }
    213 
    214         psDBCleanup(dbh);
    215     }
    216 
    217     {
    218         psDB            *dbh;
    219 
    220         dbh = psDBInit("localhost", "test", NULL, "test");
    221         if (!dbh) {
    222             exit(EXIT_FAILURE);
    223         }
    224 
    225         if (!chipProcessedExpInsert(dbh, -64, "a string", -64, "a string", "a string", "a string", "a string", "a string")) {
     90        if (!pzDoneImfileInsert(dbh, "a string", "a string", "a string", "a string", "a string", -64, "a string")) {
     91            exit(EXIT_FAILURE);
     92        }
     93
     94        psDBCleanup(dbh);
     95    }
     96
     97    {
     98        psDB            *dbh;
     99
     100        dbh = psDBInit("localhost", "test", NULL, "test");
     101        if (!dbh) {
     102            exit(EXIT_FAILURE);
     103        }
     104
     105        if (!newExpInsert(dbh, -64, "a string", "a string", "a string", "a string", "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 (!newImfileInsert(dbh, -64, "a string", "a string")) {
     121            exit(EXIT_FAILURE);
     122        }
     123
     124        psDBCleanup(dbh);
     125    }
     126
     127    {
     128        psDB            *dbh;
     129
     130        dbh = psDBInit("localhost", "test", NULL, "test");
     131        if (!dbh) {
     132            exit(EXIT_FAILURE);
     133        }
     134
     135        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", 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)) {
     136            exit(EXIT_FAILURE);
     137        }
     138
     139        psDBCleanup(dbh);
     140    }
     141
     142    {
     143        psDB            *dbh;
     144
     145        dbh = psDBInit("localhost", "test", NULL, "test");
     146        if (!dbh) {
     147            exit(EXIT_FAILURE);
     148        }
     149
     150        if (!rawImfileInsert(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", -16)) {
     151            exit(EXIT_FAILURE);
     152        }
     153
     154        psDBCleanup(dbh);
     155    }
     156
     157    {
     158        psDB            *dbh;
     159
     160        dbh = psDBInit("localhost", "test", NULL, "test");
     161        if (!dbh) {
     162            exit(EXIT_FAILURE);
     163        }
     164
     165        if (!guidePendingExpInsert(dbh, -64, -64, "a string")) {
     166            exit(EXIT_FAILURE);
     167        }
     168
     169        psDBCleanup(dbh);
     170    }
     171
     172    {
     173        psDB            *dbh;
     174
     175        dbh = psDBInit("localhost", "test", NULL, "test");
     176        if (!dbh) {
     177            exit(EXIT_FAILURE);
     178        }
     179
     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")) {
     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
     210        if (!chipProcessedImfileInsert(dbh, -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)) {
    226211            exit(EXIT_FAILURE);
    227212        }
     
    253238        }
    254239
    255         if (!chipProcessedImfileInsert(dbh, -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)) {
    256             exit(EXIT_FAILURE);
    257         }
    258 
    259         psDBCleanup(dbh);
    260     }
    261 
    262     {
    263         psDB            *dbh;
    264 
    265         dbh = psDBInit("localhost", "test", NULL, "test");
    266         if (!dbh) {
    267             exit(EXIT_FAILURE);
    268         }
    269 
    270         if (!camPendingExpInsert(dbh, -64, -64, "a string", "a string", "a string", "a string", "a string")) {
    271             exit(EXIT_FAILURE);
    272         }
    273 
    274         psDBCleanup(dbh);
    275     }
    276 
    277     {
    278         psDB            *dbh;
    279 
    280         dbh = psDBInit("localhost", "test", NULL, "test");
    281         if (!dbh) {
    282             exit(EXIT_FAILURE);
    283         }
    284 
    285         if (!camProcessedExpInsert(dbh, -64, -64, "a string", "a string", "a string", "a string", "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, "a string", -16)) {
     240        if (!camRunInsert(dbh, -64, -64, "a string", "a string", "a string", "a string", "a string", "a string", "a string")) {
     241            exit(EXIT_FAILURE);
     242        }
     243
     244        psDBCleanup(dbh);
     245    }
     246
     247    {
     248        psDB            *dbh;
     249
     250        dbh = psDBInit("localhost", "test", NULL, "test");
     251        if (!dbh) {
     252            exit(EXIT_FAILURE);
     253        }
     254
     255        if (!camProcessedExpInsert(dbh, -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)) {
    286256            exit(EXIT_FAILURE);
    287257        }
     
    478448        }
    479449
    480         if (!detInputExpInsert(dbh, -64, -32, "a string", true)) {
    481             exit(EXIT_FAILURE);
    482         }
    483 
    484         psDBCleanup(dbh);
    485     }
    486 
    487     {
    488         psDB            *dbh;
    489 
    490         dbh = psDBInit("localhost", "test", NULL, "test");
    491         if (!dbh) {
    492             exit(EXIT_FAILURE);
    493         }
    494 
    495         if (!detProcessedImfileInsert(dbh, -64, "a string", "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)) {
    496             exit(EXIT_FAILURE);
    497         }
    498 
    499         psDBCleanup(dbh);
    500     }
    501 
    502     {
    503         psDB            *dbh;
    504 
    505         dbh = psDBInit("localhost", "test", NULL, "test");
    506         if (!dbh) {
    507             exit(EXIT_FAILURE);
    508         }
    509 
    510         if (!detProcessedExpInsert(dbh, -64, "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)) {
     450        if (!detInputExpInsert(dbh, -64, -32, -64, true)) {
     451            exit(EXIT_FAILURE);
     452        }
     453
     454        psDBCleanup(dbh);
     455    }
     456
     457    {
     458        psDB            *dbh;
     459
     460        dbh = psDBInit("localhost", "test", NULL, "test");
     461        if (!dbh) {
     462            exit(EXIT_FAILURE);
     463        }
     464
     465        if (!detProcessedImfileInsert(dbh, -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)) {
     466            exit(EXIT_FAILURE);
     467        }
     468
     469        psDBCleanup(dbh);
     470    }
     471
     472    {
     473        psDB            *dbh;
     474
     475        dbh = psDBInit("localhost", "test", NULL, "test");
     476        if (!dbh) {
     477            exit(EXIT_FAILURE);
     478        }
     479
     480        if (!detProcessedExpInsert(dbh, -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)) {
    511481            exit(EXIT_FAILURE);
    512482        }
     
    583553        }
    584554
    585         if (!detResidImfileInsert(dbh, -64, -32, "a string", "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)) {
    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 (!detResidExpInsert(dbh, -64, -32, "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", true, -16)) {
     555        if (!detResidImfileInsert(dbh, -64, -32, -64, "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16)) {
     556            exit(EXIT_FAILURE);
     557        }
     558
     559        psDBCleanup(dbh);
     560    }
     561
     562    {
     563        psDB            *dbh;
     564
     565        dbh = psDBInit("localhost", "test", NULL, "test");
     566        if (!dbh) {
     567            exit(EXIT_FAILURE);
     568        }
     569
     570        if (!detResidExpInsert(dbh, -64, -32, -64, "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", true, -16)) {
    601571            exit(EXIT_FAILURE);
    602572        }
  • trunk/ippdb/tests/insertfits.c

    r12535 r14061  
    2424        }
    2525
    26         if (!expTagCounterInsertFits(dbh, fits)) {
    27             exit(EXIT_FAILURE);
    28         }
    29 
    30         if (!psFitsClose(fits)) {
    31             exit(EXIT_FAILURE);
    32         }
    33 
    34         psDBCleanup(dbh);
    35     }
    36 
    37     {
    38         psDB            *dbh;
    39         psFits          *fits;
    40 
    41         dbh = psDBInit("localhost", "test", NULL, "test");
    42         if (!dbh) {
    43             exit(EXIT_FAILURE);
    44         }
    45 
    46         // open a temp
    47         fits = psFitsOpen(TMP_FILENAME, "r");
    48         if (!fits) {
    49             exit(EXIT_FAILURE);
    50         }
    51 
    5226        if (!summitExpInsertFits(dbh, fits)) {
    5327            exit(EXIT_FAILURE);
     
    336310        }
    337311
    338         if (!chipPendingExpInsertFits(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 
    364         if (!chipPendingImfileInsertFits(dbh, fits)) {
    365             exit(EXIT_FAILURE);
    366         }
    367 
    368         if (!psFitsClose(fits)) {
    369             exit(EXIT_FAILURE);
    370         }
    371 
    372         psDBCleanup(dbh);
    373     }
    374 
    375     {
    376         psDB            *dbh;
    377         psFits          *fits;
    378 
    379         dbh = psDBInit("localhost", "test", NULL, "test");
    380         if (!dbh) {
    381             exit(EXIT_FAILURE);
    382         }
    383 
    384         // open a temp
    385         fits = psFitsOpen(TMP_FILENAME, "r");
    386         if (!fits) {
    387             exit(EXIT_FAILURE);
    388         }
    389 
    390         if (!chipProcessedExpInsertFits(dbh, fits)) {
     312        if (!chipRunInsertFits(dbh, fits)) {
     313            exit(EXIT_FAILURE);
     314        }
     315
     316        if (!psFitsClose(fits)) {
     317            exit(EXIT_FAILURE);
     318        }
     319
     320        psDBCleanup(dbh);
     321    }
     322
     323    {
     324        psDB            *dbh;
     325        psFits          *fits;
     326
     327        dbh = psDBInit("localhost", "test", NULL, "test");
     328        if (!dbh) {
     329            exit(EXIT_FAILURE);
     330        }
     331
     332        // open a temp
     333        fits = psFitsOpen(TMP_FILENAME, "r");
     334        if (!fits) {
     335            exit(EXIT_FAILURE);
     336        }
     337
     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
     364        if (!chipProcessedImfileInsertFits(dbh, fits)) {
    391365            exit(EXIT_FAILURE);
    392366        }
     
    440414        }
    441415
    442         if (!chipProcessedImfileInsertFits(dbh, fits)) {
    443             exit(EXIT_FAILURE);
    444         }
    445 
    446         if (!psFitsClose(fits)) {
    447             exit(EXIT_FAILURE);
    448         }
    449 
    450         psDBCleanup(dbh);
    451     }
    452 
    453     {
    454         psDB            *dbh;
    455         psFits          *fits;
    456 
    457         dbh = psDBInit("localhost", "test", NULL, "test");
    458         if (!dbh) {
    459             exit(EXIT_FAILURE);
    460         }
    461 
    462         // open a temp
    463         fits = psFitsOpen(TMP_FILENAME, "r");
    464         if (!fits) {
    465             exit(EXIT_FAILURE);
    466         }
    467 
    468         if (!camPendingExpInsertFits(dbh, fits)) {
     416        if (!camRunInsertFits(dbh, fits)) {
    469417            exit(EXIT_FAILURE);
    470418        }
  • trunk/ippdb/tests/insertobject.c

    r13937 r14061  
    77    {
    88        psDB            *dbh;
    9         expTagCounterRow *object;
    10 
    11         dbh = psDBInit("localhost", "test", NULL, "test");
    12         if (!dbh) {
    13             exit(EXIT_FAILURE);
    14         }
    15 
    16         object = expTagCounterRowAlloc(64);
    17         if (!object) {
    18             exit(EXIT_FAILURE);
    19         }
    20 
    21         if (!expTagCounterInsertObject(dbh, object)) {
    22             exit(EXIT_FAILURE);
    23         }
    24 
    25         psFree(object);
    26         psDBCleanup(dbh);
    27     }
    28 
    29     {
    30         psDB            *dbh;
    319        summitExpRow    *object;
    3210
     
    10280        }
    10381
    104         object = pzPendingImfileRowAlloc("a string", "a string", "a string", "a string", "a string", "a string");
     82        object = pzPendingImfileRowAlloc("a string", "a string", "a string", "a string", "a string", -64);
    10583        if (!object) {
    10684            exit(EXIT_FAILURE);
     
    146124        }
    147125
    148         object = pzDoneImfileRowAlloc("a string", "a string", "a string", "a string", "a string", "a string", "a string");
     126        object = pzDoneImfileRowAlloc("a string", "a string", "a string", "a string", "a string", -64, "a string");
    149127        if (!object) {
    150128            exit(EXIT_FAILURE);
     
    168146        }
    169147
    170         object = newExpRowAlloc("a string", "a string", "a string", "a string", -32, "a string");
     148        object = newExpRowAlloc(-64, "a string", "a string", "a string", "a string", "a string", "a string");
    171149        if (!object) {
    172150            exit(EXIT_FAILURE);
     
    190168        }
    191169
    192         object = newImfileRowAlloc("a string", "a string", "a string", "a string");
     170        object = newImfileRowAlloc(-64, "a string", "a string");
    193171        if (!object) {
    194172            exit(EXIT_FAILURE);
     
    212190        }
    213191
    214         object = rawExpRowAlloc("a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z", "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);
     192        object = rawExpRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "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);
    215193        if (!object) {
    216194            exit(EXIT_FAILURE);
     
    234212        }
    235213
    236         object = rawImfileRowAlloc("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", "0001-01-01T00:00:00Z", -16);
     214        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);
    237215        if (!object) {
    238216            exit(EXIT_FAILURE);
     
    256234        }
    257235
    258         object = guidePendingExpRowAlloc(-64, "a string", "a string");
     236        object = guidePendingExpRowAlloc(-64, -64, "a string");
    259237        if (!object) {
    260238            exit(EXIT_FAILURE);
     
    271249    {
    272250        psDB            *dbh;
    273         chipPendingExpRow *object;
    274 
    275         dbh = psDBInit("localhost", "test", NULL, "test");
    276         if (!dbh) {
    277             exit(EXIT_FAILURE);
    278         }
    279 
    280         object = chipPendingExpRowAlloc(-64, "a string", -64, "a string", "a string", "a string", "a string", "a string");
    281         if (!object) {
    282             exit(EXIT_FAILURE);
    283         }
    284 
    285         if (!chipPendingExpInsertObject(dbh, object)) {
    286             exit(EXIT_FAILURE);
    287         }
    288 
    289         psFree(object);
    290         psDBCleanup(dbh);
    291     }
    292 
    293     {
    294         psDB            *dbh;
    295         chipPendingImfileRow *object;
    296 
    297         dbh = psDBInit("localhost", "test", NULL, "test");
    298         if (!dbh) {
    299             exit(EXIT_FAILURE);
    300         }
    301 
    302         object = chipPendingImfileRowAlloc(-64, "a string", "a string");
    303         if (!object) {
    304             exit(EXIT_FAILURE);
    305         }
    306 
    307         if (!chipPendingImfileInsertObject(dbh, object)) {
    308             exit(EXIT_FAILURE);
    309         }
    310 
    311         psFree(object);
    312         psDBCleanup(dbh);
    313     }
    314 
    315     {
    316         psDB            *dbh;
    317         chipProcessedExpRow *object;
    318 
    319         dbh = psDBInit("localhost", "test", NULL, "test");
    320         if (!dbh) {
    321             exit(EXIT_FAILURE);
    322         }
    323 
    324         object = chipProcessedExpRowAlloc(-64, "a string", -64, "a string", "a string", "a string", "a string", "a string");
    325         if (!object) {
    326             exit(EXIT_FAILURE);
    327         }
    328 
    329         if (!chipProcessedExpInsertObject(dbh, object)) {
     251        chipRunRow      *object;
     252
     253        dbh = psDBInit("localhost", "test", NULL, "test");
     254        if (!dbh) {
     255            exit(EXIT_FAILURE);
     256        }
     257
     258        object = chipRunRowAlloc(-64, "a string", "a string", "a string", "a string", "a string", "a string", "a string");
     259        if (!object) {
     260            exit(EXIT_FAILURE);
     261        }
     262
     263        if (!chipRunInsertObject(dbh, object)) {
     264            exit(EXIT_FAILURE);
     265        }
     266
     267        psFree(object);
     268        psDBCleanup(dbh);
     269    }
     270
     271    {
     272        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;
     295        chipProcessedImfileRow *object;
     296
     297        dbh = psDBInit("localhost", "test", NULL, "test");
     298        if (!dbh) {
     299            exit(EXIT_FAILURE);
     300        }
     301
     302        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);
     303        if (!object) {
     304            exit(EXIT_FAILURE);
     305        }
     306
     307        if (!chipProcessedImfileInsertObject(dbh, object)) {
    330308            exit(EXIT_FAILURE);
    331309        }
     
    359337    {
    360338        psDB            *dbh;
    361         chipProcessedImfileRow *object;
    362 
    363         dbh = psDBInit("localhost", "test", NULL, "test");
    364         if (!dbh) {
    365             exit(EXIT_FAILURE);
    366         }
    367 
    368         object = chipProcessedImfileRowAlloc(-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);
    369         if (!object) {
    370             exit(EXIT_FAILURE);
    371         }
    372 
    373         if (!chipProcessedImfileInsertObject(dbh, object)) {
    374             exit(EXIT_FAILURE);
    375         }
    376 
    377         psFree(object);
    378         psDBCleanup(dbh);
    379     }
    380 
    381     {
    382         psDB            *dbh;
    383         camPendingExpRow *object;
    384 
    385         dbh = psDBInit("localhost", "test", NULL, "test");
    386         if (!dbh) {
    387             exit(EXIT_FAILURE);
    388         }
    389 
    390         object = camPendingExpRowAlloc(-64, -64, "a string", "a string", "a string", "a string", "a string");
    391         if (!object) {
    392             exit(EXIT_FAILURE);
    393         }
    394 
    395         if (!camPendingExpInsertObject(dbh, object)) {
     339        camRunRow       *object;
     340
     341        dbh = psDBInit("localhost", "test", NULL, "test");
     342        if (!dbh) {
     343            exit(EXIT_FAILURE);
     344        }
     345
     346        object = camRunRowAlloc(-64, -64, "a string", "a string", "a string", "a string", "a string", "a string", "a string");
     347        if (!object) {
     348            exit(EXIT_FAILURE);
     349        }
     350
     351        if (!camRunInsertObject(dbh, object)) {
    396352            exit(EXIT_FAILURE);
    397353        }
     
    410366        }
    411367
    412         object = camProcessedExpRowAlloc(-64, -64, "a string", "a string", "a string", "a string", "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, "a string", -16);
     368        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);
    413369        if (!object) {
    414370            exit(EXIT_FAILURE);
     
    696652        }
    697653
    698         object = detInputExpRowAlloc(-64, -32, "a string", true);
     654        object = detInputExpRowAlloc(-64, -32, -64, true);
    699655        if (!object) {
    700656            exit(EXIT_FAILURE);
     
    718674        }
    719675
    720         object = detProcessedImfileRowAlloc(-64, "a string", "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);
     676        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);
    721677        if (!object) {
    722678            exit(EXIT_FAILURE);
     
    740696        }
    741697
    742         object = detProcessedExpRowAlloc(-64, "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);
     698        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);
    743699        if (!object) {
    744700            exit(EXIT_FAILURE);
     
    850806        }
    851807
    852         object = detResidImfileRowAlloc(-64, -32, "a string", "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, "a string", -16);
    853809        if (!object) {
    854810            exit(EXIT_FAILURE);
     
    872828        }
    873829
    874         object = detResidExpRowAlloc(-64, -32, "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", true, -16);
     830        object = detResidExpRowAlloc(-64, -32, -64, "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", true, -16);
    875831        if (!object) {
    876832            exit(EXIT_FAILURE);
  • trunk/ippdb/tests/metadatafromobject.c

    r13937 r14061  
    1010    {
    1111        psMetadata      *md;
    12         expTagCounterRow *object;
    13         bool            status;
    14 
    15         object = expTagCounterRowAlloc(64);
    16         if (!object) {
    17             exit(EXIT_FAILURE);
    18         }
    19 
    20         md = expTagCounterMetadataFromObject(object);
    21         if (!md) {
    22             exit(EXIT_FAILURE);
    23         }
    24 
    25         psFree(object);
    26 
    27             psFree(md);
    28             exit(EXIT_FAILURE);
    29         }
    30 
    31         psFree(md);
    32     }
    33 
    34     {
    35         psMetadata      *md;
    3612        summitExpRow    *object;
    3713        bool            status;
     
    4925        psFree(object);
    5026
    51         if (strncmp(psMetadataLookupPtr(&status, md, "exp_id"), "a string", MAX_STRING_LENGTH)) {
     27        if (strncmp(psMetadataLookupPtr(&status, md, "exp_name"), "a string", MAX_STRING_LENGTH)) {
    5228            psFree(md);
    5329            exit(EXIT_FAILURE);
     
    9773        psFree(object);
    9874
    99         if (strncmp(psMetadataLookupPtr(&status, md, "exp_id"), "a string", MAX_STRING_LENGTH)) {
     75        if (strncmp(psMetadataLookupPtr(&status, md, "exp_name"), "a string", MAX_STRING_LENGTH)) {
    10076            psFree(md);
    10177            exit(EXIT_FAILURE);
     
    154130        psFree(object);
    155131
    156         if (strncmp(psMetadataLookupPtr(&status, md, "exp_id"), "a string", MAX_STRING_LENGTH)) {
     132        if (strncmp(psMetadataLookupPtr(&status, md, "exp_name"), "a string", MAX_STRING_LENGTH)) {
    157133            psFree(md);
    158134            exit(EXIT_FAILURE);
     
    175151        bool            status;
    176152
    177         object = pzPendingImfileRowAlloc("a string", "a string", "a string", "a string", "a string", "a string");
     153        object = pzPendingImfileRowAlloc("a string", "a string", "a string", "a string", "a string", -64);
    178154        if (!object) {
    179155            exit(EXIT_FAILURE);
     
    187163        psFree(object);
    188164
    189         if (strncmp(psMetadataLookupPtr(&status, md, "exp_id"), "a string", MAX_STRING_LENGTH)) {
     165        if (strncmp(psMetadataLookupPtr(&status, md, "exp_name"), "a string", MAX_STRING_LENGTH)) {
    190166            psFree(md);
    191167            exit(EXIT_FAILURE);
     
    207183            exit(EXIT_FAILURE);
    208184        }
     185            psFree(md);
     186            exit(EXIT_FAILURE);
     187        }
     188
     189        psFree(md);
     190    }
     191
     192    {
     193        psMetadata      *md;
     194        pzDoneExpRow    *object;
     195        bool            status;
     196
     197        object = pzDoneExpRowAlloc("a string", "a string", "a string");
     198        if (!object) {
     199            exit(EXIT_FAILURE);
     200        }
     201
     202        md = pzDoneExpMetadataFromObject(object);
     203        if (!md) {
     204            exit(EXIT_FAILURE);
     205        }
     206
     207        psFree(object);
     208
     209        if (strncmp(psMetadataLookupPtr(&status, md, "exp_name"), "a string", MAX_STRING_LENGTH)) {
     210            psFree(md);
     211            exit(EXIT_FAILURE);
     212        }
     213        if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
     214            psFree(md);
     215            exit(EXIT_FAILURE);
     216        }
     217        if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) {
     218            psFree(md);
     219            exit(EXIT_FAILURE);
     220        }
     221
     222        psFree(md);
     223    }
     224
     225    {
     226        psMetadata      *md;
     227        pzDoneImfileRow *object;
     228        bool            status;
     229
     230        object = pzDoneImfileRowAlloc("a string", "a string", "a string", "a string", "a string", -64, "a string");
     231        if (!object) {
     232            exit(EXIT_FAILURE);
     233        }
     234
     235        md = pzDoneImfileMetadataFromObject(object);
     236        if (!md) {
     237            exit(EXIT_FAILURE);
     238        }
     239
     240        psFree(object);
     241
     242        if (strncmp(psMetadataLookupPtr(&status, md, "exp_name"), "a string", MAX_STRING_LENGTH)) {
     243            psFree(md);
     244            exit(EXIT_FAILURE);
     245        }
     246        if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
     247            psFree(md);
     248            exit(EXIT_FAILURE);
     249        }
     250        if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) {
     251            psFree(md);
     252            exit(EXIT_FAILURE);
     253        }
     254        if (strncmp(psMetadataLookupPtr(&status, md, "class"), "a string", MAX_STRING_LENGTH)) {
     255            psFree(md);
     256            exit(EXIT_FAILURE);
     257        }
     258        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
     259            psFree(md);
     260            exit(EXIT_FAILURE);
     261        }
     262            psFree(md);
     263            exit(EXIT_FAILURE);
     264        }
     265        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     266            psFree(md);
     267            exit(EXIT_FAILURE);
     268        }
     269
     270        psFree(md);
     271    }
     272
     273    {
     274        psMetadata      *md;
     275        newExpRow       *object;
     276        bool            status;
     277
     278        object = newExpRowAlloc(-64, "a string", "a string", "a string", "a string", "a string", "a string");
     279        if (!object) {
     280            exit(EXIT_FAILURE);
     281        }
     282
     283        md = newExpMetadataFromObject(object);
     284        if (!md) {
     285            exit(EXIT_FAILURE);
     286        }
     287
     288        psFree(object);
     289
     290            psFree(md);
     291            exit(EXIT_FAILURE);
     292        }
     293        if (strncmp(psMetadataLookupPtr(&status, md, "tmp_exp_name"), "a string", MAX_STRING_LENGTH)) {
     294            psFree(md);
     295            exit(EXIT_FAILURE);
     296        }
     297        if (strncmp(psMetadataLookupPtr(&status, md, "tmp_camera"), "a string", MAX_STRING_LENGTH)) {
     298            psFree(md);
     299            exit(EXIT_FAILURE);
     300        }
     301        if (strncmp(psMetadataLookupPtr(&status, md, "tmp_telescope"), "a string", MAX_STRING_LENGTH)) {
     302            psFree(md);
     303            exit(EXIT_FAILURE);
     304        }
     305        if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
     306            psFree(md);
     307            exit(EXIT_FAILURE);
     308        }
     309        if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
     310            psFree(md);
     311            exit(EXIT_FAILURE);
     312        }
     313        if (strncmp(psMetadataLookupPtr(&status, md, "workdir_state"), "a string", MAX_STRING_LENGTH)) {
     314            psFree(md);
     315            exit(EXIT_FAILURE);
     316        }
     317
     318        psFree(md);
     319    }
     320
     321    {
     322        psMetadata      *md;
     323        newImfileRow    *object;
     324        bool            status;
     325
     326        object = newImfileRowAlloc(-64, "a string", "a string");
     327        if (!object) {
     328            exit(EXIT_FAILURE);
     329        }
     330
     331        md = newImfileMetadataFromObject(object);
     332        if (!md) {
     333            exit(EXIT_FAILURE);
     334        }
     335
     336        psFree(object);
     337
     338            psFree(md);
     339            exit(EXIT_FAILURE);
     340        }
     341        if (strncmp(psMetadataLookupPtr(&status, md, "tmp_class_id"), "a string", MAX_STRING_LENGTH)) {
     342            psFree(md);
     343            exit(EXIT_FAILURE);
     344        }
     345        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     346            psFree(md);
     347            exit(EXIT_FAILURE);
     348        }
     349
     350        psFree(md);
     351    }
     352
     353    {
     354        psMetadata      *md;
     355        rawExpRow       *object;
     356        bool            status;
     357
     358        object = rawExpRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "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);
     359        if (!object) {
     360            exit(EXIT_FAILURE);
     361        }
     362
     363        md = rawExpMetadataFromObject(object);
     364        if (!md) {
     365            exit(EXIT_FAILURE);
     366        }
     367
     368        psFree(object);
     369
     370            psFree(md);
     371            exit(EXIT_FAILURE);
     372        }
     373        if (strncmp(psMetadataLookupPtr(&status, md, "exp_name"), "a string", MAX_STRING_LENGTH)) {
     374            psFree(md);
     375            exit(EXIT_FAILURE);
     376        }
     377        if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
     378            psFree(md);
     379            exit(EXIT_FAILURE);
     380        }
     381        if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) {
     382            psFree(md);
     383            exit(EXIT_FAILURE);
     384        }
     385            psFree(md);
     386            exit(EXIT_FAILURE);
     387        }
    209388        if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
    210389            psFree(md);
    211390            exit(EXIT_FAILURE);
    212391        }
    213 
    214         psFree(md);
    215     }
    216 
    217     {
    218         psMetadata      *md;
    219         pzDoneExpRow    *object;
    220         bool            status;
    221 
    222         object = pzDoneExpRowAlloc("a string", "a string", "a string");
    223         if (!object) {
    224             exit(EXIT_FAILURE);
    225         }
    226 
    227         md = pzDoneExpMetadataFromObject(object);
    228         if (!md) {
    229             exit(EXIT_FAILURE);
    230         }
    231 
    232         psFree(object);
    233 
    234         if (strncmp(psMetadataLookupPtr(&status, md, "exp_id"), "a string", MAX_STRING_LENGTH)) {
     392        if (strncmp(psMetadataLookupPtr(&status, md, "exp_type"), "a string", MAX_STRING_LENGTH)) {
     393            psFree(md);
     394            exit(EXIT_FAILURE);
     395        }
     396        if (strncmp(psMetadataLookupPtr(&status, md, "filelevel"), "a string", MAX_STRING_LENGTH)) {
     397            psFree(md);
     398            exit(EXIT_FAILURE);
     399        }
     400        if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
     401            psFree(md);
     402            exit(EXIT_FAILURE);
     403        }
     404        if (strncmp(psMetadataLookupPtr(&status, md, "filter"), "a string", MAX_STRING_LENGTH)) {
     405            psFree(md);
     406            exit(EXIT_FAILURE);
     407        }
     408        if (!psMetadataLookupF32(&status, md, "airmass") == 32.32) {
     409            psFree(md);
     410            exit(EXIT_FAILURE);
     411        }
     412        if (!psMetadataLookupF64(&status, md, "ra") == 64.64) {
     413            psFree(md);
     414            exit(EXIT_FAILURE);
     415        }
     416        if (!psMetadataLookupF64(&status, md, "decl") == 64.64) {
     417            psFree(md);
     418            exit(EXIT_FAILURE);
     419        }
     420        if (!psMetadataLookupF32(&status, md, "exp_time") == 32.32) {
     421            psFree(md);
     422            exit(EXIT_FAILURE);
     423        }
     424        if (!psMetadataLookupF32(&status, md, "sat_pixel_frac") == 32.32) {
     425            psFree(md);
     426            exit(EXIT_FAILURE);
     427        }
     428        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     429            psFree(md);
     430            exit(EXIT_FAILURE);
     431        }
     432        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     433            psFree(md);
     434            exit(EXIT_FAILURE);
     435        }
     436        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
     437            psFree(md);
     438            exit(EXIT_FAILURE);
     439        }
     440        if (!psMetadataLookupF64(&status, md, "alt") == 64.64) {
     441            psFree(md);
     442            exit(EXIT_FAILURE);
     443        }
     444        if (!psMetadataLookupF64(&status, md, "az") == 64.64) {
     445            psFree(md);
     446            exit(EXIT_FAILURE);
     447        }
     448        if (!psMetadataLookupF32(&status, md, "ccd_temp") == 32.32) {
     449            psFree(md);
     450            exit(EXIT_FAILURE);
     451        }
     452        if (!psMetadataLookupF64(&status, md, "posang") == 64.64) {
     453            psFree(md);
     454            exit(EXIT_FAILURE);
     455        }
     456        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
     457            psFree(md);
     458            exit(EXIT_FAILURE);
     459        }
     460        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
     461            psFree(md);
     462            exit(EXIT_FAILURE);
     463        }
     464        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
     465            psFree(md);
     466            exit(EXIT_FAILURE);
     467        }
     468        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
     469            psFree(md);
     470            exit(EXIT_FAILURE);
     471        }
     472        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
     473            psFree(md);
     474            exit(EXIT_FAILURE);
     475        }
     476        if (strncmp(psMetadataLookupPtr(&status, md, "object"), "a string", MAX_STRING_LENGTH)) {
     477            psFree(md);
     478            exit(EXIT_FAILURE);
     479        }
     480        if (!psMetadataLookupF32(&status, md, "solang") == 32.32) {
     481            psFree(md);
     482            exit(EXIT_FAILURE);
     483        }
     484            psFree(md);
     485            exit(EXIT_FAILURE);
     486        }
     487
     488        psFree(md);
     489    }
     490
     491    {
     492        psMetadata      *md;
     493        rawImfileRow    *object;
     494        bool            status;
     495
     496        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);
     497        if (!object) {
     498            exit(EXIT_FAILURE);
     499        }
     500
     501        md = rawImfileMetadataFromObject(object);
     502        if (!md) {
     503            exit(EXIT_FAILURE);
     504        }
     505
     506        psFree(object);
     507
     508            psFree(md);
     509            exit(EXIT_FAILURE);
     510        }
     511        if (strncmp(psMetadataLookupPtr(&status, md, "exp_name"), "a string", MAX_STRING_LENGTH)) {
    235512            psFree(md);
    236513            exit(EXIT_FAILURE);
     
    244521            exit(EXIT_FAILURE);
    245522        }
    246 
    247         psFree(md);
    248     }
    249 
    250     {
    251         psMetadata      *md;
    252         pzDoneImfileRow *object;
    253         bool            status;
    254 
    255         object = pzDoneImfileRowAlloc("a string", "a string", "a string", "a string", "a string", "a string", "a string");
    256         if (!object) {
    257             exit(EXIT_FAILURE);
    258         }
    259 
    260         md = pzDoneImfileMetadataFromObject(object);
    261         if (!md) {
    262             exit(EXIT_FAILURE);
    263         }
    264 
    265         psFree(object);
    266 
    267         if (strncmp(psMetadataLookupPtr(&status, md, "exp_id"), "a string", MAX_STRING_LENGTH)) {
     523            psFree(md);
     524            exit(EXIT_FAILURE);
     525        }
     526        if (strncmp(psMetadataLookupPtr(&status, md, "tmp_class_id"), "a string", MAX_STRING_LENGTH)) {
     527            psFree(md);
     528            exit(EXIT_FAILURE);
     529        }
     530        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
     531            psFree(md);
     532            exit(EXIT_FAILURE);
     533        }
     534        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     535            psFree(md);
     536            exit(EXIT_FAILURE);
     537        }
     538        if (strncmp(psMetadataLookupPtr(&status, md, "exp_type"), "a string", MAX_STRING_LENGTH)) {
     539            psFree(md);
     540            exit(EXIT_FAILURE);
     541        }
     542        if (strncmp(psMetadataLookupPtr(&status, md, "filelevel"), "a string", MAX_STRING_LENGTH)) {
     543            psFree(md);
     544            exit(EXIT_FAILURE);
     545        }
     546        if (strncmp(psMetadataLookupPtr(&status, md, "filter"), "a string", MAX_STRING_LENGTH)) {
     547            psFree(md);
     548            exit(EXIT_FAILURE);
     549        }
     550        if (!psMetadataLookupF32(&status, md, "airmass") == 32.32) {
     551            psFree(md);
     552            exit(EXIT_FAILURE);
     553        }
     554        if (!psMetadataLookupF64(&status, md, "ra") == 64.64) {
     555            psFree(md);
     556            exit(EXIT_FAILURE);
     557        }
     558        if (!psMetadataLookupF64(&status, md, "decl") == 64.64) {
     559            psFree(md);
     560            exit(EXIT_FAILURE);
     561        }
     562        if (!psMetadataLookupF32(&status, md, "exp_time") == 32.32) {
     563            psFree(md);
     564            exit(EXIT_FAILURE);
     565        }
     566        if (!psMetadataLookupF32(&status, md, "sat_pixel_frac") == 32.32) {
     567            psFree(md);
     568            exit(EXIT_FAILURE);
     569        }
     570        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     571            psFree(md);
     572            exit(EXIT_FAILURE);
     573        }
     574        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     575            psFree(md);
     576            exit(EXIT_FAILURE);
     577        }
     578        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
     579            psFree(md);
     580            exit(EXIT_FAILURE);
     581        }
     582        if (!psMetadataLookupF64(&status, md, "alt") == 64.64) {
     583            psFree(md);
     584            exit(EXIT_FAILURE);
     585        }
     586        if (!psMetadataLookupF64(&status, md, "az") == 64.64) {
     587            psFree(md);
     588            exit(EXIT_FAILURE);
     589        }
     590        if (!psMetadataLookupF32(&status, md, "ccd_temp") == 32.32) {
     591            psFree(md);
     592            exit(EXIT_FAILURE);
     593        }
     594        if (!psMetadataLookupF64(&status, md, "posang") == 64.64) {
     595            psFree(md);
     596            exit(EXIT_FAILURE);
     597        }
     598        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
     599            psFree(md);
     600            exit(EXIT_FAILURE);
     601        }
     602        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
     603            psFree(md);
     604            exit(EXIT_FAILURE);
     605        }
     606        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
     607            psFree(md);
     608            exit(EXIT_FAILURE);
     609        }
     610        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
     611            psFree(md);
     612            exit(EXIT_FAILURE);
     613        }
     614        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
     615            psFree(md);
     616            exit(EXIT_FAILURE);
     617        }
     618        if (strncmp(psMetadataLookupPtr(&status, md, "object"), "a string", MAX_STRING_LENGTH)) {
     619            psFree(md);
     620            exit(EXIT_FAILURE);
     621        }
     622            psFree(md);
     623            exit(EXIT_FAILURE);
     624        }
     625
     626        psFree(md);
     627    }
     628
     629    {
     630        psMetadata      *md;
     631        guidePendingExpRow *object;
     632        bool            status;
     633
     634        object = guidePendingExpRowAlloc(-64, -64, "a string");
     635        if (!object) {
     636            exit(EXIT_FAILURE);
     637        }
     638
     639        md = guidePendingExpMetadataFromObject(object);
     640        if (!md) {
     641            exit(EXIT_FAILURE);
     642        }
     643
     644        psFree(object);
     645
     646            psFree(md);
     647            exit(EXIT_FAILURE);
     648        }
     649            psFree(md);
     650            exit(EXIT_FAILURE);
     651        }
     652        if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
     653            psFree(md);
     654            exit(EXIT_FAILURE);
     655        }
     656
     657        psFree(md);
     658    }
     659
     660    {
     661        psMetadata      *md;
     662        chipRunRow      *object;
     663        bool            status;
     664
     665        object = chipRunRowAlloc(-64, "a string", "a string", "a string", "a string", "a string", "a string", "a string");
     666        if (!object) {
     667            exit(EXIT_FAILURE);
     668        }
     669
     670        md = chipRunMetadataFromObject(object);
     671        if (!md) {
     672            exit(EXIT_FAILURE);
     673        }
     674
     675        psFree(object);
     676
     677            psFree(md);
     678            exit(EXIT_FAILURE);
     679        }
     680        if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
     681            psFree(md);
     682            exit(EXIT_FAILURE);
     683        }
     684        if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
     685            psFree(md);
     686            exit(EXIT_FAILURE);
     687        }
     688        if (strncmp(psMetadataLookupPtr(&status, md, "workdir_state"), "a string", MAX_STRING_LENGTH)) {
     689            psFree(md);
     690            exit(EXIT_FAILURE);
     691        }
     692        if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
     693            psFree(md);
     694            exit(EXIT_FAILURE);
     695        }
     696        if (strncmp(psMetadataLookupPtr(&status, md, "reduction"), "a string", MAX_STRING_LENGTH)) {
     697            psFree(md);
     698            exit(EXIT_FAILURE);
     699        }
     700        if (strncmp(psMetadataLookupPtr(&status, md, "expgroup"), "a string", MAX_STRING_LENGTH)) {
     701            psFree(md);
     702            exit(EXIT_FAILURE);
     703        }
     704        if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
     705            psFree(md);
     706            exit(EXIT_FAILURE);
     707        }
     708
     709        psFree(md);
     710    }
     711
     712    {
     713        psMetadata      *md;
     714        chipInputImfileRow *object;
     715        bool            status;
     716
     717        object = chipInputImfileRowAlloc(-64, -64, "a string");
     718        if (!object) {
     719            exit(EXIT_FAILURE);
     720        }
     721
     722        md = chipInputImfileMetadataFromObject(object);
     723        if (!md) {
     724            exit(EXIT_FAILURE);
     725        }
     726
     727        psFree(object);
     728
     729            psFree(md);
     730            exit(EXIT_FAILURE);
     731        }
     732            psFree(md);
     733            exit(EXIT_FAILURE);
     734        }
     735        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
     736            psFree(md);
     737            exit(EXIT_FAILURE);
     738        }
     739
     740        psFree(md);
     741    }
     742
     743    {
     744        psMetadata      *md;
     745        chipProcessedImfileRow *object;
     746        bool            status;
     747
     748        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);
     749        if (!object) {
     750            exit(EXIT_FAILURE);
     751        }
     752
     753        md = chipProcessedImfileMetadataFromObject(object);
     754        if (!md) {
     755            exit(EXIT_FAILURE);
     756        }
     757
     758        psFree(object);
     759
     760            psFree(md);
     761            exit(EXIT_FAILURE);
     762        }
     763            psFree(md);
     764            exit(EXIT_FAILURE);
     765        }
     766        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
     767            psFree(md);
     768            exit(EXIT_FAILURE);
     769        }
     770        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     771            psFree(md);
     772            exit(EXIT_FAILURE);
     773        }
     774        if (!psMetadataLookupF32(&status, md, "bg") == 32.32) {
     775            psFree(md);
     776            exit(EXIT_FAILURE);
     777        }
     778        if (!psMetadataLookupF32(&status, md, "bg_stdev") == 32.32) {
     779            psFree(md);
     780            exit(EXIT_FAILURE);
     781        }
     782        if (!psMetadataLookupF32(&status, md, "bg_mean_stdev") == 32.32) {
     783            psFree(md);
     784            exit(EXIT_FAILURE);
     785        }
     786        if (!psMetadataLookupF32(&status, md, "bias") == 32.32) {
     787            psFree(md);
     788            exit(EXIT_FAILURE);
     789        }
     790        if (!psMetadataLookupF32(&status, md, "bias_stdev") == 32.32) {
     791            psFree(md);
     792            exit(EXIT_FAILURE);
     793        }
     794        if (!psMetadataLookupF32(&status, md, "fringe_0") == 32.32) {
     795            psFree(md);
     796            exit(EXIT_FAILURE);
     797        }
     798        if (!psMetadataLookupF32(&status, md, "fringe_1") == 32.32) {
     799            psFree(md);
     800            exit(EXIT_FAILURE);
     801        }
     802        if (!psMetadataLookupF32(&status, md, "fringe_2") == 32.32) {
     803            psFree(md);
     804            exit(EXIT_FAILURE);
     805        }
     806        if (!psMetadataLookupF32(&status, md, "sigma_ra") == 32.32) {
     807            psFree(md);
     808            exit(EXIT_FAILURE);
     809        }
     810        if (!psMetadataLookupF32(&status, md, "sigma_dec") == 32.32) {
     811            psFree(md);
     812            exit(EXIT_FAILURE);
     813        }
     814        if (!psMetadataLookupF32(&status, md, "ap_resid") == 32.32) {
     815            psFree(md);
     816            exit(EXIT_FAILURE);
     817        }
     818        if (!psMetadataLookupF32(&status, md, "ap_resid_stdev") == 32.32) {
     819            psFree(md);
     820            exit(EXIT_FAILURE);
     821        }
     822        if (!psMetadataLookupF32(&status, md, "fwhm") == 32.32) {
     823            psFree(md);
     824            exit(EXIT_FAILURE);
     825        }
     826        if (!psMetadataLookupF32(&status, md, "fwhm_range") == 32.32) {
     827            psFree(md);
     828            exit(EXIT_FAILURE);
     829        }
     830        if (!psMetadataLookupS32(&status, md, "n_stars") == -32) {
     831            psFree(md);
     832            exit(EXIT_FAILURE);
     833        }
     834        if (!psMetadataLookupS32(&status, md, "n_extended") == -32) {
     835            psFree(md);
     836            exit(EXIT_FAILURE);
     837        }
     838        if (!psMetadataLookupS32(&status, md, "n_cr") == -32) {
     839            psFree(md);
     840            exit(EXIT_FAILURE);
     841        }
     842        if (!psMetadataLookupS32(&status, md, "n_astrom") == -32) {
     843            psFree(md);
     844            exit(EXIT_FAILURE);
     845        }
     846        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     847            psFree(md);
     848            exit(EXIT_FAILURE);
     849        }
     850            psFree(md);
     851            exit(EXIT_FAILURE);
     852        }
     853
     854        psFree(md);
     855    }
     856
     857    {
     858        psMetadata      *md;
     859        chipMaskRow     *object;
     860        bool            status;
     861
     862        object = chipMaskRowAlloc("a string");
     863        if (!object) {
     864            exit(EXIT_FAILURE);
     865        }
     866
     867        md = chipMaskMetadataFromObject(object);
     868        if (!md) {
     869            exit(EXIT_FAILURE);
     870        }
     871
     872        psFree(object);
     873
     874        if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
     875            psFree(md);
     876            exit(EXIT_FAILURE);
     877        }
     878
     879        psFree(md);
     880    }
     881
     882    {
     883        psMetadata      *md;
     884        camRunRow       *object;
     885        bool            status;
     886
     887        object = camRunRowAlloc(-64, -64, "a string", "a string", "a string", "a string", "a string", "a string", "a string");
     888        if (!object) {
     889            exit(EXIT_FAILURE);
     890        }
     891
     892        md = camRunMetadataFromObject(object);
     893        if (!md) {
     894            exit(EXIT_FAILURE);
     895        }
     896
     897        psFree(object);
     898
     899            psFree(md);
     900            exit(EXIT_FAILURE);
     901        }
     902            psFree(md);
     903            exit(EXIT_FAILURE);
     904        }
     905        if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
     906            psFree(md);
     907            exit(EXIT_FAILURE);
     908        }
     909        if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
     910            psFree(md);
     911            exit(EXIT_FAILURE);
     912        }
     913        if (strncmp(psMetadataLookupPtr(&status, md, "workdir_state"), "a string", MAX_STRING_LENGTH)) {
     914            psFree(md);
     915            exit(EXIT_FAILURE);
     916        }
     917        if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
     918            psFree(md);
     919            exit(EXIT_FAILURE);
     920        }
     921        if (strncmp(psMetadataLookupPtr(&status, md, "reduction"), "a string", MAX_STRING_LENGTH)) {
     922            psFree(md);
     923            exit(EXIT_FAILURE);
     924        }
     925        if (strncmp(psMetadataLookupPtr(&status, md, "expgroup"), "a string", MAX_STRING_LENGTH)) {
     926            psFree(md);
     927            exit(EXIT_FAILURE);
     928        }
     929        if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
     930            psFree(md);
     931            exit(EXIT_FAILURE);
     932        }
     933
     934        psFree(md);
     935    }
     936
     937    {
     938        psMetadata      *md;
     939        camProcessedExpRow *object;
     940        bool            status;
     941
     942        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);
     943        if (!object) {
     944            exit(EXIT_FAILURE);
     945        }
     946
     947        md = camProcessedExpMetadataFromObject(object);
     948        if (!md) {
     949            exit(EXIT_FAILURE);
     950        }
     951
     952        psFree(object);
     953
     954            psFree(md);
     955            exit(EXIT_FAILURE);
     956        }
     957            psFree(md);
     958            exit(EXIT_FAILURE);
     959        }
     960        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     961            psFree(md);
     962            exit(EXIT_FAILURE);
     963        }
     964        if (!psMetadataLookupF32(&status, md, "bg") == 32.32) {
     965            psFree(md);
     966            exit(EXIT_FAILURE);
     967        }
     968        if (!psMetadataLookupF32(&status, md, "bg_stdev") == 32.32) {
     969            psFree(md);
     970            exit(EXIT_FAILURE);
     971        }
     972        if (!psMetadataLookupF32(&status, md, "bg_mean_stdev") == 32.32) {
     973            psFree(md);
     974            exit(EXIT_FAILURE);
     975        }
     976        if (!psMetadataLookupF32(&status, md, "sigma_ra") == 32.32) {
     977            psFree(md);
     978            exit(EXIT_FAILURE);
     979        }
     980        if (!psMetadataLookupF32(&status, md, "sigma_dec") == 32.32) {
     981            psFree(md);
     982            exit(EXIT_FAILURE);
     983        }
     984        if (!psMetadataLookupF32(&status, md, "zp_mean") == 32.32) {
     985            psFree(md);
     986            exit(EXIT_FAILURE);
     987        }
     988        if (!psMetadataLookupF32(&status, md, "zp_stdev") == 32.32) {
     989            psFree(md);
     990            exit(EXIT_FAILURE);
     991        }
     992        if (!psMetadataLookupF32(&status, md, "fwhm") == 32.32) {
     993            psFree(md);
     994            exit(EXIT_FAILURE);
     995        }
     996        if (!psMetadataLookupF32(&status, md, "fwhm_range") == 32.32) {
     997            psFree(md);
     998            exit(EXIT_FAILURE);
     999        }
     1000        if (!psMetadataLookupS32(&status, md, "n_stars") == -32) {
     1001            psFree(md);
     1002            exit(EXIT_FAILURE);
     1003        }
     1004        if (!psMetadataLookupS32(&status, md, "n_extended") == -32) {
     1005            psFree(md);
     1006            exit(EXIT_FAILURE);
     1007        }
     1008        if (!psMetadataLookupS32(&status, md, "n_cr") == -32) {
     1009            psFree(md);
     1010            exit(EXIT_FAILURE);
     1011        }
     1012        if (!psMetadataLookupS32(&status, md, "n_astrom") == -32) {
     1013            psFree(md);
     1014            exit(EXIT_FAILURE);
     1015        }
     1016        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     1017            psFree(md);
     1018            exit(EXIT_FAILURE);
     1019        }
     1020            psFree(md);
     1021            exit(EXIT_FAILURE);
     1022        }
     1023
     1024        psFree(md);
     1025    }
     1026
     1027    {
     1028        psMetadata      *md;
     1029        camMaskRow      *object;
     1030        bool            status;
     1031
     1032        object = camMaskRowAlloc("a string");
     1033        if (!object) {
     1034            exit(EXIT_FAILURE);
     1035        }
     1036
     1037        md = camMaskMetadataFromObject(object);
     1038        if (!md) {
     1039            exit(EXIT_FAILURE);
     1040        }
     1041
     1042        psFree(object);
     1043
     1044        if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
     1045            psFree(md);
     1046            exit(EXIT_FAILURE);
     1047        }
     1048
     1049        psFree(md);
     1050    }
     1051
     1052    {
     1053        psMetadata      *md;
     1054        warpRunRow      *object;
     1055        bool            status;
     1056
     1057        object = warpRunRowAlloc(-64, "a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z");
     1058        if (!object) {
     1059            exit(EXIT_FAILURE);
     1060        }
     1061
     1062        md = warpRunMetadataFromObject(object);
     1063        if (!md) {
     1064            exit(EXIT_FAILURE);
     1065        }
     1066
     1067        psFree(object);
     1068
     1069            psFree(md);
     1070            exit(EXIT_FAILURE);
     1071        }
     1072        if (strncmp(psMetadataLookupPtr(&status, md, "mode"), "a string", MAX_STRING_LENGTH)) {
     1073            psFree(md);
     1074            exit(EXIT_FAILURE);
     1075        }
     1076        if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
     1077            psFree(md);
     1078            exit(EXIT_FAILURE);
     1079        }
     1080        if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
     1081            psFree(md);
     1082            exit(EXIT_FAILURE);
     1083        }
     1084        if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
     1085            psFree(md);
     1086            exit(EXIT_FAILURE);
     1087        }
     1088            psFree(md);
     1089            exit(EXIT_FAILURE);
     1090        }
     1091
     1092        psFree(md);
     1093    }
     1094
     1095    {
     1096        psMetadata      *md;
     1097        warpInputExpRow *object;
     1098        bool            status;
     1099
     1100        object = warpInputExpRowAlloc(-64, -64, true);
     1101        if (!object) {
     1102            exit(EXIT_FAILURE);
     1103        }
     1104
     1105        md = warpInputExpMetadataFromObject(object);
     1106        if (!md) {
     1107            exit(EXIT_FAILURE);
     1108        }
     1109
     1110        psFree(object);
     1111
     1112            psFree(md);
     1113            exit(EXIT_FAILURE);
     1114        }
     1115            psFree(md);
     1116            exit(EXIT_FAILURE);
     1117        }
     1118        if (!psMetadataLookupBool(&status, md, "magiced") == true) {
     1119            psFree(md);
     1120            exit(EXIT_FAILURE);
     1121        }
     1122
     1123        psFree(md);
     1124    }
     1125
     1126    {
     1127        psMetadata      *md;
     1128        warpSkyCellMapRow *object;
     1129        bool            status;
     1130
     1131        object = warpSkyCellMapRowAlloc(-64, "a string", "a string", -64, "a string", -16);
     1132        if (!object) {
     1133            exit(EXIT_FAILURE);
     1134        }
     1135
     1136        md = warpSkyCellMapMetadataFromObject(object);
     1137        if (!md) {
     1138            exit(EXIT_FAILURE);
     1139        }
     1140
     1141        psFree(object);
     1142
     1143            psFree(md);
     1144            exit(EXIT_FAILURE);
     1145        }
     1146        if (strncmp(psMetadataLookupPtr(&status, md, "skycell_id"), "a string", MAX_STRING_LENGTH)) {
     1147            psFree(md);
     1148            exit(EXIT_FAILURE);
     1149        }
     1150        if (strncmp(psMetadataLookupPtr(&status, md, "tess_id"), "a string", MAX_STRING_LENGTH)) {
     1151            psFree(md);
     1152            exit(EXIT_FAILURE);
     1153        }
     1154            psFree(md);
     1155            exit(EXIT_FAILURE);
     1156        }
     1157        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
     1158            psFree(md);
     1159            exit(EXIT_FAILURE);
     1160        }
     1161            psFree(md);
     1162            exit(EXIT_FAILURE);
     1163        }
     1164
     1165        psFree(md);
     1166    }
     1167
     1168    {
     1169        psMetadata      *md;
     1170        warpSkyfileRow  *object;
     1171        bool            status;
     1172
     1173        object = warpSkyfileRowAlloc(-64, "a string", "a string", "a string", "a string", 64.64, 64.64);
     1174        if (!object) {
     1175            exit(EXIT_FAILURE);
     1176        }
     1177
     1178        md = warpSkyfileMetadataFromObject(object);
     1179        if (!md) {
     1180            exit(EXIT_FAILURE);
     1181        }
     1182
     1183        psFree(object);
     1184
     1185            psFree(md);
     1186            exit(EXIT_FAILURE);
     1187        }
     1188        if (strncmp(psMetadataLookupPtr(&status, md, "skycell_id"), "a string", MAX_STRING_LENGTH)) {
     1189            psFree(md);
     1190            exit(EXIT_FAILURE);
     1191        }
     1192        if (strncmp(psMetadataLookupPtr(&status, md, "tess_id"), "a string", MAX_STRING_LENGTH)) {
     1193            psFree(md);
     1194            exit(EXIT_FAILURE);
     1195        }
     1196        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     1197            psFree(md);
     1198            exit(EXIT_FAILURE);
     1199        }
     1200        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     1201            psFree(md);
     1202            exit(EXIT_FAILURE);
     1203        }
     1204        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     1205            psFree(md);
     1206            exit(EXIT_FAILURE);
     1207        }
     1208        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     1209            psFree(md);
     1210            exit(EXIT_FAILURE);
     1211        }
     1212
     1213        psFree(md);
     1214    }
     1215
     1216    {
     1217        psMetadata      *md;
     1218        diffRunRow      *object;
     1219        bool            status;
     1220
     1221        object = diffRunRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string");
     1222        if (!object) {
     1223            exit(EXIT_FAILURE);
     1224        }
     1225
     1226        md = diffRunMetadataFromObject(object);
     1227        if (!md) {
     1228            exit(EXIT_FAILURE);
     1229        }
     1230
     1231        psFree(object);
     1232
     1233            psFree(md);
     1234            exit(EXIT_FAILURE);
     1235        }
     1236        if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
     1237            psFree(md);
     1238            exit(EXIT_FAILURE);
     1239        }
     1240        if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
     1241            psFree(md);
     1242            exit(EXIT_FAILURE);
     1243        }
     1244        if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
     1245            psFree(md);
     1246            exit(EXIT_FAILURE);
     1247        }
     1248            psFree(md);
     1249            exit(EXIT_FAILURE);
     1250        }
     1251        if (strncmp(psMetadataLookupPtr(&status, md, "skycell_id"), "a string", MAX_STRING_LENGTH)) {
     1252            psFree(md);
     1253            exit(EXIT_FAILURE);
     1254        }
     1255        if (strncmp(psMetadataLookupPtr(&status, md, "tess_id"), "a string", MAX_STRING_LENGTH)) {
     1256            psFree(md);
     1257            exit(EXIT_FAILURE);
     1258        }
     1259
     1260        psFree(md);
     1261    }
     1262
     1263    {
     1264        psMetadata      *md;
     1265        diffInputSkyfileRow *object;
     1266        bool            status;
     1267
     1268        object = diffInputSkyfileRowAlloc(-64, -64, "a string", "a string", "a string", true);
     1269        if (!object) {
     1270            exit(EXIT_FAILURE);
     1271        }
     1272
     1273        md = diffInputSkyfileMetadataFromObject(object);
     1274        if (!md) {
     1275            exit(EXIT_FAILURE);
     1276        }
     1277
     1278        psFree(object);
     1279
     1280            psFree(md);
     1281            exit(EXIT_FAILURE);
     1282        }
     1283            psFree(md);
     1284            exit(EXIT_FAILURE);
     1285        }
     1286        if (strncmp(psMetadataLookupPtr(&status, md, "skycell_id"), "a string", MAX_STRING_LENGTH)) {
     1287            psFree(md);
     1288            exit(EXIT_FAILURE);
     1289        }
     1290        if (strncmp(psMetadataLookupPtr(&status, md, "tess_id"), "a string", MAX_STRING_LENGTH)) {
     1291            psFree(md);
     1292            exit(EXIT_FAILURE);
     1293        }
     1294        if (strncmp(psMetadataLookupPtr(&status, md, "kind"), "a string", MAX_STRING_LENGTH)) {
     1295            psFree(md);
     1296            exit(EXIT_FAILURE);
     1297        }
     1298        if (!psMetadataLookupBool(&status, md, "template") == true) {
     1299            psFree(md);
     1300            exit(EXIT_FAILURE);
     1301        }
     1302
     1303        psFree(md);
     1304    }
     1305
     1306    {
     1307        psMetadata      *md;
     1308        diffSkyfileRow  *object;
     1309        bool            status;
     1310
     1311        object = diffSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64);
     1312        if (!object) {
     1313            exit(EXIT_FAILURE);
     1314        }
     1315
     1316        md = diffSkyfileMetadataFromObject(object);
     1317        if (!md) {
     1318            exit(EXIT_FAILURE);
     1319        }
     1320
     1321        psFree(object);
     1322
     1323            psFree(md);
     1324            exit(EXIT_FAILURE);
     1325        }
     1326        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     1327            psFree(md);
     1328            exit(EXIT_FAILURE);
     1329        }
     1330        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     1331            psFree(md);
     1332            exit(EXIT_FAILURE);
     1333        }
     1334        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     1335            psFree(md);
     1336            exit(EXIT_FAILURE);
     1337        }
     1338        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     1339            psFree(md);
     1340            exit(EXIT_FAILURE);
     1341        }
     1342
     1343        psFree(md);
     1344    }
     1345
     1346    {
     1347        psMetadata      *md;
     1348        stackRunRow     *object;
     1349        bool            status;
     1350
     1351        object = stackRunRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string");
     1352        if (!object) {
     1353            exit(EXIT_FAILURE);
     1354        }
     1355
     1356        md = stackRunMetadataFromObject(object);
     1357        if (!md) {
     1358            exit(EXIT_FAILURE);
     1359        }
     1360
     1361        psFree(object);
     1362
     1363            psFree(md);
     1364            exit(EXIT_FAILURE);
     1365        }
     1366        if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
     1367            psFree(md);
     1368            exit(EXIT_FAILURE);
     1369        }
     1370        if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
     1371            psFree(md);
     1372            exit(EXIT_FAILURE);
     1373        }
     1374        if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
     1375            psFree(md);
     1376            exit(EXIT_FAILURE);
     1377        }
     1378            psFree(md);
     1379            exit(EXIT_FAILURE);
     1380        }
     1381        if (strncmp(psMetadataLookupPtr(&status, md, "skycell_id"), "a string", MAX_STRING_LENGTH)) {
     1382            psFree(md);
     1383            exit(EXIT_FAILURE);
     1384        }
     1385        if (strncmp(psMetadataLookupPtr(&status, md, "tess_id"), "a string", MAX_STRING_LENGTH)) {
     1386            psFree(md);
     1387            exit(EXIT_FAILURE);
     1388        }
     1389
     1390        psFree(md);
     1391    }
     1392
     1393    {
     1394        psMetadata      *md;
     1395        stackInputSkyfileRow *object;
     1396        bool            status;
     1397
     1398        object = stackInputSkyfileRowAlloc(-64, -64);
     1399        if (!object) {
     1400            exit(EXIT_FAILURE);
     1401        }
     1402
     1403        md = stackInputSkyfileMetadataFromObject(object);
     1404        if (!md) {
     1405            exit(EXIT_FAILURE);
     1406        }
     1407
     1408        psFree(object);
     1409
     1410            psFree(md);
     1411            exit(EXIT_FAILURE);
     1412        }
     1413            psFree(md);
     1414            exit(EXIT_FAILURE);
     1415        }
     1416
     1417        psFree(md);
     1418    }
     1419
     1420    {
     1421        psMetadata      *md;
     1422        stackSumSkyfileRow *object;
     1423        bool            status;
     1424
     1425        object = stackSumSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64);
     1426        if (!object) {
     1427            exit(EXIT_FAILURE);
     1428        }
     1429
     1430        md = stackSumSkyfileMetadataFromObject(object);
     1431        if (!md) {
     1432            exit(EXIT_FAILURE);
     1433        }
     1434
     1435        psFree(object);
     1436
     1437            psFree(md);
     1438            exit(EXIT_FAILURE);
     1439        }
     1440        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
     1441            psFree(md);
     1442            exit(EXIT_FAILURE);
     1443        }
     1444        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     1445            psFree(md);
     1446            exit(EXIT_FAILURE);
     1447        }
     1448        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     1449            psFree(md);
     1450            exit(EXIT_FAILURE);
     1451        }
     1452        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     1453            psFree(md);
     1454            exit(EXIT_FAILURE);
     1455        }
     1456
     1457        psFree(md);
     1458    }
     1459
     1460    {
     1461        psMetadata      *md;
     1462        detRunRow       *object;
     1463        bool            status;
     1464
     1465        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);
     1466        if (!object) {
     1467            exit(EXIT_FAILURE);
     1468        }
     1469
     1470        md = detRunMetadataFromObject(object);
     1471        if (!md) {
     1472            exit(EXIT_FAILURE);
     1473        }
     1474
     1475        psFree(object);
     1476
     1477            psFree(md);
     1478            exit(EXIT_FAILURE);
     1479        }
     1480        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
     1481            psFree(md);
     1482            exit(EXIT_FAILURE);
     1483        }
     1484        if (strncmp(psMetadataLookupPtr(&status, md, "det_type"), "a string", MAX_STRING_LENGTH)) {
     1485            psFree(md);
     1486            exit(EXIT_FAILURE);
     1487        }
     1488        if (strncmp(psMetadataLookupPtr(&status, md, "mode"), "a string", MAX_STRING_LENGTH)) {
     1489            psFree(md);
     1490            exit(EXIT_FAILURE);
     1491        }
     1492        if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
     1493            psFree(md);
     1494            exit(EXIT_FAILURE);
     1495        }
     1496        if (strncmp(psMetadataLookupPtr(&status, md, "filelevel"), "a string", MAX_STRING_LENGTH)) {
     1497            psFree(md);
     1498            exit(EXIT_FAILURE);
     1499        }
     1500        if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
    2681501            psFree(md);
    2691502            exit(EXIT_FAILURE);
     
    2771510            exit(EXIT_FAILURE);
    2781511        }
    279         if (strncmp(psMetadataLookupPtr(&status, md, "class"), "a string", MAX_STRING_LENGTH)) {
     1512        if (strncmp(psMetadataLookupPtr(&status, md, "exp_type"), "a string", MAX_STRING_LENGTH)) {
     1513            psFree(md);
     1514            exit(EXIT_FAILURE);
     1515        }
     1516        if (strncmp(psMetadataLookupPtr(&status, md, "reduction"), "a string", MAX_STRING_LENGTH)) {
     1517            psFree(md);
     1518            exit(EXIT_FAILURE);
     1519        }
     1520        if (strncmp(psMetadataLookupPtr(&status, md, "filter"), "a string", MAX_STRING_LENGTH)) {
     1521            psFree(md);
     1522            exit(EXIT_FAILURE);
     1523        }
     1524        if (!psMetadataLookupF32(&status, md, "airmass_min") == 32.32) {
     1525            psFree(md);
     1526            exit(EXIT_FAILURE);
     1527        }
     1528        if (!psMetadataLookupF32(&status, md, "airmass_max") == 32.32) {
     1529            psFree(md);
     1530            exit(EXIT_FAILURE);
     1531        }
     1532        if (!psMetadataLookupF32(&status, md, "exp_time_min") == 32.32) {
     1533            psFree(md);
     1534            exit(EXIT_FAILURE);
     1535        }
     1536        if (!psMetadataLookupF32(&status, md, "exp_time_max") == 32.32) {
     1537            psFree(md);
     1538            exit(EXIT_FAILURE);
     1539        }
     1540        if (!psMetadataLookupF32(&status, md, "ccd_temp_min") == 32.32) {
     1541            psFree(md);
     1542            exit(EXIT_FAILURE);
     1543        }
     1544        if (!psMetadataLookupF32(&status, md, "ccd_temp_max") == 32.32) {
     1545            psFree(md);
     1546            exit(EXIT_FAILURE);
     1547        }
     1548        if (!psMetadataLookupF64(&status, md, "posang_min") == 64.64) {
     1549            psFree(md);
     1550            exit(EXIT_FAILURE);
     1551        }
     1552        if (!psMetadataLookupF64(&status, md, "posang_max") == 64.64) {
     1553            psFree(md);
     1554            exit(EXIT_FAILURE);
     1555        }
     1556            psFree(md);
     1557            exit(EXIT_FAILURE);
     1558        }
     1559            psFree(md);
     1560            exit(EXIT_FAILURE);
     1561        }
     1562            psFree(md);
     1563            exit(EXIT_FAILURE);
     1564        }
     1565            psFree(md);
     1566            exit(EXIT_FAILURE);
     1567        }
     1568            psFree(md);
     1569            exit(EXIT_FAILURE);
     1570        }
     1571        if (!psMetadataLookupF32(&status, md, "solang_min") == 32.32) {
     1572            psFree(md);
     1573            exit(EXIT_FAILURE);
     1574        }
     1575        if (!psMetadataLookupF32(&status, md, "solang_max") == 32.32) {
     1576            psFree(md);
     1577            exit(EXIT_FAILURE);
     1578        }
     1579        if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
     1580            psFree(md);
     1581            exit(EXIT_FAILURE);
     1582        }
     1583        if (!psMetadataLookupS32(&status, md, "parent") == -32) {
     1584            psFree(md);
     1585            exit(EXIT_FAILURE);
     1586        }
     1587
     1588        psFree(md);
     1589    }
     1590
     1591    {
     1592        psMetadata      *md;
     1593        detInputExpRow  *object;
     1594        bool            status;
     1595
     1596        object = detInputExpRowAlloc(-64, -32, -64, true);
     1597        if (!object) {
     1598            exit(EXIT_FAILURE);
     1599        }
     1600
     1601        md = detInputExpMetadataFromObject(object);
     1602        if (!md) {
     1603            exit(EXIT_FAILURE);
     1604        }
     1605
     1606        psFree(object);
     1607
     1608            psFree(md);
     1609            exit(EXIT_FAILURE);
     1610        }
     1611        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
     1612            psFree(md);
     1613            exit(EXIT_FAILURE);
     1614        }
     1615            psFree(md);
     1616            exit(EXIT_FAILURE);
     1617        }
     1618        if (!psMetadataLookupBool(&status, md, "include") == true) {
     1619            psFree(md);
     1620            exit(EXIT_FAILURE);
     1621        }
     1622
     1623        psFree(md);
     1624    }
     1625
     1626    {
     1627        psMetadata      *md;
     1628        detProcessedImfileRow *object;
     1629        bool            status;
     1630
     1631        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);
     1632        if (!object) {
     1633            exit(EXIT_FAILURE);
     1634        }
     1635
     1636        md = detProcessedImfileMetadataFromObject(object);
     1637        if (!md) {
     1638            exit(EXIT_FAILURE);
     1639        }
     1640
     1641        psFree(object);
     1642
     1643            psFree(md);
     1644            exit(EXIT_FAILURE);
     1645        }
    2801646            psFree(md);
    2811647            exit(EXIT_FAILURE);
     
    2851651            exit(EXIT_FAILURE);
    2861652        }
    287         if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
    288             psFree(md);
    289             exit(EXIT_FAILURE);
    290         }
    2911653        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    2921654            psFree(md);
    2931655            exit(EXIT_FAILURE);
    2941656        }
    295 
    296         psFree(md);
    297     }
    298 
    299     {
    300         psMetadata      *md;
    301         newExpRow       *object;
    302         bool            status;
    303 
    304         object = newExpRowAlloc("a string", "a string", "a string", "a string", -32, "a string");
    305         if (!object) {
    306             exit(EXIT_FAILURE);
    307         }
    308 
    309         md = newExpMetadataFromObject(object);
    310         if (!md) {
    311             exit(EXIT_FAILURE);
    312         }
    313 
    314         psFree(object);
    315 
    316         if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
    317             psFree(md);
    318             exit(EXIT_FAILURE);
    319         }
    320         if (strncmp(psMetadataLookupPtr(&status, md, "exp_id"), "a string", MAX_STRING_LENGTH)) {
    321             psFree(md);
    322             exit(EXIT_FAILURE);
    323         }
    324         if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
    325             psFree(md);
    326             exit(EXIT_FAILURE);
    327         }
    328         if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) {
    329             psFree(md);
    330             exit(EXIT_FAILURE);
    331         }
    332         if (!psMetadataLookupS32(&status, md, "imfiles") == -32) {
    333             psFree(md);
    334             exit(EXIT_FAILURE);
    335         }
    336         if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
    337             psFree(md);
    338             exit(EXIT_FAILURE);
    339         }
    340 
    341         psFree(md);
    342     }
    343 
    344     {
    345         psMetadata      *md;
    346         newImfileRow    *object;
    347         bool            status;
    348 
    349         object = newImfileRowAlloc("a string", "a string", "a string", "a string");
    350         if (!object) {
    351             exit(EXIT_FAILURE);
    352         }
    353 
    354         md = newImfileMetadataFromObject(object);
    355         if (!md) {
    356             exit(EXIT_FAILURE);
    357         }
    358 
    359         psFree(object);
    360 
    361         if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
    362             psFree(md);
    363             exit(EXIT_FAILURE);
    364         }
    365         if (strncmp(psMetadataLookupPtr(&status, md, "class"), "a string", MAX_STRING_LENGTH)) {
     1657        if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
     1658            psFree(md);
     1659            exit(EXIT_FAILURE);
     1660        }
     1661        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     1662            psFree(md);
     1663            exit(EXIT_FAILURE);
     1664        }
     1665        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     1666            psFree(md);
     1667            exit(EXIT_FAILURE);
     1668        }
     1669        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
     1670            psFree(md);
     1671            exit(EXIT_FAILURE);
     1672        }
     1673        if (!psMetadataLookupF64(&status, md, "fringe_0") == 64.64) {
     1674            psFree(md);
     1675            exit(EXIT_FAILURE);
     1676        }
     1677        if (!psMetadataLookupF64(&status, md, "fringe_1") == 64.64) {
     1678            psFree(md);
     1679            exit(EXIT_FAILURE);
     1680        }
     1681        if (!psMetadataLookupF64(&status, md, "fringe_2") == 64.64) {
     1682            psFree(md);
     1683            exit(EXIT_FAILURE);
     1684        }
     1685        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
     1686            psFree(md);
     1687            exit(EXIT_FAILURE);
     1688        }
     1689        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
     1690            psFree(md);
     1691            exit(EXIT_FAILURE);
     1692        }
     1693        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
     1694            psFree(md);
     1695            exit(EXIT_FAILURE);
     1696        }
     1697        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
     1698            psFree(md);
     1699            exit(EXIT_FAILURE);
     1700        }
     1701        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
     1702            psFree(md);
     1703            exit(EXIT_FAILURE);
     1704        }
     1705        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     1706            psFree(md);
     1707            exit(EXIT_FAILURE);
     1708        }
     1709            psFree(md);
     1710            exit(EXIT_FAILURE);
     1711        }
     1712
     1713        psFree(md);
     1714    }
     1715
     1716    {
     1717        psMetadata      *md;
     1718        detProcessedExpRow *object;
     1719        bool            status;
     1720
     1721        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);
     1722        if (!object) {
     1723            exit(EXIT_FAILURE);
     1724        }
     1725
     1726        md = detProcessedExpMetadataFromObject(object);
     1727        if (!md) {
     1728            exit(EXIT_FAILURE);
     1729        }
     1730
     1731        psFree(object);
     1732
     1733            psFree(md);
     1734            exit(EXIT_FAILURE);
     1735        }
     1736            psFree(md);
     1737            exit(EXIT_FAILURE);
     1738        }
     1739        if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
     1740            psFree(md);
     1741            exit(EXIT_FAILURE);
     1742        }
     1743        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     1744            psFree(md);
     1745            exit(EXIT_FAILURE);
     1746        }
     1747        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     1748            psFree(md);
     1749            exit(EXIT_FAILURE);
     1750        }
     1751        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
     1752            psFree(md);
     1753            exit(EXIT_FAILURE);
     1754        }
     1755        if (!psMetadataLookupF64(&status, md, "fringe_0") == 64.64) {
     1756            psFree(md);
     1757            exit(EXIT_FAILURE);
     1758        }
     1759        if (!psMetadataLookupF64(&status, md, "fringe_1") == 64.64) {
     1760            psFree(md);
     1761            exit(EXIT_FAILURE);
     1762        }
     1763        if (!psMetadataLookupF64(&status, md, "fringe_2") == 64.64) {
     1764            psFree(md);
     1765            exit(EXIT_FAILURE);
     1766        }
     1767        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
     1768            psFree(md);
     1769            exit(EXIT_FAILURE);
     1770        }
     1771        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
     1772            psFree(md);
     1773            exit(EXIT_FAILURE);
     1774        }
     1775        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
     1776            psFree(md);
     1777            exit(EXIT_FAILURE);
     1778        }
     1779        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
     1780            psFree(md);
     1781            exit(EXIT_FAILURE);
     1782        }
     1783        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
     1784            psFree(md);
     1785            exit(EXIT_FAILURE);
     1786        }
     1787        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     1788            psFree(md);
     1789            exit(EXIT_FAILURE);
     1790        }
     1791            psFree(md);
     1792            exit(EXIT_FAILURE);
     1793        }
     1794
     1795        psFree(md);
     1796    }
     1797
     1798    {
     1799        psMetadata      *md;
     1800        detStackedImfileRow *object;
     1801        bool            status;
     1802
     1803        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);
     1804        if (!object) {
     1805            exit(EXIT_FAILURE);
     1806        }
     1807
     1808        md = detStackedImfileMetadataFromObject(object);
     1809        if (!md) {
     1810            exit(EXIT_FAILURE);
     1811        }
     1812
     1813        psFree(object);
     1814
     1815            psFree(md);
     1816            exit(EXIT_FAILURE);
     1817        }
     1818        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
    3661819            psFree(md);
    3671820            exit(EXIT_FAILURE);
     
    3751828            exit(EXIT_FAILURE);
    3761829        }
    377 
    378         psFree(md);
    379     }
    380 
    381     {
    382         psMetadata      *md;
    383         rawExpRow       *object;
    384         bool            status;
    385 
    386         object = rawExpRowAlloc("a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z", "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);
    387         if (!object) {
    388             exit(EXIT_FAILURE);
    389         }
    390 
    391         md = rawExpMetadataFromObject(object);
    392         if (!md) {
    393             exit(EXIT_FAILURE);
    394         }
    395 
    396         psFree(object);
    397 
    398         if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
    399             psFree(md);
    400             exit(EXIT_FAILURE);
    401         }
    402         if (strncmp(psMetadataLookupPtr(&status, md, "exp_id"), "a string", MAX_STRING_LENGTH)) {
    403             psFree(md);
    404             exit(EXIT_FAILURE);
    405         }
    406         if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
    407             psFree(md);
    408             exit(EXIT_FAILURE);
    409         }
    410         if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) {
    411             psFree(md);
    412             exit(EXIT_FAILURE);
    413         }
    414             psFree(md);
    415             exit(EXIT_FAILURE);
    416         }
    417         if (strncmp(psMetadataLookupPtr(&status, md, "exp_type"), "a string", MAX_STRING_LENGTH)) {
    418             psFree(md);
    419             exit(EXIT_FAILURE);
    420         }
    421         if (!psMetadataLookupS32(&status, md, "imfiles") == -32) {
    422             psFree(md);
    423             exit(EXIT_FAILURE);
    424         }
    425         if (strncmp(psMetadataLookupPtr(&status, md, "filelevel"), "a string", MAX_STRING_LENGTH)) {
    426             psFree(md);
    427             exit(EXIT_FAILURE);
    428         }
    429         if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
    430             psFree(md);
    431             exit(EXIT_FAILURE);
    432         }
    433         if (strncmp(psMetadataLookupPtr(&status, md, "filter"), "a string", MAX_STRING_LENGTH)) {
    434             psFree(md);
    435             exit(EXIT_FAILURE);
    436         }
    437         if (!psMetadataLookupF32(&status, md, "airmass") == 32.32) {
    438             psFree(md);
    439             exit(EXIT_FAILURE);
    440         }
    441         if (!psMetadataLookupF64(&status, md, "ra") == 64.64) {
    442             psFree(md);
    443             exit(EXIT_FAILURE);
    444         }
    445         if (!psMetadataLookupF64(&status, md, "decl") == 64.64) {
    446             psFree(md);
    447             exit(EXIT_FAILURE);
    448         }
    449         if (!psMetadataLookupF32(&status, md, "exp_time") == 32.32) {
    450             psFree(md);
    451             exit(EXIT_FAILURE);
    452         }
    453         if (!psMetadataLookupF32(&status, md, "sat_pixel_frac") == 32.32) {
     1830        if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
    4541831            psFree(md);
    4551832            exit(EXIT_FAILURE);
     
    4671844            exit(EXIT_FAILURE);
    4681845        }
    469         if (!psMetadataLookupF64(&status, md, "alt") == 64.64) {
    470             psFree(md);
    471             exit(EXIT_FAILURE);
    472         }
    473         if (!psMetadataLookupF64(&status, md, "az") == 64.64) {
    474             psFree(md);
    475             exit(EXIT_FAILURE);
    476         }
    477         if (!psMetadataLookupF32(&status, md, "ccd_temp") == 32.32) {
    478             psFree(md);
    479             exit(EXIT_FAILURE);
    480         }
    481         if (!psMetadataLookupF64(&status, md, "posang") == 64.64) {
    482             psFree(md);
    483             exit(EXIT_FAILURE);
    484         }
    4851846        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
    4861847            psFree(md);
     
    5031864            exit(EXIT_FAILURE);
    5041865        }
    505         if (strncmp(psMetadataLookupPtr(&status, md, "object"), "a string", MAX_STRING_LENGTH)) {
    506             psFree(md);
    507             exit(EXIT_FAILURE);
    508         }
    509         if (!psMetadataLookupF32(&status, md, "solang") == 32.32) {
    510             psFree(md);
    511             exit(EXIT_FAILURE);
    512         }
    513             psFree(md);
    514             exit(EXIT_FAILURE);
    515         }
    516 
    517         psFree(md);
    518     }
    519 
    520     {
    521         psMetadata      *md;
    522         rawImfileRow    *object;
    523         bool            status;
    524 
    525         object = rawImfileRowAlloc("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", "0001-01-01T00:00:00Z", -16);
    526         if (!object) {
    527             exit(EXIT_FAILURE);
    528         }
    529 
    530         md = rawImfileMetadataFromObject(object);
    531         if (!md) {
    532             exit(EXIT_FAILURE);
    533         }
    534 
    535         psFree(object);
    536 
    537         if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
     1866            psFree(md);
     1867            exit(EXIT_FAILURE);
     1868        }
     1869
     1870        psFree(md);
     1871    }
     1872
     1873    {
     1874        psMetadata      *md;
     1875        detNormalizedStatImfileRow *object;
     1876        bool            status;
     1877
     1878        object = detNormalizedStatImfileRowAlloc(-64, -32, "a string", 32.32, -16);
     1879        if (!object) {
     1880            exit(EXIT_FAILURE);
     1881        }
     1882
     1883        md = detNormalizedStatImfileMetadataFromObject(object);
     1884        if (!md) {
     1885            exit(EXIT_FAILURE);
     1886        }
     1887
     1888        psFree(object);
     1889
     1890            psFree(md);
     1891            exit(EXIT_FAILURE);
     1892        }
     1893        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
    5381894            psFree(md);
    5391895            exit(EXIT_FAILURE);
     
    5431899            exit(EXIT_FAILURE);
    5441900        }
     1901        if (!psMetadataLookupF32(&status, md, "norm") == 32.32) {
     1902            psFree(md);
     1903            exit(EXIT_FAILURE);
     1904        }
     1905            psFree(md);
     1906            exit(EXIT_FAILURE);
     1907        }
     1908
     1909        psFree(md);
     1910    }
     1911
     1912    {
     1913        psMetadata      *md;
     1914        detNormalizedImfileRow *object;
     1915        bool            status;
     1916
     1917        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);
     1918        if (!object) {
     1919            exit(EXIT_FAILURE);
     1920        }
     1921
     1922        md = detNormalizedImfileMetadataFromObject(object);
     1923        if (!md) {
     1924            exit(EXIT_FAILURE);
     1925        }
     1926
     1927        psFree(object);
     1928
     1929            psFree(md);
     1930            exit(EXIT_FAILURE);
     1931        }
     1932        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
     1933            psFree(md);
     1934            exit(EXIT_FAILURE);
     1935        }
     1936        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
     1937            psFree(md);
     1938            exit(EXIT_FAILURE);
     1939        }
    5451940        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    5461941            psFree(md);
    5471942            exit(EXIT_FAILURE);
    5481943        }
    549         if (strncmp(psMetadataLookupPtr(&status, md, "exp_type"), "a string", MAX_STRING_LENGTH)) {
    550             psFree(md);
    551             exit(EXIT_FAILURE);
    552         }
    553         if (strncmp(psMetadataLookupPtr(&status, md, "filelevel"), "a string", MAX_STRING_LENGTH)) {
    554             psFree(md);
    555             exit(EXIT_FAILURE);
    556         }
    557         if (strncmp(psMetadataLookupPtr(&status, md, "filter"), "a string", MAX_STRING_LENGTH)) {
    558             psFree(md);
    559             exit(EXIT_FAILURE);
    560         }
    561         if (!psMetadataLookupF32(&status, md, "airmass") == 32.32) {
    562             psFree(md);
    563             exit(EXIT_FAILURE);
    564         }
    565         if (!psMetadataLookupF64(&status, md, "ra") == 64.64) {
    566             psFree(md);
    567             exit(EXIT_FAILURE);
    568         }
    569         if (!psMetadataLookupF64(&status, md, "decl") == 64.64) {
    570             psFree(md);
    571             exit(EXIT_FAILURE);
    572         }
    573         if (!psMetadataLookupF32(&status, md, "exp_time") == 32.32) {
    574             psFree(md);
    575             exit(EXIT_FAILURE);
    576         }
    577         if (!psMetadataLookupF32(&status, md, "sat_pixel_frac") == 32.32) {
    578             psFree(md);
    579             exit(EXIT_FAILURE);
    580         }
    5811944        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
    5821945            psFree(md);
     
    5911954            exit(EXIT_FAILURE);
    5921955        }
    593         if (!psMetadataLookupF64(&status, md, "alt") == 64.64) {
    594             psFree(md);
    595             exit(EXIT_FAILURE);
    596         }
    597         if (!psMetadataLookupF64(&status, md, "az") == 64.64) {
    598             psFree(md);
    599             exit(EXIT_FAILURE);
    600         }
    601         if (!psMetadataLookupF32(&status, md, "ccd_temp") == 32.32) {
    602             psFree(md);
    603             exit(EXIT_FAILURE);
    604         }
    605         if (!psMetadataLookupF64(&status, md, "posang") == 64.64) {
    606             psFree(md);
    607             exit(EXIT_FAILURE);
    608         }
    6091956        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
    6101957            psFree(md);
     
    6271974            exit(EXIT_FAILURE);
    6281975        }
    629         if (strncmp(psMetadataLookupPtr(&status, md, "object"), "a string", MAX_STRING_LENGTH)) {
    630             psFree(md);
    631             exit(EXIT_FAILURE);
    632         }
    633             psFree(md);
    634             exit(EXIT_FAILURE);
    635         }
    636             psFree(md);
    637             exit(EXIT_FAILURE);
    638         }
    639 
    640         psFree(md);
    641     }
    642 
    643     {
    644         psMetadata      *md;
    645         guidePendingExpRow *object;
    646         bool            status;
    647 
    648         object = guidePendingExpRowAlloc(-64, "a string", "a string");
    649         if (!object) {
    650             exit(EXIT_FAILURE);
    651         }
    652 
    653         md = guidePendingExpMetadataFromObject(object);
    654         if (!md) {
    655             exit(EXIT_FAILURE);
    656         }
    657 
    658         psFree(object);
    659 
    660             psFree(md);
    661             exit(EXIT_FAILURE);
    662         }
    663         if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
     1976        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     1977            psFree(md);
     1978            exit(EXIT_FAILURE);
     1979        }
     1980            psFree(md);
     1981            exit(EXIT_FAILURE);
     1982        }
     1983
     1984        psFree(md);
     1985    }
     1986
     1987    {
     1988        psMetadata      *md;
     1989        detNormalizedExpRow *object;
     1990        bool            status;
     1991
     1992        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);
     1993        if (!object) {
     1994            exit(EXIT_FAILURE);
     1995        }
     1996
     1997        md = detNormalizedExpMetadataFromObject(object);
     1998        if (!md) {
     1999            exit(EXIT_FAILURE);
     2000        }
     2001
     2002        psFree(object);
     2003
     2004            psFree(md);
     2005            exit(EXIT_FAILURE);
     2006        }
     2007        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
    6642008            psFree(md);
    6652009            exit(EXIT_FAILURE);
     
    6692013            exit(EXIT_FAILURE);
    6702014        }
    671 
    672         psFree(md);
    673     }
    674 
    675     {
    676         psMetadata      *md;
    677         chipPendingExpRow *object;
    678         bool            status;
    679 
    680         object = chipPendingExpRowAlloc(-64, "a string", -64, "a string", "a string", "a string", "a string", "a string");
    681         if (!object) {
    682             exit(EXIT_FAILURE);
    683         }
    684 
    685         md = chipPendingExpMetadataFromObject(object);
    686         if (!md) {
    687             exit(EXIT_FAILURE);
    688         }
    689 
    690         psFree(object);
    691 
    692             psFree(md);
    693             exit(EXIT_FAILURE);
    694         }
    695         if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
    696             psFree(md);
    697             exit(EXIT_FAILURE);
    698         }
    699             psFree(md);
    700             exit(EXIT_FAILURE);
    701         }
    702         if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
    703             psFree(md);
    704             exit(EXIT_FAILURE);
    705         }
    706         if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
    707             psFree(md);
    708             exit(EXIT_FAILURE);
    709         }
    710         if (strncmp(psMetadataLookupPtr(&status, md, "reduction"), "a string", MAX_STRING_LENGTH)) {
    711             psFree(md);
    712             exit(EXIT_FAILURE);
    713         }
    714         if (strncmp(psMetadataLookupPtr(&status, md, "expgroup"), "a string", MAX_STRING_LENGTH)) {
    715             psFree(md);
    716             exit(EXIT_FAILURE);
    717         }
    718         if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
    719             psFree(md);
    720             exit(EXIT_FAILURE);
    721         }
    722 
    723         psFree(md);
    724     }
    725 
    726     {
    727         psMetadata      *md;
    728         chipPendingImfileRow *object;
    729         bool            status;
    730 
    731         object = chipPendingImfileRowAlloc(-64, "a string", "a string");
    732         if (!object) {
    733             exit(EXIT_FAILURE);
    734         }
    735 
    736         md = chipPendingImfileMetadataFromObject(object);
    737         if (!md) {
    738             exit(EXIT_FAILURE);
    739         }
    740 
    741         psFree(object);
    742 
     2015        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     2016            psFree(md);
     2017            exit(EXIT_FAILURE);
     2018        }
     2019        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     2020            psFree(md);
     2021            exit(EXIT_FAILURE);
     2022        }
     2023        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
     2024            psFree(md);
     2025            exit(EXIT_FAILURE);
     2026        }
     2027        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
     2028            psFree(md);
     2029            exit(EXIT_FAILURE);
     2030        }
     2031        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
     2032            psFree(md);
     2033            exit(EXIT_FAILURE);
     2034        }
     2035        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
     2036            psFree(md);
     2037            exit(EXIT_FAILURE);
     2038        }
     2039        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
     2040            psFree(md);
     2041            exit(EXIT_FAILURE);
     2042        }
     2043        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
     2044            psFree(md);
     2045            exit(EXIT_FAILURE);
     2046        }
     2047        if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
     2048            psFree(md);
     2049            exit(EXIT_FAILURE);
     2050        }
     2051            psFree(md);
     2052            exit(EXIT_FAILURE);
     2053        }
     2054
     2055        psFree(md);
     2056    }
     2057
     2058    {
     2059        psMetadata      *md;
     2060        detResidImfileRow *object;
     2061        bool            status;
     2062
     2063        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);
     2064        if (!object) {
     2065            exit(EXIT_FAILURE);
     2066        }
     2067
     2068        md = detResidImfileMetadataFromObject(object);
     2069        if (!md) {
     2070            exit(EXIT_FAILURE);
     2071        }
     2072
     2073        psFree(object);
     2074
     2075            psFree(md);
     2076            exit(EXIT_FAILURE);
     2077        }
     2078        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
     2079            psFree(md);
     2080            exit(EXIT_FAILURE);
     2081        }
    7432082            psFree(md);
    7442083            exit(EXIT_FAILURE);
     
    7522091            exit(EXIT_FAILURE);
    7532092        }
    754 
    755         psFree(md);
    756     }
    757 
    758     {
    759         psMetadata      *md;
    760         chipProcessedExpRow *object;
    761         bool            status;
    762 
    763         object = chipProcessedExpRowAlloc(-64, "a string", -64, "a string", "a string", "a string", "a string", "a string");
    764         if (!object) {
    765             exit(EXIT_FAILURE);
    766         }
    767 
    768         md = chipProcessedExpMetadataFromObject(object);
    769         if (!md) {
    770             exit(EXIT_FAILURE);
    771         }
    772 
    773         psFree(object);
    774 
    775             psFree(md);
    776             exit(EXIT_FAILURE);
    777         }
    778         if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
    779             psFree(md);
    780             exit(EXIT_FAILURE);
    781         }
    782             psFree(md);
    783             exit(EXIT_FAILURE);
    784         }
    785         if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
    786             psFree(md);
    787             exit(EXIT_FAILURE);
    788         }
    789         if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
    790             psFree(md);
    791             exit(EXIT_FAILURE);
    792         }
    793         if (strncmp(psMetadataLookupPtr(&status, md, "reduction"), "a string", MAX_STRING_LENGTH)) {
    794             psFree(md);
    795             exit(EXIT_FAILURE);
    796         }
    797         if (strncmp(psMetadataLookupPtr(&status, md, "expgroup"), "a string", MAX_STRING_LENGTH)) {
    798             psFree(md);
    799             exit(EXIT_FAILURE);
    800         }
    801         if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
    802             psFree(md);
    803             exit(EXIT_FAILURE);
    804         }
    805 
    806         psFree(md);
    807     }
    808 
    809     {
    810         psMetadata      *md;
    811         chipMaskRow     *object;
    812         bool            status;
    813 
    814         object = chipMaskRowAlloc("a string");
    815         if (!object) {
    816             exit(EXIT_FAILURE);
    817         }
    818 
    819         md = chipMaskMetadataFromObject(object);
    820         if (!md) {
    821             exit(EXIT_FAILURE);
    822         }
    823 
    824         psFree(object);
    825 
    826         if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
    827             psFree(md);
    828             exit(EXIT_FAILURE);
    829         }
    830 
    831         psFree(md);
    832     }
    833 
    834     {
    835         psMetadata      *md;
    836         chipProcessedImfileRow *object;
    837         bool            status;
    838 
    839         object = chipProcessedImfileRowAlloc(-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);
    840         if (!object) {
    841             exit(EXIT_FAILURE);
    842         }
    843 
    844         md = chipProcessedImfileMetadataFromObject(object);
    845         if (!md) {
    846             exit(EXIT_FAILURE);
    847         }
    848 
    849         psFree(object);
    850 
    851             psFree(md);
    852             exit(EXIT_FAILURE);
    853         }
    854         if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
    855             psFree(md);
    856             exit(EXIT_FAILURE);
    857         }
    858         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    859             psFree(md);
    860             exit(EXIT_FAILURE);
    861         }
    862         if (!psMetadataLookupF32(&status, md, "bg") == 32.32) {
    863             psFree(md);
    864             exit(EXIT_FAILURE);
    865         }
    866         if (!psMetadataLookupF32(&status, md, "bg_stdev") == 32.32) {
    867             psFree(md);
    868             exit(EXIT_FAILURE);
    869         }
    870         if (!psMetadataLookupF32(&status, md, "bg_mean_stdev") == 32.32) {
    871             psFree(md);
    872             exit(EXIT_FAILURE);
    873         }
    874         if (!psMetadataLookupF32(&status, md, "bias") == 32.32) {
    875             psFree(md);
    876             exit(EXIT_FAILURE);
    877         }
    878         if (!psMetadataLookupF32(&status, md, "bias_stdev") == 32.32) {
    879             psFree(md);
    880             exit(EXIT_FAILURE);
    881         }
    882         if (!psMetadataLookupF32(&status, md, "fringe_0") == 32.32) {
    883             psFree(md);
    884             exit(EXIT_FAILURE);
    885         }
    886         if (!psMetadataLookupF32(&status, md, "fringe_1") == 32.32) {
    887             psFree(md);
    888             exit(EXIT_FAILURE);
    889         }
    890         if (!psMetadataLookupF32(&status, md, "fringe_2") == 32.32) {
    891             psFree(md);
    892             exit(EXIT_FAILURE);
    893         }
    894         if (!psMetadataLookupF32(&status, md, "sigma_ra") == 32.32) {
    895             psFree(md);
    896             exit(EXIT_FAILURE);
    897         }
    898         if (!psMetadataLookupF32(&status, md, "sigma_dec") == 32.32) {
    899             psFree(md);
    900             exit(EXIT_FAILURE);
    901         }
    902         if (!psMetadataLookupF32(&status, md, "ap_resid") == 32.32) {
    903             psFree(md);
    904             exit(EXIT_FAILURE);
    905         }
    906         if (!psMetadataLookupF32(&status, md, "ap_resid_stdev") == 32.32) {
    907             psFree(md);
    908             exit(EXIT_FAILURE);
    909         }
    910         if (!psMetadataLookupF32(&status, md, "fwhm") == 32.32) {
    911             psFree(md);
    912             exit(EXIT_FAILURE);
    913         }
    914         if (!psMetadataLookupF32(&status, md, "fwhm_range") == 32.32) {
    915             psFree(md);
    916             exit(EXIT_FAILURE);
    917         }
    918         if (!psMetadataLookupS32(&status, md, "n_stars") == -32) {
    919             psFree(md);
    920             exit(EXIT_FAILURE);
    921         }
    922         if (!psMetadataLookupS32(&status, md, "n_extended") == -32) {
    923             psFree(md);
    924             exit(EXIT_FAILURE);
    925         }
    926         if (!psMetadataLookupS32(&status, md, "n_cr") == -32) {
    927             psFree(md);
    928             exit(EXIT_FAILURE);
    929         }
    930         if (!psMetadataLookupS32(&status, md, "n_astrom") == -32) {
     2093        if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
     2094            psFree(md);
     2095            exit(EXIT_FAILURE);
     2096        }
     2097        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     2098            psFree(md);
     2099            exit(EXIT_FAILURE);
     2100        }
     2101        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     2102            psFree(md);
     2103            exit(EXIT_FAILURE);
     2104        }
     2105        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
     2106            psFree(md);
     2107            exit(EXIT_FAILURE);
     2108        }
     2109        if (!psMetadataLookupF64(&status, md, "bin_stdev") == 64.64) {
     2110            psFree(md);
     2111            exit(EXIT_FAILURE);
     2112        }
     2113        if (!psMetadataLookupF64(&status, md, "fringe_0") == 64.64) {
     2114            psFree(md);
     2115            exit(EXIT_FAILURE);
     2116        }
     2117        if (!psMetadataLookupF64(&status, md, "fringe_1") == 64.64) {
     2118            psFree(md);
     2119            exit(EXIT_FAILURE);
     2120        }
     2121        if (!psMetadataLookupF64(&status, md, "fringe_2") == 64.64) {
     2122            psFree(md);
     2123            exit(EXIT_FAILURE);
     2124        }
     2125        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
     2126            psFree(md);
     2127            exit(EXIT_FAILURE);
     2128        }
     2129        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
     2130            psFree(md);
     2131            exit(EXIT_FAILURE);
     2132        }
     2133        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
     2134            psFree(md);
     2135            exit(EXIT_FAILURE);
     2136        }
     2137        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
     2138            psFree(md);
     2139            exit(EXIT_FAILURE);
     2140        }
     2141        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
    9312142            psFree(md);
    9322143            exit(EXIT_FAILURE);
     
    9452156    {
    9462157        psMetadata      *md;
    947         camPendingExpRow *object;
    948         bool            status;
    949 
    950         object = camPendingExpRowAlloc(-64, -64, "a string", "a string", "a string", "a string", "a string");
    951         if (!object) {
    952             exit(EXIT_FAILURE);
    953         }
    954 
    955         md = camPendingExpMetadataFromObject(object);
    956         if (!md) {
    957             exit(EXIT_FAILURE);
    958         }
    959 
    960         psFree(object);
    961 
    962             psFree(md);
    963             exit(EXIT_FAILURE);
    964         }
    965             psFree(md);
    966             exit(EXIT_FAILURE);
    967         }
    968         if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
    969             psFree(md);
    970             exit(EXIT_FAILURE);
    971         }
    972         if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
    973             psFree(md);
    974             exit(EXIT_FAILURE);
    975         }
    976         if (strncmp(psMetadataLookupPtr(&status, md, "reduction"), "a string", MAX_STRING_LENGTH)) {
    977             psFree(md);
    978             exit(EXIT_FAILURE);
    979         }
    980         if (strncmp(psMetadataLookupPtr(&status, md, "expgroup"), "a string", MAX_STRING_LENGTH)) {
    981             psFree(md);
    982             exit(EXIT_FAILURE);
    983         }
    984         if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
    985             psFree(md);
    986             exit(EXIT_FAILURE);
    987         }
    988 
    989         psFree(md);
    990     }
    991 
    992     {
    993         psMetadata      *md;
    994         camProcessedExpRow *object;
    995         bool            status;
    996 
    997         object = camProcessedExpRowAlloc(-64, -64, "a string", "a string", "a string", "a string", "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, "a string", -16);
    998         if (!object) {
    999             exit(EXIT_FAILURE);
    1000         }
    1001 
    1002         md = camProcessedExpMetadataFromObject(object);
    1003         if (!md) {
    1004             exit(EXIT_FAILURE);
    1005         }
    1006 
    1007         psFree(object);
    1008 
    1009             psFree(md);
    1010             exit(EXIT_FAILURE);
    1011         }
    1012             psFree(md);
    1013             exit(EXIT_FAILURE);
    1014         }
    1015         if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
    1016             psFree(md);
    1017             exit(EXIT_FAILURE);
    1018         }
    1019         if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
    1020             psFree(md);
    1021             exit(EXIT_FAILURE);
    1022         }
    1023         if (strncmp(psMetadataLookupPtr(&status, md, "reduction"), "a string", MAX_STRING_LENGTH)) {
    1024             psFree(md);
    1025             exit(EXIT_FAILURE);
    1026         }
    1027         if (strncmp(psMetadataLookupPtr(&status, md, "expgroup"), "a string", MAX_STRING_LENGTH)) {
    1028             psFree(md);
    1029             exit(EXIT_FAILURE);
    1030         }
    1031         if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
    1032             psFree(md);
    1033             exit(EXIT_FAILURE);
    1034         }
    1035         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    1036             psFree(md);
    1037             exit(EXIT_FAILURE);
    1038         }
    1039         if (!psMetadataLookupF32(&status, md, "bg") == 32.32) {
    1040             psFree(md);
    1041             exit(EXIT_FAILURE);
    1042         }
    1043         if (!psMetadataLookupF32(&status, md, "bg_stdev") == 32.32) {
    1044             psFree(md);
    1045             exit(EXIT_FAILURE);
    1046         }
    1047         if (!psMetadataLookupF32(&status, md, "bg_mean_stdev") == 32.32) {
    1048             psFree(md);
    1049             exit(EXIT_FAILURE);
    1050         }
    1051         if (!psMetadataLookupF32(&status, md, "sigma_ra") == 32.32) {
    1052             psFree(md);
    1053             exit(EXIT_FAILURE);
    1054         }
    1055         if (!psMetadataLookupF32(&status, md, "sigma_dec") == 32.32) {
    1056             psFree(md);
    1057             exit(EXIT_FAILURE);
    1058         }
    1059         if (!psMetadataLookupF32(&status, md, "zp_mean") == 32.32) {
    1060             psFree(md);
    1061             exit(EXIT_FAILURE);
    1062         }
    1063         if (!psMetadataLookupF32(&status, md, "zp_stdev") == 32.32) {
    1064             psFree(md);
    1065             exit(EXIT_FAILURE);
    1066         }
    1067         if (!psMetadataLookupF32(&status, md, "fwhm") == 32.32) {
    1068             psFree(md);
    1069             exit(EXIT_FAILURE);
    1070         }
    1071         if (!psMetadataLookupF32(&status, md, "fwhm_range") == 32.32) {
    1072             psFree(md);
    1073             exit(EXIT_FAILURE);
    1074         }
    1075         if (!psMetadataLookupS32(&status, md, "n_stars") == -32) {
    1076             psFree(md);
    1077             exit(EXIT_FAILURE);
    1078         }
    1079         if (!psMetadataLookupS32(&status, md, "n_extended") == -32) {
    1080             psFree(md);
    1081             exit(EXIT_FAILURE);
    1082         }
    1083         if (!psMetadataLookupS32(&status, md, "n_cr") == -32) {
    1084             psFree(md);
    1085             exit(EXIT_FAILURE);
    1086         }
    1087         if (!psMetadataLookupS32(&status, md, "n_astrom") == -32) {
    1088             psFree(md);
    1089             exit(EXIT_FAILURE);
    1090         }
    1091         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "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         camMaskRow      *object;
    1105         bool            status;
    1106 
    1107         object = camMaskRowAlloc("a string");
    1108         if (!object) {
    1109             exit(EXIT_FAILURE);
    1110         }
    1111 
    1112         md = camMaskMetadataFromObject(object);
    1113         if (!md) {
    1114             exit(EXIT_FAILURE);
    1115         }
    1116 
    1117         psFree(object);
    1118 
    1119         if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
    1120             psFree(md);
    1121             exit(EXIT_FAILURE);
    1122         }
    1123 
    1124         psFree(md);
    1125     }
    1126 
    1127     {
    1128         psMetadata      *md;
    1129         warpRunRow      *object;
    1130         bool            status;
    1131 
    1132         object = warpRunRowAlloc(-64, "a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z");
    1133         if (!object) {
    1134             exit(EXIT_FAILURE);
    1135         }
    1136 
    1137         md = warpRunMetadataFromObject(object);
    1138         if (!md) {
    1139             exit(EXIT_FAILURE);
    1140         }
    1141 
    1142         psFree(object);
    1143 
    1144             psFree(md);
    1145             exit(EXIT_FAILURE);
    1146         }
    1147         if (strncmp(psMetadataLookupPtr(&status, md, "mode"), "a string", MAX_STRING_LENGTH)) {
    1148             psFree(md);
    1149             exit(EXIT_FAILURE);
    1150         }
    1151         if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
    1152             psFree(md);
    1153             exit(EXIT_FAILURE);
    1154         }
    1155         if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
    1156             psFree(md);
    1157             exit(EXIT_FAILURE);
    1158         }
    1159         if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
    1160             psFree(md);
    1161             exit(EXIT_FAILURE);
    1162         }
    1163             psFree(md);
    1164             exit(EXIT_FAILURE);
    1165         }
    1166 
    1167         psFree(md);
    1168     }
    1169 
    1170     {
    1171         psMetadata      *md;
    1172         warpInputExpRow *object;
    1173         bool            status;
    1174 
    1175         object = warpInputExpRowAlloc(-64, -64, true);
    1176         if (!object) {
    1177             exit(EXIT_FAILURE);
    1178         }
    1179 
    1180         md = warpInputExpMetadataFromObject(object);
    1181         if (!md) {
    1182             exit(EXIT_FAILURE);
    1183         }
    1184 
    1185         psFree(object);
    1186 
    1187             psFree(md);
    1188             exit(EXIT_FAILURE);
    1189         }
    1190             psFree(md);
    1191             exit(EXIT_FAILURE);
    1192         }
    1193         if (!psMetadataLookupBool(&status, md, "magiced") == true) {
    1194             psFree(md);
    1195             exit(EXIT_FAILURE);
    1196         }
    1197 
    1198         psFree(md);
    1199     }
    1200 
    1201     {
    1202         psMetadata      *md;
    1203         warpSkyCellMapRow *object;
    1204         bool            status;
    1205 
    1206         object = warpSkyCellMapRowAlloc(-64, "a string", "a string", -64, "a string", -16);
    1207         if (!object) {
    1208             exit(EXIT_FAILURE);
    1209         }
    1210 
    1211         md = warpSkyCellMapMetadataFromObject(object);
    1212         if (!md) {
    1213             exit(EXIT_FAILURE);
    1214         }
    1215 
    1216         psFree(object);
    1217 
    1218             psFree(md);
    1219             exit(EXIT_FAILURE);
    1220         }
    1221         if (strncmp(psMetadataLookupPtr(&status, md, "skycell_id"), "a string", MAX_STRING_LENGTH)) {
    1222             psFree(md);
    1223             exit(EXIT_FAILURE);
    1224         }
    1225         if (strncmp(psMetadataLookupPtr(&status, md, "tess_id"), "a string", MAX_STRING_LENGTH)) {
    1226             psFree(md);
    1227             exit(EXIT_FAILURE);
    1228         }
    1229             psFree(md);
    1230             exit(EXIT_FAILURE);
    1231         }
    1232         if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
    1233             psFree(md);
    1234             exit(EXIT_FAILURE);
    1235         }
    1236             psFree(md);
    1237             exit(EXIT_FAILURE);
    1238         }
    1239 
    1240         psFree(md);
    1241     }
    1242 
    1243     {
    1244         psMetadata      *md;
    1245         warpSkyfileRow  *object;
    1246         bool            status;
    1247 
    1248         object = warpSkyfileRowAlloc(-64, "a string", "a string", "a string", "a string", 64.64, 64.64);
    1249         if (!object) {
    1250             exit(EXIT_FAILURE);
    1251         }
    1252 
    1253         md = warpSkyfileMetadataFromObject(object);
    1254         if (!md) {
    1255             exit(EXIT_FAILURE);
    1256         }
    1257 
    1258         psFree(object);
    1259 
    1260             psFree(md);
    1261             exit(EXIT_FAILURE);
    1262         }
    1263         if (strncmp(psMetadataLookupPtr(&status, md, "skycell_id"), "a string", MAX_STRING_LENGTH)) {
    1264             psFree(md);
    1265             exit(EXIT_FAILURE);
    1266         }
    1267         if (strncmp(psMetadataLookupPtr(&status, md, "tess_id"), "a string", MAX_STRING_LENGTH)) {
    1268             psFree(md);
    1269             exit(EXIT_FAILURE);
    1270         }
    1271         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    1272             psFree(md);
    1273             exit(EXIT_FAILURE);
    1274         }
    1275         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
    1276             psFree(md);
    1277             exit(EXIT_FAILURE);
    1278         }
    1279         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
    1280             psFree(md);
    1281             exit(EXIT_FAILURE);
    1282         }
    1283         if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
    1284             psFree(md);
    1285             exit(EXIT_FAILURE);
    1286         }
    1287 
    1288         psFree(md);
    1289     }
    1290 
    1291     {
    1292         psMetadata      *md;
    1293         diffRunRow      *object;
    1294         bool            status;
    1295 
    1296         object = diffRunRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string");
    1297         if (!object) {
    1298             exit(EXIT_FAILURE);
    1299         }
    1300 
    1301         md = diffRunMetadataFromObject(object);
    1302         if (!md) {
    1303             exit(EXIT_FAILURE);
    1304         }
    1305 
    1306         psFree(object);
    1307 
    1308             psFree(md);
    1309             exit(EXIT_FAILURE);
    1310         }
    1311         if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
    1312             psFree(md);
    1313             exit(EXIT_FAILURE);
    1314         }
    1315         if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
    1316             psFree(md);
    1317             exit(EXIT_FAILURE);
    1318         }
    1319         if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
    1320             psFree(md);
    1321             exit(EXIT_FAILURE);
    1322         }
    1323             psFree(md);
    1324             exit(EXIT_FAILURE);
    1325         }
    1326         if (strncmp(psMetadataLookupPtr(&status, md, "skycell_id"), "a string", MAX_STRING_LENGTH)) {
    1327             psFree(md);
    1328             exit(EXIT_FAILURE);
    1329         }
    1330         if (strncmp(psMetadataLookupPtr(&status, md, "tess_id"), "a string", MAX_STRING_LENGTH)) {
    1331             psFree(md);
    1332             exit(EXIT_FAILURE);
    1333         }
    1334 
    1335         psFree(md);
    1336     }
    1337 
    1338     {
    1339         psMetadata      *md;
    1340         diffInputSkyfileRow *object;
    1341         bool            status;
    1342 
    1343         object = diffInputSkyfileRowAlloc(-64, -64, "a string", "a string", "a string", true);
    1344         if (!object) {
    1345             exit(EXIT_FAILURE);
    1346         }
    1347 
    1348         md = diffInputSkyfileMetadataFromObject(object);
    1349         if (!md) {
    1350             exit(EXIT_FAILURE);
    1351         }
    1352 
    1353         psFree(object);
    1354 
    1355             psFree(md);
    1356             exit(EXIT_FAILURE);
    1357         }
    1358             psFree(md);
    1359             exit(EXIT_FAILURE);
    1360         }
    1361         if (strncmp(psMetadataLookupPtr(&status, md, "skycell_id"), "a string", MAX_STRING_LENGTH)) {
    1362             psFree(md);
    1363             exit(EXIT_FAILURE);
    1364         }
    1365         if (strncmp(psMetadataLookupPtr(&status, md, "tess_id"), "a string", MAX_STRING_LENGTH)) {
    1366             psFree(md);
    1367             exit(EXIT_FAILURE);
    1368         }
    1369         if (strncmp(psMetadataLookupPtr(&status, md, "kind"), "a string", MAX_STRING_LENGTH)) {
    1370             psFree(md);
    1371             exit(EXIT_FAILURE);
    1372         }
    1373         if (!psMetadataLookupBool(&status, md, "template") == true) {
    1374             psFree(md);
    1375             exit(EXIT_FAILURE);
    1376         }
    1377 
    1378         psFree(md);
    1379     }
    1380 
    1381     {
    1382         psMetadata      *md;
    1383         diffSkyfileRow  *object;
    1384         bool            status;
    1385 
    1386         object = diffSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64);
    1387         if (!object) {
    1388             exit(EXIT_FAILURE);
    1389         }
    1390 
    1391         md = diffSkyfileMetadataFromObject(object);
    1392         if (!md) {
    1393             exit(EXIT_FAILURE);
    1394         }
    1395 
    1396         psFree(object);
    1397 
    1398             psFree(md);
    1399             exit(EXIT_FAILURE);
    1400         }
    1401         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    1402             psFree(md);
    1403             exit(EXIT_FAILURE);
    1404         }
    1405         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
    1406             psFree(md);
    1407             exit(EXIT_FAILURE);
    1408         }
    1409         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
    1410             psFree(md);
    1411             exit(EXIT_FAILURE);
    1412         }
    1413         if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
    1414             psFree(md);
    1415             exit(EXIT_FAILURE);
    1416         }
    1417 
    1418         psFree(md);
    1419     }
    1420 
    1421     {
    1422         psMetadata      *md;
    1423         stackRunRow     *object;
    1424         bool            status;
    1425 
    1426         object = stackRunRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string");
    1427         if (!object) {
    1428             exit(EXIT_FAILURE);
    1429         }
    1430 
    1431         md = stackRunMetadataFromObject(object);
    1432         if (!md) {
    1433             exit(EXIT_FAILURE);
    1434         }
    1435 
    1436         psFree(object);
    1437 
    1438             psFree(md);
    1439             exit(EXIT_FAILURE);
    1440         }
    1441         if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
    1442             psFree(md);
    1443             exit(EXIT_FAILURE);
    1444         }
    1445         if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
    1446             psFree(md);
    1447             exit(EXIT_FAILURE);
    1448         }
    1449         if (strncmp(psMetadataLookupPtr(&status, md, "dvodb"), "a string", MAX_STRING_LENGTH)) {
    1450             psFree(md);
    1451             exit(EXIT_FAILURE);
    1452         }
    1453             psFree(md);
    1454             exit(EXIT_FAILURE);
    1455         }
    1456         if (strncmp(psMetadataLookupPtr(&status, md, "skycell_id"), "a string", MAX_STRING_LENGTH)) {
    1457             psFree(md);
    1458             exit(EXIT_FAILURE);
    1459         }
    1460         if (strncmp(psMetadataLookupPtr(&status, md, "tess_id"), "a string", MAX_STRING_LENGTH)) {
    1461             psFree(md);
    1462             exit(EXIT_FAILURE);
    1463         }
    1464 
    1465         psFree(md);
    1466     }
    1467 
    1468     {
    1469         psMetadata      *md;
    1470         stackInputSkyfileRow *object;
    1471         bool            status;
    1472 
    1473         object = stackInputSkyfileRowAlloc(-64, -64);
    1474         if (!object) {
    1475             exit(EXIT_FAILURE);
    1476         }
    1477 
    1478         md = stackInputSkyfileMetadataFromObject(object);
    1479         if (!md) {
    1480             exit(EXIT_FAILURE);
    1481         }
    1482 
    1483         psFree(object);
    1484 
    1485             psFree(md);
    1486             exit(EXIT_FAILURE);
    1487         }
    1488             psFree(md);
    1489             exit(EXIT_FAILURE);
    1490         }
    1491 
    1492         psFree(md);
    1493     }
    1494 
    1495     {
    1496         psMetadata      *md;
    1497         stackSumSkyfileRow *object;
    1498         bool            status;
    1499 
    1500         object = stackSumSkyfileRowAlloc(-64, "a string", "a string", 64.64, 64.64);
    1501         if (!object) {
    1502             exit(EXIT_FAILURE);
    1503         }
    1504 
    1505         md = stackSumSkyfileMetadataFromObject(object);
    1506         if (!md) {
    1507             exit(EXIT_FAILURE);
    1508         }
    1509 
    1510         psFree(object);
    1511 
    1512             psFree(md);
    1513             exit(EXIT_FAILURE);
    1514         }
    1515         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    1516             psFree(md);
    1517             exit(EXIT_FAILURE);
    1518         }
    1519         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
    1520             psFree(md);
    1521             exit(EXIT_FAILURE);
    1522         }
    1523         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
    1524             psFree(md);
    1525             exit(EXIT_FAILURE);
    1526         }
    1527         if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
    1528             psFree(md);
    1529             exit(EXIT_FAILURE);
    1530         }
    1531 
    1532         psFree(md);
    1533     }
    1534 
    1535     {
    1536         psMetadata      *md;
    1537         detRunRow       *object;
    1538         bool            status;
    1539 
    1540         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);
    1541         if (!object) {
    1542             exit(EXIT_FAILURE);
    1543         }
    1544 
    1545         md = detRunMetadataFromObject(object);
     2158        detResidExpRow  *object;
     2159        bool            status;
     2160
     2161        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);
     2162        if (!object) {
     2163            exit(EXIT_FAILURE);
     2164        }
     2165
     2166        md = detResidExpMetadataFromObject(object);
    15462167        if (!md) {
    15472168            exit(EXIT_FAILURE);
     
    15572178            exit(EXIT_FAILURE);
    15582179        }
    1559         if (strncmp(psMetadataLookupPtr(&status, md, "det_type"), "a string", MAX_STRING_LENGTH)) {
    1560             psFree(md);
    1561             exit(EXIT_FAILURE);
    1562         }
    1563         if (strncmp(psMetadataLookupPtr(&status, md, "mode"), "a string", MAX_STRING_LENGTH)) {
    1564             psFree(md);
    1565             exit(EXIT_FAILURE);
    1566         }
    1567         if (strncmp(psMetadataLookupPtr(&status, md, "state"), "a string", MAX_STRING_LENGTH)) {
    1568             psFree(md);
    1569             exit(EXIT_FAILURE);
    1570         }
    1571         if (strncmp(psMetadataLookupPtr(&status, md, "filelevel"), "a string", MAX_STRING_LENGTH)) {
    1572             psFree(md);
    1573             exit(EXIT_FAILURE);
    1574         }
    1575         if (strncmp(psMetadataLookupPtr(&status, md, "workdir"), "a string", MAX_STRING_LENGTH)) {
    1576             psFree(md);
    1577             exit(EXIT_FAILURE);
    1578         }
    1579         if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
    1580             psFree(md);
    1581             exit(EXIT_FAILURE);
    1582         }
    1583         if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) {
    1584             psFree(md);
    1585             exit(EXIT_FAILURE);
    1586         }
    1587         if (strncmp(psMetadataLookupPtr(&status, md, "exp_type"), "a string", MAX_STRING_LENGTH)) {
    1588             psFree(md);
    1589             exit(EXIT_FAILURE);
    1590         }
    1591         if (strncmp(psMetadataLookupPtr(&status, md, "reduction"), "a string", MAX_STRING_LENGTH)) {
    1592             psFree(md);
    1593             exit(EXIT_FAILURE);
    1594         }
    1595         if (strncmp(psMetadataLookupPtr(&status, md, "filter"), "a string", MAX_STRING_LENGTH)) {
    1596             psFree(md);
    1597             exit(EXIT_FAILURE);
    1598         }
    1599         if (!psMetadataLookupF32(&status, md, "airmass_min") == 32.32) {
    1600             psFree(md);
    1601             exit(EXIT_FAILURE);
    1602         }
    1603         if (!psMetadataLookupF32(&status, md, "airmass_max") == 32.32) {
    1604             psFree(md);
    1605             exit(EXIT_FAILURE);
    1606         }
    1607         if (!psMetadataLookupF32(&status, md, "exp_time_min") == 32.32) {
    1608             psFree(md);
    1609             exit(EXIT_FAILURE);
    1610         }
    1611         if (!psMetadataLookupF32(&status, md, "exp_time_max") == 32.32) {
    1612             psFree(md);
    1613             exit(EXIT_FAILURE);
    1614         }
    1615         if (!psMetadataLookupF32(&status, md, "ccd_temp_min") == 32.32) {
    1616             psFree(md);
    1617             exit(EXIT_FAILURE);
    1618         }
    1619         if (!psMetadataLookupF32(&status, md, "ccd_temp_max") == 32.32) {
    1620             psFree(md);
    1621             exit(EXIT_FAILURE);
    1622         }
    1623         if (!psMetadataLookupF64(&status, md, "posang_min") == 64.64) {
    1624             psFree(md);
    1625             exit(EXIT_FAILURE);
    1626         }
    1627         if (!psMetadataLookupF64(&status, md, "posang_max") == 64.64) {
    1628             psFree(md);
    1629             exit(EXIT_FAILURE);
    1630         }
    1631             psFree(md);
    1632             exit(EXIT_FAILURE);
    1633         }
    1634             psFree(md);
    1635             exit(EXIT_FAILURE);
    1636         }
    1637             psFree(md);
    1638             exit(EXIT_FAILURE);
    1639         }
    1640             psFree(md);
    1641             exit(EXIT_FAILURE);
    1642         }
    1643             psFree(md);
    1644             exit(EXIT_FAILURE);
    1645         }
    1646         if (!psMetadataLookupF32(&status, md, "solang_min") == 32.32) {
    1647             psFree(md);
    1648             exit(EXIT_FAILURE);
    1649         }
    1650         if (!psMetadataLookupF32(&status, md, "solang_max") == 32.32) {
    1651             psFree(md);
    1652             exit(EXIT_FAILURE);
    1653         }
    1654         if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
    1655             psFree(md);
    1656             exit(EXIT_FAILURE);
    1657         }
    1658         if (!psMetadataLookupS32(&status, md, "parent") == -32) {
    1659             psFree(md);
    1660             exit(EXIT_FAILURE);
    1661         }
    1662 
    1663         psFree(md);
    1664     }
    1665 
    1666     {
    1667         psMetadata      *md;
    1668         detInputExpRow  *object;
    1669         bool            status;
    1670 
    1671         object = detInputExpRowAlloc(-64, -32, "a string", true);
    1672         if (!object) {
    1673             exit(EXIT_FAILURE);
    1674         }
    1675 
    1676         md = detInputExpMetadataFromObject(object);
    1677         if (!md) {
    1678             exit(EXIT_FAILURE);
    1679         }
    1680 
    1681         psFree(object);
    1682 
    1683             psFree(md);
    1684             exit(EXIT_FAILURE);
    1685         }
    1686         if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
    1687             psFree(md);
    1688             exit(EXIT_FAILURE);
    1689         }
    1690         if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
    1691             psFree(md);
    1692             exit(EXIT_FAILURE);
    1693         }
    1694         if (!psMetadataLookupBool(&status, md, "include") == true) {
    1695             psFree(md);
    1696             exit(EXIT_FAILURE);
    1697         }
    1698 
    1699         psFree(md);
    1700     }
    1701 
    1702     {
    1703         psMetadata      *md;
    1704         detProcessedImfileRow *object;
    1705         bool            status;
    1706 
    1707         object = detProcessedImfileRowAlloc(-64, "a string", "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);
    1708         if (!object) {
    1709             exit(EXIT_FAILURE);
    1710         }
    1711 
    1712         md = detProcessedImfileMetadataFromObject(object);
    1713         if (!md) {
    1714             exit(EXIT_FAILURE);
    1715         }
    1716 
    1717         psFree(object);
    1718 
    1719             psFree(md);
    1720             exit(EXIT_FAILURE);
    1721         }
    1722         if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
    1723             psFree(md);
    1724             exit(EXIT_FAILURE);
    1725         }
    1726         if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
    1727             psFree(md);
    1728             exit(EXIT_FAILURE);
    1729         }
    1730         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    1731             psFree(md);
    1732             exit(EXIT_FAILURE);
    1733         }
    1734         if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
    1735             psFree(md);
    1736             exit(EXIT_FAILURE);
    1737         }
    1738         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
    1739             psFree(md);
    1740             exit(EXIT_FAILURE);
    1741         }
    1742         if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
    1743             psFree(md);
    1744             exit(EXIT_FAILURE);
    1745         }
    1746         if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
    1747             psFree(md);
    1748             exit(EXIT_FAILURE);
    1749         }
    1750         if (!psMetadataLookupF64(&status, md, "fringe_0") == 64.64) {
    1751             psFree(md);
    1752             exit(EXIT_FAILURE);
    1753         }
    1754         if (!psMetadataLookupF64(&status, md, "fringe_1") == 64.64) {
    1755             psFree(md);
    1756             exit(EXIT_FAILURE);
    1757         }
    1758         if (!psMetadataLookupF64(&status, md, "fringe_2") == 64.64) {
    1759             psFree(md);
    1760             exit(EXIT_FAILURE);
    1761         }
    1762         if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
    1763             psFree(md);
    1764             exit(EXIT_FAILURE);
    1765         }
    1766         if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
    1767             psFree(md);
    1768             exit(EXIT_FAILURE);
    1769         }
    1770         if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
    1771             psFree(md);
    1772             exit(EXIT_FAILURE);
    1773         }
    1774         if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
    1775             psFree(md);
    1776             exit(EXIT_FAILURE);
    1777         }
    1778         if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
    1779             psFree(md);
    1780             exit(EXIT_FAILURE);
    1781         }
    1782         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
    1783             psFree(md);
    1784             exit(EXIT_FAILURE);
    1785         }
    1786             psFree(md);
    1787             exit(EXIT_FAILURE);
    1788         }
    1789 
    1790         psFree(md);
    1791     }
    1792 
    1793     {
    1794         psMetadata      *md;
    1795         detProcessedExpRow *object;
    1796         bool            status;
    1797 
    1798         object = detProcessedExpRowAlloc(-64, "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);
    1799         if (!object) {
    1800             exit(EXIT_FAILURE);
    1801         }
    1802 
    1803         md = detProcessedExpMetadataFromObject(object);
    1804         if (!md) {
    1805             exit(EXIT_FAILURE);
    1806         }
    1807 
    1808         psFree(object);
    1809 
    1810             psFree(md);
    1811             exit(EXIT_FAILURE);
    1812         }
    1813         if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
    1814             psFree(md);
    1815             exit(EXIT_FAILURE);
    1816         }
    1817         if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
    1818             psFree(md);
    1819             exit(EXIT_FAILURE);
    1820         }
    1821         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
    1822             psFree(md);
    1823             exit(EXIT_FAILURE);
    1824         }
    1825         if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
    1826             psFree(md);
    1827             exit(EXIT_FAILURE);
    1828         }
    1829         if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
    1830             psFree(md);
    1831             exit(EXIT_FAILURE);
    1832         }
    1833         if (!psMetadataLookupF64(&status, md, "fringe_0") == 64.64) {
    1834             psFree(md);
    1835             exit(EXIT_FAILURE);
    1836         }
    1837         if (!psMetadataLookupF64(&status, md, "fringe_1") == 64.64) {
    1838             psFree(md);
    1839             exit(EXIT_FAILURE);
    1840         }
    1841         if (!psMetadataLookupF64(&status, md, "fringe_2") == 64.64) {
    1842             psFree(md);
    1843             exit(EXIT_FAILURE);
    1844         }
    1845         if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
    1846             psFree(md);
    1847             exit(EXIT_FAILURE);
    1848         }
    1849         if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
    1850             psFree(md);
    1851             exit(EXIT_FAILURE);
    1852         }
    1853         if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
    1854             psFree(md);
    1855             exit(EXIT_FAILURE);
    1856         }
    1857         if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
    1858             psFree(md);
    1859             exit(EXIT_FAILURE);
    1860         }
    1861         if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
    1862             psFree(md);
    1863             exit(EXIT_FAILURE);
    1864         }
    1865         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
    1866             psFree(md);
    1867             exit(EXIT_FAILURE);
    1868         }
    1869             psFree(md);
    1870             exit(EXIT_FAILURE);
    1871         }
    1872 
    1873         psFree(md);
    1874     }
    1875 
    1876     {
    1877         psMetadata      *md;
    1878         detStackedImfileRow *object;
    1879         bool            status;
    1880 
    1881         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);
    1882         if (!object) {
    1883             exit(EXIT_FAILURE);
    1884         }
    1885 
    1886         md = detStackedImfileMetadataFromObject(object);
    1887         if (!md) {
    1888             exit(EXIT_FAILURE);
    1889         }
    1890 
    1891         psFree(object);
    1892 
    1893             psFree(md);
    1894             exit(EXIT_FAILURE);
    1895         }
    1896         if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
    1897             psFree(md);
    1898             exit(EXIT_FAILURE);
    1899         }
    1900         if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
    1901             psFree(md);
    1902             exit(EXIT_FAILURE);
    1903         }
    1904         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    1905             psFree(md);
    1906             exit(EXIT_FAILURE);
    1907         }
    1908         if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
    1909             psFree(md);
    1910             exit(EXIT_FAILURE);
    1911         }
    1912         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
    1913             psFree(md);
    1914             exit(EXIT_FAILURE);
    1915         }
    1916         if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
    1917             psFree(md);
    1918             exit(EXIT_FAILURE);
    1919         }
    1920         if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
    1921             psFree(md);
    1922             exit(EXIT_FAILURE);
    1923         }
    1924         if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
    1925             psFree(md);
    1926             exit(EXIT_FAILURE);
    1927         }
    1928         if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
    1929             psFree(md);
    1930             exit(EXIT_FAILURE);
    1931         }
    1932         if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
    1933             psFree(md);
    1934             exit(EXIT_FAILURE);
    1935         }
    1936         if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
    1937             psFree(md);
    1938             exit(EXIT_FAILURE);
    1939         }
    1940         if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
    1941             psFree(md);
    1942             exit(EXIT_FAILURE);
    1943         }
    1944             psFree(md);
    1945             exit(EXIT_FAILURE);
    1946         }
    1947 
    1948         psFree(md);
    1949     }
    1950 
    1951     {
    1952         psMetadata      *md;
    1953         detNormalizedStatImfileRow *object;
    1954         bool            status;
    1955 
    1956         object = detNormalizedStatImfileRowAlloc(-64, -32, "a string", 32.32, -16);
    1957         if (!object) {
    1958             exit(EXIT_FAILURE);
    1959         }
    1960 
    1961         md = detNormalizedStatImfileMetadataFromObject(object);
    1962         if (!md) {
    1963             exit(EXIT_FAILURE);
    1964         }
    1965 
    1966         psFree(object);
    1967 
    1968             psFree(md);
    1969             exit(EXIT_FAILURE);
    1970         }
    1971         if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
    1972             psFree(md);
    1973             exit(EXIT_FAILURE);
    1974         }
    1975         if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
    1976             psFree(md);
    1977             exit(EXIT_FAILURE);
    1978         }
    1979         if (!psMetadataLookupF32(&status, md, "norm") == 32.32) {
    1980             psFree(md);
    1981             exit(EXIT_FAILURE);
    1982         }
    1983             psFree(md);
    1984             exit(EXIT_FAILURE);
    1985         }
    1986 
    1987         psFree(md);
    1988     }
    1989 
    1990     {
    1991         psMetadata      *md;
    1992         detNormalizedImfileRow *object;
    1993         bool            status;
    1994 
    1995         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);
    1996         if (!object) {
    1997             exit(EXIT_FAILURE);
    1998         }
    1999 
    2000         md = detNormalizedImfileMetadataFromObject(object);
    2001         if (!md) {
    2002             exit(EXIT_FAILURE);
    2003         }
    2004 
    2005         psFree(object);
    2006 
    2007             psFree(md);
    2008             exit(EXIT_FAILURE);
    2009         }
    2010         if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
    2011             psFree(md);
    2012             exit(EXIT_FAILURE);
    2013         }
    2014         if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
    2015             psFree(md);
    2016             exit(EXIT_FAILURE);
    2017         }
    2018         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    2019             psFree(md);
    2020             exit(EXIT_FAILURE);
    2021         }
    2022         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
    2023             psFree(md);
    2024             exit(EXIT_FAILURE);
    2025         }
    2026         if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
    2027             psFree(md);
    2028             exit(EXIT_FAILURE);
    2029         }
    2030         if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
    2031             psFree(md);
    2032             exit(EXIT_FAILURE);
    2033         }
    2034         if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
    2035             psFree(md);
    2036             exit(EXIT_FAILURE);
    2037         }
    2038         if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
    2039             psFree(md);
    2040             exit(EXIT_FAILURE);
    2041         }
    2042         if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
    2043             psFree(md);
    2044             exit(EXIT_FAILURE);
    2045         }
    2046         if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
    2047             psFree(md);
    2048             exit(EXIT_FAILURE);
    2049         }
    2050         if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
    2051             psFree(md);
    2052             exit(EXIT_FAILURE);
    2053         }
    2054         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
    2055             psFree(md);
    2056             exit(EXIT_FAILURE);
    2057         }
    2058             psFree(md);
    2059             exit(EXIT_FAILURE);
    2060         }
    2061 
    2062         psFree(md);
    2063     }
    2064 
    2065     {
    2066         psMetadata      *md;
    2067         detNormalizedExpRow *object;
    2068         bool            status;
    2069 
    2070         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);
    2071         if (!object) {
    2072             exit(EXIT_FAILURE);
    2073         }
    2074 
    2075         md = detNormalizedExpMetadataFromObject(object);
    2076         if (!md) {
    2077             exit(EXIT_FAILURE);
    2078         }
    2079 
    2080         psFree(object);
    2081 
    2082             psFree(md);
    2083             exit(EXIT_FAILURE);
    2084         }
    2085         if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
    2086             psFree(md);
    2087             exit(EXIT_FAILURE);
    2088         }
    2089         if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
    2090             psFree(md);
    2091             exit(EXIT_FAILURE);
    2092         }
    2093         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
    2094             psFree(md);
    2095             exit(EXIT_FAILURE);
    2096         }
    2097         if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
    2098             psFree(md);
    2099             exit(EXIT_FAILURE);
    2100         }
    2101         if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
    2102             psFree(md);
    2103             exit(EXIT_FAILURE);
    2104         }
    2105         if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
    2106             psFree(md);
    2107             exit(EXIT_FAILURE);
    2108         }
    2109         if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
    2110             psFree(md);
    2111             exit(EXIT_FAILURE);
    2112         }
    2113         if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
    2114             psFree(md);
    2115             exit(EXIT_FAILURE);
    2116         }
    2117         if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
    2118             psFree(md);
    2119             exit(EXIT_FAILURE);
    2120         }
    2121         if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
    2122             psFree(md);
    2123             exit(EXIT_FAILURE);
    2124         }
    2125         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
    2126             psFree(md);
    2127             exit(EXIT_FAILURE);
    2128         }
    2129             psFree(md);
    2130             exit(EXIT_FAILURE);
    2131         }
    2132 
    2133         psFree(md);
    2134     }
    2135 
    2136     {
    2137         psMetadata      *md;
    2138         detResidImfileRow *object;
    2139         bool            status;
    2140 
    2141         object = detResidImfileRowAlloc(-64, -32, "a string", "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);
    2142         if (!object) {
    2143             exit(EXIT_FAILURE);
    2144         }
    2145 
    2146         md = detResidImfileMetadataFromObject(object);
    2147         if (!md) {
    2148             exit(EXIT_FAILURE);
    2149         }
    2150 
    2151         psFree(object);
    2152 
    2153             psFree(md);
    2154             exit(EXIT_FAILURE);
    2155         }
    2156         if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
    2157             psFree(md);
    2158             exit(EXIT_FAILURE);
    2159         }
    2160         if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
    2161             psFree(md);
    2162             exit(EXIT_FAILURE);
    2163         }
    2164         if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
    2165             psFree(md);
    2166             exit(EXIT_FAILURE);
    2167         }
    2168         if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
    2169             psFree(md);
    2170             exit(EXIT_FAILURE);
    2171         }
    2172         if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
    2173             psFree(md);
    2174             exit(EXIT_FAILURE);
    2175         }
    2176         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
    2177             psFree(md);
    2178             exit(EXIT_FAILURE);
    2179         }
    2180         if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
    2181             psFree(md);
    2182             exit(EXIT_FAILURE);
    2183         }
    2184         if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
    2185             psFree(md);
    2186             exit(EXIT_FAILURE);
    2187         }
    2188         if (!psMetadataLookupF64(&status, md, "bin_stdev") == 64.64) {
    2189             psFree(md);
    2190             exit(EXIT_FAILURE);
    2191         }
    2192         if (!psMetadataLookupF64(&status, md, "fringe_0") == 64.64) {
    2193             psFree(md);
    2194             exit(EXIT_FAILURE);
    2195         }
    2196         if (!psMetadataLookupF64(&status, md, "fringe_1") == 64.64) {
    2197             psFree(md);
    2198             exit(EXIT_FAILURE);
    2199         }
    2200         if (!psMetadataLookupF64(&status, md, "fringe_2") == 64.64) {
    2201             psFree(md);
    2202             exit(EXIT_FAILURE);
    2203         }
    2204         if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
    2205             psFree(md);
    2206             exit(EXIT_FAILURE);
    2207         }
    2208         if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
    2209             psFree(md);
    2210             exit(EXIT_FAILURE);
    2211         }
    2212         if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
    2213             psFree(md);
    2214             exit(EXIT_FAILURE);
    2215         }
    2216         if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
    2217             psFree(md);
    2218             exit(EXIT_FAILURE);
    2219         }
    2220         if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
    2221             psFree(md);
    2222             exit(EXIT_FAILURE);
    2223         }
    2224         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
    2225             psFree(md);
    2226             exit(EXIT_FAILURE);
    2227         }
    2228             psFree(md);
    2229             exit(EXIT_FAILURE);
    2230         }
    2231 
    2232         psFree(md);
    2233     }
    2234 
    2235     {
    2236         psMetadata      *md;
    2237         detResidExpRow  *object;
    2238         bool            status;
    2239 
    2240         object = detResidExpRowAlloc(-64, -32, "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", true, -16);
    2241         if (!object) {
    2242             exit(EXIT_FAILURE);
    2243         }
    2244 
    2245         md = detResidExpMetadataFromObject(object);
    2246         if (!md) {
    2247             exit(EXIT_FAILURE);
    2248         }
    2249 
    2250         psFree(object);
    2251 
    2252             psFree(md);
    2253             exit(EXIT_FAILURE);
    2254         }
    2255         if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
    2256             psFree(md);
    2257             exit(EXIT_FAILURE);
    2258         }
    2259         if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
    22602180            psFree(md);
    22612181            exit(EXIT_FAILURE);
  • trunk/ippdb/tests/objectfrommetadata.c

    r13937 r14061  
    1010    {
    1111        psMetadata      *md;
    12         expTagCounterRow *object;
    13 
    14         md = psMetadataAlloc();
    15             psFree(md);
    16             exit(EXIT_FAILURE);
    17         }
    18 
    19         object = expTagCounterObjectFromMetadata(md);
    20         if (!object) {
    21             psFree(md);
    22             exit(EXIT_FAILURE);
    23         }
    24 
    25         psFree(md);
    26 
    27             psFree(object);
    28             exit(EXIT_FAILURE);
    29         }
    30 
    31         psFree(object);
    32     }
    33 
    34     {
    35         psMetadata      *md;
    3612        summitExpRow    *object;
    3713
    3814        md = psMetadataAlloc();
    39         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, "a string")) {
     15        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_name", 0, NULL, "a string")) {
    4016            psFree(md);
    4117            exit(EXIT_FAILURE);
     
    7349        psFree(md);
    7450
    75         if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
     51        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    7652            psFree(object);
    7753            exit(EXIT_FAILURE);
     
    10985
    11086        md = psMetadataAlloc();
    111         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, "a string")) {
     87        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_name", 0, NULL, "a string")) {
    11288            psFree(md);
    11389            exit(EXIT_FAILURE);
     
    154130        psFree(md);
    155131
    156         if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
     132        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    157133            psFree(object);
    158134            exit(EXIT_FAILURE);
     
    199175
    200176        md = psMetadataAlloc();
    201         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, "a string")) {
     177        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_name", 0, NULL, "a string")) {
    202178            psFree(md);
    203179            exit(EXIT_FAILURE);
     
    220196        psFree(md);
    221197
    222         if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
     198        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    223199            psFree(object);
    224200            exit(EXIT_FAILURE);
     
    241217
    242218        md = psMetadataAlloc();
    243         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, "a string")) {
     219        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_name", 0, NULL, "a string")) {
    244220            psFree(md);
    245221            exit(EXIT_FAILURE);
     
    261237            exit(EXIT_FAILURE);
    262238        }
     239            psFree(md);
     240            exit(EXIT_FAILURE);
     241        }
     242
     243        object = pzPendingImfileObjectFromMetadata(md);
     244        if (!object) {
     245            psFree(md);
     246            exit(EXIT_FAILURE);
     247        }
     248
     249        psFree(md);
     250
     251        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
     252            psFree(object);
     253            exit(EXIT_FAILURE);
     254        }
     255        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
     256            psFree(object);
     257            exit(EXIT_FAILURE);
     258        }
     259        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
     260            psFree(object);
     261            exit(EXIT_FAILURE);
     262        }
     263        if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
     264            psFree(object);
     265            exit(EXIT_FAILURE);
     266        }
     267        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     268            psFree(object);
     269            exit(EXIT_FAILURE);
     270        }
     271            psFree(object);
     272            exit(EXIT_FAILURE);
     273        }
     274
     275        psFree(object);
     276    }
     277
     278    {
     279        psMetadata      *md;
     280        pzDoneExpRow    *object;
     281
     282        md = psMetadataAlloc();
     283        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_name", 0, NULL, "a string")) {
     284            psFree(md);
     285            exit(EXIT_FAILURE);
     286        }
     287        if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
     288            psFree(md);
     289            exit(EXIT_FAILURE);
     290        }
     291        if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
     292            psFree(md);
     293            exit(EXIT_FAILURE);
     294        }
     295
     296        object = pzDoneExpObjectFromMetadata(md);
     297        if (!object) {
     298            psFree(md);
     299            exit(EXIT_FAILURE);
     300        }
     301
     302        psFree(md);
     303
     304        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
     305            psFree(object);
     306            exit(EXIT_FAILURE);
     307        }
     308        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
     309            psFree(object);
     310            exit(EXIT_FAILURE);
     311        }
     312        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
     313            psFree(object);
     314            exit(EXIT_FAILURE);
     315        }
     316
     317        psFree(object);
     318    }
     319
     320    {
     321        psMetadata      *md;
     322        pzDoneImfileRow *object;
     323
     324        md = psMetadataAlloc();
     325        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_name", 0, NULL, "a string")) {
     326            psFree(md);
     327            exit(EXIT_FAILURE);
     328        }
     329        if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
     330            psFree(md);
     331            exit(EXIT_FAILURE);
     332        }
     333        if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
     334            psFree(md);
     335            exit(EXIT_FAILURE);
     336        }
     337        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, "a string")) {
     338            psFree(md);
     339            exit(EXIT_FAILURE);
     340        }
     341        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
     342            psFree(md);
     343            exit(EXIT_FAILURE);
     344        }
     345            psFree(md);
     346            exit(EXIT_FAILURE);
     347        }
     348        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     349            psFree(md);
     350            exit(EXIT_FAILURE);
     351        }
     352
     353        object = pzDoneImfileObjectFromMetadata(md);
     354        if (!object) {
     355            psFree(md);
     356            exit(EXIT_FAILURE);
     357        }
     358
     359        psFree(md);
     360
     361        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
     362            psFree(object);
     363            exit(EXIT_FAILURE);
     364        }
     365        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
     366            psFree(object);
     367            exit(EXIT_FAILURE);
     368        }
     369        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
     370            psFree(object);
     371            exit(EXIT_FAILURE);
     372        }
     373        if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
     374            psFree(object);
     375            exit(EXIT_FAILURE);
     376        }
     377        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     378            psFree(object);
     379            exit(EXIT_FAILURE);
     380        }
     381            psFree(object);
     382            exit(EXIT_FAILURE);
     383        }
     384        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     385            psFree(object);
     386            exit(EXIT_FAILURE);
     387        }
     388
     389        psFree(object);
     390    }
     391
     392    {
     393        psMetadata      *md;
     394        newExpRow       *object;
     395
     396        md = psMetadataAlloc();
     397            psFree(md);
     398            exit(EXIT_FAILURE);
     399        }
     400        if (!psMetadataAddStr(md, PS_LIST_TAIL, "tmp_exp_name", 0, NULL, "a string")) {
     401            psFree(md);
     402            exit(EXIT_FAILURE);
     403        }
     404        if (!psMetadataAddStr(md, PS_LIST_TAIL, "tmp_camera", 0, NULL, "a string")) {
     405            psFree(md);
     406            exit(EXIT_FAILURE);
     407        }
     408        if (!psMetadataAddStr(md, PS_LIST_TAIL, "tmp_telescope", 0, NULL, "a string")) {
     409            psFree(md);
     410            exit(EXIT_FAILURE);
     411        }
     412        if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
     413            psFree(md);
     414            exit(EXIT_FAILURE);
     415        }
     416        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
     417            psFree(md);
     418            exit(EXIT_FAILURE);
     419        }
     420        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir_state", 0, NULL, "a string")) {
     421            psFree(md);
     422            exit(EXIT_FAILURE);
     423        }
     424
     425        object = newExpObjectFromMetadata(md);
     426        if (!object) {
     427            psFree(md);
     428            exit(EXIT_FAILURE);
     429        }
     430
     431        psFree(md);
     432
     433            psFree(object);
     434            exit(EXIT_FAILURE);
     435        }
     436        if (strncmp(object->tmp_exp_name, "a string", MAX_STRING_LENGTH)) {
     437            psFree(object);
     438            exit(EXIT_FAILURE);
     439        }
     440        if (strncmp(object->tmp_camera, "a string", MAX_STRING_LENGTH)) {
     441            psFree(object);
     442            exit(EXIT_FAILURE);
     443        }
     444        if (strncmp(object->tmp_telescope, "a string", MAX_STRING_LENGTH)) {
     445            psFree(object);
     446            exit(EXIT_FAILURE);
     447        }
     448        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     449            psFree(object);
     450            exit(EXIT_FAILURE);
     451        }
     452        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     453            psFree(object);
     454            exit(EXIT_FAILURE);
     455        }
     456        if (strncmp(object->workdir_state, "a string", MAX_STRING_LENGTH)) {
     457            psFree(object);
     458            exit(EXIT_FAILURE);
     459        }
     460
     461        psFree(object);
     462    }
     463
     464    {
     465        psMetadata      *md;
     466        newImfileRow    *object;
     467
     468        md = psMetadataAlloc();
     469            psFree(md);
     470            exit(EXIT_FAILURE);
     471        }
     472        if (!psMetadataAddStr(md, PS_LIST_TAIL, "tmp_class_id", 0, NULL, "a string")) {
     473            psFree(md);
     474            exit(EXIT_FAILURE);
     475        }
     476        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     477            psFree(md);
     478            exit(EXIT_FAILURE);
     479        }
     480
     481        object = newImfileObjectFromMetadata(md);
     482        if (!object) {
     483            psFree(md);
     484            exit(EXIT_FAILURE);
     485        }
     486
     487        psFree(md);
     488
     489            psFree(object);
     490            exit(EXIT_FAILURE);
     491        }
     492        if (strncmp(object->tmp_class_id, "a string", MAX_STRING_LENGTH)) {
     493            psFree(object);
     494            exit(EXIT_FAILURE);
     495        }
     496        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     497            psFree(object);
     498            exit(EXIT_FAILURE);
     499        }
     500
     501        psFree(object);
     502    }
     503
     504    {
     505        psMetadata      *md;
     506        rawExpRow       *object;
     507
     508        md = psMetadataAlloc();
     509            psFree(md);
     510            exit(EXIT_FAILURE);
     511        }
     512        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_name", 0, NULL, "a string")) {
     513            psFree(md);
     514            exit(EXIT_FAILURE);
     515        }
     516        if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
     517            psFree(md);
     518            exit(EXIT_FAILURE);
     519        }
     520        if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
     521            psFree(md);
     522            exit(EXIT_FAILURE);
     523        }
     524            psFree(md);
     525            exit(EXIT_FAILURE);
     526        }
    263527        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
    264528            psFree(md);
    265529            exit(EXIT_FAILURE);
    266530        }
    267 
    268         object = pzPendingImfileObjectFromMetadata(md);
    269         if (!object) {
    270             psFree(md);
    271             exit(EXIT_FAILURE);
    272         }
    273 
    274         psFree(md);
    275 
    276         if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
     531        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_type", 0, NULL, "a string")) {
     532            psFree(md);
     533            exit(EXIT_FAILURE);
     534        }
     535        if (!psMetadataAddStr(md, PS_LIST_TAIL, "filelevel", 0, NULL, "a string")) {
     536            psFree(md);
     537            exit(EXIT_FAILURE);
     538        }
     539        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
     540            psFree(md);
     541            exit(EXIT_FAILURE);
     542        }
     543        if (!psMetadataAddStr(md, PS_LIST_TAIL, "filter", 0, NULL, "a string")) {
     544            psFree(md);
     545            exit(EXIT_FAILURE);
     546        }
     547        if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, 32.32)) {
     548            psFree(md);
     549            exit(EXIT_FAILURE);
     550        }
     551        if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, 64.64)) {
     552            psFree(md);
     553            exit(EXIT_FAILURE);
     554        }
     555        if (!psMetadataAddF64(md, PS_LIST_TAIL, "decl", 0, NULL, 64.64)) {
     556            psFree(md);
     557            exit(EXIT_FAILURE);
     558        }
     559        if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time", 0, NULL, 32.32)) {
     560            psFree(md);
     561            exit(EXIT_FAILURE);
     562        }
     563        if (!psMetadataAddF32(md, PS_LIST_TAIL, "sat_pixel_frac", 0, NULL, 32.32)) {
     564            psFree(md);
     565            exit(EXIT_FAILURE);
     566        }
     567        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     568            psFree(md);
     569            exit(EXIT_FAILURE);
     570        }
     571        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     572            psFree(md);
     573            exit(EXIT_FAILURE);
     574        }
     575        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     576            psFree(md);
     577            exit(EXIT_FAILURE);
     578        }
     579        if (!psMetadataAddF64(md, PS_LIST_TAIL, "alt", 0, NULL, 64.64)) {
     580            psFree(md);
     581            exit(EXIT_FAILURE);
     582        }
     583        if (!psMetadataAddF64(md, PS_LIST_TAIL, "az", 0, NULL, 64.64)) {
     584            psFree(md);
     585            exit(EXIT_FAILURE);
     586        }
     587        if (!psMetadataAddF32(md, PS_LIST_TAIL, "ccd_temp", 0, NULL, 32.32)) {
     588            psFree(md);
     589            exit(EXIT_FAILURE);
     590        }
     591        if (!psMetadataAddF64(md, PS_LIST_TAIL, "posang", 0, NULL, 64.64)) {
     592            psFree(md);
     593            exit(EXIT_FAILURE);
     594        }
     595        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
     596            psFree(md);
     597            exit(EXIT_FAILURE);
     598        }
     599        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
     600            psFree(md);
     601            exit(EXIT_FAILURE);
     602        }
     603        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
     604            psFree(md);
     605            exit(EXIT_FAILURE);
     606        }
     607        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
     608            psFree(md);
     609            exit(EXIT_FAILURE);
     610        }
     611        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
     612            psFree(md);
     613            exit(EXIT_FAILURE);
     614        }
     615        if (!psMetadataAddStr(md, PS_LIST_TAIL, "object", 0, NULL, "a string")) {
     616            psFree(md);
     617            exit(EXIT_FAILURE);
     618        }
     619        if (!psMetadataAddF32(md, PS_LIST_TAIL, "solang", 0, NULL, 32.32)) {
     620            psFree(md);
     621            exit(EXIT_FAILURE);
     622        }
     623            psFree(md);
     624            exit(EXIT_FAILURE);
     625        }
     626
     627        object = rawExpObjectFromMetadata(md);
     628        if (!object) {
     629            psFree(md);
     630            exit(EXIT_FAILURE);
     631        }
     632
     633        psFree(md);
     634
     635            psFree(object);
     636            exit(EXIT_FAILURE);
     637        }
     638        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
    277639            psFree(object);
    278640            exit(EXIT_FAILURE);
     
    286648            exit(EXIT_FAILURE);
    287649        }
    288         if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
     650            psFree(object);
     651            exit(EXIT_FAILURE);
     652        }
     653        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
     654            psFree(object);
     655            exit(EXIT_FAILURE);
     656        }
     657        if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
     658            psFree(object);
     659            exit(EXIT_FAILURE);
     660        }
     661        if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
     662            psFree(object);
     663            exit(EXIT_FAILURE);
     664        }
     665        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     666            psFree(object);
     667            exit(EXIT_FAILURE);
     668        }
     669        if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
     670            psFree(object);
     671            exit(EXIT_FAILURE);
     672        }
     673        if (!object->airmass == 32.32) {
     674            psFree(object);
     675            exit(EXIT_FAILURE);
     676        }
     677        if (!object->ra == 64.64) {
     678            psFree(object);
     679            exit(EXIT_FAILURE);
     680        }
     681        if (!object->decl == 64.64) {
     682            psFree(object);
     683            exit(EXIT_FAILURE);
     684        }
     685        if (!object->exp_time == 32.32) {
     686            psFree(object);
     687            exit(EXIT_FAILURE);
     688        }
     689        if (!object->sat_pixel_frac == 32.32) {
     690            psFree(object);
     691            exit(EXIT_FAILURE);
     692        }
     693        if (!object->bg == 64.64) {
     694            psFree(object);
     695            exit(EXIT_FAILURE);
     696        }
     697        if (!object->bg_stdev == 64.64) {
     698            psFree(object);
     699            exit(EXIT_FAILURE);
     700        }
     701        if (!object->bg_mean_stdev == 64.64) {
     702            psFree(object);
     703            exit(EXIT_FAILURE);
     704        }
     705        if (!object->alt == 64.64) {
     706            psFree(object);
     707            exit(EXIT_FAILURE);
     708        }
     709        if (!object->az == 64.64) {
     710            psFree(object);
     711            exit(EXIT_FAILURE);
     712        }
     713        if (!object->ccd_temp == 32.32) {
     714            psFree(object);
     715            exit(EXIT_FAILURE);
     716        }
     717        if (!object->posang == 64.64) {
     718            psFree(object);
     719            exit(EXIT_FAILURE);
     720        }
     721        if (!object->user_1 == 64.64) {
     722            psFree(object);
     723            exit(EXIT_FAILURE);
     724        }
     725        if (!object->user_2 == 64.64) {
     726            psFree(object);
     727            exit(EXIT_FAILURE);
     728        }
     729        if (!object->user_3 == 64.64) {
     730            psFree(object);
     731            exit(EXIT_FAILURE);
     732        }
     733        if (!object->user_4 == 64.64) {
     734            psFree(object);
     735            exit(EXIT_FAILURE);
     736        }
     737        if (!object->user_5 == 64.64) {
     738            psFree(object);
     739            exit(EXIT_FAILURE);
     740        }
     741        if (strncmp(object->object, "a string", MAX_STRING_LENGTH)) {
     742            psFree(object);
     743            exit(EXIT_FAILURE);
     744        }
     745        if (!object->solang == 32.32) {
     746            psFree(object);
     747            exit(EXIT_FAILURE);
     748        }
     749            psFree(object);
     750            exit(EXIT_FAILURE);
     751        }
     752
     753        psFree(object);
     754    }
     755
     756    {
     757        psMetadata      *md;
     758        rawImfileRow    *object;
     759
     760        md = psMetadataAlloc();
     761            psFree(md);
     762            exit(EXIT_FAILURE);
     763        }
     764        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_name", 0, NULL, "a string")) {
     765            psFree(md);
     766            exit(EXIT_FAILURE);
     767        }
     768        if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
     769            psFree(md);
     770            exit(EXIT_FAILURE);
     771        }
     772        if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
     773            psFree(md);
     774            exit(EXIT_FAILURE);
     775        }
     776            psFree(md);
     777            exit(EXIT_FAILURE);
     778        }
     779        if (!psMetadataAddStr(md, PS_LIST_TAIL, "tmp_class_id", 0, NULL, "a string")) {
     780            psFree(md);
     781            exit(EXIT_FAILURE);
     782        }
     783        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
     784            psFree(md);
     785            exit(EXIT_FAILURE);
     786        }
     787        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     788            psFree(md);
     789            exit(EXIT_FAILURE);
     790        }
     791        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_type", 0, NULL, "a string")) {
     792            psFree(md);
     793            exit(EXIT_FAILURE);
     794        }
     795        if (!psMetadataAddStr(md, PS_LIST_TAIL, "filelevel", 0, NULL, "a string")) {
     796            psFree(md);
     797            exit(EXIT_FAILURE);
     798        }
     799        if (!psMetadataAddStr(md, PS_LIST_TAIL, "filter", 0, NULL, "a string")) {
     800            psFree(md);
     801            exit(EXIT_FAILURE);
     802        }
     803        if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, 32.32)) {
     804            psFree(md);
     805            exit(EXIT_FAILURE);
     806        }
     807        if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, 64.64)) {
     808            psFree(md);
     809            exit(EXIT_FAILURE);
     810        }
     811        if (!psMetadataAddF64(md, PS_LIST_TAIL, "decl", 0, NULL, 64.64)) {
     812            psFree(md);
     813            exit(EXIT_FAILURE);
     814        }
     815        if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time", 0, NULL, 32.32)) {
     816            psFree(md);
     817            exit(EXIT_FAILURE);
     818        }
     819        if (!psMetadataAddF32(md, PS_LIST_TAIL, "sat_pixel_frac", 0, NULL, 32.32)) {
     820            psFree(md);
     821            exit(EXIT_FAILURE);
     822        }
     823        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     824            psFree(md);
     825            exit(EXIT_FAILURE);
     826        }
     827        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     828            psFree(md);
     829            exit(EXIT_FAILURE);
     830        }
     831        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     832            psFree(md);
     833            exit(EXIT_FAILURE);
     834        }
     835        if (!psMetadataAddF64(md, PS_LIST_TAIL, "alt", 0, NULL, 64.64)) {
     836            psFree(md);
     837            exit(EXIT_FAILURE);
     838        }
     839        if (!psMetadataAddF64(md, PS_LIST_TAIL, "az", 0, NULL, 64.64)) {
     840            psFree(md);
     841            exit(EXIT_FAILURE);
     842        }
     843        if (!psMetadataAddF32(md, PS_LIST_TAIL, "ccd_temp", 0, NULL, 32.32)) {
     844            psFree(md);
     845            exit(EXIT_FAILURE);
     846        }
     847        if (!psMetadataAddF64(md, PS_LIST_TAIL, "posang", 0, NULL, 64.64)) {
     848            psFree(md);
     849            exit(EXIT_FAILURE);
     850        }
     851        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
     852            psFree(md);
     853            exit(EXIT_FAILURE);
     854        }
     855        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
     856            psFree(md);
     857            exit(EXIT_FAILURE);
     858        }
     859        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
     860            psFree(md);
     861            exit(EXIT_FAILURE);
     862        }
     863        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
     864            psFree(md);
     865            exit(EXIT_FAILURE);
     866        }
     867        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
     868            psFree(md);
     869            exit(EXIT_FAILURE);
     870        }
     871        if (!psMetadataAddStr(md, PS_LIST_TAIL, "object", 0, NULL, "a string")) {
     872            psFree(md);
     873            exit(EXIT_FAILURE);
     874        }
     875            psFree(md);
     876            exit(EXIT_FAILURE);
     877        }
     878
     879        object = rawImfileObjectFromMetadata(md);
     880        if (!object) {
     881            psFree(md);
     882            exit(EXIT_FAILURE);
     883        }
     884
     885        psFree(md);
     886
     887            psFree(object);
     888            exit(EXIT_FAILURE);
     889        }
     890        if (strncmp(object->exp_name, "a string", MAX_STRING_LENGTH)) {
     891            psFree(object);
     892            exit(EXIT_FAILURE);
     893        }
     894        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
     895            psFree(object);
     896            exit(EXIT_FAILURE);
     897        }
     898        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
     899            psFree(object);
     900            exit(EXIT_FAILURE);
     901        }
     902            psFree(object);
     903            exit(EXIT_FAILURE);
     904        }
     905        if (strncmp(object->tmp_class_id, "a string", MAX_STRING_LENGTH)) {
    289906            psFree(object);
    290907            exit(EXIT_FAILURE);
     
    294911            exit(EXIT_FAILURE);
    295912        }
    296         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    297             psFree(object);
    298             exit(EXIT_FAILURE);
    299         }
    300 
    301         psFree(object);
    302     }
    303 
    304     {
    305         psMetadata      *md;
    306         pzDoneExpRow    *object;
    307 
    308         md = psMetadataAlloc();
    309         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, "a string")) {
     913        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     914            psFree(object);
     915            exit(EXIT_FAILURE);
     916        }
     917        if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
     918            psFree(object);
     919            exit(EXIT_FAILURE);
     920        }
     921        if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
     922            psFree(object);
     923            exit(EXIT_FAILURE);
     924        }
     925        if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
     926            psFree(object);
     927            exit(EXIT_FAILURE);
     928        }
     929        if (!object->airmass == 32.32) {
     930            psFree(object);
     931            exit(EXIT_FAILURE);
     932        }
     933        if (!object->ra == 64.64) {
     934            psFree(object);
     935            exit(EXIT_FAILURE);
     936        }
     937        if (!object->decl == 64.64) {
     938            psFree(object);
     939            exit(EXIT_FAILURE);
     940        }
     941        if (!object->exp_time == 32.32) {
     942            psFree(object);
     943            exit(EXIT_FAILURE);
     944        }
     945        if (!object->sat_pixel_frac == 32.32) {
     946            psFree(object);
     947            exit(EXIT_FAILURE);
     948        }
     949        if (!object->bg == 64.64) {
     950            psFree(object);
     951            exit(EXIT_FAILURE);
     952        }
     953        if (!object->bg_stdev == 64.64) {
     954            psFree(object);
     955            exit(EXIT_FAILURE);
     956        }
     957        if (!object->bg_mean_stdev == 64.64) {
     958            psFree(object);
     959            exit(EXIT_FAILURE);
     960        }
     961        if (!object->alt == 64.64) {
     962            psFree(object);
     963            exit(EXIT_FAILURE);
     964        }
     965        if (!object->az == 64.64) {
     966            psFree(object);
     967            exit(EXIT_FAILURE);
     968        }
     969        if (!object->ccd_temp == 32.32) {
     970            psFree(object);
     971            exit(EXIT_FAILURE);
     972        }
     973        if (!object->posang == 64.64) {
     974            psFree(object);
     975            exit(EXIT_FAILURE);
     976        }
     977        if (!object->user_1 == 64.64) {
     978            psFree(object);
     979            exit(EXIT_FAILURE);
     980        }
     981        if (!object->user_2 == 64.64) {
     982            psFree(object);
     983            exit(EXIT_FAILURE);
     984        }
     985        if (!object->user_3 == 64.64) {
     986            psFree(object);
     987            exit(EXIT_FAILURE);
     988        }
     989        if (!object->user_4 == 64.64) {
     990            psFree(object);
     991            exit(EXIT_FAILURE);
     992        }
     993        if (!object->user_5 == 64.64) {
     994            psFree(object);
     995            exit(EXIT_FAILURE);
     996        }
     997        if (strncmp(object->object, "a string", MAX_STRING_LENGTH)) {
     998            psFree(object);
     999            exit(EXIT_FAILURE);
     1000        }
     1001            psFree(object);
     1002            exit(EXIT_FAILURE);
     1003        }
     1004
     1005        psFree(object);
     1006    }
     1007
     1008    {
     1009        psMetadata      *md;
     1010        guidePendingExpRow *object;
     1011
     1012        md = psMetadataAlloc();
     1013            psFree(md);
     1014            exit(EXIT_FAILURE);
     1015        }
     1016            psFree(md);
     1017            exit(EXIT_FAILURE);
     1018        }
     1019        if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
     1020            psFree(md);
     1021            exit(EXIT_FAILURE);
     1022        }
     1023
     1024        object = guidePendingExpObjectFromMetadata(md);
     1025        if (!object) {
     1026            psFree(md);
     1027            exit(EXIT_FAILURE);
     1028        }
     1029
     1030        psFree(md);
     1031
     1032            psFree(object);
     1033            exit(EXIT_FAILURE);
     1034        }
     1035            psFree(object);
     1036            exit(EXIT_FAILURE);
     1037        }
     1038        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     1039            psFree(object);
     1040            exit(EXIT_FAILURE);
     1041        }
     1042
     1043        psFree(object);
     1044    }
     1045
     1046    {
     1047        psMetadata      *md;
     1048        chipRunRow      *object;
     1049
     1050        md = psMetadataAlloc();
     1051            psFree(md);
     1052            exit(EXIT_FAILURE);
     1053        }
     1054        if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
     1055            psFree(md);
     1056            exit(EXIT_FAILURE);
     1057        }
     1058        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
     1059            psFree(md);
     1060            exit(EXIT_FAILURE);
     1061        }
     1062        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir_state", 0, NULL, "a string")) {
     1063            psFree(md);
     1064            exit(EXIT_FAILURE);
     1065        }
     1066        if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
     1067            psFree(md);
     1068            exit(EXIT_FAILURE);
     1069        }
     1070        if (!psMetadataAddStr(md, PS_LIST_TAIL, "reduction", 0, NULL, "a string")) {
     1071            psFree(md);
     1072            exit(EXIT_FAILURE);
     1073        }
     1074        if (!psMetadataAddStr(md, PS_LIST_TAIL, "expgroup", 0, NULL, "a string")) {
     1075            psFree(md);
     1076            exit(EXIT_FAILURE);
     1077        }
     1078        if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
     1079            psFree(md);
     1080            exit(EXIT_FAILURE);
     1081        }
     1082
     1083        object = chipRunObjectFromMetadata(md);
     1084        if (!object) {
     1085            psFree(md);
     1086            exit(EXIT_FAILURE);
     1087        }
     1088
     1089        psFree(md);
     1090
     1091            psFree(object);
     1092            exit(EXIT_FAILURE);
     1093        }
     1094        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     1095            psFree(object);
     1096            exit(EXIT_FAILURE);
     1097        }
     1098        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     1099            psFree(object);
     1100            exit(EXIT_FAILURE);
     1101        }
     1102        if (strncmp(object->workdir_state, "a string", MAX_STRING_LENGTH)) {
     1103            psFree(object);
     1104            exit(EXIT_FAILURE);
     1105        }
     1106        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     1107            psFree(object);
     1108            exit(EXIT_FAILURE);
     1109        }
     1110        if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
     1111            psFree(object);
     1112            exit(EXIT_FAILURE);
     1113        }
     1114        if (strncmp(object->expgroup, "a string", MAX_STRING_LENGTH)) {
     1115            psFree(object);
     1116            exit(EXIT_FAILURE);
     1117        }
     1118        if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
     1119            psFree(object);
     1120            exit(EXIT_FAILURE);
     1121        }
     1122
     1123        psFree(object);
     1124    }
     1125
     1126    {
     1127        psMetadata      *md;
     1128        chipInputImfileRow *object;
     1129
     1130        md = psMetadataAlloc();
     1131            psFree(md);
     1132            exit(EXIT_FAILURE);
     1133        }
     1134            psFree(md);
     1135            exit(EXIT_FAILURE);
     1136        }
     1137        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
     1138            psFree(md);
     1139            exit(EXIT_FAILURE);
     1140        }
     1141
     1142        object = chipInputImfileObjectFromMetadata(md);
     1143        if (!object) {
     1144            psFree(md);
     1145            exit(EXIT_FAILURE);
     1146        }
     1147
     1148        psFree(md);
     1149
     1150            psFree(object);
     1151            exit(EXIT_FAILURE);
     1152        }
     1153            psFree(object);
     1154            exit(EXIT_FAILURE);
     1155        }
     1156        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     1157            psFree(object);
     1158            exit(EXIT_FAILURE);
     1159        }
     1160
     1161        psFree(object);
     1162    }
     1163
     1164    {
     1165        psMetadata      *md;
     1166        chipProcessedImfileRow *object;
     1167
     1168        md = psMetadataAlloc();
     1169            psFree(md);
     1170            exit(EXIT_FAILURE);
     1171        }
     1172            psFree(md);
     1173            exit(EXIT_FAILURE);
     1174        }
     1175        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
     1176            psFree(md);
     1177            exit(EXIT_FAILURE);
     1178        }
     1179        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     1180            psFree(md);
     1181            exit(EXIT_FAILURE);
     1182        }
     1183        if (!psMetadataAddF32(md, PS_LIST_TAIL, "bg", 0, NULL, 32.32)) {
     1184            psFree(md);
     1185            exit(EXIT_FAILURE);
     1186        }
     1187        if (!psMetadataAddF32(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 32.32)) {
     1188            psFree(md);
     1189            exit(EXIT_FAILURE);
     1190        }
     1191        if (!psMetadataAddF32(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 32.32)) {
     1192            psFree(md);
     1193            exit(EXIT_FAILURE);
     1194        }
     1195        if (!psMetadataAddF32(md, PS_LIST_TAIL, "bias", 0, NULL, 32.32)) {
     1196            psFree(md);
     1197            exit(EXIT_FAILURE);
     1198        }
     1199        if (!psMetadataAddF32(md, PS_LIST_TAIL, "bias_stdev", 0, NULL, 32.32)) {
     1200            psFree(md);
     1201            exit(EXIT_FAILURE);
     1202        }
     1203        if (!psMetadataAddF32(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 32.32)) {
     1204            psFree(md);
     1205            exit(EXIT_FAILURE);
     1206        }
     1207        if (!psMetadataAddF32(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 32.32)) {
     1208            psFree(md);
     1209            exit(EXIT_FAILURE);
     1210        }
     1211        if (!psMetadataAddF32(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 32.32)) {
     1212            psFree(md);
     1213            exit(EXIT_FAILURE);
     1214        }
     1215        if (!psMetadataAddF32(md, PS_LIST_TAIL, "sigma_ra", 0, NULL, 32.32)) {
     1216            psFree(md);
     1217            exit(EXIT_FAILURE);
     1218        }
     1219        if (!psMetadataAddF32(md, PS_LIST_TAIL, "sigma_dec", 0, NULL, 32.32)) {
     1220            psFree(md);
     1221            exit(EXIT_FAILURE);
     1222        }
     1223        if (!psMetadataAddF32(md, PS_LIST_TAIL, "ap_resid", 0, NULL, 32.32)) {
     1224            psFree(md);
     1225            exit(EXIT_FAILURE);
     1226        }
     1227        if (!psMetadataAddF32(md, PS_LIST_TAIL, "ap_resid_stdev", 0, NULL, 32.32)) {
     1228            psFree(md);
     1229            exit(EXIT_FAILURE);
     1230        }
     1231        if (!psMetadataAddF32(md, PS_LIST_TAIL, "fwhm", 0, NULL, 32.32)) {
     1232            psFree(md);
     1233            exit(EXIT_FAILURE);
     1234        }
     1235        if (!psMetadataAddF32(md, PS_LIST_TAIL, "fwhm_range", 0, NULL, 32.32)) {
     1236            psFree(md);
     1237            exit(EXIT_FAILURE);
     1238        }
     1239        if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_stars", 0, NULL, -32)) {
     1240            psFree(md);
     1241            exit(EXIT_FAILURE);
     1242        }
     1243        if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_extended", 0, NULL, -32)) {
     1244            psFree(md);
     1245            exit(EXIT_FAILURE);
     1246        }
     1247        if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_cr", 0, NULL, -32)) {
     1248            psFree(md);
     1249            exit(EXIT_FAILURE);
     1250        }
     1251        if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_astrom", 0, NULL, -32)) {
     1252            psFree(md);
     1253            exit(EXIT_FAILURE);
     1254        }
     1255        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     1256            psFree(md);
     1257            exit(EXIT_FAILURE);
     1258        }
     1259            psFree(md);
     1260            exit(EXIT_FAILURE);
     1261        }
     1262
     1263        object = chipProcessedImfileObjectFromMetadata(md);
     1264        if (!object) {
     1265            psFree(md);
     1266            exit(EXIT_FAILURE);
     1267        }
     1268
     1269        psFree(md);
     1270
     1271            psFree(object);
     1272            exit(EXIT_FAILURE);
     1273        }
     1274            psFree(object);
     1275            exit(EXIT_FAILURE);
     1276        }
     1277        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     1278            psFree(object);
     1279            exit(EXIT_FAILURE);
     1280        }
     1281        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     1282            psFree(object);
     1283            exit(EXIT_FAILURE);
     1284        }
     1285        if (!object->bg == 32.32) {
     1286            psFree(object);
     1287            exit(EXIT_FAILURE);
     1288        }
     1289        if (!object->bg_stdev == 32.32) {
     1290            psFree(object);
     1291            exit(EXIT_FAILURE);
     1292        }
     1293        if (!object->bg_mean_stdev == 32.32) {
     1294            psFree(object);
     1295            exit(EXIT_FAILURE);
     1296        }
     1297        if (!object->bias == 32.32) {
     1298            psFree(object);
     1299            exit(EXIT_FAILURE);
     1300        }
     1301        if (!object->bias_stdev == 32.32) {
     1302            psFree(object);
     1303            exit(EXIT_FAILURE);
     1304        }
     1305        if (!object->fringe_0 == 32.32) {
     1306            psFree(object);
     1307            exit(EXIT_FAILURE);
     1308        }
     1309        if (!object->fringe_1 == 32.32) {
     1310            psFree(object);
     1311            exit(EXIT_FAILURE);
     1312        }
     1313        if (!object->fringe_2 == 32.32) {
     1314            psFree(object);
     1315            exit(EXIT_FAILURE);
     1316        }
     1317        if (!object->sigma_ra == 32.32) {
     1318            psFree(object);
     1319            exit(EXIT_FAILURE);
     1320        }
     1321        if (!object->sigma_dec == 32.32) {
     1322            psFree(object);
     1323            exit(EXIT_FAILURE);
     1324        }
     1325        if (!object->ap_resid == 32.32) {
     1326            psFree(object);
     1327            exit(EXIT_FAILURE);
     1328        }
     1329        if (!object->ap_resid_stdev == 32.32) {
     1330            psFree(object);
     1331            exit(EXIT_FAILURE);
     1332        }
     1333        if (!object->fwhm == 32.32) {
     1334            psFree(object);
     1335            exit(EXIT_FAILURE);
     1336        }
     1337        if (!object->fwhm_range == 32.32) {
     1338            psFree(object);
     1339            exit(EXIT_FAILURE);
     1340        }
     1341        if (!object->n_stars == -32) {
     1342            psFree(object);
     1343            exit(EXIT_FAILURE);
     1344        }
     1345        if (!object->n_extended == -32) {
     1346            psFree(object);
     1347            exit(EXIT_FAILURE);
     1348        }
     1349        if (!object->n_cr == -32) {
     1350            psFree(object);
     1351            exit(EXIT_FAILURE);
     1352        }
     1353        if (!object->n_astrom == -32) {
     1354            psFree(object);
     1355            exit(EXIT_FAILURE);
     1356        }
     1357        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1358            psFree(object);
     1359            exit(EXIT_FAILURE);
     1360        }
     1361            psFree(object);
     1362            exit(EXIT_FAILURE);
     1363        }
     1364
     1365        psFree(object);
     1366    }
     1367
     1368    {
     1369        psMetadata      *md;
     1370        chipMaskRow     *object;
     1371
     1372        md = psMetadataAlloc();
     1373        if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
     1374            psFree(md);
     1375            exit(EXIT_FAILURE);
     1376        }
     1377
     1378        object = chipMaskObjectFromMetadata(md);
     1379        if (!object) {
     1380            psFree(md);
     1381            exit(EXIT_FAILURE);
     1382        }
     1383
     1384        psFree(md);
     1385
     1386        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     1387            psFree(object);
     1388            exit(EXIT_FAILURE);
     1389        }
     1390
     1391        psFree(object);
     1392    }
     1393
     1394    {
     1395        psMetadata      *md;
     1396        camRunRow       *object;
     1397
     1398        md = psMetadataAlloc();
     1399            psFree(md);
     1400            exit(EXIT_FAILURE);
     1401        }
     1402            psFree(md);
     1403            exit(EXIT_FAILURE);
     1404        }
     1405        if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
     1406            psFree(md);
     1407            exit(EXIT_FAILURE);
     1408        }
     1409        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
     1410            psFree(md);
     1411            exit(EXIT_FAILURE);
     1412        }
     1413        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir_state", 0, NULL, "a string")) {
     1414            psFree(md);
     1415            exit(EXIT_FAILURE);
     1416        }
     1417        if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
     1418            psFree(md);
     1419            exit(EXIT_FAILURE);
     1420        }
     1421        if (!psMetadataAddStr(md, PS_LIST_TAIL, "reduction", 0, NULL, "a string")) {
     1422            psFree(md);
     1423            exit(EXIT_FAILURE);
     1424        }
     1425        if (!psMetadataAddStr(md, PS_LIST_TAIL, "expgroup", 0, NULL, "a string")) {
     1426            psFree(md);
     1427            exit(EXIT_FAILURE);
     1428        }
     1429        if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
     1430            psFree(md);
     1431            exit(EXIT_FAILURE);
     1432        }
     1433
     1434        object = camRunObjectFromMetadata(md);
     1435        if (!object) {
     1436            psFree(md);
     1437            exit(EXIT_FAILURE);
     1438        }
     1439
     1440        psFree(md);
     1441
     1442            psFree(object);
     1443            exit(EXIT_FAILURE);
     1444        }
     1445            psFree(object);
     1446            exit(EXIT_FAILURE);
     1447        }
     1448        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     1449            psFree(object);
     1450            exit(EXIT_FAILURE);
     1451        }
     1452        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     1453            psFree(object);
     1454            exit(EXIT_FAILURE);
     1455        }
     1456        if (strncmp(object->workdir_state, "a string", MAX_STRING_LENGTH)) {
     1457            psFree(object);
     1458            exit(EXIT_FAILURE);
     1459        }
     1460        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     1461            psFree(object);
     1462            exit(EXIT_FAILURE);
     1463        }
     1464        if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
     1465            psFree(object);
     1466            exit(EXIT_FAILURE);
     1467        }
     1468        if (strncmp(object->expgroup, "a string", MAX_STRING_LENGTH)) {
     1469            psFree(object);
     1470            exit(EXIT_FAILURE);
     1471        }
     1472        if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
     1473            psFree(object);
     1474            exit(EXIT_FAILURE);
     1475        }
     1476
     1477        psFree(object);
     1478    }
     1479
     1480    {
     1481        psMetadata      *md;
     1482        camProcessedExpRow *object;
     1483
     1484        md = psMetadataAlloc();
     1485            psFree(md);
     1486            exit(EXIT_FAILURE);
     1487        }
     1488            psFree(md);
     1489            exit(EXIT_FAILURE);
     1490        }
     1491        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     1492            psFree(md);
     1493            exit(EXIT_FAILURE);
     1494        }
     1495        if (!psMetadataAddF32(md, PS_LIST_TAIL, "bg", 0, NULL, 32.32)) {
     1496            psFree(md);
     1497            exit(EXIT_FAILURE);
     1498        }
     1499        if (!psMetadataAddF32(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 32.32)) {
     1500            psFree(md);
     1501            exit(EXIT_FAILURE);
     1502        }
     1503        if (!psMetadataAddF32(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 32.32)) {
     1504            psFree(md);
     1505            exit(EXIT_FAILURE);
     1506        }
     1507        if (!psMetadataAddF32(md, PS_LIST_TAIL, "sigma_ra", 0, NULL, 32.32)) {
     1508            psFree(md);
     1509            exit(EXIT_FAILURE);
     1510        }
     1511        if (!psMetadataAddF32(md, PS_LIST_TAIL, "sigma_dec", 0, NULL, 32.32)) {
     1512            psFree(md);
     1513            exit(EXIT_FAILURE);
     1514        }
     1515        if (!psMetadataAddF32(md, PS_LIST_TAIL, "zp_mean", 0, NULL, 32.32)) {
     1516            psFree(md);
     1517            exit(EXIT_FAILURE);
     1518        }
     1519        if (!psMetadataAddF32(md, PS_LIST_TAIL, "zp_stdev", 0, NULL, 32.32)) {
     1520            psFree(md);
     1521            exit(EXIT_FAILURE);
     1522        }
     1523        if (!psMetadataAddF32(md, PS_LIST_TAIL, "fwhm", 0, NULL, 32.32)) {
     1524            psFree(md);
     1525            exit(EXIT_FAILURE);
     1526        }
     1527        if (!psMetadataAddF32(md, PS_LIST_TAIL, "fwhm_range", 0, NULL, 32.32)) {
     1528            psFree(md);
     1529            exit(EXIT_FAILURE);
     1530        }
     1531        if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_stars", 0, NULL, -32)) {
     1532            psFree(md);
     1533            exit(EXIT_FAILURE);
     1534        }
     1535        if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_extended", 0, NULL, -32)) {
     1536            psFree(md);
     1537            exit(EXIT_FAILURE);
     1538        }
     1539        if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_cr", 0, NULL, -32)) {
     1540            psFree(md);
     1541            exit(EXIT_FAILURE);
     1542        }
     1543        if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_astrom", 0, NULL, -32)) {
     1544            psFree(md);
     1545            exit(EXIT_FAILURE);
     1546        }
     1547        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     1548            psFree(md);
     1549            exit(EXIT_FAILURE);
     1550        }
     1551            psFree(md);
     1552            exit(EXIT_FAILURE);
     1553        }
     1554
     1555        object = camProcessedExpObjectFromMetadata(md);
     1556        if (!object) {
     1557            psFree(md);
     1558            exit(EXIT_FAILURE);
     1559        }
     1560
     1561        psFree(md);
     1562
     1563            psFree(object);
     1564            exit(EXIT_FAILURE);
     1565        }
     1566            psFree(object);
     1567            exit(EXIT_FAILURE);
     1568        }
     1569        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     1570            psFree(object);
     1571            exit(EXIT_FAILURE);
     1572        }
     1573        if (!object->bg == 32.32) {
     1574            psFree(object);
     1575            exit(EXIT_FAILURE);
     1576        }
     1577        if (!object->bg_stdev == 32.32) {
     1578            psFree(object);
     1579            exit(EXIT_FAILURE);
     1580        }
     1581        if (!object->bg_mean_stdev == 32.32) {
     1582            psFree(object);
     1583            exit(EXIT_FAILURE);
     1584        }
     1585        if (!object->sigma_ra == 32.32) {
     1586            psFree(object);
     1587            exit(EXIT_FAILURE);
     1588        }
     1589        if (!object->sigma_dec == 32.32) {
     1590            psFree(object);
     1591            exit(EXIT_FAILURE);
     1592        }
     1593        if (!object->zp_mean == 32.32) {
     1594            psFree(object);
     1595            exit(EXIT_FAILURE);
     1596        }
     1597        if (!object->zp_stdev == 32.32) {
     1598            psFree(object);
     1599            exit(EXIT_FAILURE);
     1600        }
     1601        if (!object->fwhm == 32.32) {
     1602            psFree(object);
     1603            exit(EXIT_FAILURE);
     1604        }
     1605        if (!object->fwhm_range == 32.32) {
     1606            psFree(object);
     1607            exit(EXIT_FAILURE);
     1608        }
     1609        if (!object->n_stars == -32) {
     1610            psFree(object);
     1611            exit(EXIT_FAILURE);
     1612        }
     1613        if (!object->n_extended == -32) {
     1614            psFree(object);
     1615            exit(EXIT_FAILURE);
     1616        }
     1617        if (!object->n_cr == -32) {
     1618            psFree(object);
     1619            exit(EXIT_FAILURE);
     1620        }
     1621        if (!object->n_astrom == -32) {
     1622            psFree(object);
     1623            exit(EXIT_FAILURE);
     1624        }
     1625        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1626            psFree(object);
     1627            exit(EXIT_FAILURE);
     1628        }
     1629            psFree(object);
     1630            exit(EXIT_FAILURE);
     1631        }
     1632
     1633        psFree(object);
     1634    }
     1635
     1636    {
     1637        psMetadata      *md;
     1638        camMaskRow      *object;
     1639
     1640        md = psMetadataAlloc();
     1641        if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
     1642            psFree(md);
     1643            exit(EXIT_FAILURE);
     1644        }
     1645
     1646        object = camMaskObjectFromMetadata(md);
     1647        if (!object) {
     1648            psFree(md);
     1649            exit(EXIT_FAILURE);
     1650        }
     1651
     1652        psFree(md);
     1653
     1654        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     1655            psFree(object);
     1656            exit(EXIT_FAILURE);
     1657        }
     1658
     1659        psFree(object);
     1660    }
     1661
     1662    {
     1663        psMetadata      *md;
     1664        warpRunRow      *object;
     1665
     1666        md = psMetadataAlloc();
     1667            psFree(md);
     1668            exit(EXIT_FAILURE);
     1669        }
     1670        if (!psMetadataAddStr(md, PS_LIST_TAIL, "mode", 0, NULL, "a string")) {
     1671            psFree(md);
     1672            exit(EXIT_FAILURE);
     1673        }
     1674        if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
     1675            psFree(md);
     1676            exit(EXIT_FAILURE);
     1677        }
     1678        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
     1679            psFree(md);
     1680            exit(EXIT_FAILURE);
     1681        }
     1682        if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
     1683            psFree(md);
     1684            exit(EXIT_FAILURE);
     1685        }
     1686            psFree(md);
     1687            exit(EXIT_FAILURE);
     1688        }
     1689
     1690        object = warpRunObjectFromMetadata(md);
     1691        if (!object) {
     1692            psFree(md);
     1693            exit(EXIT_FAILURE);
     1694        }
     1695
     1696        psFree(md);
     1697
     1698            psFree(object);
     1699            exit(EXIT_FAILURE);
     1700        }
     1701        if (strncmp(object->mode, "a string", MAX_STRING_LENGTH)) {
     1702            psFree(object);
     1703            exit(EXIT_FAILURE);
     1704        }
     1705        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     1706            psFree(object);
     1707            exit(EXIT_FAILURE);
     1708        }
     1709        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     1710            psFree(object);
     1711            exit(EXIT_FAILURE);
     1712        }
     1713        if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
     1714            psFree(object);
     1715            exit(EXIT_FAILURE);
     1716        }
     1717            psFree(object);
     1718            exit(EXIT_FAILURE);
     1719        }
     1720
     1721        psFree(object);
     1722    }
     1723
     1724    {
     1725        psMetadata      *md;
     1726        warpInputExpRow *object;
     1727
     1728        md = psMetadataAlloc();
     1729            psFree(md);
     1730            exit(EXIT_FAILURE);
     1731        }
     1732            psFree(md);
     1733            exit(EXIT_FAILURE);
     1734        }
     1735        if (!psMetadataAdd(md, PS_LIST_TAIL, "magiced", PS_DATA_BOOL, NULL, true)) {
     1736            psFree(md);
     1737            exit(EXIT_FAILURE);
     1738        }
     1739
     1740        object = warpInputExpObjectFromMetadata(md);
     1741        if (!object) {
     1742            psFree(md);
     1743            exit(EXIT_FAILURE);
     1744        }
     1745
     1746        psFree(md);
     1747
     1748            psFree(object);
     1749            exit(EXIT_FAILURE);
     1750        }
     1751            psFree(object);
     1752            exit(EXIT_FAILURE);
     1753        }
     1754        if (!object->magiced == true) {
     1755            psFree(object);
     1756            exit(EXIT_FAILURE);
     1757        }
     1758
     1759        psFree(object);
     1760    }
     1761
     1762    {
     1763        psMetadata      *md;
     1764        warpSkyCellMapRow *object;
     1765
     1766        md = psMetadataAlloc();
     1767            psFree(md);
     1768            exit(EXIT_FAILURE);
     1769        }
     1770        if (!psMetadataAddStr(md, PS_LIST_TAIL, "skycell_id", 0, NULL, "a string")) {
     1771            psFree(md);
     1772            exit(EXIT_FAILURE);
     1773        }
     1774        if (!psMetadataAddStr(md, PS_LIST_TAIL, "tess_id", 0, NULL, "a string")) {
     1775            psFree(md);
     1776            exit(EXIT_FAILURE);
     1777        }
     1778            psFree(md);
     1779            exit(EXIT_FAILURE);
     1780        }
     1781        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
     1782            psFree(md);
     1783            exit(EXIT_FAILURE);
     1784        }
     1785            psFree(md);
     1786            exit(EXIT_FAILURE);
     1787        }
     1788
     1789        object = warpSkyCellMapObjectFromMetadata(md);
     1790        if (!object) {
     1791            psFree(md);
     1792            exit(EXIT_FAILURE);
     1793        }
     1794
     1795        psFree(md);
     1796
     1797            psFree(object);
     1798            exit(EXIT_FAILURE);
     1799        }
     1800        if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
     1801            psFree(object);
     1802            exit(EXIT_FAILURE);
     1803        }
     1804        if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
     1805            psFree(object);
     1806            exit(EXIT_FAILURE);
     1807        }
     1808            psFree(object);
     1809            exit(EXIT_FAILURE);
     1810        }
     1811        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     1812            psFree(object);
     1813            exit(EXIT_FAILURE);
     1814        }
     1815            psFree(object);
     1816            exit(EXIT_FAILURE);
     1817        }
     1818
     1819        psFree(object);
     1820    }
     1821
     1822    {
     1823        psMetadata      *md;
     1824        warpSkyfileRow  *object;
     1825
     1826        md = psMetadataAlloc();
     1827            psFree(md);
     1828            exit(EXIT_FAILURE);
     1829        }
     1830        if (!psMetadataAddStr(md, PS_LIST_TAIL, "skycell_id", 0, NULL, "a string")) {
     1831            psFree(md);
     1832            exit(EXIT_FAILURE);
     1833        }
     1834        if (!psMetadataAddStr(md, PS_LIST_TAIL, "tess_id", 0, NULL, "a string")) {
     1835            psFree(md);
     1836            exit(EXIT_FAILURE);
     1837        }
     1838        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     1839            psFree(md);
     1840            exit(EXIT_FAILURE);
     1841        }
     1842        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     1843            psFree(md);
     1844            exit(EXIT_FAILURE);
     1845        }
     1846        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     1847            psFree(md);
     1848            exit(EXIT_FAILURE);
     1849        }
     1850        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     1851            psFree(md);
     1852            exit(EXIT_FAILURE);
     1853        }
     1854
     1855        object = warpSkyfileObjectFromMetadata(md);
     1856        if (!object) {
     1857            psFree(md);
     1858            exit(EXIT_FAILURE);
     1859        }
     1860
     1861        psFree(md);
     1862
     1863            psFree(object);
     1864            exit(EXIT_FAILURE);
     1865        }
     1866        if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
     1867            psFree(object);
     1868            exit(EXIT_FAILURE);
     1869        }
     1870        if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
     1871            psFree(object);
     1872            exit(EXIT_FAILURE);
     1873        }
     1874        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     1875            psFree(object);
     1876            exit(EXIT_FAILURE);
     1877        }
     1878        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     1879            psFree(object);
     1880            exit(EXIT_FAILURE);
     1881        }
     1882        if (!object->bg == 64.64) {
     1883            psFree(object);
     1884            exit(EXIT_FAILURE);
     1885        }
     1886        if (!object->bg_stdev == 64.64) {
     1887            psFree(object);
     1888            exit(EXIT_FAILURE);
     1889        }
     1890
     1891        psFree(object);
     1892    }
     1893
     1894    {
     1895        psMetadata      *md;
     1896        diffRunRow      *object;
     1897
     1898        md = psMetadataAlloc();
     1899            psFree(md);
     1900            exit(EXIT_FAILURE);
     1901        }
     1902        if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
     1903            psFree(md);
     1904            exit(EXIT_FAILURE);
     1905        }
     1906        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
     1907            psFree(md);
     1908            exit(EXIT_FAILURE);
     1909        }
     1910        if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
     1911            psFree(md);
     1912            exit(EXIT_FAILURE);
     1913        }
     1914            psFree(md);
     1915            exit(EXIT_FAILURE);
     1916        }
     1917        if (!psMetadataAddStr(md, PS_LIST_TAIL, "skycell_id", 0, NULL, "a string")) {
     1918            psFree(md);
     1919            exit(EXIT_FAILURE);
     1920        }
     1921        if (!psMetadataAddStr(md, PS_LIST_TAIL, "tess_id", 0, NULL, "a string")) {
     1922            psFree(md);
     1923            exit(EXIT_FAILURE);
     1924        }
     1925
     1926        object = diffRunObjectFromMetadata(md);
     1927        if (!object) {
     1928            psFree(md);
     1929            exit(EXIT_FAILURE);
     1930        }
     1931
     1932        psFree(md);
     1933
     1934            psFree(object);
     1935            exit(EXIT_FAILURE);
     1936        }
     1937        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     1938            psFree(object);
     1939            exit(EXIT_FAILURE);
     1940        }
     1941        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     1942            psFree(object);
     1943            exit(EXIT_FAILURE);
     1944        }
     1945        if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
     1946            psFree(object);
     1947            exit(EXIT_FAILURE);
     1948        }
     1949            psFree(object);
     1950            exit(EXIT_FAILURE);
     1951        }
     1952        if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
     1953            psFree(object);
     1954            exit(EXIT_FAILURE);
     1955        }
     1956        if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
     1957            psFree(object);
     1958            exit(EXIT_FAILURE);
     1959        }
     1960
     1961        psFree(object);
     1962    }
     1963
     1964    {
     1965        psMetadata      *md;
     1966        diffInputSkyfileRow *object;
     1967
     1968        md = psMetadataAlloc();
     1969            psFree(md);
     1970            exit(EXIT_FAILURE);
     1971        }
     1972            psFree(md);
     1973            exit(EXIT_FAILURE);
     1974        }
     1975        if (!psMetadataAddStr(md, PS_LIST_TAIL, "skycell_id", 0, NULL, "a string")) {
     1976            psFree(md);
     1977            exit(EXIT_FAILURE);
     1978        }
     1979        if (!psMetadataAddStr(md, PS_LIST_TAIL, "tess_id", 0, NULL, "a string")) {
     1980            psFree(md);
     1981            exit(EXIT_FAILURE);
     1982        }
     1983        if (!psMetadataAddStr(md, PS_LIST_TAIL, "kind", 0, NULL, "a string")) {
     1984            psFree(md);
     1985            exit(EXIT_FAILURE);
     1986        }
     1987        if (!psMetadataAdd(md, PS_LIST_TAIL, "template", PS_DATA_BOOL, NULL, true)) {
     1988            psFree(md);
     1989            exit(EXIT_FAILURE);
     1990        }
     1991
     1992        object = diffInputSkyfileObjectFromMetadata(md);
     1993        if (!object) {
     1994            psFree(md);
     1995            exit(EXIT_FAILURE);
     1996        }
     1997
     1998        psFree(md);
     1999
     2000            psFree(object);
     2001            exit(EXIT_FAILURE);
     2002        }
     2003            psFree(object);
     2004            exit(EXIT_FAILURE);
     2005        }
     2006        if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
     2007            psFree(object);
     2008            exit(EXIT_FAILURE);
     2009        }
     2010        if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
     2011            psFree(object);
     2012            exit(EXIT_FAILURE);
     2013        }
     2014        if (strncmp(object->kind, "a string", MAX_STRING_LENGTH)) {
     2015            psFree(object);
     2016            exit(EXIT_FAILURE);
     2017        }
     2018        if (!object->template == true) {
     2019            psFree(object);
     2020            exit(EXIT_FAILURE);
     2021        }
     2022
     2023        psFree(object);
     2024    }
     2025
     2026    {
     2027        psMetadata      *md;
     2028        diffSkyfileRow  *object;
     2029
     2030        md = psMetadataAlloc();
     2031            psFree(md);
     2032            exit(EXIT_FAILURE);
     2033        }
     2034        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     2035            psFree(md);
     2036            exit(EXIT_FAILURE);
     2037        }
     2038        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     2039            psFree(md);
     2040            exit(EXIT_FAILURE);
     2041        }
     2042        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     2043            psFree(md);
     2044            exit(EXIT_FAILURE);
     2045        }
     2046        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     2047            psFree(md);
     2048            exit(EXIT_FAILURE);
     2049        }
     2050
     2051        object = diffSkyfileObjectFromMetadata(md);
     2052        if (!object) {
     2053            psFree(md);
     2054            exit(EXIT_FAILURE);
     2055        }
     2056
     2057        psFree(md);
     2058
     2059            psFree(object);
     2060            exit(EXIT_FAILURE);
     2061        }
     2062        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     2063            psFree(object);
     2064            exit(EXIT_FAILURE);
     2065        }
     2066        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     2067            psFree(object);
     2068            exit(EXIT_FAILURE);
     2069        }
     2070        if (!object->bg == 64.64) {
     2071            psFree(object);
     2072            exit(EXIT_FAILURE);
     2073        }
     2074        if (!object->bg_stdev == 64.64) {
     2075            psFree(object);
     2076            exit(EXIT_FAILURE);
     2077        }
     2078
     2079        psFree(object);
     2080    }
     2081
     2082    {
     2083        psMetadata      *md;
     2084        stackRunRow     *object;
     2085
     2086        md = psMetadataAlloc();
     2087            psFree(md);
     2088            exit(EXIT_FAILURE);
     2089        }
     2090        if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
     2091            psFree(md);
     2092            exit(EXIT_FAILURE);
     2093        }
     2094        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
     2095            psFree(md);
     2096            exit(EXIT_FAILURE);
     2097        }
     2098        if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
     2099            psFree(md);
     2100            exit(EXIT_FAILURE);
     2101        }
     2102            psFree(md);
     2103            exit(EXIT_FAILURE);
     2104        }
     2105        if (!psMetadataAddStr(md, PS_LIST_TAIL, "skycell_id", 0, NULL, "a string")) {
     2106            psFree(md);
     2107            exit(EXIT_FAILURE);
     2108        }
     2109        if (!psMetadataAddStr(md, PS_LIST_TAIL, "tess_id", 0, NULL, "a string")) {
     2110            psFree(md);
     2111            exit(EXIT_FAILURE);
     2112        }
     2113
     2114        object = stackRunObjectFromMetadata(md);
     2115        if (!object) {
     2116            psFree(md);
     2117            exit(EXIT_FAILURE);
     2118        }
     2119
     2120        psFree(md);
     2121
     2122            psFree(object);
     2123            exit(EXIT_FAILURE);
     2124        }
     2125        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     2126            psFree(object);
     2127            exit(EXIT_FAILURE);
     2128        }
     2129        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
     2130            psFree(object);
     2131            exit(EXIT_FAILURE);
     2132        }
     2133        if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
     2134            psFree(object);
     2135            exit(EXIT_FAILURE);
     2136        }
     2137            psFree(object);
     2138            exit(EXIT_FAILURE);
     2139        }
     2140        if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
     2141            psFree(object);
     2142            exit(EXIT_FAILURE);
     2143        }
     2144        if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
     2145            psFree(object);
     2146            exit(EXIT_FAILURE);
     2147        }
     2148
     2149        psFree(object);
     2150    }
     2151
     2152    {
     2153        psMetadata      *md;
     2154        stackInputSkyfileRow *object;
     2155
     2156        md = psMetadataAlloc();
     2157            psFree(md);
     2158            exit(EXIT_FAILURE);
     2159        }
     2160            psFree(md);
     2161            exit(EXIT_FAILURE);
     2162        }
     2163
     2164        object = stackInputSkyfileObjectFromMetadata(md);
     2165        if (!object) {
     2166            psFree(md);
     2167            exit(EXIT_FAILURE);
     2168        }
     2169
     2170        psFree(md);
     2171
     2172            psFree(object);
     2173            exit(EXIT_FAILURE);
     2174        }
     2175            psFree(object);
     2176            exit(EXIT_FAILURE);
     2177        }
     2178
     2179        psFree(object);
     2180    }
     2181
     2182    {
     2183        psMetadata      *md;
     2184        stackSumSkyfileRow *object;
     2185
     2186        md = psMetadataAlloc();
     2187            psFree(md);
     2188            exit(EXIT_FAILURE);
     2189        }
     2190        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
     2191            psFree(md);
     2192            exit(EXIT_FAILURE);
     2193        }
     2194        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     2195            psFree(md);
     2196            exit(EXIT_FAILURE);
     2197        }
     2198        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     2199            psFree(md);
     2200            exit(EXIT_FAILURE);
     2201        }
     2202        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     2203            psFree(md);
     2204            exit(EXIT_FAILURE);
     2205        }
     2206
     2207        object = stackSumSkyfileObjectFromMetadata(md);
     2208        if (!object) {
     2209            psFree(md);
     2210            exit(EXIT_FAILURE);
     2211        }
     2212
     2213        psFree(md);
     2214
     2215            psFree(object);
     2216            exit(EXIT_FAILURE);
     2217        }
     2218        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
     2219            psFree(object);
     2220            exit(EXIT_FAILURE);
     2221        }
     2222        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     2223            psFree(object);
     2224            exit(EXIT_FAILURE);
     2225        }
     2226        if (!object->bg == 64.64) {
     2227            psFree(object);
     2228            exit(EXIT_FAILURE);
     2229        }
     2230        if (!object->bg_stdev == 64.64) {
     2231            psFree(object);
     2232            exit(EXIT_FAILURE);
     2233        }
     2234
     2235        psFree(object);
     2236    }
     2237
     2238    {
     2239        psMetadata      *md;
     2240        detRunRow       *object;
     2241
     2242        md = psMetadataAlloc();
     2243            psFree(md);
     2244            exit(EXIT_FAILURE);
     2245        }
     2246        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
     2247            psFree(md);
     2248            exit(EXIT_FAILURE);
     2249        }
     2250        if (!psMetadataAddStr(md, PS_LIST_TAIL, "det_type", 0, NULL, "a string")) {
     2251            psFree(md);
     2252            exit(EXIT_FAILURE);
     2253        }
     2254        if (!psMetadataAddStr(md, PS_LIST_TAIL, "mode", 0, NULL, "a string")) {
     2255            psFree(md);
     2256            exit(EXIT_FAILURE);
     2257        }
     2258        if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
     2259            psFree(md);
     2260            exit(EXIT_FAILURE);
     2261        }
     2262        if (!psMetadataAddStr(md, PS_LIST_TAIL, "filelevel", 0, NULL, "a string")) {
     2263            psFree(md);
     2264            exit(EXIT_FAILURE);
     2265        }
     2266        if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
    3102267            psFree(md);
    3112268            exit(EXIT_FAILURE);
     
    3192276            exit(EXIT_FAILURE);
    3202277        }
    321 
    322         object = pzDoneExpObjectFromMetadata(md);
    323         if (!object) {
    324             psFree(md);
    325             exit(EXIT_FAILURE);
    326         }
    327 
    328         psFree(md);
    329 
    330         if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
     2278        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_type", 0, NULL, "a string")) {
     2279            psFree(md);
     2280            exit(EXIT_FAILURE);
     2281        }
     2282        if (!psMetadataAddStr(md, PS_LIST_TAIL, "reduction", 0, NULL, "a string")) {
     2283            psFree(md);
     2284            exit(EXIT_FAILURE);
     2285        }
     2286        if (!psMetadataAddStr(md, PS_LIST_TAIL, "filter", 0, NULL, "a string")) {
     2287            psFree(md);
     2288            exit(EXIT_FAILURE);
     2289        }
     2290        if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass_min", 0, NULL, 32.32)) {
     2291            psFree(md);
     2292            exit(EXIT_FAILURE);
     2293        }
     2294        if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass_max", 0, NULL, 32.32)) {
     2295            psFree(md);
     2296            exit(EXIT_FAILURE);
     2297        }
     2298        if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time_min", 0, NULL, 32.32)) {
     2299            psFree(md);
     2300            exit(EXIT_FAILURE);
     2301        }
     2302        if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time_max", 0, NULL, 32.32)) {
     2303            psFree(md);
     2304            exit(EXIT_FAILURE);
     2305        }
     2306        if (!psMetadataAddF32(md, PS_LIST_TAIL, "ccd_temp_min", 0, NULL, 32.32)) {
     2307            psFree(md);
     2308            exit(EXIT_FAILURE);
     2309        }
     2310        if (!psMetadataAddF32(md, PS_LIST_TAIL, "ccd_temp_max", 0, NULL, 32.32)) {
     2311            psFree(md);
     2312            exit(EXIT_FAILURE);
     2313        }
     2314        if (!psMetadataAddF64(md, PS_LIST_TAIL, "posang_min", 0, NULL, 64.64)) {
     2315            psFree(md);
     2316            exit(EXIT_FAILURE);
     2317        }
     2318        if (!psMetadataAddF64(md, PS_LIST_TAIL, "posang_max", 0, NULL, 64.64)) {
     2319            psFree(md);
     2320            exit(EXIT_FAILURE);
     2321        }
     2322            psFree(md);
     2323            exit(EXIT_FAILURE);
     2324        }
     2325            psFree(md);
     2326            exit(EXIT_FAILURE);
     2327        }
     2328            psFree(md);
     2329            exit(EXIT_FAILURE);
     2330        }
     2331            psFree(md);
     2332            exit(EXIT_FAILURE);
     2333        }
     2334            psFree(md);
     2335            exit(EXIT_FAILURE);
     2336        }
     2337        if (!psMetadataAddF32(md, PS_LIST_TAIL, "solang_min", 0, NULL, 32.32)) {
     2338            psFree(md);
     2339            exit(EXIT_FAILURE);
     2340        }
     2341        if (!psMetadataAddF32(md, PS_LIST_TAIL, "solang_max", 0, NULL, 32.32)) {
     2342            psFree(md);
     2343            exit(EXIT_FAILURE);
     2344        }
     2345        if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
     2346            psFree(md);
     2347            exit(EXIT_FAILURE);
     2348        }
     2349        if (!psMetadataAddS32(md, PS_LIST_TAIL, "parent", 0, NULL, -32)) {
     2350            psFree(md);
     2351            exit(EXIT_FAILURE);
     2352        }
     2353
     2354        object = detRunObjectFromMetadata(md);
     2355        if (!object) {
     2356            psFree(md);
     2357            exit(EXIT_FAILURE);
     2358        }
     2359
     2360        psFree(md);
     2361
     2362            psFree(object);
     2363            exit(EXIT_FAILURE);
     2364        }
     2365        if (!object->iteration == -32) {
     2366            psFree(object);
     2367            exit(EXIT_FAILURE);
     2368        }
     2369        if (strncmp(object->det_type, "a string", MAX_STRING_LENGTH)) {
     2370            psFree(object);
     2371            exit(EXIT_FAILURE);
     2372        }
     2373        if (strncmp(object->mode, "a string", MAX_STRING_LENGTH)) {
     2374            psFree(object);
     2375            exit(EXIT_FAILURE);
     2376        }
     2377        if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
     2378            psFree(object);
     2379            exit(EXIT_FAILURE);
     2380        }
     2381        if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
     2382            psFree(object);
     2383            exit(EXIT_FAILURE);
     2384        }
     2385        if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    3312386            psFree(object);
    3322387            exit(EXIT_FAILURE);
     
    3402395            exit(EXIT_FAILURE);
    3412396        }
    342 
    343         psFree(object);
    344     }
    345 
    346     {
    347         psMetadata      *md;
    348         pzDoneImfileRow *object;
    349 
    350         md = psMetadataAlloc();
    351         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, "a string")) {
    352             psFree(md);
    353             exit(EXIT_FAILURE);
    354         }
    355         if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
    356             psFree(md);
    357             exit(EXIT_FAILURE);
    358         }
    359         if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
    360             psFree(md);
    361             exit(EXIT_FAILURE);
    362         }
    363         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, "a string")) {
     2397        if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
     2398            psFree(object);
     2399            exit(EXIT_FAILURE);
     2400        }
     2401        if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
     2402            psFree(object);
     2403            exit(EXIT_FAILURE);
     2404        }
     2405        if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
     2406            psFree(object);
     2407            exit(EXIT_FAILURE);
     2408        }
     2409        if (!object->airmass_min == 32.32) {
     2410            psFree(object);
     2411            exit(EXIT_FAILURE);
     2412        }
     2413        if (!object->airmass_max == 32.32) {
     2414            psFree(object);
     2415            exit(EXIT_FAILURE);
     2416        }
     2417        if (!object->exp_time_min == 32.32) {
     2418            psFree(object);
     2419            exit(EXIT_FAILURE);
     2420        }
     2421        if (!object->exp_time_max == 32.32) {
     2422            psFree(object);
     2423            exit(EXIT_FAILURE);
     2424        }
     2425        if (!object->ccd_temp_min == 32.32) {
     2426            psFree(object);
     2427            exit(EXIT_FAILURE);
     2428        }
     2429        if (!object->ccd_temp_max == 32.32) {
     2430            psFree(object);
     2431            exit(EXIT_FAILURE);
     2432        }
     2433        if (!object->posang_min == 64.64) {
     2434            psFree(object);
     2435            exit(EXIT_FAILURE);
     2436        }
     2437        if (!object->posang_max == 64.64) {
     2438            psFree(object);
     2439            exit(EXIT_FAILURE);
     2440        }
     2441            psFree(object);
     2442            exit(EXIT_FAILURE);
     2443        }
     2444            psFree(object);
     2445            exit(EXIT_FAILURE);
     2446        }
     2447            psFree(object);
     2448            exit(EXIT_FAILURE);
     2449        }
     2450            psFree(object);
     2451            exit(EXIT_FAILURE);
     2452        }
     2453            psFree(object);
     2454            exit(EXIT_FAILURE);
     2455        }
     2456        if (!object->solang_min == 32.32) {
     2457            psFree(object);
     2458            exit(EXIT_FAILURE);
     2459        }
     2460        if (!object->solang_max == 32.32) {
     2461            psFree(object);
     2462            exit(EXIT_FAILURE);
     2463        }
     2464        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     2465            psFree(object);
     2466            exit(EXIT_FAILURE);
     2467        }
     2468        if (!object->parent == -32) {
     2469            psFree(object);
     2470            exit(EXIT_FAILURE);
     2471        }
     2472
     2473        psFree(object);
     2474    }
     2475
     2476    {
     2477        psMetadata      *md;
     2478        detInputExpRow  *object;
     2479
     2480        md = psMetadataAlloc();
     2481            psFree(md);
     2482            exit(EXIT_FAILURE);
     2483        }
     2484        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
     2485            psFree(md);
     2486            exit(EXIT_FAILURE);
     2487        }
     2488            psFree(md);
     2489            exit(EXIT_FAILURE);
     2490        }
     2491        if (!psMetadataAdd(md, PS_LIST_TAIL, "include", PS_DATA_BOOL, NULL, true)) {
     2492            psFree(md);
     2493            exit(EXIT_FAILURE);
     2494        }
     2495
     2496        object = detInputExpObjectFromMetadata(md);
     2497        if (!object) {
     2498            psFree(md);
     2499            exit(EXIT_FAILURE);
     2500        }
     2501
     2502        psFree(md);
     2503
     2504            psFree(object);
     2505            exit(EXIT_FAILURE);
     2506        }
     2507        if (!object->iteration == -32) {
     2508            psFree(object);
     2509            exit(EXIT_FAILURE);
     2510        }
     2511            psFree(object);
     2512            exit(EXIT_FAILURE);
     2513        }
     2514        if (!object->include == true) {
     2515            psFree(object);
     2516            exit(EXIT_FAILURE);
     2517        }
     2518
     2519        psFree(object);
     2520    }
     2521
     2522    {
     2523        psMetadata      *md;
     2524        detProcessedImfileRow *object;
     2525
     2526        md = psMetadataAlloc();
     2527            psFree(md);
     2528            exit(EXIT_FAILURE);
     2529        }
    3642530            psFree(md);
    3652531            exit(EXIT_FAILURE);
     
    3692535            exit(EXIT_FAILURE);
    3702536        }
    371         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
    372             psFree(md);
    373             exit(EXIT_FAILURE);
    374         }
    3752537        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    3762538            psFree(md);
    3772539            exit(EXIT_FAILURE);
    3782540        }
    379 
    380         object = pzDoneImfileObjectFromMetadata(md);
    381         if (!object) {
    382             psFree(md);
    383             exit(EXIT_FAILURE);
    384         }
    385 
    386         psFree(md);
    387 
    388         if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
    389             psFree(object);
    390             exit(EXIT_FAILURE);
    391         }
    392         if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    393             psFree(object);
    394             exit(EXIT_FAILURE);
    395         }
    396         if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
    397             psFree(object);
    398             exit(EXIT_FAILURE);
    399         }
    400         if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
     2541        if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
     2542            psFree(md);
     2543            exit(EXIT_FAILURE);
     2544        }
     2545        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     2546            psFree(md);
     2547            exit(EXIT_FAILURE);
     2548        }
     2549        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     2550            psFree(md);
     2551            exit(EXIT_FAILURE);
     2552        }
     2553        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     2554            psFree(md);
     2555            exit(EXIT_FAILURE);
     2556        }
     2557        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 64.64)) {
     2558            psFree(md);
     2559            exit(EXIT_FAILURE);
     2560        }
     2561        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 64.64)) {
     2562            psFree(md);
     2563            exit(EXIT_FAILURE);
     2564        }
     2565        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 64.64)) {
     2566            psFree(md);
     2567            exit(EXIT_FAILURE);
     2568        }
     2569        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
     2570            psFree(md);
     2571            exit(EXIT_FAILURE);
     2572        }
     2573        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
     2574            psFree(md);
     2575            exit(EXIT_FAILURE);
     2576        }
     2577        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
     2578            psFree(md);
     2579            exit(EXIT_FAILURE);
     2580        }
     2581        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
     2582            psFree(md);
     2583            exit(EXIT_FAILURE);
     2584        }
     2585        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
     2586            psFree(md);
     2587            exit(EXIT_FAILURE);
     2588        }
     2589        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     2590            psFree(md);
     2591            exit(EXIT_FAILURE);
     2592        }
     2593            psFree(md);
     2594            exit(EXIT_FAILURE);
     2595        }
     2596
     2597        object = detProcessedImfileObjectFromMetadata(md);
     2598        if (!object) {
     2599            psFree(md);
     2600            exit(EXIT_FAILURE);
     2601        }
     2602
     2603        psFree(md);
     2604
     2605            psFree(object);
     2606            exit(EXIT_FAILURE);
     2607        }
    4012608            psFree(object);
    4022609            exit(EXIT_FAILURE);
     
    4062613            exit(EXIT_FAILURE);
    4072614        }
    408         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    409             psFree(object);
    410             exit(EXIT_FAILURE);
    411         }
    4122615        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    4132616            psFree(object);
    4142617            exit(EXIT_FAILURE);
    4152618        }
    416 
    417         psFree(object);
    418     }
    419 
    420     {
    421         psMetadata      *md;
    422         newExpRow       *object;
    423 
    424         md = psMetadataAlloc();
    425         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
    426             psFree(md);
    427             exit(EXIT_FAILURE);
    428         }
    429         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, "a string")) {
    430             psFree(md);
    431             exit(EXIT_FAILURE);
    432         }
    433         if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
    434             psFree(md);
    435             exit(EXIT_FAILURE);
    436         }
    437         if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
    438             psFree(md);
    439             exit(EXIT_FAILURE);
    440         }
    441         if (!psMetadataAddS32(md, PS_LIST_TAIL, "imfiles", 0, NULL, -32)) {
    442             psFree(md);
    443             exit(EXIT_FAILURE);
    444         }
    445         if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
    446             psFree(md);
    447             exit(EXIT_FAILURE);
    448         }
    449 
    450         object = newExpObjectFromMetadata(md);
    451         if (!object) {
    452             psFree(md);
    453             exit(EXIT_FAILURE);
    454         }
    455 
    456         psFree(md);
    457 
    458         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    459             psFree(object);
    460             exit(EXIT_FAILURE);
    461         }
    462         if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
    463             psFree(object);
    464             exit(EXIT_FAILURE);
    465         }
    466         if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    467             psFree(object);
    468             exit(EXIT_FAILURE);
    469         }
    470         if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
    471             psFree(object);
    472             exit(EXIT_FAILURE);
    473         }
    474         if (!object->imfiles == -32) {
    475             psFree(object);
    476             exit(EXIT_FAILURE);
    477         }
    478         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    479             psFree(object);
    480             exit(EXIT_FAILURE);
    481         }
    482 
    483         psFree(object);
    484     }
    485 
    486     {
    487         psMetadata      *md;
    488         newImfileRow    *object;
    489 
    490         md = psMetadataAlloc();
    491         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
    492             psFree(md);
    493             exit(EXIT_FAILURE);
    494         }
    495         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, "a string")) {
     2619        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     2620            psFree(object);
     2621            exit(EXIT_FAILURE);
     2622        }
     2623        if (!object->bg == 64.64) {
     2624            psFree(object);
     2625            exit(EXIT_FAILURE);
     2626        }
     2627        if (!object->bg_stdev == 64.64) {
     2628            psFree(object);
     2629            exit(EXIT_FAILURE);
     2630        }
     2631        if (!object->bg_mean_stdev == 64.64) {
     2632            psFree(object);
     2633            exit(EXIT_FAILURE);
     2634        }
     2635        if (!object->fringe_0 == 64.64) {
     2636            psFree(object);
     2637            exit(EXIT_FAILURE);
     2638        }
     2639        if (!object->fringe_1 == 64.64) {
     2640            psFree(object);
     2641            exit(EXIT_FAILURE);
     2642        }
     2643        if (!object->fringe_2 == 64.64) {
     2644            psFree(object);
     2645            exit(EXIT_FAILURE);
     2646        }
     2647        if (!object->user_1 == 64.64) {
     2648            psFree(object);
     2649            exit(EXIT_FAILURE);
     2650        }
     2651        if (!object->user_2 == 64.64) {
     2652            psFree(object);
     2653            exit(EXIT_FAILURE);
     2654        }
     2655        if (!object->user_3 == 64.64) {
     2656            psFree(object);
     2657            exit(EXIT_FAILURE);
     2658        }
     2659        if (!object->user_4 == 64.64) {
     2660            psFree(object);
     2661            exit(EXIT_FAILURE);
     2662        }
     2663        if (!object->user_5 == 64.64) {
     2664            psFree(object);
     2665            exit(EXIT_FAILURE);
     2666        }
     2667        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     2668            psFree(object);
     2669            exit(EXIT_FAILURE);
     2670        }
     2671            psFree(object);
     2672            exit(EXIT_FAILURE);
     2673        }
     2674
     2675        psFree(object);
     2676    }
     2677
     2678    {
     2679        psMetadata      *md;
     2680        detProcessedExpRow *object;
     2681
     2682        md = psMetadataAlloc();
     2683            psFree(md);
     2684            exit(EXIT_FAILURE);
     2685        }
     2686            psFree(md);
     2687            exit(EXIT_FAILURE);
     2688        }
     2689        if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
     2690            psFree(md);
     2691            exit(EXIT_FAILURE);
     2692        }
     2693        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     2694            psFree(md);
     2695            exit(EXIT_FAILURE);
     2696        }
     2697        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     2698            psFree(md);
     2699            exit(EXIT_FAILURE);
     2700        }
     2701        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     2702            psFree(md);
     2703            exit(EXIT_FAILURE);
     2704        }
     2705        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 64.64)) {
     2706            psFree(md);
     2707            exit(EXIT_FAILURE);
     2708        }
     2709        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 64.64)) {
     2710            psFree(md);
     2711            exit(EXIT_FAILURE);
     2712        }
     2713        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 64.64)) {
     2714            psFree(md);
     2715            exit(EXIT_FAILURE);
     2716        }
     2717        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
     2718            psFree(md);
     2719            exit(EXIT_FAILURE);
     2720        }
     2721        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
     2722            psFree(md);
     2723            exit(EXIT_FAILURE);
     2724        }
     2725        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
     2726            psFree(md);
     2727            exit(EXIT_FAILURE);
     2728        }
     2729        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
     2730            psFree(md);
     2731            exit(EXIT_FAILURE);
     2732        }
     2733        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
     2734            psFree(md);
     2735            exit(EXIT_FAILURE);
     2736        }
     2737        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     2738            psFree(md);
     2739            exit(EXIT_FAILURE);
     2740        }
     2741            psFree(md);
     2742            exit(EXIT_FAILURE);
     2743        }
     2744
     2745        object = detProcessedExpObjectFromMetadata(md);
     2746        if (!object) {
     2747            psFree(md);
     2748            exit(EXIT_FAILURE);
     2749        }
     2750
     2751        psFree(md);
     2752
     2753            psFree(object);
     2754            exit(EXIT_FAILURE);
     2755        }
     2756            psFree(object);
     2757            exit(EXIT_FAILURE);
     2758        }
     2759        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     2760            psFree(object);
     2761            exit(EXIT_FAILURE);
     2762        }
     2763        if (!object->bg == 64.64) {
     2764            psFree(object);
     2765            exit(EXIT_FAILURE);
     2766        }
     2767        if (!object->bg_stdev == 64.64) {
     2768            psFree(object);
     2769            exit(EXIT_FAILURE);
     2770        }
     2771        if (!object->bg_mean_stdev == 64.64) {
     2772            psFree(object);
     2773            exit(EXIT_FAILURE);
     2774        }
     2775        if (!object->fringe_0 == 64.64) {
     2776            psFree(object);
     2777            exit(EXIT_FAILURE);
     2778        }
     2779        if (!object->fringe_1 == 64.64) {
     2780            psFree(object);
     2781            exit(EXIT_FAILURE);
     2782        }
     2783        if (!object->fringe_2 == 64.64) {
     2784            psFree(object);
     2785            exit(EXIT_FAILURE);
     2786        }
     2787        if (!object->user_1 == 64.64) {
     2788            psFree(object);
     2789            exit(EXIT_FAILURE);
     2790        }
     2791        if (!object->user_2 == 64.64) {
     2792            psFree(object);
     2793            exit(EXIT_FAILURE);
     2794        }
     2795        if (!object->user_3 == 64.64) {
     2796            psFree(object);
     2797            exit(EXIT_FAILURE);
     2798        }
     2799        if (!object->user_4 == 64.64) {
     2800            psFree(object);
     2801            exit(EXIT_FAILURE);
     2802        }
     2803        if (!object->user_5 == 64.64) {
     2804            psFree(object);
     2805            exit(EXIT_FAILURE);
     2806        }
     2807        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     2808            psFree(object);
     2809            exit(EXIT_FAILURE);
     2810        }
     2811            psFree(object);
     2812            exit(EXIT_FAILURE);
     2813        }
     2814
     2815        psFree(object);
     2816    }
     2817
     2818    {
     2819        psMetadata      *md;
     2820        detStackedImfileRow *object;
     2821
     2822        md = psMetadataAlloc();
     2823            psFree(md);
     2824            exit(EXIT_FAILURE);
     2825        }
     2826        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
    4962827            psFree(md);
    4972828            exit(EXIT_FAILURE);
     
    5052836            exit(EXIT_FAILURE);
    5062837        }
    507 
    508         object = newImfileObjectFromMetadata(md);
    509         if (!object) {
    510             psFree(md);
    511             exit(EXIT_FAILURE);
    512         }
    513 
    514         psFree(md);
    515 
    516         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    517             psFree(object);
    518             exit(EXIT_FAILURE);
    519         }
    520         if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
     2838        if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
     2839            psFree(md);
     2840            exit(EXIT_FAILURE);
     2841        }
     2842        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     2843            psFree(md);
     2844            exit(EXIT_FAILURE);
     2845        }
     2846        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     2847            psFree(md);
     2848            exit(EXIT_FAILURE);
     2849        }
     2850        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     2851            psFree(md);
     2852            exit(EXIT_FAILURE);
     2853        }
     2854        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
     2855            psFree(md);
     2856            exit(EXIT_FAILURE);
     2857        }
     2858        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
     2859            psFree(md);
     2860            exit(EXIT_FAILURE);
     2861        }
     2862        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
     2863            psFree(md);
     2864            exit(EXIT_FAILURE);
     2865        }
     2866        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
     2867            psFree(md);
     2868            exit(EXIT_FAILURE);
     2869        }
     2870        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
     2871            psFree(md);
     2872            exit(EXIT_FAILURE);
     2873        }
     2874            psFree(md);
     2875            exit(EXIT_FAILURE);
     2876        }
     2877
     2878        object = detStackedImfileObjectFromMetadata(md);
     2879        if (!object) {
     2880            psFree(md);
     2881            exit(EXIT_FAILURE);
     2882        }
     2883
     2884        psFree(md);
     2885
     2886            psFree(object);
     2887            exit(EXIT_FAILURE);
     2888        }
     2889        if (!object->iteration == -32) {
    5212890            psFree(object);
    5222891            exit(EXIT_FAILURE);
     
    5302899            exit(EXIT_FAILURE);
    5312900        }
    532 
    533         psFree(object);
    534     }
    535 
    536     {
    537         psMetadata      *md;
    538         rawExpRow       *object;
    539 
    540         md = psMetadataAlloc();
    541         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
    542             psFree(md);
    543             exit(EXIT_FAILURE);
    544         }
    545         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, "a string")) {
    546             psFree(md);
    547             exit(EXIT_FAILURE);
    548         }
    549         if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
    550             psFree(md);
    551             exit(EXIT_FAILURE);
    552         }
    553         if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
    554             psFree(md);
    555             exit(EXIT_FAILURE);
    556         }
    557             psFree(md);
    558             exit(EXIT_FAILURE);
    559         }
    560         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_type", 0, NULL, "a string")) {
    561             psFree(md);
    562             exit(EXIT_FAILURE);
    563         }
    564         if (!psMetadataAddS32(md, PS_LIST_TAIL, "imfiles", 0, NULL, -32)) {
    565             psFree(md);
    566             exit(EXIT_FAILURE);
    567         }
    568         if (!psMetadataAddStr(md, PS_LIST_TAIL, "filelevel", 0, NULL, "a string")) {
    569             psFree(md);
    570             exit(EXIT_FAILURE);
    571         }
    572         if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
    573             psFree(md);
    574             exit(EXIT_FAILURE);
    575         }
    576         if (!psMetadataAddStr(md, PS_LIST_TAIL, "filter", 0, NULL, "a string")) {
    577             psFree(md);
    578             exit(EXIT_FAILURE);
    579         }
    580         if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, 32.32)) {
    581             psFree(md);
    582             exit(EXIT_FAILURE);
    583         }
    584         if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, 64.64)) {
    585             psFree(md);
    586             exit(EXIT_FAILURE);
    587         }
    588         if (!psMetadataAddF64(md, PS_LIST_TAIL, "decl", 0, NULL, 64.64)) {
    589             psFree(md);
    590             exit(EXIT_FAILURE);
    591         }
    592         if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time", 0, NULL, 32.32)) {
    593             psFree(md);
    594             exit(EXIT_FAILURE);
    595         }
    596         if (!psMetadataAddF32(md, PS_LIST_TAIL, "sat_pixel_frac", 0, NULL, 32.32)) {
     2901        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     2902            psFree(object);
     2903            exit(EXIT_FAILURE);
     2904        }
     2905        if (!object->bg == 64.64) {
     2906            psFree(object);
     2907            exit(EXIT_FAILURE);
     2908        }
     2909        if (!object->bg_stdev == 64.64) {
     2910            psFree(object);
     2911            exit(EXIT_FAILURE);
     2912        }
     2913        if (!object->bg_mean_stdev == 64.64) {
     2914            psFree(object);
     2915            exit(EXIT_FAILURE);
     2916        }
     2917        if (!object->user_1 == 64.64) {
     2918            psFree(object);
     2919            exit(EXIT_FAILURE);
     2920        }
     2921        if (!object->user_2 == 64.64) {
     2922            psFree(object);
     2923            exit(EXIT_FAILURE);
     2924        }
     2925        if (!object->user_3 == 64.64) {
     2926            psFree(object);
     2927            exit(EXIT_FAILURE);
     2928        }
     2929        if (!object->user_4 == 64.64) {
     2930            psFree(object);
     2931            exit(EXIT_FAILURE);
     2932        }
     2933        if (!object->user_5 == 64.64) {
     2934            psFree(object);
     2935            exit(EXIT_FAILURE);
     2936        }
     2937            psFree(object);
     2938            exit(EXIT_FAILURE);
     2939        }
     2940
     2941        psFree(object);
     2942    }
     2943
     2944    {
     2945        psMetadata      *md;
     2946        detNormalizedStatImfileRow *object;
     2947
     2948        md = psMetadataAlloc();
     2949            psFree(md);
     2950            exit(EXIT_FAILURE);
     2951        }
     2952        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
     2953            psFree(md);
     2954            exit(EXIT_FAILURE);
     2955        }
     2956        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
     2957            psFree(md);
     2958            exit(EXIT_FAILURE);
     2959        }
     2960        if (!psMetadataAddF32(md, PS_LIST_TAIL, "norm", 0, NULL, 32.32)) {
     2961            psFree(md);
     2962            exit(EXIT_FAILURE);
     2963        }
     2964            psFree(md);
     2965            exit(EXIT_FAILURE);
     2966        }
     2967
     2968        object = detNormalizedStatImfileObjectFromMetadata(md);
     2969        if (!object) {
     2970            psFree(md);
     2971            exit(EXIT_FAILURE);
     2972        }
     2973
     2974        psFree(md);
     2975
     2976            psFree(object);
     2977            exit(EXIT_FAILURE);
     2978        }
     2979        if (!object->iteration == -32) {
     2980            psFree(object);
     2981            exit(EXIT_FAILURE);
     2982        }
     2983        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     2984            psFree(object);
     2985            exit(EXIT_FAILURE);
     2986        }
     2987        if (!object->norm == 32.32) {
     2988            psFree(object);
     2989            exit(EXIT_FAILURE);
     2990        }
     2991            psFree(object);
     2992            exit(EXIT_FAILURE);
     2993        }
     2994
     2995        psFree(object);
     2996    }
     2997
     2998    {
     2999        psMetadata      *md;
     3000        detNormalizedImfileRow *object;
     3001
     3002        md = psMetadataAlloc();
     3003            psFree(md);
     3004            exit(EXIT_FAILURE);
     3005        }
     3006        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
     3007            psFree(md);
     3008            exit(EXIT_FAILURE);
     3009        }
     3010        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
     3011            psFree(md);
     3012            exit(EXIT_FAILURE);
     3013        }
     3014        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    5973015            psFree(md);
    5983016            exit(EXIT_FAILURE);
     
    6103028            exit(EXIT_FAILURE);
    6113029        }
    612         if (!psMetadataAddF64(md, PS_LIST_TAIL, "alt", 0, NULL, 64.64)) {
    613             psFree(md);
    614             exit(EXIT_FAILURE);
    615         }
    616         if (!psMetadataAddF64(md, PS_LIST_TAIL, "az", 0, NULL, 64.64)) {
    617             psFree(md);
    618             exit(EXIT_FAILURE);
    619         }
    620         if (!psMetadataAddF32(md, PS_LIST_TAIL, "ccd_temp", 0, NULL, 32.32)) {
    621             psFree(md);
    622             exit(EXIT_FAILURE);
    623         }
    624         if (!psMetadataAddF64(md, PS_LIST_TAIL, "posang", 0, NULL, 64.64)) {
    625             psFree(md);
    626             exit(EXIT_FAILURE);
    627         }
    6283030        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
    6293031            psFree(md);
     
    6463048            exit(EXIT_FAILURE);
    6473049        }
    648         if (!psMetadataAddStr(md, PS_LIST_TAIL, "object", 0, NULL, "a string")) {
    649             psFree(md);
    650             exit(EXIT_FAILURE);
    651         }
    652         if (!psMetadataAddF32(md, PS_LIST_TAIL, "solang", 0, NULL, 32.32)) {
    653             psFree(md);
    654             exit(EXIT_FAILURE);
    655         }
    656             psFree(md);
    657             exit(EXIT_FAILURE);
    658         }
    659 
    660         object = rawExpObjectFromMetadata(md);
    661         if (!object) {
    662             psFree(md);
    663             exit(EXIT_FAILURE);
    664         }
    665 
    666         psFree(md);
    667 
    668         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    669             psFree(object);
    670             exit(EXIT_FAILURE);
    671         }
    672         if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
    673             psFree(object);
    674             exit(EXIT_FAILURE);
    675         }
    676         if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    677             psFree(object);
    678             exit(EXIT_FAILURE);
    679         }
    680         if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
    681             psFree(object);
    682             exit(EXIT_FAILURE);
    683         }
    684             psFree(object);
    685             exit(EXIT_FAILURE);
    686         }
    687         if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
    688             psFree(object);
    689             exit(EXIT_FAILURE);
    690         }
    691         if (!object->imfiles == -32) {
    692             psFree(object);
    693             exit(EXIT_FAILURE);
    694         }
    695         if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
    696             psFree(object);
    697             exit(EXIT_FAILURE);
    698         }
    699         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    700             psFree(object);
    701             exit(EXIT_FAILURE);
    702         }
    703         if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
    704             psFree(object);
    705             exit(EXIT_FAILURE);
    706         }
    707         if (!object->airmass == 32.32) {
    708             psFree(object);
    709             exit(EXIT_FAILURE);
    710         }
    711         if (!object->ra == 64.64) {
    712             psFree(object);
    713             exit(EXIT_FAILURE);
    714         }
    715         if (!object->decl == 64.64) {
    716             psFree(object);
    717             exit(EXIT_FAILURE);
    718         }
    719         if (!object->exp_time == 32.32) {
    720             psFree(object);
    721             exit(EXIT_FAILURE);
    722         }
    723         if (!object->sat_pixel_frac == 32.32) {
     3050        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     3051            psFree(md);
     3052            exit(EXIT_FAILURE);
     3053        }
     3054            psFree(md);
     3055            exit(EXIT_FAILURE);
     3056        }
     3057
     3058        object = detNormalizedImfileObjectFromMetadata(md);
     3059        if (!object) {
     3060            psFree(md);
     3061            exit(EXIT_FAILURE);
     3062        }
     3063
     3064        psFree(md);
     3065
     3066            psFree(object);
     3067            exit(EXIT_FAILURE);
     3068        }
     3069        if (!object->iteration == -32) {
     3070            psFree(object);
     3071            exit(EXIT_FAILURE);
     3072        }
     3073        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
     3074            psFree(object);
     3075            exit(EXIT_FAILURE);
     3076        }
     3077        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    7243078            psFree(object);
    7253079            exit(EXIT_FAILURE);
     
    7373091            exit(EXIT_FAILURE);
    7383092        }
    739         if (!object->alt == 64.64) {
    740             psFree(object);
    741             exit(EXIT_FAILURE);
    742         }
    743         if (!object->az == 64.64) {
    744             psFree(object);
    745             exit(EXIT_FAILURE);
    746         }
    747         if (!object->ccd_temp == 32.32) {
    748             psFree(object);
    749             exit(EXIT_FAILURE);
    750         }
    751         if (!object->posang == 64.64) {
    752             psFree(object);
    753             exit(EXIT_FAILURE);
    754         }
    7553093        if (!object->user_1 == 64.64) {
    7563094            psFree(object);
     
    7733111            exit(EXIT_FAILURE);
    7743112        }
    775         if (strncmp(object->object, "a string", MAX_STRING_LENGTH)) {
    776             psFree(object);
    777             exit(EXIT_FAILURE);
    778         }
    779         if (!object->solang == 32.32) {
    780             psFree(object);
    781             exit(EXIT_FAILURE);
    782         }
    783             psFree(object);
    784             exit(EXIT_FAILURE);
    785         }
    786 
    787         psFree(object);
    788     }
    789 
    790     {
    791         psMetadata      *md;
    792         rawImfileRow    *object;
    793 
    794         md = psMetadataAlloc();
    795         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
     3113        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     3114            psFree(object);
     3115            exit(EXIT_FAILURE);
     3116        }
     3117            psFree(object);
     3118            exit(EXIT_FAILURE);
     3119        }
     3120
     3121        psFree(object);
     3122    }
     3123
     3124    {
     3125        psMetadata      *md;
     3126        detNormalizedExpRow *object;
     3127
     3128        md = psMetadataAlloc();
     3129            psFree(md);
     3130            exit(EXIT_FAILURE);
     3131        }
     3132        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
     3133            psFree(md);
     3134            exit(EXIT_FAILURE);
     3135        }
     3136        if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
     3137            psFree(md);
     3138            exit(EXIT_FAILURE);
     3139        }
     3140        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     3141            psFree(md);
     3142            exit(EXIT_FAILURE);
     3143        }
     3144        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     3145            psFree(md);
     3146            exit(EXIT_FAILURE);
     3147        }
     3148        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     3149            psFree(md);
     3150            exit(EXIT_FAILURE);
     3151        }
     3152        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
     3153            psFree(md);
     3154            exit(EXIT_FAILURE);
     3155        }
     3156        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
     3157            psFree(md);
     3158            exit(EXIT_FAILURE);
     3159        }
     3160        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
     3161            psFree(md);
     3162            exit(EXIT_FAILURE);
     3163        }
     3164        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
     3165            psFree(md);
     3166            exit(EXIT_FAILURE);
     3167        }
     3168        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
     3169            psFree(md);
     3170            exit(EXIT_FAILURE);
     3171        }
     3172        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     3173            psFree(md);
     3174            exit(EXIT_FAILURE);
     3175        }
     3176            psFree(md);
     3177            exit(EXIT_FAILURE);
     3178        }
     3179
     3180        object = detNormalizedExpObjectFromMetadata(md);
     3181        if (!object) {
     3182            psFree(md);
     3183            exit(EXIT_FAILURE);
     3184        }
     3185
     3186        psFree(md);
     3187
     3188            psFree(object);
     3189            exit(EXIT_FAILURE);
     3190        }
     3191        if (!object->iteration == -32) {
     3192            psFree(object);
     3193            exit(EXIT_FAILURE);
     3194        }
     3195        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     3196            psFree(object);
     3197            exit(EXIT_FAILURE);
     3198        }
     3199        if (!object->bg == 64.64) {
     3200            psFree(object);
     3201            exit(EXIT_FAILURE);
     3202        }
     3203        if (!object->bg_stdev == 64.64) {
     3204            psFree(object);
     3205            exit(EXIT_FAILURE);
     3206        }
     3207        if (!object->bg_mean_stdev == 64.64) {
     3208            psFree(object);
     3209            exit(EXIT_FAILURE);
     3210        }
     3211        if (!object->user_1 == 64.64) {
     3212            psFree(object);
     3213            exit(EXIT_FAILURE);
     3214        }
     3215        if (!object->user_2 == 64.64) {
     3216            psFree(object);
     3217            exit(EXIT_FAILURE);
     3218        }
     3219        if (!object->user_3 == 64.64) {
     3220            psFree(object);
     3221            exit(EXIT_FAILURE);
     3222        }
     3223        if (!object->user_4 == 64.64) {
     3224            psFree(object);
     3225            exit(EXIT_FAILURE);
     3226        }
     3227        if (!object->user_5 == 64.64) {
     3228            psFree(object);
     3229            exit(EXIT_FAILURE);
     3230        }
     3231        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     3232            psFree(object);
     3233            exit(EXIT_FAILURE);
     3234        }
     3235            psFree(object);
     3236            exit(EXIT_FAILURE);
     3237        }
     3238
     3239        psFree(object);
     3240    }
     3241
     3242    {
     3243        psMetadata      *md;
     3244        detResidImfileRow *object;
     3245
     3246        md = psMetadataAlloc();
     3247            psFree(md);
     3248            exit(EXIT_FAILURE);
     3249        }
     3250        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
     3251            psFree(md);
     3252            exit(EXIT_FAILURE);
     3253        }
    7963254            psFree(md);
    7973255            exit(EXIT_FAILURE);
     
    8053263            exit(EXIT_FAILURE);
    8063264        }
    807         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_type", 0, NULL, "a string")) {
    808             psFree(md);
    809             exit(EXIT_FAILURE);
    810         }
    811         if (!psMetadataAddStr(md, PS_LIST_TAIL, "filelevel", 0, NULL, "a string")) {
    812             psFree(md);
    813             exit(EXIT_FAILURE);
    814         }
    815         if (!psMetadataAddStr(md, PS_LIST_TAIL, "filter", 0, NULL, "a string")) {
    816             psFree(md);
    817             exit(EXIT_FAILURE);
    818         }
    819         if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, 32.32)) {
    820             psFree(md);
    821             exit(EXIT_FAILURE);
    822         }
    823         if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, 64.64)) {
    824             psFree(md);
    825             exit(EXIT_FAILURE);
    826         }
    827         if (!psMetadataAddF64(md, PS_LIST_TAIL, "decl", 0, NULL, 64.64)) {
    828             psFree(md);
    829             exit(EXIT_FAILURE);
    830         }
    831         if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time", 0, NULL, 32.32)) {
    832             psFree(md);
    833             exit(EXIT_FAILURE);
    834         }
    835         if (!psMetadataAddF32(md, PS_LIST_TAIL, "sat_pixel_frac", 0, NULL, 32.32)) {
     3265        if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
    8363266            psFree(md);
    8373267            exit(EXIT_FAILURE);
     
    8493279            exit(EXIT_FAILURE);
    8503280        }
    851         if (!psMetadataAddF64(md, PS_LIST_TAIL, "alt", 0, NULL, 64.64)) {
    852             psFree(md);
    853             exit(EXIT_FAILURE);
    854         }
    855         if (!psMetadataAddF64(md, PS_LIST_TAIL, "az", 0, NULL, 64.64)) {
    856             psFree(md);
    857             exit(EXIT_FAILURE);
    858         }
    859         if (!psMetadataAddF32(md, PS_LIST_TAIL, "ccd_temp", 0, NULL, 32.32)) {
    860             psFree(md);
    861             exit(EXIT_FAILURE);
    862         }
    863         if (!psMetadataAddF64(md, PS_LIST_TAIL, "posang", 0, NULL, 64.64)) {
     3281        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bin_stdev", 0, NULL, 64.64)) {
     3282            psFree(md);
     3283            exit(EXIT_FAILURE);
     3284        }
     3285        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 64.64)) {
     3286            psFree(md);
     3287            exit(EXIT_FAILURE);
     3288        }
     3289        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 64.64)) {
     3290            psFree(md);
     3291            exit(EXIT_FAILURE);
     3292        }
     3293        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 64.64)) {
    8643294            psFree(md);
    8653295            exit(EXIT_FAILURE);
     
    8853315            exit(EXIT_FAILURE);
    8863316        }
    887         if (!psMetadataAddStr(md, PS_LIST_TAIL, "object", 0, NULL, "a string")) {
    888             psFree(md);
    889             exit(EXIT_FAILURE);
    890         }
    891             psFree(md);
    892             exit(EXIT_FAILURE);
    893         }
    894             psFree(md);
    895             exit(EXIT_FAILURE);
    896         }
    897 
    898         object = rawImfileObjectFromMetadata(md);
    899         if (!object) {
    900             psFree(md);
    901             exit(EXIT_FAILURE);
    902         }
    903 
    904         psFree(md);
    905 
    906         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
     3317        if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
     3318            psFree(md);
     3319            exit(EXIT_FAILURE);
     3320        }
     3321            psFree(md);
     3322            exit(EXIT_FAILURE);
     3323        }
     3324
     3325        object = detResidImfileObjectFromMetadata(md);
     3326        if (!object) {
     3327            psFree(md);
     3328            exit(EXIT_FAILURE);
     3329        }
     3330
     3331        psFree(md);
     3332
     3333            psFree(object);
     3334            exit(EXIT_FAILURE);
     3335        }
     3336        if (!object->iteration == -32) {
     3337            psFree(object);
     3338            exit(EXIT_FAILURE);
     3339        }
    9073340            psFree(object);
    9083341            exit(EXIT_FAILURE);
     
    9163349            exit(EXIT_FAILURE);
    9173350        }
    918         if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
    919             psFree(object);
    920             exit(EXIT_FAILURE);
    921         }
    922         if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
    923             psFree(object);
    924             exit(EXIT_FAILURE);
    925         }
    926         if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
    927             psFree(object);
    928             exit(EXIT_FAILURE);
    929         }
    930         if (!object->airmass == 32.32) {
    931             psFree(object);
    932             exit(EXIT_FAILURE);
    933         }
    934         if (!object->ra == 64.64) {
    935             psFree(object);
    936             exit(EXIT_FAILURE);
    937         }
    938         if (!object->decl == 64.64) {
    939             psFree(object);
    940             exit(EXIT_FAILURE);
    941         }
    942         if (!object->exp_time == 32.32) {
    943             psFree(object);
    944             exit(EXIT_FAILURE);
    945         }
    946         if (!object->sat_pixel_frac == 32.32) {
     3351        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    9473352            psFree(object);
    9483353            exit(EXIT_FAILURE);
     
    9603365            exit(EXIT_FAILURE);
    9613366        }
    962         if (!object->alt == 64.64) {
    963             psFree(object);
    964             exit(EXIT_FAILURE);
    965         }
    966         if (!object->az == 64.64) {
    967             psFree(object);
    968             exit(EXIT_FAILURE);
    969         }
    970         if (!object->ccd_temp == 32.32) {
    971             psFree(object);
    972             exit(EXIT_FAILURE);
    973         }
    974         if (!object->posang == 64.64) {
     3367        if (!object->bin_stdev == 64.64) {
     3368            psFree(object);
     3369            exit(EXIT_FAILURE);
     3370        }
     3371        if (!object->fringe_0 == 64.64) {
     3372            psFree(object);
     3373            exit(EXIT_FAILURE);
     3374        }
     3375        if (!object->fringe_1 == 64.64) {
     3376            psFree(object);
     3377            exit(EXIT_FAILURE);
     3378        }
     3379        if (!object->fringe_2 == 64.64) {
    9753380            psFree(object);
    9763381            exit(EXIT_FAILURE);
     
    9963401            exit(EXIT_FAILURE);
    9973402        }
    998         if (strncmp(object->object, "a string", MAX_STRING_LENGTH)) {
    999             psFree(object);
    1000             exit(EXIT_FAILURE);
    1001         }
    1002             psFree(object);
    1003             exit(EXIT_FAILURE);
    1004         }
    1005             psFree(object);
    1006             exit(EXIT_FAILURE);
    1007         }
    1008 
    1009         psFree(object);
    1010     }
    1011 
    1012     {
    1013         psMetadata      *md;
    1014         guidePendingExpRow *object;
    1015 
    1016         md = psMetadataAlloc();
    1017             psFree(md);
    1018             exit(EXIT_FAILURE);
    1019         }
    1020         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
     3403        if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
     3404            psFree(object);
     3405            exit(EXIT_FAILURE);
     3406        }
     3407            psFree(object);
     3408            exit(EXIT_FAILURE);
     3409        }
     3410
     3411        psFree(object);
     3412    }
     3413
     3414    {
     3415        psMetadata      *md;
     3416        detResidExpRow  *object;
     3417
     3418        md = psMetadataAlloc();
     3419            psFree(md);
     3420            exit(EXIT_FAILURE);
     3421        }
     3422        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
     3423            psFree(md);
     3424            exit(EXIT_FAILURE);
     3425        }
    10213426            psFree(md);
    10223427            exit(EXIT_FAILURE);
     
    10263431            exit(EXIT_FAILURE);
    10273432        }
    1028 
    1029         object = guidePendingExpObjectFromMetadata(md);
    1030         if (!object) {
    1031             psFree(md);
    1032             exit(EXIT_FAILURE);
    1033         }
    1034 
    1035         psFree(md);
    1036 
    1037             psFree(object);
    1038             exit(EXIT_FAILURE);
    1039         }
    1040         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    1041             psFree(object);
    1042             exit(EXIT_FAILURE);
    1043         }
    1044         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    1045             psFree(object);
    1046             exit(EXIT_FAILURE);
    1047         }
    1048 
    1049         psFree(object);
    1050     }
    1051 
    1052     {
    1053         psMetadata      *md;
    1054         chipPendingExpRow *object;
    1055 
    1056         md = psMetadataAlloc();
    1057             psFree(md);
    1058             exit(EXIT_FAILURE);
    1059         }
    1060         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
    1061             psFree(md);
    1062             exit(EXIT_FAILURE);
    1063         }
    1064             psFree(md);
    1065             exit(EXIT_FAILURE);
    1066         }
    1067         if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
    1068             psFree(md);
    1069             exit(EXIT_FAILURE);
    1070         }
    1071         if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
    1072             psFree(md);
    1073             exit(EXIT_FAILURE);
    1074         }
    1075         if (!psMetadataAddStr(md, PS_LIST_TAIL, "reduction", 0, NULL, "a string")) {
    1076             psFree(md);
    1077             exit(EXIT_FAILURE);
    1078         }
    1079         if (!psMetadataAddStr(md, PS_LIST_TAIL, "expgroup", 0, NULL, "a string")) {
    1080             psFree(md);
    1081             exit(EXIT_FAILURE);
    1082         }
    1083         if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
    1084             psFree(md);
    1085             exit(EXIT_FAILURE);
    1086         }
    1087 
    1088         object = chipPendingExpObjectFromMetadata(md);
    1089         if (!object) {
    1090             psFree(md);
    1091             exit(EXIT_FAILURE);
    1092         }
    1093 
    1094         psFree(md);
    1095 
    1096             psFree(object);
    1097             exit(EXIT_FAILURE);
    1098         }
    1099         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    1100             psFree(object);
    1101             exit(EXIT_FAILURE);
    1102         }
    1103             psFree(object);
    1104             exit(EXIT_FAILURE);
    1105         }
    1106         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    1107             psFree(object);
    1108             exit(EXIT_FAILURE);
    1109         }
    1110         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    1111             psFree(object);
    1112             exit(EXIT_FAILURE);
    1113         }
    1114         if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
    1115             psFree(object);
    1116             exit(EXIT_FAILURE);
    1117         }
    1118         if (strncmp(object->expgroup, "a string", MAX_STRING_LENGTH)) {
    1119             psFree(object);
    1120             exit(EXIT_FAILURE);
    1121         }
    1122         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    1123             psFree(object);
    1124             exit(EXIT_FAILURE);
    1125         }
    1126 
    1127         psFree(object);
    1128     }
    1129 
    1130     {
    1131         psMetadata      *md;
    1132         chipPendingImfileRow *object;
    1133 
    1134         md = psMetadataAlloc();
    1135             psFree(md);
    1136             exit(EXIT_FAILURE);
    1137         }
    1138         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
    1139             psFree(md);
    1140             exit(EXIT_FAILURE);
    1141         }
    1142         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    1143             psFree(md);
    1144             exit(EXIT_FAILURE);
    1145         }
    1146 
    1147         object = chipPendingImfileObjectFromMetadata(md);
    1148         if (!object) {
    1149             psFree(md);
    1150             exit(EXIT_FAILURE);
    1151         }
    1152 
    1153         psFree(md);
    1154 
    1155             psFree(object);
    1156             exit(EXIT_FAILURE);
    1157         }
    1158         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    1159             psFree(object);
    1160             exit(EXIT_FAILURE);
    1161         }
    1162         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    1163             psFree(object);
    1164             exit(EXIT_FAILURE);
    1165         }
    1166 
    1167         psFree(object);
    1168     }
    1169 
    1170     {
    1171         psMetadata      *md;
    1172         chipProcessedExpRow *object;
    1173 
    1174         md = psMetadataAlloc();
    1175             psFree(md);
    1176             exit(EXIT_FAILURE);
    1177         }
    1178         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
    1179             psFree(md);
    1180             exit(EXIT_FAILURE);
    1181         }
    1182             psFree(md);
    1183             exit(EXIT_FAILURE);
    1184         }
    1185         if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
    1186             psFree(md);
    1187             exit(EXIT_FAILURE);
    1188         }
    1189         if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
    1190             psFree(md);
    1191             exit(EXIT_FAILURE);
    1192         }
    1193         if (!psMetadataAddStr(md, PS_LIST_TAIL, "reduction", 0, NULL, "a string")) {
    1194             psFree(md);
    1195             exit(EXIT_FAILURE);
    1196         }
    1197         if (!psMetadataAddStr(md, PS_LIST_TAIL, "expgroup", 0, NULL, "a string")) {
    1198             psFree(md);
    1199             exit(EXIT_FAILURE);
    1200         }
    1201         if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
    1202             psFree(md);
    1203             exit(EXIT_FAILURE);
    1204         }
    1205 
    1206         object = chipProcessedExpObjectFromMetadata(md);
    1207         if (!object) {
    1208             psFree(md);
    1209             exit(EXIT_FAILURE);
    1210         }
    1211 
    1212         psFree(md);
    1213 
    1214             psFree(object);
    1215             exit(EXIT_FAILURE);
    1216         }
    1217         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    1218             psFree(object);
    1219             exit(EXIT_FAILURE);
    1220         }
    1221             psFree(object);
    1222             exit(EXIT_FAILURE);
    1223         }
    1224         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    1225             psFree(object);
    1226             exit(EXIT_FAILURE);
    1227         }
    1228         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    1229             psFree(object);
    1230             exit(EXIT_FAILURE);
    1231         }
    1232         if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
    1233             psFree(object);
    1234             exit(EXIT_FAILURE);
    1235         }
    1236         if (strncmp(object->expgroup, "a string", MAX_STRING_LENGTH)) {
    1237             psFree(object);
    1238             exit(EXIT_FAILURE);
    1239         }
    1240         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    1241             psFree(object);
    1242             exit(EXIT_FAILURE);
    1243         }
    1244 
    1245         psFree(object);
    1246     }
    1247 
    1248     {
    1249         psMetadata      *md;
    1250         chipMaskRow     *object;
    1251 
    1252         md = psMetadataAlloc();
    1253         if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
    1254             psFree(md);
    1255             exit(EXIT_FAILURE);
    1256         }
    1257 
    1258         object = chipMaskObjectFromMetadata(md);
    1259         if (!object) {
    1260             psFree(md);
    1261             exit(EXIT_FAILURE);
    1262         }
    1263 
    1264         psFree(md);
    1265 
    1266         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    1267             psFree(object);
    1268             exit(EXIT_FAILURE);
    1269         }
    1270 
    1271         psFree(object);
    1272     }
    1273 
    1274     {
    1275         psMetadata      *md;
    1276         chipProcessedImfileRow *object;
    1277 
    1278         md = psMetadataAlloc();
    1279             psFree(md);
    1280             exit(EXIT_FAILURE);
    1281         }
    1282         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
    1283             psFree(md);
    1284             exit(EXIT_FAILURE);
    1285         }
    1286         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    1287             psFree(md);
    1288             exit(EXIT_FAILURE);
    1289         }
    1290         if (!psMetadataAddF32(md, PS_LIST_TAIL, "bg", 0, NULL, 32.32)) {
    1291             psFree(md);
    1292             exit(EXIT_FAILURE);
    1293         }
    1294         if (!psMetadataAddF32(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 32.32)) {
    1295             psFree(md);
    1296             exit(EXIT_FAILURE);
    1297         }
    1298         if (!psMetadataAddF32(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 32.32)) {
    1299             psFree(md);
    1300             exit(EXIT_FAILURE);
    1301         }
    1302         if (!psMetadataAddF32(md, PS_LIST_TAIL, "bias", 0, NULL, 32.32)) {
    1303             psFree(md);
    1304             exit(EXIT_FAILURE);
    1305         }
    1306         if (!psMetadataAddF32(md, PS_LIST_TAIL, "bias_stdev", 0, NULL, 32.32)) {
    1307             psFree(md);
    1308             exit(EXIT_FAILURE);
    1309         }
    1310         if (!psMetadataAddF32(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 32.32)) {
    1311             psFree(md);
    1312             exit(EXIT_FAILURE);
    1313         }
    1314         if (!psMetadataAddF32(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 32.32)) {
    1315             psFree(md);
    1316             exit(EXIT_FAILURE);
    1317         }
    1318         if (!psMetadataAddF32(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 32.32)) {
    1319             psFree(md);
    1320             exit(EXIT_FAILURE);
    1321         }
    1322         if (!psMetadataAddF32(md, PS_LIST_TAIL, "sigma_ra", 0, NULL, 32.32)) {
    1323             psFree(md);
    1324             exit(EXIT_FAILURE);
    1325         }
    1326         if (!psMetadataAddF32(md, PS_LIST_TAIL, "sigma_dec", 0, NULL, 32.32)) {
    1327             psFree(md);
    1328             exit(EXIT_FAILURE);
    1329         }
    1330         if (!psMetadataAddF32(md, PS_LIST_TAIL, "ap_resid", 0, NULL, 32.32)) {
    1331             psFree(md);
    1332             exit(EXIT_FAILURE);
    1333         }
    1334         if (!psMetadataAddF32(md, PS_LIST_TAIL, "ap_resid_stdev", 0, NULL, 32.32)) {
    1335             psFree(md);
    1336             exit(EXIT_FAILURE);
    1337         }
    1338         if (!psMetadataAddF32(md, PS_LIST_TAIL, "fwhm", 0, NULL, 32.32)) {
    1339             psFree(md);
    1340             exit(EXIT_FAILURE);
    1341         }
    1342         if (!psMetadataAddF32(md, PS_LIST_TAIL, "fwhm_range", 0, NULL, 32.32)) {
    1343             psFree(md);
    1344             exit(EXIT_FAILURE);
    1345         }
    1346         if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_stars", 0, NULL, -32)) {
    1347             psFree(md);
    1348             exit(EXIT_FAILURE);
    1349         }
    1350         if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_extended", 0, NULL, -32)) {
    1351             psFree(md);
    1352             exit(EXIT_FAILURE);
    1353         }
    1354         if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_cr", 0, NULL, -32)) {
    1355             psFree(md);
    1356             exit(EXIT_FAILURE);
    1357         }
    1358         if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_astrom", 0, NULL, -32)) {
     3433        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     3434            psFree(md);
     3435            exit(EXIT_FAILURE);
     3436        }
     3437        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     3438            psFree(md);
     3439            exit(EXIT_FAILURE);
     3440        }
     3441        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     3442            psFree(md);
     3443            exit(EXIT_FAILURE);
     3444        }
     3445        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bin_stdev", 0, NULL, 64.64)) {
     3446            psFree(md);
     3447            exit(EXIT_FAILURE);
     3448        }
     3449        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 64.64)) {
     3450            psFree(md);
     3451            exit(EXIT_FAILURE);
     3452        }
     3453        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 64.64)) {
     3454            psFree(md);
     3455            exit(EXIT_FAILURE);
     3456        }
     3457        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 64.64)) {
     3458            psFree(md);
     3459            exit(EXIT_FAILURE);
     3460        }
     3461        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
     3462            psFree(md);
     3463            exit(EXIT_FAILURE);
     3464        }
     3465        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
     3466            psFree(md);
     3467            exit(EXIT_FAILURE);
     3468        }
     3469        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
     3470            psFree(md);
     3471            exit(EXIT_FAILURE);
     3472        }
     3473        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
     3474            psFree(md);
     3475            exit(EXIT_FAILURE);
     3476        }
     3477        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
    13593478            psFree(md);
    13603479            exit(EXIT_FAILURE);
     
    13643483            exit(EXIT_FAILURE);
    13653484        }
    1366             psFree(md);
    1367             exit(EXIT_FAILURE);
    1368         }
    1369 
    1370         object = chipProcessedImfileObjectFromMetadata(md);
    1371         if (!object) {
    1372             psFree(md);
    1373             exit(EXIT_FAILURE);
    1374         }
    1375 
    1376         psFree(md);
    1377 
    1378             psFree(object);
    1379             exit(EXIT_FAILURE);
    1380         }
    1381         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    1382             psFree(object);
    1383             exit(EXIT_FAILURE);
    1384         }
    1385         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    1386             psFree(object);
    1387             exit(EXIT_FAILURE);
    1388         }
    1389         if (!object->bg == 32.32) {
    1390             psFree(object);
    1391             exit(EXIT_FAILURE);
    1392         }
    1393         if (!object->bg_stdev == 32.32) {
    1394             psFree(object);
    1395             exit(EXIT_FAILURE);
    1396         }
    1397         if (!object->bg_mean_stdev == 32.32) {
    1398             psFree(object);
    1399             exit(EXIT_FAILURE);
    1400         }
    1401         if (!object->bias == 32.32) {
    1402             psFree(object);
    1403             exit(EXIT_FAILURE);
    1404         }
    1405         if (!object->bias_stdev == 32.32) {
    1406             psFree(object);
    1407             exit(EXIT_FAILURE);
    1408         }
    1409         if (!object->fringe_0 == 32.32) {
    1410             psFree(object);
    1411             exit(EXIT_FAILURE);
    1412         }
    1413         if (!object->fringe_1 == 32.32) {
    1414             psFree(object);
    1415             exit(EXIT_FAILURE);
    1416         }
    1417         if (!object->fringe_2 == 32.32) {
    1418             psFree(object);
    1419             exit(EXIT_FAILURE);
    1420         }
    1421         if (!object->sigma_ra == 32.32) {
    1422             psFree(object);
    1423             exit(EXIT_FAILURE);
    1424         }
    1425         if (!object->sigma_dec == 32.32) {
    1426             psFree(object);
    1427             exit(EXIT_FAILURE);
    1428         }
    1429         if (!object->ap_resid == 32.32) {
    1430             psFree(object);
    1431             exit(EXIT_FAILURE);
    1432         }
    1433         if (!object->ap_resid_stdev == 32.32) {
    1434             psFree(object);
    1435             exit(EXIT_FAILURE);
    1436         }
    1437         if (!object->fwhm == 32.32) {
    1438             psFree(object);
    1439             exit(EXIT_FAILURE);
    1440         }
    1441         if (!object->fwhm_range == 32.32) {
    1442             psFree(object);
    1443             exit(EXIT_FAILURE);
    1444         }
    1445         if (!object->n_stars == -32) {
    1446             psFree(object);
    1447             exit(EXIT_FAILURE);
    1448         }
    1449         if (!object->n_extended == -32) {
    1450             psFree(object);
    1451             exit(EXIT_FAILURE);
    1452         }
    1453         if (!object->n_cr == -32) {
    1454             psFree(object);
    1455             exit(EXIT_FAILURE);
    1456         }
    1457         if (!object->n_astrom == -32) {
    1458             psFree(object);
    1459             exit(EXIT_FAILURE);
    1460         }
    1461         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    1462             psFree(object);
    1463             exit(EXIT_FAILURE);
    1464         }
    1465             psFree(object);
    1466             exit(EXIT_FAILURE);
    1467         }
    1468 
    1469         psFree(object);
    1470     }
    1471 
    1472     {
    1473         psMetadata      *md;
    1474         camPendingExpRow *object;
    1475 
    1476         md = psMetadataAlloc();
    1477             psFree(md);
    1478             exit(EXIT_FAILURE);
    1479         }
    1480             psFree(md);
    1481             exit(EXIT_FAILURE);
    1482         }
    1483         if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
    1484             psFree(md);
    1485             exit(EXIT_FAILURE);
    1486         }
    1487         if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
    1488             psFree(md);
    1489             exit(EXIT_FAILURE);
    1490         }
    1491         if (!psMetadataAddStr(md, PS_LIST_TAIL, "reduction", 0, NULL, "a string")) {
    1492             psFree(md);
    1493             exit(EXIT_FAILURE);
    1494         }
    1495         if (!psMetadataAddStr(md, PS_LIST_TAIL, "expgroup", 0, NULL, "a string")) {
    1496             psFree(md);
    1497             exit(EXIT_FAILURE);
    1498         }
    1499         if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
    1500             psFree(md);
    1501             exit(EXIT_FAILURE);
    1502         }
    1503 
    1504         object = camPendingExpObjectFromMetadata(md);
    1505         if (!object) {
    1506             psFree(md);
    1507             exit(EXIT_FAILURE);
    1508         }
    1509 
    1510         psFree(md);
    1511 
    1512             psFree(object);
    1513             exit(EXIT_FAILURE);
    1514         }
    1515             psFree(object);
    1516             exit(EXIT_FAILURE);
    1517         }
    1518         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    1519             psFree(object);
    1520             exit(EXIT_FAILURE);
    1521         }
    1522         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    1523             psFree(object);
    1524             exit(EXIT_FAILURE);
    1525         }
    1526         if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
    1527             psFree(object);
    1528             exit(EXIT_FAILURE);
    1529         }
    1530         if (strncmp(object->expgroup, "a string", MAX_STRING_LENGTH)) {
    1531             psFree(object);
    1532             exit(EXIT_FAILURE);
    1533         }
    1534         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    1535             psFree(object);
    1536             exit(EXIT_FAILURE);
    1537         }
    1538 
    1539         psFree(object);
    1540     }
    1541 
    1542     {
    1543         psMetadata      *md;
    1544         camProcessedExpRow *object;
    1545 
    1546         md = psMetadataAlloc();
    1547             psFree(md);
    1548             exit(EXIT_FAILURE);
    1549         }
    1550             psFree(md);
    1551             exit(EXIT_FAILURE);
    1552         }
    1553         if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
    1554             psFree(md);
    1555             exit(EXIT_FAILURE);
    1556         }
    1557         if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
    1558             psFree(md);
    1559             exit(EXIT_FAILURE);
    1560         }
    1561         if (!psMetadataAddStr(md, PS_LIST_TAIL, "reduction", 0, NULL, "a string")) {
    1562             psFree(md);
    1563             exit(EXIT_FAILURE);
    1564         }
    1565         if (!psMetadataAddStr(md, PS_LIST_TAIL, "expgroup", 0, NULL, "a string")) {
    1566             psFree(md);
    1567             exit(EXIT_FAILURE);
    1568         }
    1569         if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
    1570             psFree(md);
    1571             exit(EXIT_FAILURE);
    1572         }
    1573         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    1574             psFree(md);
    1575             exit(EXIT_FAILURE);
    1576         }
    1577         if (!psMetadataAddF32(md, PS_LIST_TAIL, "bg", 0, NULL, 32.32)) {
    1578             psFree(md);
    1579             exit(EXIT_FAILURE);
    1580         }
    1581         if (!psMetadataAddF32(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 32.32)) {
    1582             psFree(md);
    1583             exit(EXIT_FAILURE);
    1584         }
    1585         if (!psMetadataAddF32(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 32.32)) {
    1586             psFree(md);
    1587             exit(EXIT_FAILURE);
    1588         }
    1589         if (!psMetadataAddF32(md, PS_LIST_TAIL, "sigma_ra", 0, NULL, 32.32)) {
    1590             psFree(md);
    1591             exit(EXIT_FAILURE);
    1592         }
    1593         if (!psMetadataAddF32(md, PS_LIST_TAIL, "sigma_dec", 0, NULL, 32.32)) {
    1594             psFree(md);
    1595             exit(EXIT_FAILURE);
    1596         }
    1597         if (!psMetadataAddF32(md, PS_LIST_TAIL, "zp_mean", 0, NULL, 32.32)) {
    1598             psFree(md);
    1599             exit(EXIT_FAILURE);
    1600         }
    1601         if (!psMetadataAddF32(md, PS_LIST_TAIL, "zp_stdev", 0, NULL, 32.32)) {
    1602             psFree(md);
    1603             exit(EXIT_FAILURE);
    1604         }
    1605         if (!psMetadataAddF32(md, PS_LIST_TAIL, "fwhm", 0, NULL, 32.32)) {
    1606             psFree(md);
    1607             exit(EXIT_FAILURE);
    1608         }
    1609         if (!psMetadataAddF32(md, PS_LIST_TAIL, "fwhm_range", 0, NULL, 32.32)) {
    1610             psFree(md);
    1611             exit(EXIT_FAILURE);
    1612         }
    1613         if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_stars", 0, NULL, -32)) {
    1614             psFree(md);
    1615             exit(EXIT_FAILURE);
    1616         }
    1617         if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_extended", 0, NULL, -32)) {
    1618             psFree(md);
    1619             exit(EXIT_FAILURE);
    1620         }
    1621         if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_cr", 0, NULL, -32)) {
    1622             psFree(md);
    1623             exit(EXIT_FAILURE);
    1624         }
    1625         if (!psMetadataAddS32(md, PS_LIST_TAIL, "n_astrom", 0, NULL, -32)) {
    1626             psFree(md);
    1627             exit(EXIT_FAILURE);
    1628         }
    1629         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    1630             psFree(md);
    1631             exit(EXIT_FAILURE);
    1632         }
    1633             psFree(md);
    1634             exit(EXIT_FAILURE);
    1635         }
    1636 
    1637         object = camProcessedExpObjectFromMetadata(md);
    1638         if (!object) {
    1639             psFree(md);
    1640             exit(EXIT_FAILURE);
    1641         }
    1642 
    1643         psFree(md);
    1644 
    1645             psFree(object);
    1646             exit(EXIT_FAILURE);
    1647         }
    1648             psFree(object);
    1649             exit(EXIT_FAILURE);
    1650         }
    1651         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    1652             psFree(object);
    1653             exit(EXIT_FAILURE);
    1654         }
    1655         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    1656             psFree(object);
    1657             exit(EXIT_FAILURE);
    1658         }
    1659         if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
    1660             psFree(object);
    1661             exit(EXIT_FAILURE);
    1662         }
    1663         if (strncmp(object->expgroup, "a string", MAX_STRING_LENGTH)) {
    1664             psFree(object);
    1665             exit(EXIT_FAILURE);
    1666         }
    1667         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    1668             psFree(object);
    1669             exit(EXIT_FAILURE);
    1670         }
    1671         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    1672             psFree(object);
    1673             exit(EXIT_FAILURE);
    1674         }
    1675         if (!object->bg == 32.32) {
    1676             psFree(object);
    1677             exit(EXIT_FAILURE);
    1678         }
    1679         if (!object->bg_stdev == 32.32) {
    1680             psFree(object);
    1681             exit(EXIT_FAILURE);
    1682         }
    1683         if (!object->bg_mean_stdev == 32.32) {
    1684             psFree(object);
    1685             exit(EXIT_FAILURE);
    1686         }
    1687         if (!object->sigma_ra == 32.32) {
    1688             psFree(object);
    1689             exit(EXIT_FAILURE);
    1690         }
    1691         if (!object->sigma_dec == 32.32) {
    1692             psFree(object);
    1693             exit(EXIT_FAILURE);
    1694         }
    1695         if (!object->zp_mean == 32.32) {
    1696             psFree(object);
    1697             exit(EXIT_FAILURE);
    1698         }
    1699         if (!object->zp_stdev == 32.32) {
    1700             psFree(object);
    1701             exit(EXIT_FAILURE);
    1702         }
    1703         if (!object->fwhm == 32.32) {
    1704             psFree(object);
    1705             exit(EXIT_FAILURE);
    1706         }
    1707         if (!object->fwhm_range == 32.32) {
    1708             psFree(object);
    1709             exit(EXIT_FAILURE);
    1710         }
    1711         if (!object->n_stars == -32) {
    1712             psFree(object);
    1713             exit(EXIT_FAILURE);
    1714         }
    1715         if (!object->n_extended == -32) {
    1716             psFree(object);
    1717             exit(EXIT_FAILURE);
    1718         }
    1719         if (!object->n_cr == -32) {
    1720             psFree(object);
    1721             exit(EXIT_FAILURE);
    1722         }
    1723         if (!object->n_astrom == -32) {
    1724             psFree(object);
    1725             exit(EXIT_FAILURE);
    1726         }
    1727         if (strncmp(object->path_base, "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         camMaskRow      *object;
    1741 
    1742         md = psMetadataAlloc();
    1743         if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
    1744             psFree(md);
    1745             exit(EXIT_FAILURE);
    1746         }
    1747 
    1748         object = camMaskObjectFromMetadata(md);
    1749         if (!object) {
    1750             psFree(md);
    1751             exit(EXIT_FAILURE);
    1752         }
    1753 
    1754         psFree(md);
    1755 
    1756         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    1757             psFree(object);
    1758             exit(EXIT_FAILURE);
    1759         }
    1760 
    1761         psFree(object);
    1762     }
    1763 
    1764     {
    1765         psMetadata      *md;
    1766         warpRunRow      *object;
    1767 
    1768         md = psMetadataAlloc();
    1769             psFree(md);
    1770             exit(EXIT_FAILURE);
    1771         }
    1772         if (!psMetadataAddStr(md, PS_LIST_TAIL, "mode", 0, NULL, "a string")) {
    1773             psFree(md);
    1774             exit(EXIT_FAILURE);
    1775         }
    1776         if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
    1777             psFree(md);
    1778             exit(EXIT_FAILURE);
    1779         }
    1780         if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
    1781             psFree(md);
    1782             exit(EXIT_FAILURE);
    1783         }
    1784         if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
    1785             psFree(md);
    1786             exit(EXIT_FAILURE);
    1787         }
    1788             psFree(md);
    1789             exit(EXIT_FAILURE);
    1790         }
    1791 
    1792         object = warpRunObjectFromMetadata(md);
    1793         if (!object) {
    1794             psFree(md);
    1795             exit(EXIT_FAILURE);
    1796         }
    1797 
    1798         psFree(md);
    1799 
    1800             psFree(object);
    1801             exit(EXIT_FAILURE);
    1802         }
    1803         if (strncmp(object->mode, "a string", MAX_STRING_LENGTH)) {
    1804             psFree(object);
    1805             exit(EXIT_FAILURE);
    1806         }
    1807         if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    1808             psFree(object);
    1809             exit(EXIT_FAILURE);
    1810         }
    1811         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    1812             psFree(object);
    1813             exit(EXIT_FAILURE);
    1814         }
    1815         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    1816             psFree(object);
    1817             exit(EXIT_FAILURE);
    1818         }
    1819             psFree(object);
    1820             exit(EXIT_FAILURE);
    1821         }
    1822 
    1823         psFree(object);
    1824     }
    1825 
    1826     {
    1827         psMetadata      *md;
    1828         warpInputExpRow *object;
    1829 
    1830         md = psMetadataAlloc();
    1831             psFree(md);
    1832             exit(EXIT_FAILURE);
    1833         }
    1834             psFree(md);
    1835             exit(EXIT_FAILURE);
    1836         }
    1837         if (!psMetadataAdd(md, PS_LIST_TAIL, "magiced", PS_DATA_BOOL, NULL, true)) {
    1838             psFree(md);
    1839             exit(EXIT_FAILURE);
    1840         }
    1841 
    1842         object = warpInputExpObjectFromMetadata(md);
    1843         if (!object) {
    1844             psFree(md);
    1845             exit(EXIT_FAILURE);
    1846         }
    1847 
    1848         psFree(md);
    1849 
    1850             psFree(object);
    1851             exit(EXIT_FAILURE);
    1852         }
    1853             psFree(object);
    1854             exit(EXIT_FAILURE);
    1855         }
    1856         if (!object->magiced == true) {
    1857             psFree(object);
    1858             exit(EXIT_FAILURE);
    1859         }
    1860 
    1861         psFree(object);
    1862     }
    1863 
    1864     {
    1865         psMetadata      *md;
    1866         warpSkyCellMapRow *object;
    1867 
    1868         md = psMetadataAlloc();
    1869             psFree(md);
    1870             exit(EXIT_FAILURE);
    1871         }
    1872         if (!psMetadataAddStr(md, PS_LIST_TAIL, "skycell_id", 0, NULL, "a string")) {
    1873             psFree(md);
    1874             exit(EXIT_FAILURE);
    1875         }
    1876         if (!psMetadataAddStr(md, PS_LIST_TAIL, "tess_id", 0, NULL, "a string")) {
    1877             psFree(md);
    1878             exit(EXIT_FAILURE);
    1879         }
    1880             psFree(md);
    1881             exit(EXIT_FAILURE);
    1882         }
    1883         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
    1884             psFree(md);
    1885             exit(EXIT_FAILURE);
    1886         }
    1887             psFree(md);
    1888             exit(EXIT_FAILURE);
    1889         }
    1890 
    1891         object = warpSkyCellMapObjectFromMetadata(md);
    1892         if (!object) {
    1893             psFree(md);
    1894             exit(EXIT_FAILURE);
    1895         }
    1896 
    1897         psFree(md);
    1898 
    1899             psFree(object);
    1900             exit(EXIT_FAILURE);
    1901         }
    1902         if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
    1903             psFree(object);
    1904             exit(EXIT_FAILURE);
    1905         }
    1906         if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
    1907             psFree(object);
    1908             exit(EXIT_FAILURE);
    1909         }
    1910             psFree(object);
    1911             exit(EXIT_FAILURE);
    1912         }
    1913         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    1914             psFree(object);
    1915             exit(EXIT_FAILURE);
    1916         }
    1917             psFree(object);
    1918             exit(EXIT_FAILURE);
    1919         }
    1920 
    1921         psFree(object);
    1922     }
    1923 
    1924     {
    1925         psMetadata      *md;
    1926         warpSkyfileRow  *object;
    1927 
    1928         md = psMetadataAlloc();
    1929             psFree(md);
    1930             exit(EXIT_FAILURE);
    1931         }
    1932         if (!psMetadataAddStr(md, PS_LIST_TAIL, "skycell_id", 0, NULL, "a string")) {
    1933             psFree(md);
    1934             exit(EXIT_FAILURE);
    1935         }
    1936         if (!psMetadataAddStr(md, PS_LIST_TAIL, "tess_id", 0, NULL, "a string")) {
    1937             psFree(md);
    1938             exit(EXIT_FAILURE);
    1939         }
    1940         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    1941             psFree(md);
    1942             exit(EXIT_FAILURE);
    1943         }
    1944         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    1945             psFree(md);
    1946             exit(EXIT_FAILURE);
    1947         }
    1948         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
    1949             psFree(md);
    1950             exit(EXIT_FAILURE);
    1951         }
    1952         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
    1953             psFree(md);
    1954             exit(EXIT_FAILURE);
    1955         }
    1956 
    1957         object = warpSkyfileObjectFromMetadata(md);
    1958         if (!object) {
    1959             psFree(md);
    1960             exit(EXIT_FAILURE);
    1961         }
    1962 
    1963         psFree(md);
    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         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    1977             psFree(object);
    1978             exit(EXIT_FAILURE);
    1979         }
    1980         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    1981             psFree(object);
    1982             exit(EXIT_FAILURE);
    1983         }
    1984         if (!object->bg == 64.64) {
    1985             psFree(object);
    1986             exit(EXIT_FAILURE);
    1987         }
    1988         if (!object->bg_stdev == 64.64) {
    1989             psFree(object);
    1990             exit(EXIT_FAILURE);
    1991         }
    1992 
    1993         psFree(object);
    1994     }
    1995 
    1996     {
    1997         psMetadata      *md;
    1998         diffRunRow      *object;
    1999 
    2000         md = psMetadataAlloc();
    2001             psFree(md);
    2002             exit(EXIT_FAILURE);
    2003         }
    2004         if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
    2005             psFree(md);
    2006             exit(EXIT_FAILURE);
    2007         }
    2008         if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
    2009             psFree(md);
    2010             exit(EXIT_FAILURE);
    2011         }
    2012         if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
    2013             psFree(md);
    2014             exit(EXIT_FAILURE);
    2015         }
    2016             psFree(md);
    2017             exit(EXIT_FAILURE);
    2018         }
    2019         if (!psMetadataAddStr(md, PS_LIST_TAIL, "skycell_id", 0, NULL, "a string")) {
    2020             psFree(md);
    2021             exit(EXIT_FAILURE);
    2022         }
    2023         if (!psMetadataAddStr(md, PS_LIST_TAIL, "tess_id", 0, NULL, "a string")) {
    2024             psFree(md);
    2025             exit(EXIT_FAILURE);
    2026         }
    2027 
    2028         object = diffRunObjectFromMetadata(md);
    2029         if (!object) {
    2030             psFree(md);
    2031             exit(EXIT_FAILURE);
    2032         }
    2033 
    2034         psFree(md);
    2035 
    2036             psFree(object);
    2037             exit(EXIT_FAILURE);
    2038         }
    2039         if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    2040             psFree(object);
    2041             exit(EXIT_FAILURE);
    2042         }
    2043         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    2044             psFree(object);
    2045             exit(EXIT_FAILURE);
    2046         }
    2047         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    2048             psFree(object);
    2049             exit(EXIT_FAILURE);
    2050         }
    2051             psFree(object);
    2052             exit(EXIT_FAILURE);
    2053         }
    2054         if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
    2055             psFree(object);
    2056             exit(EXIT_FAILURE);
    2057         }
    2058         if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
    2059             psFree(object);
    2060             exit(EXIT_FAILURE);
    2061         }
    2062 
    2063         psFree(object);
    2064     }
    2065 
    2066     {
    2067         psMetadata      *md;
    2068         diffInputSkyfileRow *object;
    2069 
    2070         md = psMetadataAlloc();
    2071             psFree(md);
    2072             exit(EXIT_FAILURE);
    2073         }
    2074             psFree(md);
    2075             exit(EXIT_FAILURE);
    2076         }
    2077         if (!psMetadataAddStr(md, PS_LIST_TAIL, "skycell_id", 0, NULL, "a string")) {
    2078             psFree(md);
    2079             exit(EXIT_FAILURE);
    2080         }
    2081         if (!psMetadataAddStr(md, PS_LIST_TAIL, "tess_id", 0, NULL, "a string")) {
    2082             psFree(md);
    2083             exit(EXIT_FAILURE);
    2084         }
    2085         if (!psMetadataAddStr(md, PS_LIST_TAIL, "kind", 0, NULL, "a string")) {
    2086             psFree(md);
    2087             exit(EXIT_FAILURE);
    2088         }
    2089         if (!psMetadataAdd(md, PS_LIST_TAIL, "template", PS_DATA_BOOL, NULL, true)) {
    2090             psFree(md);
    2091             exit(EXIT_FAILURE);
    2092         }
    2093 
    2094         object = diffInputSkyfileObjectFromMetadata(md);
    2095         if (!object) {
    2096             psFree(md);
    2097             exit(EXIT_FAILURE);
    2098         }
    2099 
    2100         psFree(md);
    2101 
    2102             psFree(object);
    2103             exit(EXIT_FAILURE);
    2104         }
    2105             psFree(object);
    2106             exit(EXIT_FAILURE);
    2107         }
    2108         if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
    2109             psFree(object);
    2110             exit(EXIT_FAILURE);
    2111         }
    2112         if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
    2113             psFree(object);
    2114             exit(EXIT_FAILURE);
    2115         }
    2116         if (strncmp(object->kind, "a string", MAX_STRING_LENGTH)) {
    2117             psFree(object);
    2118             exit(EXIT_FAILURE);
    2119         }
    2120         if (!object->template == true) {
    2121             psFree(object);
    2122             exit(EXIT_FAILURE);
    2123         }
    2124 
    2125         psFree(object);
    2126     }
    2127 
    2128     {
    2129         psMetadata      *md;
    2130         diffSkyfileRow  *object;
    2131 
    2132         md = psMetadataAlloc();
    2133             psFree(md);
    2134             exit(EXIT_FAILURE);
    2135         }
    2136         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    2137             psFree(md);
    2138             exit(EXIT_FAILURE);
    2139         }
    2140         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    2141             psFree(md);
    2142             exit(EXIT_FAILURE);
    2143         }
    2144         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
    2145             psFree(md);
    2146             exit(EXIT_FAILURE);
    2147         }
    2148         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
    2149             psFree(md);
    2150             exit(EXIT_FAILURE);
    2151         }
    2152 
    2153         object = diffSkyfileObjectFromMetadata(md);
    2154         if (!object) {
    2155             psFree(md);
    2156             exit(EXIT_FAILURE);
    2157         }
    2158 
    2159         psFree(md);
    2160 
    2161             psFree(object);
    2162             exit(EXIT_FAILURE);
    2163         }
    2164         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    2165             psFree(object);
    2166             exit(EXIT_FAILURE);
    2167         }
    2168         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    2169             psFree(object);
    2170             exit(EXIT_FAILURE);
    2171         }
    2172         if (!object->bg == 64.64) {
    2173             psFree(object);
    2174             exit(EXIT_FAILURE);
    2175         }
    2176         if (!object->bg_stdev == 64.64) {
    2177             psFree(object);
    2178             exit(EXIT_FAILURE);
    2179         }
    2180 
    2181         psFree(object);
    2182     }
    2183 
    2184     {
    2185         psMetadata      *md;
    2186         stackRunRow     *object;
    2187 
    2188         md = psMetadataAlloc();
    2189             psFree(md);
    2190             exit(EXIT_FAILURE);
    2191         }
    2192         if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
    2193             psFree(md);
    2194             exit(EXIT_FAILURE);
    2195         }
    2196         if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
    2197             psFree(md);
    2198             exit(EXIT_FAILURE);
    2199         }
    2200         if (!psMetadataAddStr(md, PS_LIST_TAIL, "dvodb", 0, NULL, "a string")) {
    2201             psFree(md);
    2202             exit(EXIT_FAILURE);
    2203         }
    2204             psFree(md);
    2205             exit(EXIT_FAILURE);
    2206         }
    2207         if (!psMetadataAddStr(md, PS_LIST_TAIL, "skycell_id", 0, NULL, "a string")) {
    2208             psFree(md);
    2209             exit(EXIT_FAILURE);
    2210         }
    2211         if (!psMetadataAddStr(md, PS_LIST_TAIL, "tess_id", 0, NULL, "a string")) {
    2212             psFree(md);
    2213             exit(EXIT_FAILURE);
    2214         }
    2215 
    2216         object = stackRunObjectFromMetadata(md);
    2217         if (!object) {
    2218             psFree(md);
    2219             exit(EXIT_FAILURE);
    2220         }
    2221 
    2222         psFree(md);
    2223 
    2224             psFree(object);
    2225             exit(EXIT_FAILURE);
    2226         }
    2227         if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    2228             psFree(object);
    2229             exit(EXIT_FAILURE);
    2230         }
    2231         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    2232             psFree(object);
    2233             exit(EXIT_FAILURE);
    2234         }
    2235         if (strncmp(object->dvodb, "a string", MAX_STRING_LENGTH)) {
    2236             psFree(object);
    2237             exit(EXIT_FAILURE);
    2238         }
    2239             psFree(object);
    2240             exit(EXIT_FAILURE);
    2241         }
    2242         if (strncmp(object->skycell_id, "a string", MAX_STRING_LENGTH)) {
    2243             psFree(object);
    2244             exit(EXIT_FAILURE);
    2245         }
    2246         if (strncmp(object->tess_id, "a string", MAX_STRING_LENGTH)) {
    2247             psFree(object);
    2248             exit(EXIT_FAILURE);
    2249         }
    2250 
    2251         psFree(object);
    2252     }
    2253 
    2254     {
    2255         psMetadata      *md;
    2256         stackInputSkyfileRow *object;
    2257 
    2258         md = psMetadataAlloc();
    2259             psFree(md);
    2260             exit(EXIT_FAILURE);
    2261         }
    2262             psFree(md);
    2263             exit(EXIT_FAILURE);
    2264         }
    2265 
    2266         object = stackInputSkyfileObjectFromMetadata(md);
    2267         if (!object) {
    2268             psFree(md);
    2269             exit(EXIT_FAILURE);
    2270         }
    2271 
    2272         psFree(md);
    2273 
    2274             psFree(object);
    2275             exit(EXIT_FAILURE);
    2276         }
    2277             psFree(object);
    2278             exit(EXIT_FAILURE);
    2279         }
    2280 
    2281         psFree(object);
    2282     }
    2283 
    2284     {
    2285         psMetadata      *md;
    2286         stackSumSkyfileRow *object;
    2287 
    2288         md = psMetadataAlloc();
    2289             psFree(md);
    2290             exit(EXIT_FAILURE);
    2291         }
    2292         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    2293             psFree(md);
    2294             exit(EXIT_FAILURE);
    2295         }
    2296         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    2297             psFree(md);
    2298             exit(EXIT_FAILURE);
    2299         }
    2300         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
    2301             psFree(md);
    2302             exit(EXIT_FAILURE);
    2303         }
    2304         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
    2305             psFree(md);
    2306             exit(EXIT_FAILURE);
    2307         }
    2308 
    2309         object = stackSumSkyfileObjectFromMetadata(md);
    2310         if (!object) {
    2311             psFree(md);
    2312             exit(EXIT_FAILURE);
    2313         }
    2314 
    2315         psFree(md);
    2316 
    2317             psFree(object);
    2318             exit(EXIT_FAILURE);
    2319         }
    2320         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    2321             psFree(object);
    2322             exit(EXIT_FAILURE);
    2323         }
    2324         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    2325             psFree(object);
    2326             exit(EXIT_FAILURE);
    2327         }
    2328         if (!object->bg == 64.64) {
    2329             psFree(object);
    2330             exit(EXIT_FAILURE);
    2331         }
    2332         if (!object->bg_stdev == 64.64) {
    2333             psFree(object);
    2334             exit(EXIT_FAILURE);
    2335         }
    2336 
    2337         psFree(object);
    2338     }
    2339 
    2340     {
    2341         psMetadata      *md;
    2342         detRunRow       *object;
    2343 
    2344         md = psMetadataAlloc();
    2345             psFree(md);
    2346             exit(EXIT_FAILURE);
    2347         }
    2348         if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
    2349             psFree(md);
    2350             exit(EXIT_FAILURE);
    2351         }
    2352         if (!psMetadataAddStr(md, PS_LIST_TAIL, "det_type", 0, NULL, "a string")) {
    2353             psFree(md);
    2354             exit(EXIT_FAILURE);
    2355         }
    2356         if (!psMetadataAddStr(md, PS_LIST_TAIL, "mode", 0, NULL, "a string")) {
    2357             psFree(md);
    2358             exit(EXIT_FAILURE);
    2359         }
    2360         if (!psMetadataAddStr(md, PS_LIST_TAIL, "state", 0, NULL, "a string")) {
    2361             psFree(md);
    2362             exit(EXIT_FAILURE);
    2363         }
    2364         if (!psMetadataAddStr(md, PS_LIST_TAIL, "filelevel", 0, NULL, "a string")) {
    2365             psFree(md);
    2366             exit(EXIT_FAILURE);
    2367         }
    2368         if (!psMetadataAddStr(md, PS_LIST_TAIL, "workdir", 0, NULL, "a string")) {
    2369             psFree(md);
    2370             exit(EXIT_FAILURE);
    2371         }
    2372         if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
    2373             psFree(md);
    2374             exit(EXIT_FAILURE);
    2375         }
    2376         if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
    2377             psFree(md);
    2378             exit(EXIT_FAILURE);
    2379         }
    2380         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_type", 0, NULL, "a string")) {
    2381             psFree(md);
    2382             exit(EXIT_FAILURE);
    2383         }
    2384         if (!psMetadataAddStr(md, PS_LIST_TAIL, "reduction", 0, NULL, "a string")) {
    2385             psFree(md);
    2386             exit(EXIT_FAILURE);
    2387         }
    2388         if (!psMetadataAddStr(md, PS_LIST_TAIL, "filter", 0, NULL, "a string")) {
    2389             psFree(md);
    2390             exit(EXIT_FAILURE);
    2391         }
    2392         if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass_min", 0, NULL, 32.32)) {
    2393             psFree(md);
    2394             exit(EXIT_FAILURE);
    2395         }
    2396         if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass_max", 0, NULL, 32.32)) {
    2397             psFree(md);
    2398             exit(EXIT_FAILURE);
    2399         }
    2400         if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time_min", 0, NULL, 32.32)) {
    2401             psFree(md);
    2402             exit(EXIT_FAILURE);
    2403         }
    2404         if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time_max", 0, NULL, 32.32)) {
    2405             psFree(md);
    2406             exit(EXIT_FAILURE);
    2407         }
    2408         if (!psMetadataAddF32(md, PS_LIST_TAIL, "ccd_temp_min", 0, NULL, 32.32)) {
    2409             psFree(md);
    2410             exit(EXIT_FAILURE);
    2411         }
    2412         if (!psMetadataAddF32(md, PS_LIST_TAIL, "ccd_temp_max", 0, NULL, 32.32)) {
    2413             psFree(md);
    2414             exit(EXIT_FAILURE);
    2415         }
    2416         if (!psMetadataAddF64(md, PS_LIST_TAIL, "posang_min", 0, NULL, 64.64)) {
    2417             psFree(md);
    2418             exit(EXIT_FAILURE);
    2419         }
    2420         if (!psMetadataAddF64(md, PS_LIST_TAIL, "posang_max", 0, NULL, 64.64)) {
    2421             psFree(md);
    2422             exit(EXIT_FAILURE);
    2423         }
    2424             psFree(md);
    2425             exit(EXIT_FAILURE);
    2426         }
    2427             psFree(md);
    2428             exit(EXIT_FAILURE);
    2429         }
    2430             psFree(md);
    2431             exit(EXIT_FAILURE);
    2432         }
    2433             psFree(md);
    2434             exit(EXIT_FAILURE);
    2435         }
    2436             psFree(md);
    2437             exit(EXIT_FAILURE);
    2438         }
    2439         if (!psMetadataAddF32(md, PS_LIST_TAIL, "solang_min", 0, NULL, 32.32)) {
    2440             psFree(md);
    2441             exit(EXIT_FAILURE);
    2442         }
    2443         if (!psMetadataAddF32(md, PS_LIST_TAIL, "solang_max", 0, NULL, 32.32)) {
    2444             psFree(md);
    2445             exit(EXIT_FAILURE);
    2446         }
    2447         if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
    2448             psFree(md);
    2449             exit(EXIT_FAILURE);
    2450         }
    2451         if (!psMetadataAddS32(md, PS_LIST_TAIL, "parent", 0, NULL, -32)) {
    2452             psFree(md);
    2453             exit(EXIT_FAILURE);
    2454         }
    2455 
    2456         object = detRunObjectFromMetadata(md);
     3485        if (!psMetadataAdd(md, PS_LIST_TAIL, "accept", PS_DATA_BOOL, NULL, true)) {
     3486            psFree(md);
     3487            exit(EXIT_FAILURE);
     3488        }
     3489            psFree(md);
     3490            exit(EXIT_FAILURE);
     3491        }
     3492
     3493        object = detResidExpObjectFromMetadata(md);
    24573494        if (!object) {
    24583495            psFree(md);
     
    24693506            exit(EXIT_FAILURE);
    24703507        }
    2471         if (strncmp(object->det_type, "a string", MAX_STRING_LENGTH)) {
    2472             psFree(object);
    2473             exit(EXIT_FAILURE);
    2474         }
    2475         if (strncmp(object->mode, "a string", MAX_STRING_LENGTH)) {
    2476             psFree(object);
    2477             exit(EXIT_FAILURE);
    2478         }
    2479         if (strncmp(object->state, "a string", MAX_STRING_LENGTH)) {
    2480             psFree(object);
    2481             exit(EXIT_FAILURE);
    2482         }
    2483         if (strncmp(object->filelevel, "a string", MAX_STRING_LENGTH)) {
    2484             psFree(object);
    2485             exit(EXIT_FAILURE);
    2486         }
    2487         if (strncmp(object->workdir, "a string", MAX_STRING_LENGTH)) {
    2488             psFree(object);
    2489             exit(EXIT_FAILURE);
    2490         }
    2491         if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
    2492             psFree(object);
    2493             exit(EXIT_FAILURE);
    2494         }
    2495         if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
    2496             psFree(object);
    2497             exit(EXIT_FAILURE);
    2498         }
    2499         if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
    2500             psFree(object);
    2501             exit(EXIT_FAILURE);
    2502         }
    2503         if (strncmp(object->reduction, "a string", MAX_STRING_LENGTH)) {
    2504             psFree(object);
    2505             exit(EXIT_FAILURE);
    2506         }
    2507         if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
    2508             psFree(object);
    2509             exit(EXIT_FAILURE);
    2510         }
    2511         if (!object->airmass_min == 32.32) {
    2512             psFree(object);
    2513             exit(EXIT_FAILURE);
    2514         }
    2515         if (!object->airmass_max == 32.32) {
    2516             psFree(object);
    2517             exit(EXIT_FAILURE);
    2518         }
    2519         if (!object->exp_time_min == 32.32) {
    2520             psFree(object);
    2521             exit(EXIT_FAILURE);
    2522         }
    2523         if (!object->exp_time_max == 32.32) {
    2524             psFree(object);
    2525             exit(EXIT_FAILURE);
    2526         }
    2527         if (!object->ccd_temp_min == 32.32) {
    2528             psFree(object);
    2529             exit(EXIT_FAILURE);
    2530         }
    2531         if (!object->ccd_temp_max == 32.32) {
    2532             psFree(object);
    2533             exit(EXIT_FAILURE);
    2534         }
    2535         if (!object->posang_min == 64.64) {
    2536             psFree(object);
    2537             exit(EXIT_FAILURE);
    2538         }
    2539         if (!object->posang_max == 64.64) {
    2540             psFree(object);
    2541             exit(EXIT_FAILURE);
    2542         }
    2543             psFree(object);
    2544             exit(EXIT_FAILURE);
    2545         }
    2546             psFree(object);
    2547             exit(EXIT_FAILURE);
    2548         }
    2549             psFree(object);
    2550             exit(EXIT_FAILURE);
    2551         }
    2552             psFree(object);
    2553             exit(EXIT_FAILURE);
    2554         }
    2555             psFree(object);
    2556             exit(EXIT_FAILURE);
    2557         }
    2558         if (!object->solang_min == 32.32) {
    2559             psFree(object);
    2560             exit(EXIT_FAILURE);
    2561         }
    2562         if (!object->solang_max == 32.32) {
    2563             psFree(object);
    2564             exit(EXIT_FAILURE);
    2565         }
    2566         if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    2567             psFree(object);
    2568             exit(EXIT_FAILURE);
    2569         }
    2570         if (!object->parent == -32) {
    2571             psFree(object);
    2572             exit(EXIT_FAILURE);
    2573         }
    2574 
    2575         psFree(object);
    2576     }
    2577 
    2578     {
    2579         psMetadata      *md;
    2580         detInputExpRow  *object;
    2581 
    2582         md = psMetadataAlloc();
    2583             psFree(md);
    2584             exit(EXIT_FAILURE);
    2585         }
    2586         if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
    2587             psFree(md);
    2588             exit(EXIT_FAILURE);
    2589         }
    2590         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
    2591             psFree(md);
    2592             exit(EXIT_FAILURE);
    2593         }
    2594         if (!psMetadataAdd(md, PS_LIST_TAIL, "include", PS_DATA_BOOL, NULL, true)) {
    2595             psFree(md);
    2596             exit(EXIT_FAILURE);
    2597         }
    2598 
    2599         object = detInputExpObjectFromMetadata(md);
    2600         if (!object) {
    2601             psFree(md);
    2602             exit(EXIT_FAILURE);
    2603         }
    2604 
    2605         psFree(md);
    2606 
    2607             psFree(object);
    2608             exit(EXIT_FAILURE);
    2609         }
    2610         if (!object->iteration == -32) {
    2611             psFree(object);
    2612             exit(EXIT_FAILURE);
    2613         }
    2614         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    2615             psFree(object);
    2616             exit(EXIT_FAILURE);
    2617         }
    2618         if (!object->include == true) {
    2619             psFree(object);
    2620             exit(EXIT_FAILURE);
    2621         }
    2622 
    2623         psFree(object);
    2624     }
    2625 
    2626     {
    2627         psMetadata      *md;
    2628         detProcessedImfileRow *object;
    2629 
    2630         md = psMetadataAlloc();
    2631             psFree(md);
    2632             exit(EXIT_FAILURE);
    2633         }
    2634         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
    2635             psFree(md);
    2636             exit(EXIT_FAILURE);
    2637         }
    2638         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
    2639             psFree(md);
    2640             exit(EXIT_FAILURE);
    2641         }
    2642         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    2643             psFree(md);
    2644             exit(EXIT_FAILURE);
    2645         }
    2646         if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
    2647             psFree(md);
    2648             exit(EXIT_FAILURE);
    2649         }
    2650         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
    2651             psFree(md);
    2652             exit(EXIT_FAILURE);
    2653         }
    2654         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
    2655             psFree(md);
    2656             exit(EXIT_FAILURE);
    2657         }
    2658         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
    2659             psFree(md);
    2660             exit(EXIT_FAILURE);
    2661         }
    2662         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 64.64)) {
    2663             psFree(md);
    2664             exit(EXIT_FAILURE);
    2665         }
    2666         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 64.64)) {
    2667             psFree(md);
    2668             exit(EXIT_FAILURE);
    2669         }
    2670         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 64.64)) {
    2671             psFree(md);
    2672             exit(EXIT_FAILURE);
    2673         }
    2674         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
    2675             psFree(md);
    2676             exit(EXIT_FAILURE);
    2677         }
    2678         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
    2679             psFree(md);
    2680             exit(EXIT_FAILURE);
    2681         }
    2682         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
    2683             psFree(md);
    2684             exit(EXIT_FAILURE);
    2685         }
    2686         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
    2687             psFree(md);
    2688             exit(EXIT_FAILURE);
    2689         }
    2690         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
    2691             psFree(md);
    2692             exit(EXIT_FAILURE);
    2693         }
    2694         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    2695             psFree(md);
    2696             exit(EXIT_FAILURE);
    2697         }
    2698             psFree(md);
    2699             exit(EXIT_FAILURE);
    2700         }
    2701 
    2702         object = detProcessedImfileObjectFromMetadata(md);
    2703         if (!object) {
    2704             psFree(md);
    2705             exit(EXIT_FAILURE);
    2706         }
    2707 
    2708         psFree(md);
    2709 
    2710             psFree(object);
    2711             exit(EXIT_FAILURE);
    2712         }
    2713         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    2714             psFree(object);
    2715             exit(EXIT_FAILURE);
    2716         }
    2717         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    2718             psFree(object);
    2719             exit(EXIT_FAILURE);
    2720         }
    2721         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    2722             psFree(object);
    2723             exit(EXIT_FAILURE);
    2724         }
    2725         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    2726             psFree(object);
    2727             exit(EXIT_FAILURE);
    2728         }
    2729         if (!object->bg == 64.64) {
    2730             psFree(object);
    2731             exit(EXIT_FAILURE);
    2732         }
    2733         if (!object->bg_stdev == 64.64) {
    2734             psFree(object);
    2735             exit(EXIT_FAILURE);
    2736         }
    2737         if (!object->bg_mean_stdev == 64.64) {
    2738             psFree(object);
    2739             exit(EXIT_FAILURE);
    2740         }
    2741         if (!object->fringe_0 == 64.64) {
    2742             psFree(object);
    2743             exit(EXIT_FAILURE);
    2744         }
    2745         if (!object->fringe_1 == 64.64) {
    2746             psFree(object);
    2747             exit(EXIT_FAILURE);
    2748         }
    2749         if (!object->fringe_2 == 64.64) {
    2750             psFree(object);
    2751             exit(EXIT_FAILURE);
    2752         }
    2753         if (!object->user_1 == 64.64) {
    2754             psFree(object);
    2755             exit(EXIT_FAILURE);
    2756         }
    2757         if (!object->user_2 == 64.64) {
    2758             psFree(object);
    2759             exit(EXIT_FAILURE);
    2760         }
    2761         if (!object->user_3 == 64.64) {
    2762             psFree(object);
    2763             exit(EXIT_FAILURE);
    2764         }
    2765         if (!object->user_4 == 64.64) {
    2766             psFree(object);
    2767             exit(EXIT_FAILURE);
    2768         }
    2769         if (!object->user_5 == 64.64) {
    2770             psFree(object);
    2771             exit(EXIT_FAILURE);
    2772         }
    2773         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    2774             psFree(object);
    2775             exit(EXIT_FAILURE);
    2776         }
    2777             psFree(object);
    2778             exit(EXIT_FAILURE);
    2779         }
    2780 
    2781         psFree(object);
    2782     }
    2783 
    2784     {
    2785         psMetadata      *md;
    2786         detProcessedExpRow *object;
    2787 
    2788         md = psMetadataAlloc();
    2789             psFree(md);
    2790             exit(EXIT_FAILURE);
    2791         }
    2792         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
    2793             psFree(md);
    2794             exit(EXIT_FAILURE);
    2795         }
    2796         if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
    2797             psFree(md);
    2798             exit(EXIT_FAILURE);
    2799         }
    2800         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
    2801             psFree(md);
    2802             exit(EXIT_FAILURE);
    2803         }
    2804         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
    2805             psFree(md);
    2806             exit(EXIT_FAILURE);
    2807         }
    2808         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
    2809             psFree(md);
    2810             exit(EXIT_FAILURE);
    2811         }
    2812         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 64.64)) {
    2813             psFree(md);
    2814             exit(EXIT_FAILURE);
    2815         }
    2816         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 64.64)) {
    2817             psFree(md);
    2818             exit(EXIT_FAILURE);
    2819         }
    2820         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 64.64)) {
    2821             psFree(md);
    2822             exit(EXIT_FAILURE);
    2823         }
    2824         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
    2825             psFree(md);
    2826             exit(EXIT_FAILURE);
    2827         }
    2828         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
    2829             psFree(md);
    2830             exit(EXIT_FAILURE);
    2831         }
    2832         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
    2833             psFree(md);
    2834             exit(EXIT_FAILURE);
    2835         }
    2836         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
    2837             psFree(md);
    2838             exit(EXIT_FAILURE);
    2839         }
    2840         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
    2841             psFree(md);
    2842             exit(EXIT_FAILURE);
    2843         }
    2844         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    2845             psFree(md);
    2846             exit(EXIT_FAILURE);
    2847         }
    2848             psFree(md);
    2849             exit(EXIT_FAILURE);
    2850         }
    2851 
    2852         object = detProcessedExpObjectFromMetadata(md);
    2853         if (!object) {
    2854             psFree(md);
    2855             exit(EXIT_FAILURE);
    2856         }
    2857 
    2858         psFree(md);
    2859 
    2860             psFree(object);
    2861             exit(EXIT_FAILURE);
    2862         }
    2863         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    2864             psFree(object);
    2865             exit(EXIT_FAILURE);
    2866         }
    2867         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    2868             psFree(object);
    2869             exit(EXIT_FAILURE);
    2870         }
    2871         if (!object->bg == 64.64) {
    2872             psFree(object);
    2873             exit(EXIT_FAILURE);
    2874         }
    2875         if (!object->bg_stdev == 64.64) {
    2876             psFree(object);
    2877             exit(EXIT_FAILURE);
    2878         }
    2879         if (!object->bg_mean_stdev == 64.64) {
    2880             psFree(object);
    2881             exit(EXIT_FAILURE);
    2882         }
    2883         if (!object->fringe_0 == 64.64) {
    2884             psFree(object);
    2885             exit(EXIT_FAILURE);
    2886         }
    2887         if (!object->fringe_1 == 64.64) {
    2888             psFree(object);
    2889             exit(EXIT_FAILURE);
    2890         }
    2891         if (!object->fringe_2 == 64.64) {
    2892             psFree(object);
    2893             exit(EXIT_FAILURE);
    2894         }
    2895         if (!object->user_1 == 64.64) {
    2896             psFree(object);
    2897             exit(EXIT_FAILURE);
    2898         }
    2899         if (!object->user_2 == 64.64) {
    2900             psFree(object);
    2901             exit(EXIT_FAILURE);
    2902         }
    2903         if (!object->user_3 == 64.64) {
    2904             psFree(object);
    2905             exit(EXIT_FAILURE);
    2906         }
    2907         if (!object->user_4 == 64.64) {
    2908             psFree(object);
    2909             exit(EXIT_FAILURE);
    2910         }
    2911         if (!object->user_5 == 64.64) {
    2912             psFree(object);
    2913             exit(EXIT_FAILURE);
    2914         }
    2915         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    2916             psFree(object);
    2917             exit(EXIT_FAILURE);
    2918         }
    2919             psFree(object);
    2920             exit(EXIT_FAILURE);
    2921         }
    2922 
    2923         psFree(object);
    2924     }
    2925 
    2926     {
    2927         psMetadata      *md;
    2928         detStackedImfileRow *object;
    2929 
    2930         md = psMetadataAlloc();
    2931             psFree(md);
    2932             exit(EXIT_FAILURE);
    2933         }
    2934         if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
    2935             psFree(md);
    2936             exit(EXIT_FAILURE);
    2937         }
    2938         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
    2939             psFree(md);
    2940             exit(EXIT_FAILURE);
    2941         }
    2942         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    2943             psFree(md);
    2944             exit(EXIT_FAILURE);
    2945         }
    2946         if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
    2947             psFree(md);
    2948             exit(EXIT_FAILURE);
    2949         }
    2950         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
    2951             psFree(md);
    2952             exit(EXIT_FAILURE);
    2953         }
    2954         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
    2955             psFree(md);
    2956             exit(EXIT_FAILURE);
    2957         }
    2958         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
    2959             psFree(md);
    2960             exit(EXIT_FAILURE);
    2961         }
    2962         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
    2963             psFree(md);
    2964             exit(EXIT_FAILURE);
    2965         }
    2966         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
    2967             psFree(md);
    2968             exit(EXIT_FAILURE);
    2969         }
    2970         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
    2971             psFree(md);
    2972             exit(EXIT_FAILURE);
    2973         }
    2974         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
    2975             psFree(md);
    2976             exit(EXIT_FAILURE);
    2977         }
    2978         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
    2979             psFree(md);
    2980             exit(EXIT_FAILURE);
    2981         }
    2982             psFree(md);
    2983             exit(EXIT_FAILURE);
    2984         }
    2985 
    2986         object = detStackedImfileObjectFromMetadata(md);
    2987         if (!object) {
    2988             psFree(md);
    2989             exit(EXIT_FAILURE);
    2990         }
    2991 
    2992         psFree(md);
    2993 
    2994             psFree(object);
    2995             exit(EXIT_FAILURE);
    2996         }
    2997         if (!object->iteration == -32) {
    2998             psFree(object);
    2999             exit(EXIT_FAILURE);
    3000         }
    3001         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    3002             psFree(object);
    3003             exit(EXIT_FAILURE);
    3004         }
    3005         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    3006             psFree(object);
    3007             exit(EXIT_FAILURE);
    3008         }
    3009         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    3010             psFree(object);
    3011             exit(EXIT_FAILURE);
    3012         }
    3013         if (!object->bg == 64.64) {
    3014             psFree(object);
    3015             exit(EXIT_FAILURE);
    3016         }
    3017         if (!object->bg_stdev == 64.64) {
    3018             psFree(object);
    3019             exit(EXIT_FAILURE);
    3020         }
    3021         if (!object->bg_mean_stdev == 64.64) {
    3022             psFree(object);
    3023             exit(EXIT_FAILURE);
    3024         }
    3025         if (!object->user_1 == 64.64) {
    3026             psFree(object);
    3027             exit(EXIT_FAILURE);
    3028         }
    3029         if (!object->user_2 == 64.64) {
    3030             psFree(object);
    3031             exit(EXIT_FAILURE);
    3032         }
    3033         if (!object->user_3 == 64.64) {
    3034             psFree(object);
    3035             exit(EXIT_FAILURE);
    3036         }
    3037         if (!object->user_4 == 64.64) {
    3038             psFree(object);
    3039             exit(EXIT_FAILURE);
    3040         }
    3041         if (!object->user_5 == 64.64) {
    3042             psFree(object);
    3043             exit(EXIT_FAILURE);
    3044         }
    3045             psFree(object);
    3046             exit(EXIT_FAILURE);
    3047         }
    3048 
    3049         psFree(object);
    3050     }
    3051 
    3052     {
    3053         psMetadata      *md;
    3054         detNormalizedStatImfileRow *object;
    3055 
    3056         md = psMetadataAlloc();
    3057             psFree(md);
    3058             exit(EXIT_FAILURE);
    3059         }
    3060         if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
    3061             psFree(md);
    3062             exit(EXIT_FAILURE);
    3063         }
    3064         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
    3065             psFree(md);
    3066             exit(EXIT_FAILURE);
    3067         }
    3068         if (!psMetadataAddF32(md, PS_LIST_TAIL, "norm", 0, NULL, 32.32)) {
    3069             psFree(md);
    3070             exit(EXIT_FAILURE);
    3071         }
    3072             psFree(md);
    3073             exit(EXIT_FAILURE);
    3074         }
    3075 
    3076         object = detNormalizedStatImfileObjectFromMetadata(md);
    3077         if (!object) {
    3078             psFree(md);
    3079             exit(EXIT_FAILURE);
    3080         }
    3081 
    3082         psFree(md);
    3083 
    3084             psFree(object);
    3085             exit(EXIT_FAILURE);
    3086         }
    3087         if (!object->iteration == -32) {
    3088             psFree(object);
    3089             exit(EXIT_FAILURE);
    3090         }
    3091         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    3092             psFree(object);
    3093             exit(EXIT_FAILURE);
    3094         }
    3095         if (!object->norm == 32.32) {
    3096             psFree(object);
    3097             exit(EXIT_FAILURE);
    3098         }
    3099             psFree(object);
    3100             exit(EXIT_FAILURE);
    3101         }
    3102 
    3103         psFree(object);
    3104     }
    3105 
    3106     {
    3107         psMetadata      *md;
    3108         detNormalizedImfileRow *object;
    3109 
    3110         md = psMetadataAlloc();
    3111             psFree(md);
    3112             exit(EXIT_FAILURE);
    3113         }
    3114         if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
    3115             psFree(md);
    3116             exit(EXIT_FAILURE);
    3117         }
    3118         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
    3119             psFree(md);
    3120             exit(EXIT_FAILURE);
    3121         }
    3122         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    3123             psFree(md);
    3124             exit(EXIT_FAILURE);
    3125         }
    3126         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
    3127             psFree(md);
    3128             exit(EXIT_FAILURE);
    3129         }
    3130         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
    3131             psFree(md);
    3132             exit(EXIT_FAILURE);
    3133         }
    3134         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
    3135             psFree(md);
    3136             exit(EXIT_FAILURE);
    3137         }
    3138         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
    3139             psFree(md);
    3140             exit(EXIT_FAILURE);
    3141         }
    3142         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
    3143             psFree(md);
    3144             exit(EXIT_FAILURE);
    3145         }
    3146         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
    3147             psFree(md);
    3148             exit(EXIT_FAILURE);
    3149         }
    3150         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
    3151             psFree(md);
    3152             exit(EXIT_FAILURE);
    3153         }
    3154         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
    3155             psFree(md);
    3156             exit(EXIT_FAILURE);
    3157         }
    3158         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    3159             psFree(md);
    3160             exit(EXIT_FAILURE);
    3161         }
    3162             psFree(md);
    3163             exit(EXIT_FAILURE);
    3164         }
    3165 
    3166         object = detNormalizedImfileObjectFromMetadata(md);
    3167         if (!object) {
    3168             psFree(md);
    3169             exit(EXIT_FAILURE);
    3170         }
    3171 
    3172         psFree(md);
    3173 
    3174             psFree(object);
    3175             exit(EXIT_FAILURE);
    3176         }
    3177         if (!object->iteration == -32) {
    3178             psFree(object);
    3179             exit(EXIT_FAILURE);
    3180         }
    3181         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    3182             psFree(object);
    3183             exit(EXIT_FAILURE);
    3184         }
    3185         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    3186             psFree(object);
    3187             exit(EXIT_FAILURE);
    3188         }
    3189         if (!object->bg == 64.64) {
    3190             psFree(object);
    3191             exit(EXIT_FAILURE);
    3192         }
    3193         if (!object->bg_stdev == 64.64) {
    3194             psFree(object);
    3195             exit(EXIT_FAILURE);
    3196         }
    3197         if (!object->bg_mean_stdev == 64.64) {
    3198             psFree(object);
    3199             exit(EXIT_FAILURE);
    3200         }
    3201         if (!object->user_1 == 64.64) {
    3202             psFree(object);
    3203             exit(EXIT_FAILURE);
    3204         }
    3205         if (!object->user_2 == 64.64) {
    3206             psFree(object);
    3207             exit(EXIT_FAILURE);
    3208         }
    3209         if (!object->user_3 == 64.64) {
    3210             psFree(object);
    3211             exit(EXIT_FAILURE);
    3212         }
    3213         if (!object->user_4 == 64.64) {
    3214             psFree(object);
    3215             exit(EXIT_FAILURE);
    3216         }
    3217         if (!object->user_5 == 64.64) {
    3218             psFree(object);
    3219             exit(EXIT_FAILURE);
    3220         }
    3221         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    3222             psFree(object);
    3223             exit(EXIT_FAILURE);
    3224         }
    3225             psFree(object);
    3226             exit(EXIT_FAILURE);
    3227         }
    3228 
    3229         psFree(object);
    3230     }
    3231 
    3232     {
    3233         psMetadata      *md;
    3234         detNormalizedExpRow *object;
    3235 
    3236         md = psMetadataAlloc();
    3237             psFree(md);
    3238             exit(EXIT_FAILURE);
    3239         }
    3240         if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
    3241             psFree(md);
    3242             exit(EXIT_FAILURE);
    3243         }
    3244         if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
    3245             psFree(md);
    3246             exit(EXIT_FAILURE);
    3247         }
    3248         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
    3249             psFree(md);
    3250             exit(EXIT_FAILURE);
    3251         }
    3252         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
    3253             psFree(md);
    3254             exit(EXIT_FAILURE);
    3255         }
    3256         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
    3257             psFree(md);
    3258             exit(EXIT_FAILURE);
    3259         }
    3260         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
    3261             psFree(md);
    3262             exit(EXIT_FAILURE);
    3263         }
    3264         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
    3265             psFree(md);
    3266             exit(EXIT_FAILURE);
    3267         }
    3268         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
    3269             psFree(md);
    3270             exit(EXIT_FAILURE);
    3271         }
    3272         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
    3273             psFree(md);
    3274             exit(EXIT_FAILURE);
    3275         }
    3276         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
    3277             psFree(md);
    3278             exit(EXIT_FAILURE);
    3279         }
    3280         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    3281             psFree(md);
    3282             exit(EXIT_FAILURE);
    3283         }
    3284             psFree(md);
    3285             exit(EXIT_FAILURE);
    3286         }
    3287 
    3288         object = detNormalizedExpObjectFromMetadata(md);
    3289         if (!object) {
    3290             psFree(md);
    3291             exit(EXIT_FAILURE);
    3292         }
    3293 
    3294         psFree(md);
    3295 
    3296             psFree(object);
    3297             exit(EXIT_FAILURE);
    3298         }
    3299         if (!object->iteration == -32) {
    3300             psFree(object);
    3301             exit(EXIT_FAILURE);
    3302         }
    3303         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    3304             psFree(object);
    3305             exit(EXIT_FAILURE);
    3306         }
    3307         if (!object->bg == 64.64) {
    3308             psFree(object);
    3309             exit(EXIT_FAILURE);
    3310         }
    3311         if (!object->bg_stdev == 64.64) {
    3312             psFree(object);
    3313             exit(EXIT_FAILURE);
    3314         }
    3315         if (!object->bg_mean_stdev == 64.64) {
    3316             psFree(object);
    3317             exit(EXIT_FAILURE);
    3318         }
    3319         if (!object->user_1 == 64.64) {
    3320             psFree(object);
    3321             exit(EXIT_FAILURE);
    3322         }
    3323         if (!object->user_2 == 64.64) {
    3324             psFree(object);
    3325             exit(EXIT_FAILURE);
    3326         }
    3327         if (!object->user_3 == 64.64) {
    3328             psFree(object);
    3329             exit(EXIT_FAILURE);
    3330         }
    3331         if (!object->user_4 == 64.64) {
    3332             psFree(object);
    3333             exit(EXIT_FAILURE);
    3334         }
    3335         if (!object->user_5 == 64.64) {
    3336             psFree(object);
    3337             exit(EXIT_FAILURE);
    3338         }
    3339         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    3340             psFree(object);
    3341             exit(EXIT_FAILURE);
    3342         }
    3343             psFree(object);
    3344             exit(EXIT_FAILURE);
    3345         }
    3346 
    3347         psFree(object);
    3348     }
    3349 
    3350     {
    3351         psMetadata      *md;
    3352         detResidImfileRow *object;
    3353 
    3354         md = psMetadataAlloc();
    3355             psFree(md);
    3356             exit(EXIT_FAILURE);
    3357         }
    3358         if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
    3359             psFree(md);
    3360             exit(EXIT_FAILURE);
    3361         }
    3362         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
    3363             psFree(md);
    3364             exit(EXIT_FAILURE);
    3365         }
    3366         if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
    3367             psFree(md);
    3368             exit(EXIT_FAILURE);
    3369         }
    3370         if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
    3371             psFree(md);
    3372             exit(EXIT_FAILURE);
    3373         }
    3374         if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
    3375             psFree(md);
    3376             exit(EXIT_FAILURE);
    3377         }
    3378         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
    3379             psFree(md);
    3380             exit(EXIT_FAILURE);
    3381         }
    3382         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
    3383             psFree(md);
    3384             exit(EXIT_FAILURE);
    3385         }
    3386         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
    3387             psFree(md);
    3388             exit(EXIT_FAILURE);
    3389         }
    3390         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bin_stdev", 0, NULL, 64.64)) {
    3391             psFree(md);
    3392             exit(EXIT_FAILURE);
    3393         }
    3394         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 64.64)) {
    3395             psFree(md);
    3396             exit(EXIT_FAILURE);
    3397         }
    3398         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 64.64)) {
    3399             psFree(md);
    3400             exit(EXIT_FAILURE);
    3401         }
    3402         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 64.64)) {
    3403             psFree(md);
    3404             exit(EXIT_FAILURE);
    3405         }
    3406         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
    3407             psFree(md);
    3408             exit(EXIT_FAILURE);
    3409         }
    3410         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
    3411             psFree(md);
    3412             exit(EXIT_FAILURE);
    3413         }
    3414         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
    3415             psFree(md);
    3416             exit(EXIT_FAILURE);
    3417         }
    3418         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
    3419             psFree(md);
    3420             exit(EXIT_FAILURE);
    3421         }
    3422         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
    3423             psFree(md);
    3424             exit(EXIT_FAILURE);
    3425         }
    3426         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    3427             psFree(md);
    3428             exit(EXIT_FAILURE);
    3429         }
    3430             psFree(md);
    3431             exit(EXIT_FAILURE);
    3432         }
    3433 
    3434         object = detResidImfileObjectFromMetadata(md);
    3435         if (!object) {
    3436             psFree(md);
    3437             exit(EXIT_FAILURE);
    3438         }
    3439 
    3440         psFree(md);
    3441 
    3442             psFree(object);
    3443             exit(EXIT_FAILURE);
    3444         }
    3445         if (!object->iteration == -32) {
    3446             psFree(object);
    3447             exit(EXIT_FAILURE);
    3448         }
    3449         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    3450             psFree(object);
    3451             exit(EXIT_FAILURE);
    3452         }
    3453         if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
    3454             psFree(object);
    3455             exit(EXIT_FAILURE);
    3456         }
    3457         if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
    3458             psFree(object);
    3459             exit(EXIT_FAILURE);
    3460         }
    3461         if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
    3462             psFree(object);
    3463             exit(EXIT_FAILURE);
    3464         }
    3465         if (!object->bg == 64.64) {
    3466             psFree(object);
    3467             exit(EXIT_FAILURE);
    3468         }
    3469         if (!object->bg_stdev == 64.64) {
    3470             psFree(object);
    3471             exit(EXIT_FAILURE);
    3472         }
    3473         if (!object->bg_mean_stdev == 64.64) {
    3474             psFree(object);
    3475             exit(EXIT_FAILURE);
    3476         }
    3477         if (!object->bin_stdev == 64.64) {
    3478             psFree(object);
    3479             exit(EXIT_FAILURE);
    3480         }
    3481         if (!object->fringe_0 == 64.64) {
    3482             psFree(object);
    3483             exit(EXIT_FAILURE);
    3484         }
    3485         if (!object->fringe_1 == 64.64) {
    3486             psFree(object);
    3487             exit(EXIT_FAILURE);
    3488         }
    3489         if (!object->fringe_2 == 64.64) {
    3490             psFree(object);
    3491             exit(EXIT_FAILURE);
    3492         }
    3493         if (!object->user_1 == 64.64) {
    3494             psFree(object);
    3495             exit(EXIT_FAILURE);
    3496         }
    3497         if (!object->user_2 == 64.64) {
    3498             psFree(object);
    3499             exit(EXIT_FAILURE);
    3500         }
    3501         if (!object->user_3 == 64.64) {
    3502             psFree(object);
    3503             exit(EXIT_FAILURE);
    3504         }
    3505         if (!object->user_4 == 64.64) {
    3506             psFree(object);
    3507             exit(EXIT_FAILURE);
    3508         }
    3509         if (!object->user_5 == 64.64) {
    3510             psFree(object);
    3511             exit(EXIT_FAILURE);
    3512         }
    3513         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
    3514             psFree(object);
    3515             exit(EXIT_FAILURE);
    3516         }
    3517             psFree(object);
    3518             exit(EXIT_FAILURE);
    3519         }
    3520 
    3521         psFree(object);
    3522     }
    3523 
    3524     {
    3525         psMetadata      *md;
    3526         detResidExpRow  *object;
    3527 
    3528         md = psMetadataAlloc();
    3529             psFree(md);
    3530             exit(EXIT_FAILURE);
    3531         }
    3532         if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
    3533             psFree(md);
    3534             exit(EXIT_FAILURE);
    3535         }
    3536         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
    3537             psFree(md);
    3538             exit(EXIT_FAILURE);
    3539         }
    3540         if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
    3541             psFree(md);
    3542             exit(EXIT_FAILURE);
    3543         }
    3544         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
    3545             psFree(md);
    3546             exit(EXIT_FAILURE);
    3547         }
    3548         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
    3549             psFree(md);
    3550             exit(EXIT_FAILURE);
    3551         }
    3552         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
    3553             psFree(md);
    3554             exit(EXIT_FAILURE);
    3555         }
    3556         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bin_stdev", 0, NULL, 64.64)) {
    3557             psFree(md);
    3558             exit(EXIT_FAILURE);
    3559         }
    3560         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 64.64)) {
    3561             psFree(md);
    3562             exit(EXIT_FAILURE);
    3563         }
    3564         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 64.64)) {
    3565             psFree(md);
    3566             exit(EXIT_FAILURE);
    3567         }
    3568         if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 64.64)) {
    3569             psFree(md);
    3570             exit(EXIT_FAILURE);
    3571         }
    3572         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
    3573             psFree(md);
    3574             exit(EXIT_FAILURE);
    3575         }
    3576         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
    3577             psFree(md);
    3578             exit(EXIT_FAILURE);
    3579         }
    3580         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
    3581             psFree(md);
    3582             exit(EXIT_FAILURE);
    3583         }
    3584         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
    3585             psFree(md);
    3586             exit(EXIT_FAILURE);
    3587         }
    3588         if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
    3589             psFree(md);
    3590             exit(EXIT_FAILURE);
    3591         }
    3592         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
    3593             psFree(md);
    3594             exit(EXIT_FAILURE);
    3595         }
    3596         if (!psMetadataAdd(md, PS_LIST_TAIL, "accept", PS_DATA_BOOL, NULL, true)) {
    3597             psFree(md);
    3598             exit(EXIT_FAILURE);
    3599         }
    3600             psFree(md);
    3601             exit(EXIT_FAILURE);
    3602         }
    3603 
    3604         object = detResidExpObjectFromMetadata(md);
    3605         if (!object) {
    3606             psFree(md);
    3607             exit(EXIT_FAILURE);
    3608         }
    3609 
    3610         psFree(md);
    3611 
    3612             psFree(object);
    3613             exit(EXIT_FAILURE);
    3614         }
    3615         if (!object->iteration == -32) {
    3616             psFree(object);
    3617             exit(EXIT_FAILURE);
    3618         }
    3619         if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
    36203508            psFree(object);
    36213509            exit(EXIT_FAILURE);
  • trunk/ippdb/tests/selectrowsfits.c

    r12535 r14061  
    2121        }
    2222
    23         if (!expTagCounterSelectRowsFits(dbh, fits, NULL, 1)) {
    24             exit(EXIT_FAILURE);
    25         }
    26 
    27         psFree(fits);
    28         psDBCleanup(dbh);
    29     }
    30 
    31     {
    32         psDB            *dbh;
    33         psFits          *fits;
    34 
    35         dbh = psDBInit("localhost", "test", NULL, "test");
    36         if (!dbh) {
    37             exit(EXIT_FAILURE);
    38         }
    39 
    40         fits = psFitsOpen(TMP_FILENAME, "w");
    41         if (!fits) {
    42             exit(EXIT_FAILURE);
    43         }
    44 
    4523        if (!summitExpSelectRowsFits(dbh, fits, NULL, 1)) {
    4624            exit(EXIT_FAILURE);
     
    285263        }
    286264
    287         if (!chipPendingExpSelectRowsFits(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 
    309         if (!chipPendingImfileSelectRowsFits(dbh, fits, NULL, 1)) {
    310             exit(EXIT_FAILURE);
    311         }
    312 
    313         psFree(fits);
    314         psDBCleanup(dbh);
    315     }
    316 
    317     {
    318         psDB            *dbh;
    319         psFits          *fits;
    320 
    321         dbh = psDBInit("localhost", "test", NULL, "test");
    322         if (!dbh) {
    323             exit(EXIT_FAILURE);
    324         }
    325 
    326         fits = psFitsOpen(TMP_FILENAME, "w");
    327         if (!fits) {
    328             exit(EXIT_FAILURE);
    329         }
    330 
    331         if (!chipProcessedExpSelectRowsFits(dbh, fits, NULL, 1)) {
     265        if (!chipRunSelectRowsFits(dbh, fits, NULL, 1)) {
     266            exit(EXIT_FAILURE);
     267        }
     268
     269        psFree(fits);
     270        psDBCleanup(dbh);
     271    }
     272
     273    {
     274        psDB            *dbh;
     275        psFits          *fits;
     276
     277        dbh = psDBInit("localhost", "test", NULL, "test");
     278        if (!dbh) {
     279            exit(EXIT_FAILURE);
     280        }
     281
     282        fits = psFitsOpen(TMP_FILENAME, "w");
     283        if (!fits) {
     284            exit(EXIT_FAILURE);
     285        }
     286
     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
     309        if (!chipProcessedImfileSelectRowsFits(dbh, fits, NULL, 1)) {
    332310            exit(EXIT_FAILURE);
    333311        }
     
    373351        }
    374352
    375         if (!chipProcessedImfileSelectRowsFits(dbh, fits, NULL, 1)) {
    376             exit(EXIT_FAILURE);
    377         }
    378 
    379         psFree(fits);
    380         psDBCleanup(dbh);
    381     }
    382 
    383     {
    384         psDB            *dbh;
    385         psFits          *fits;
    386 
    387         dbh = psDBInit("localhost", "test", NULL, "test");
    388         if (!dbh) {
    389             exit(EXIT_FAILURE);
    390         }
    391 
    392         fits = psFitsOpen(TMP_FILENAME, "w");
    393         if (!fits) {
    394             exit(EXIT_FAILURE);
    395         }
    396 
    397         if (!camPendingExpSelectRowsFits(dbh, fits, NULL, 1)) {
     353        if (!camRunSelectRowsFits(dbh, fits, NULL, 1)) {
    398354            exit(EXIT_FAILURE);
    399355        }
Note: See TracChangeset for help on using the changeset viewer.