IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Apr 30, 2006, 12:08:02 PM (20 years ago)
Author:
magnier
Message:

added indirect names to CMP, fixed state variables, leaks

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/objects/pmSourceIO.c

    r6960 r7011  
    33 *  @author EAM, IfA
    44 *
    5  *  @version $Revision: 1.3 $ $Name: not supported by cvs2svn $
    6  *  @date $Date: 2006-04-23 01:07:51 $
     5 *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
     6 *  @date $Date: 2006-04-30 22:08:02 $
    77 *
    88 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    290290bool pmFPAReadObjects (pmFPA *fpa, const pmFPAview *view, pmFPAfile *file)
    291291{
    292 
    293292    for (int i = 0; i < fpa->chips->n; i++) {
    294 
    295293        pmChip *chip = fpa->chips->data[i];
    296294        pmChipReadObjects (chip, view, file);
     
    302300bool pmChipReadObjects (pmChip *chip, const pmFPAview *view, pmFPAfile *file)
    303301{
    304 
    305302    for (int i = 0; i < chip->cells->n; i++) {
    306 
    307303        pmCell *cell = chip->cells->data[i];
    308304        pmCellReadObjects (cell, view, file);
     
    314310bool pmCellReadObjects (pmCell *cell, const pmFPAview *view, pmFPAfile *file)
    315311{
    316 
     312    // determine the number of readouts:
     313    switch (file->type) {
     314    case PM_FPA_FILE_CMP: {
     315            pmReadout *readout;
     316            readout = pmReadoutAlloc (cell);
     317            psFree (readout);
     318            break;
     319        }
     320    default:
     321        psAbort ("pmSourceIO", "n readouts is not yet defined\n");
     322    }
    317323    for (int i = 0; i < cell->readouts->n; i++) {
    318 
    319324        pmReadout *readout = cell->readouts->data[i];
    320325        pmReadoutReadObjects (readout, view, file);
     326        cell->data_exists = true;
    321327    }
    322328    return true;
     
    345351        // read in header, if not yet loaded
    346352        hdu = pmFPAviewThisHDU (view, file->fpa);
    347 
    348         char *filename = pmFPAfileNameFromRule (file->filerule, file, view);
    349         file->fits = psFitsOpen (filename, "r");
     353        if (file->filename)
     354            psFree (file->filename);
     355        file->filename = pmFPAfileNameFromRule (file->filerule, file, view);
     356
     357        // indirect filenames
     358        if (!strcasecmp (file->filename, "@FILES")) {
     359            psFree (file->filename);
     360            char *extra = pmFPAfileNameFromRule (file->filextra, file, view);
     361            file->filename = psMetadataLookupStr (&status, file->names, extra);
     362            psFree (extra);
     363            if (file->filename == NULL)
     364                return false;
     365            // psMetadataLookupStr just returns a view, file->filename must be protected
     366            psMemIncrRefCounter (file->filename);
     367        }
     368        file->fits = psFitsOpen (file->filename, "r");
     369        if (hdu->header != NULL) {
     370            psFree (hdu->header);
     371        }
    350372        hdu->header = psFitsReadHeader (NULL, file->fits);
    351373        psFitsClose (file->fits);
    352         sources  = pmSourcesReadCMP (filename, hdu->header);
    353         psFree (filename);
     374        file->fits = NULL;
     375
     376        sources = pmSourcesReadCMP (file->filename, hdu->header);
    354377        break;
    355378
     
    366389        char *dataname = pmFPAfileNameFromRule (file->extrule, file, view);
    367390        psFitsMoveExtName (file->fits, dataname);
    368         sources  = pmSourcesReadCMF (file->fits, hdu->header);
     391        sources = pmSourcesReadCMF (file->fits, hdu->header);
    369392        psFree (dataname);
    370393        break;
     
    374397        break;
    375398    }
     399    readout->data_exists = true;
    376400    status = psMetadataAdd (readout->analysis, PS_LIST_TAIL, "PSPHOT.SOURCES", PS_DATA_ARRAY, "psphot sources", sources);
    377     return true;
    378 }
    379 
    380 
     401    psFree (sources);
     402    return true;
     403}
     404
     405
Note: See TracChangeset for help on using the changeset viewer.