IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
May 21, 2007, 7:48:06 AM (19 years ago)
Author:
eugene
Message:

working towards full boolean db expressions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/kapa-mods-2007-05/Ohana/src/opihi/dvo/dvofields.c

    r13439 r13440  
    1 
    2 # define ESCAPE(F,M) { \
    3   field->fieldNumber = (F); \
    4   field->magMode = (M); \
    5   field->photcode = NULL; \
    6   return (TRUE);
    71
    82int GetMagMode (char *string) {
     
    2014}
    2115
     16PhotCode *ParsePhotcodeField (char *field, int *mode, int default) {
     17
     18  char *tmpstring, *p;
     19  PhotCode *code;
     20
     21  *mode = default;
     22
     23  p = strchr (field, ':');
     24  if (p != NULL) {
     25    *mode = GetMagMode (p + 1);
     26    if (*mode == MAG_NONE) return (NULL);
     27    tmpstring = strncreate (field, p - field);
     28  } else {
     29    tmpstring = strcreate (field);
     30  }
     31  code = GetPhotcodebyName (tmpstring);
     32  free (tmpstring);
     33
     34  return (code);
     35}
     36
     37# define ESCAPE(F,M) { \
     38  field->ID = (F); \
     39  field->magMode = (M); \
     40  field->photcode = NULL; \
     41  return (TRUE);
     42
    2243int ParseMeasureField (dvoField *field, char *fieldName) {
    2344
    2445  PhotCode *code;
     46
     47  field->table = DVO_TABLE_MEASURE;
     48  field->name  = strcreate (fieldName);
    2549
    2650  if (!strcasecmp (fieldName, "RA"))       ESCAPE (MEAS_RA,       MAG_NONE);
     
    4569
    4670  // check for code:mode in photcode name
    47   mode = MAG_REL;
    48   p = strchr (fieldName, ':');
    49   if (p != NULL) {
    50     mode = GetMagMode (p + 1);
    51     if (mode == MAG_NONE) return (FALSE);
    52     tmpstring = strncreate (fieldName, p - fieldName);
    53   } else {
    54     tmpstring = strcreate (fieldName);
    55   }
    56   code = GetPhotcodebyName (tmpstring);
    57   free (tmpstring);
    58 
     71  code = ParsePhotcodeField (&mode, MAG_REL);
    5972  if (code == NULL) return (FALSE);
    6073
    6174  if (mode == MAG_ERR) {
    62     field->fieldNumber = MEAS_dMAG;
     75    field->ID = MEAS_dMAG;
    6376  } else {
    64     field->fieldNumber = MEAS_MAG;
     77    field->ID = MEAS_MAG;
    6578  }   
    6679 
     80  field->magMode = mode;
    6781  field->photcode = code;
    6882  return (TRUE);
     
    7286
    7387  PhotCode *code;
     88
     89  field->table = DVO_TABLE_AVERAGE;
    7490
    7591  if (!strcasecmp (fieldName, "RA"))    ESCAPE (AVE_RA,        MAG_NONE);
     
    98114
    99115  // check for code:mode in photcode name
    100   mode = MAG_AVE;
    101   p = strchr (fieldName, ':');
    102   if (p != NULL) {
    103     mode = GetMagMode (p + 1);
    104     if (mode == MAG_NONE) return (FALSE);
    105     tmpstring = strncreate (fieldName, p - fieldName);
    106   } else {
    107     tmpstring = strcreate (fieldName);
    108   }
    109   code = GetPhotcodebyName (tmpstring);
    110   free (tmpstring);
    111 
     116  code = ParsePhotcodeField (&mode, MAG_AVE);
    112117  if (code == NULL) return (FALSE);
    113118
    114119  // need to distinguish phot, sys errors and scatter
    115120  if (mode == MAG_ERR) {
    116     field->fieldNumber = MEAS_dMAG;
     121    field->ID = MEAS_dMAG;
    117122  } else {
    118     field->fieldNumber = MEAS_MAG;
     123    field->ID = MEAS_MAG;
    119124  }   
    120125 
     126  field->magMode = mode;
    121127  field->photcode = code;
    122128  return (TRUE);
Note: See TracChangeset for help on using the changeset viewer.