IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 8, 2007, 12:31:41 PM (19 years ago)
Author:
Paul Price
Message:

Fixed bugs with writing concepts to DEFAULTS --- code was all confused! Added function to return a list of concepts defined at a particular level, pmConceptsList.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/concepts/pmConcepts.c

    r10644 r10967  
    3737    return spec;
    3838}
     39
     40psList *pmConceptsList(pmFPALevel level)
     41{
     42    if (!conceptsInitialised) {
     43        pmConceptsInit();
     44    }
     45
     46    // Get the appropriate concepts
     47    psMetadata *concepts = NULL;        // Metadata of concepts specs
     48    switch (level) {
     49    case PM_FPA_LEVEL_FPA:
     50        concepts = conceptsFPA;
     51        break;
     52    case PM_FPA_LEVEL_CHIP:
     53        concepts = conceptsChip;
     54        break;
     55    case PM_FPA_LEVEL_CELL:
     56        concepts = conceptsCell;
     57        break;
     58    default:
     59        psError(PS_ERR_IO, true, "Invalid concept level provided: %d\n", level);
     60        return NULL;
     61    }
     62
     63    // Pull out the names
     64    psList *list = psListAlloc(NULL);   // List of concepts' names
     65    psMetadataIterator *iter = psMetadataIteratorAlloc(concepts, PS_LIST_HEAD, NULL); // Iterator
     66    psMetadataItem *item;               // Item from iteration
     67    while ((item = psMetadataGetAndIncrement(iter))) {
     68        psListAdd(list, PS_LIST_TAIL, item->name);
     69    }
     70    psFree(iter);
     71    return list;
     72}
     73
     74
     75psList *psMetadataKeys(psMetadata *md)
     76{
     77    psList *list = psListAlloc(NULL);   // List with the keys
     78    psMetadataIterator *iter = psMetadataIteratorAlloc(md, PS_LIST_HEAD, false);
     79    psMetadataItem *item;               // Item from iteration
     80    while ((item = psMetadataGetAndIncrement(iter))) {
     81        psListAdd(list, PS_LIST_TAIL, item->name);
     82    }
     83    return list;
     84}
     85
    3986
    4087
     
    246293        for (long i = 0; i < chips->n; i++) {
    247294            pmChip *chip = chips->data[i]; // Chip of interest
    248             if (chip && !chip->hdu) {
     295            if (chip) {
    249296                success |= pmConceptsReadChip(chip, source, false, true, db);
    250297            }
     
    287334    bool success = conceptsRead(&conceptsChip, fpa, chip, NULL, &chip->conceptsRead, source, db,
    288335                                chip->concepts);
    289     if (propagateUp && !fpa->hdu) {
     336    if (propagateUp) {
    290337        success |= conceptsRead(&conceptsFPA, fpa, chip, NULL, &fpa->conceptsRead, source, db, fpa->concepts);
    291338    }
     
    294341        for (long i = 0; i < cells->n; i++) {
    295342            pmCell *cell = cells->data[i];  // Cell of interest
    296             if (cell && !cell->hdu) {
     343            if (cell) {
    297344                success |= pmConceptsReadCell(cell, source, false, db);
    298345            }
     
    341388                                cell->concepts);
    342389    if (propagateUp) {
    343         if (!chip->hdu) {
    344             success |= conceptsRead(&conceptsChip, fpa, chip, cell, &chip->conceptsRead, source, db,
    345                                     chip->concepts);
    346             if (!fpa->hdu) {
    347                 success |= conceptsRead(&conceptsFPA, fpa, chip, cell, &fpa->conceptsRead, source, db,
    348                                         fpa->concepts);
    349             }
    350         }
     390        success |= conceptsRead(&conceptsChip, fpa, chip, cell, &chip->conceptsRead, source, db,
     391                                chip->concepts);
     392        success |= conceptsRead(&conceptsFPA, fpa, chip, cell, &fpa->conceptsRead, source, db,
     393                                fpa->concepts);
    351394    }
    352395
Note: See TracChangeset for help on using the changeset viewer.