Changeset 20936 for trunk/Ohana/src/opihi/cmd.data/read_vectors.c
- Timestamp:
- Dec 7, 2008, 3:31:01 PM (18 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/opihi/cmd.data/read_vectors.c (modified) (13 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/cmd.data/read_vectors.c
r17070 r20936 70 70 return (FALSE); 71 71 } 72 // XXX we could allow flags (eg, N.i) to specify INT vs FLT types vectors... 72 73 colstr = argv[2*i+2]; 73 74 for (j = 0; j < strlen (colstr); j++) { … … 81 82 col[i] = atof (colstr); 82 83 } 83 84 85 // currently, all read vectors are forced to be type FLT 84 86 NELEM = 1000; 85 87 for (i = 0; i < Nvec; i++) { 86 R EALLOCATE (vec[i][0].elements, float, NELEM);88 ResetVector (vec[i], OPIHI_FLT, NELEM); 87 89 } 88 90 … … 121 123 for (i = 0; (i < Nvec) && status; i++) { 122 124 status = dparse (&value, col[i], c0); 123 vec[i][0].elements [N] = value;124 if (!status) vec[i][0].elements [N] = 0.0/0.0;125 vec[i][0].elements.Flt[N] = value; 126 if (!status) vec[i][0].elements.Flt[N] = NAN; 125 127 } 126 128 if (status) N++; … … 130 132 NELEM += 1000; 131 133 for (i = 0; i < Nvec; i++) { 132 REALLOCATE (vec[i][0].elements , float, NELEM);134 REALLOCATE (vec[i][0].elements.Flt, opihi_flt, NELEM); 133 135 } 134 136 } … … 137 139 } 138 140 for (i = 0; i < Nvec; i++) { 139 REALLOCATE (vec[i][0].elements , float, MAX (N,1));141 REALLOCATE (vec[i][0].elements.Flt, opihi_flt, MAX (N,1)); 140 142 vec[i][0].Nelements = N; 141 143 } … … 157 159 int read_table_vectors (int argc, char **argv, char *extname) { 158 160 159 int i, j, k, N, Nbytes, Nextend, Ny, Binary ;161 int i, j, k, N, Nbytes, Nextend, Ny, Binary, vecType; 160 162 char type[16], ID[80], *CCDKeyword; 161 163 FTable table; … … 260 262 } 261 263 if (Nval == 0) ESCAPE ("no data for field in table"); 262 264 265 vecType = OPIHI_INT; 266 if (!strcmp (type, "double") || !strcmp (type, "float")) { 267 vecType = OPIHI_FLT; 268 } 269 270 // define the multifield vector names 263 271 ALLOCATE (vec, Vector *, Nval); 264 272 for (j = 0; j < Nval; j++) { … … 268 276 sprintf (name, "%s:%d", argv[i], j); 269 277 if ((vec[j] = SelectVector (name, ANYVECTOR, TRUE)) == NULL) ESCAPE ("bad vector name"); 270 REALLOCATE (vec[j][0].elements, float, MAX (Ny,1)); 271 vec[j][0].Nelements = Ny; 278 ResetVector (vec[j], vecType, MAX (Ny,1)); 272 279 } 273 280 … … 276 283 for (j = 0; j < Ny; j++) { 277 284 for (k = 0; k < Nval; k++, Pd++) { 278 vec[k][0].elements [j] = *Pd;285 vec[k][0].elements.Flt[j] = *Pd; 279 286 } 280 287 } … … 284 291 for (j = 0; j < Ny; j++) { 285 292 for (k = 0; k < Nval; k++, Pf++) { 286 vec[k][0].elements [j] = *Pf;293 vec[k][0].elements.Flt[j] = *Pf; 287 294 } 288 295 } … … 292 299 for (j = 0; j < Ny; j++) { 293 300 for (k = 0; k < Nval; k++, Pi++) { 294 vec[k][0].elements [j] = *Pi;301 vec[k][0].elements.Int[j] = *Pi; 295 302 } 296 303 } … … 300 307 for (j = 0; j < Ny; j++) { 301 308 for (k = 0; k < Nval; k++, Ps++) { 302 vec[k][0].elements [j] = *Ps;309 vec[k][0].elements.Int[j] = *Ps; 303 310 } 304 311 } … … 308 315 for (j = 0; j < Ny; j++) { 309 316 for (k = 0; k < Nval; k++, Pc++) { 310 vec[k][0].elements [j] = *Pc;317 vec[k][0].elements.Int[j] = *Pc; 311 318 } 312 319 }
Note:
See TracChangeset
for help on using the changeset viewer.
