- Timestamp:
- Dec 1, 2008, 4:25:00 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branch_20081124/Ohana/src/opihi/dvo/avextract.c
r20860 r20862 6 6 int Nsecfilt, mode, VERBOSE; 7 7 char **cstack, name[1024]; 8 void *Signal; 9 10 Catalog catalog; 11 12 Vector **vec; 13 PhotCode *code; 14 dbStack *stack; 15 dbField *fields; 8 16 dbValue *values; 9 void *Signal;10 11 Catalog catalog;12 17 SkyList *skylist; 13 18 SkyRegionSelection *selection; 14 PhotCode *code;15 Vector **vec;16 dbField *fields;17 dbStack *stack;18 19 19 20 /* defaults */ 21 vec = NULL; 22 code = NULL; 23 stack = NULL; 24 fields = NULL; 25 values = NULL; 20 26 skylist = NULL; 21 27 selection = NULL; 22 code = NULL; 28 23 29 mode = MAG_AVE; 24 fields = NULL;25 stack = NULL;26 30 27 31 if ((N = get_argument (argc, argv, "-h"))) goto help; … … 66 70 Nreturn = Nfields; 67 71 if (!dbCheckStack (stack, Nstack, DVO_TABLE_AVERAGE, &fields, &Nfields)) goto escape; 68 // XXX handle errors69 72 70 73 /* load region corresponding to selection above */ … … 81 84 } 82 85 if ((vec[i] = SelectVector (name, ANYVECTOR, TRUE)) == NULL) goto escape; 86 ResetVector (vec[i], fields[i].type, NPTS); 83 87 } 84 88 … … 109 113 110 114 m = catalog.average[j].measureOffset; 111 dbExtractAveragesInit (); // reset counters for saved fields 115 116 // reset counters for saved fields, extract fields 117 dbExtractAveragesInit (); 112 118 for (n = 0; n < Nfields; n++) { 113 119 values[n] = dbExtractAverages (&catalog.average[j], &catalog.secfilt[j*Nsecfilt], &catalog.measure[m], &fields[n]); 114 120 } 121 115 122 // test the conditional statement 116 123 if (!dbBooleanCond (stack, Nstack, values)) continue; … … 126 133 NPTS += 2000; 127 134 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 } 129 140 } 130 141 } … … 136 147 for (n = 0; n < Nreturn; n++) { 137 148 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); 142 158 dbFreeFields (fields, Nfields); 143 159 dbFreeStack (stack, Nstack); 144 free (stack);160 if (stack) free (stack); 145 161 SkyListFree (skylist); 146 162 FreeSkyRegionSelection (selection); … … 148 164 149 165 escape: 150 free (values); 166 if (vec) free (vec); 167 if (values) free (values); 151 168 dbFreeFields (fields, Nfields); 152 169 dbFreeStack (stack, Nstack); 153 free (stack);170 if (stack) free (stack); 154 171 SkyListFree (skylist); 155 172 FreeSkyRegionSelection (selection);
Note:
See TracChangeset
for help on using the changeset viewer.
