IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Dec 1, 2008, 4:25:00 AM (18 years ago)
Author:
eugene
Message:

finish imextract conversion to SQL style syntax

File:
1 edited

Legend:

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

    r20860 r20862  
    66  int Nsecfilt, mode, VERBOSE;
    77  char **cstack, name[1024];
     8  void *Signal;
     9
     10  Catalog catalog;
     11
     12  Vector **vec;
     13  PhotCode *code;
     14  dbStack *stack;
     15  dbField *fields;
    816  dbValue *values;
    9   void *Signal;
    10 
    11   Catalog catalog;
    1217  SkyList *skylist;
    1318  SkyRegionSelection *selection;
    14   PhotCode *code;
    15   Vector **vec;
    16   dbField *fields;
    17   dbStack *stack;
    1819
    1920  /* defaults */
     21  vec = NULL;
     22  code = NULL;
     23  stack = NULL;
     24  fields = NULL;
     25  values = NULL;
    2026  skylist = NULL;
    2127  selection = NULL;
    22   code = NULL;
     28
    2329  mode = MAG_AVE;
    24   fields = NULL;
    25   stack = NULL;
    2630
    2731  if ((N = get_argument (argc, argv, "-h"))) goto help;
     
    6670  Nreturn = Nfields;
    6771  if (!dbCheckStack (stack, Nstack, DVO_TABLE_AVERAGE, &fields, &Nfields)) goto escape;
    68   // XXX handle errors
    6972
    7073  /* load region corresponding to selection above */
     
    8184    }
    8285    if ((vec[i] = SelectVector (name, ANYVECTOR, TRUE)) == NULL) goto escape;
     86    ResetVector (vec[i], fields[i].type, NPTS);
    8387  }
    8488
     
    109113
    110114      m = catalog.average[j].measureOffset;
    111       dbExtractAveragesInit (); // reset counters for saved fields
     115
     116      // reset counters for saved fields, extract fields
     117      dbExtractAveragesInit ();
    112118      for (n = 0; n < Nfields; n++) {
    113119        values[n] = dbExtractAverages (&catalog.average[j], &catalog.secfilt[j*Nsecfilt], &catalog.measure[m], &fields[n]);
    114120      }
     121
    115122      // test the conditional statement
    116123      if (!dbBooleanCond (stack, Nstack, values)) continue;
     
    126133        NPTS += 2000;
    127134        for (n = 0; n < Nreturn; n++) {
    128           REALLOCATE (vec[n][0].elements.Flt, opihi_flt, NPTS);
     135          if (vec[n][0].type == OPIHI_FLT) {
     136            REALLOCATE (vec[n][0].elements.Flt, opihi_flt, NPTS);
     137          } else {
     138            REALLOCATE (vec[n][0].elements.Int, opihi_int, NPTS);
     139          }
    129140        }
    130141      }
     
    136147  for (n = 0; n < Nreturn; n++) {
    137148    vec[n][0].Nelements = Npts;
    138     REALLOCATE (vec[n][0].elements.Flt, opihi_flt, MAX(1,Npts));
    139   }
    140 
    141   free (values);
     149    if (vec[n][0].type == OPIHI_FLT) {
     150      REALLOCATE (vec[n][0].elements.Flt, opihi_flt, MAX(1,Npts));
     151    } else {
     152      REALLOCATE (vec[n][0].elements.Int, opihi_int, MAX(1,Npts));
     153    }
     154  }
     155
     156  if (vec) free (vec);
     157  if (values) free (values);
    142158  dbFreeFields (fields, Nfields);
    143159  dbFreeStack (stack, Nstack);
    144   free (stack);
     160  if (stack) free (stack);
    145161  SkyListFree (skylist);
    146162  FreeSkyRegionSelection (selection);
     
    148164
    149165 escape:
    150   free (values);
     166  if (vec) free (vec);
     167  if (values) free (values);
    151168  dbFreeFields (fields, Nfields);
    152169  dbFreeStack (stack, Nstack);
    153   free (stack);
     170  if (stack) free (stack);
    154171  SkyListFree (skylist);
    155172  FreeSkyRegionSelection (selection);
Note: See TracChangeset for help on using the changeset viewer.