IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 14191


Ignore:
Timestamp:
Jul 12, 2007, 5:17:43 PM (19 years ago)
Author:
eugene
Message:

fixed handling of the photcodes in mextract and avextract

Location:
trunk/Ohana/src/opihi
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/dvo/avextract.c

    r13539 r14191  
    1313  PhotCode *code;
    1414  Vector **vec;
    15 
    1615  dbField *fields;
    1716  dbStack *stack;
     
    2322  code = NULL;
    2423  mode = MAG_AVE;
     24  fields = NULL;
     25  stack = NULL;
     26
    2527  dvo_catalog_init (&catalog, TRUE);
    2628
     
    108110  }
    109111
    110   // XXX free fields and stack
    111 
     112  dbFreeFields (fields, Nfields);
     113  dbFreeStack (stack, Nstack);
    112114  SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
    113115  return (TRUE);
     
    118120
    119121escape:
     122  dbFreeFields (fields, Nfields);
     123  dbFreeStack (stack, Nstack);
    120124  SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
    121125  dvo_catalog_free (&catalog);
  • trunk/Ohana/src/opihi/dvo/dbCmdlineFields.c

    r13479 r14191  
    3939        gprint (GP_ERR, "unknown database field %s\n", field);
    4040        free (field);
    41         for (j = 0; j <= Nfields; j++) {
    42           if (fields->name != NULL) free (fields->name);
    43         }
    44         free (fields);
     41        dbFreeFields (fields, Nfields);
    4542        return (NULL);
    4643      }
  • trunk/Ohana/src/opihi/dvo/dbExtractMeasures.c

    r13479 r14191  
    2222
    2323  switch (field->ID) {
    24     // XXX not sure how to apply the photcode here....
    2524    case MEAS_MAG: /* magnitudes are already determined above */
     25      // if user has requested a photcode, supply the value only if we match (else NO_MAG)
     26      if ((field->photcode->type != PHOT_MAG) &&
     27          (measure[0].photcode != field->photcode->code)) {
     28          break;
     29      }
    2630      switch (field->magMode) {
    2731        case MAG_INST:
  • trunk/Ohana/src/opihi/dvo/dbFields.c

    r13479 r14191  
    11# include "dvoshell.h"
    22
    3 dbInitField (dbField *field) {
     3void dbFreeFields (dbField *fields, int Nfields) {
     4
     5  int i;
     6
     7  if (fields == NULL) return;
     8
     9  for (i = 0; i <= Nfields; i++) {
     10    if (fields[i].name != NULL) free (fields[i].name);
     11    if (fields[i].photcode != NULL) {
     12      if (fields[i].photcode[0].type == PHOT_MAG) {
     13        free (fields[i].photcode);
     14      }
     15    }
     16  }
     17  free (fields);
     18}
     19
     20void dbInitField (dbField *field) {
    421  field->name = NULL;
    522  field->extract = FALSE;
     
    2643PhotCode *ParsePhotcodeField (char *field, int *mode, int defMode) {
    2744
     45  int useDefault;
    2846  char *tmpstring, *p;
    2947  PhotCode *code;
    3048
    3149  *mode = defMode;
     50  useDefault = TRUE;
    3251
    3352  p = strchr (field, ':');
    3453  if (p != NULL) {
    3554    *mode = GetMagMode (p + 1);
     55    useDefault = FALSE;
    3656    if (*mode == MAG_NONE) return (NULL);
    3757    tmpstring = strncreate (field, p - field);
     
    3959    tmpstring = strcreate (field);
    4060  }
     61  if (!strcasecmp (tmpstring, "MAG")) {
     62    ALLOCATE (code, PhotCode, 1);
     63    code[0].code = 0;
     64    strcpy (code[0].name, "MAG");
     65    code[0].type = PHOT_MAG;
     66    free (tmpstring);
     67    return (code);
     68  }
    4169  code = GetPhotcodebyName (tmpstring);
     70
     71  // enforce compatibility
     72  // XXX this is kind of poorly done
     73  if ((code[0].type == PHOT_REF) && (*mode != MAG_ERR)) {
     74    *mode = MAG_CAT;
     75  }
     76  if (code[0].type == PHOT_DEP) {
     77    if (useDefault) {
     78      *mode = MAG_REL;
     79    } else {
     80      if ((*mode == MAG_AVE) || (*mode == MAG_REF)) {
     81        // XXX error;
     82        *mode = MAG_REL;
     83      }
     84    }
     85  }
    4286  free (tmpstring);
    43 
    4487  return (code);
    4588}
     
    112155  if (!strcasecmp (fieldName, "PAR"))   ESCAPE (AVE_PAR,       MAG_NONE);
    113156  if (!strcasecmp (fieldName, "dPAR"))  ESCAPE (AVE_PAR_ERR,   MAG_NONE);
    114   if (!strcasecmp (fieldName, "MAG"))   ESCAPE (AVE_MAG,       MAG_AVE);
    115   if (!strcasecmp (fieldName, "dMAG"))  ESCAPE (AVE_dMAG,      MAG_ERR);
     157  // if (!strcasecmp (fieldName, "MAG"))   ESCAPE (AVE_MAG,       MAG_AVE);
     158  // if (!strcasecmp (fieldName, "dMAG"))  ESCAPE (AVE_dMAG,      MAG_ERR);
    116159  if (!strcasecmp (fieldName, "NMEAS")) ESCAPE (AVE_NMEAS,     MAG_NONE);
    117160  if (!strcasecmp (fieldName, "NMISS")) ESCAPE (AVE_NMISS,     MAG_NONE);
     
    129172  code = ParsePhotcodeField (fieldName, &mode, MAG_AVE);
    130173  if (code == NULL) return (FALSE);
     174  if (code[0].type == PHOT_MAG) {
     175    gprint (GP_ERR, "'mag' is ambiguous for avextract\n");
     176    free (code);
     177    return (FALSE);
     178  }
    131179
    132180  // need to distinguish phot, sys errors and scatter
  • trunk/Ohana/src/opihi/dvo/dbStackOps.c

    r13479 r14191  
    1010
    1111  int i;
     12
     13  if (stack == NULL) return;
    1214
    1315  for (i = 0; i < Nstack; i++) {
  • trunk/Ohana/src/opihi/dvo/mextract.c

    r13884 r14191  
    1414  PhotCode *code;
    1515  Vector **vec;
    16 
    1716  dbField *fields;
    1817  dbStack *stack;
     
    2423  code = NULL;
    2524  mode = MAG_REL;
     25  fields = NULL;
     26  stack = NULL;
     27
    2628  dvo_catalog_init (&catalog, TRUE);
    2729
     
    120122  }
    121123
    122   // XXX free fields and stack
    123 
     124  dbFreeFields (fields, Nfields);
     125  dbFreeStack (stack, Nstack);
    124126  FreeImageSelection ();
    125127  SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
     
    134136
    135137escape:
     138  dbFreeFields (fields, Nfields);
     139  dbFreeStack (stack, Nstack);
    136140  FreeImageSelection ();
    137141  SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
  • trunk/Ohana/src/opihi/include/dvoshell.h

    r13479 r14191  
    137137void         dbExtractMeasuresInit  PROTO(());
    138138
     139void         dbInitField            PROTO((dbField *field));
     140void         dbFreeFields           PROTO((dbField *fields, int Nfields));
     141
    139142# endif
Note: See TracChangeset for help on using the changeset viewer.