Changeset 38693
- Timestamp:
- Aug 31, 2015, 2:37:11 PM (11 years ago)
- Location:
- branches/eam_branches/ipp-20150625/Ohana/src/libdvo
- Files:
-
- 5 edited
-
include/libdvo_astro.h (modified) (2 diffs)
-
src/AstromOffsetMapIO.c (modified) (8 diffs)
-
src/AstromOffsetMapOps.c (modified) (13 diffs)
-
src/AstromOffsetMapUtils.c (modified) (8 diffs)
-
src/dvo_convert.c (modified) (28 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20150625/Ohana/src/libdvo/include/libdvo_astro.h
r38687 r38693 56 56 float dX; 57 57 float dY; 58 float * *dXv;59 float * *dYv;58 float *dXv; 59 float *dYv; 60 60 unsigned int tableID; 61 61 unsigned int imageID; … … 65 65 typedef struct { 66 66 int Nmap; 67 int NMAP; 67 68 AstromOffsetMap **map; 68 69 int *imageIDtoTableSeq; -
branches/eam_branches/ipp-20150625/Ohana/src/libdvo/src/AstromOffsetMapIO.c
r38687 r38693 11 11 FTable ftable; 12 12 ftable.header = &theader; 13 ftable.buffer = NULL; 13 14 14 15 FILE *f = fopen (filename, "r"); … … 42 43 int NrowsTotal = ftable.header[0].Naxis[1]; 43 44 int Nblocks = (NrowsTotal % Nrows) ? (int) (NrowsTotal / Nrows) + 1 : (NrowsTotal / Nrows); 45 46 // allocate the full array up front. passes through AstromOffsetMapAppendToTable 47 // check the current allocation and will bump the allocation as needed. 48 ALLOCATE (table, AstromOffsetTable, 1); 49 ALLOCATE (table->map, AstromOffsetMap *, NrowsTotal); 50 table->Nmap = 0; 51 table->NMAP = NrowsTotal; 52 53 // on each call to gfits_fread_ftable_range, we need to reset the FILE pointer to the 54 // beginning of the data block. again this seems a little wrong. 55 off_t diskStart = ftello (f); 44 56 45 57 int i; … … 51 63 52 64 table = AstromOffsetMapAppendToTable (table, map_disk, Nmap); 53 gfits_free_table (&ftable); 65 66 // XXX this is kind of hack-ish: gfits_fread_ftable_range modifies Naxis[1] to the 67 // number of rows actually read, but this makes a subsequent read invalid. I'm 68 // resetting the value of Naxis[1] before the next read to deal with this problem. 69 // But is there a more consistent way to address this? 70 71 // Answer: the FTable structure could include information about the table 72 // representation on disk, including start,Nrows values. I'm not going to mess 73 // around with that just now. 74 75 ftable.header[0].Naxis[1] = NrowsTotal; 76 fseeko (f, diskStart, SEEK_SET); 54 77 } 55 78 AstromOffsetTableSetIDs (table); 56 79 gfits_free_header (ftable.header); 80 gfits_free_table (&ftable); 57 81 } else { 58 82 … … 162 186 table->map[i][0].Nx = map_disk[i].Nx; 163 187 table->map[i][0].Ny = map_disk[i].Ny; 164 table->map[i][0].tableID = map_disk[i].tableID;165 table->map[i][0].imageID = map_disk[i].imageID;188 table->map[i][0].tableID = map_disk[i].tableID; 189 table->map[i][0].imageID = map_disk[i].imageID; 166 190 167 191 // STORE THESE VALUES? … … 172 196 table->map[i][0].keep = TRUE; 173 197 174 ALLOCATE (table->map[i][0].dXv, float *, map_disk[i].Nx);175 ALLOCATE (table->map[i][0].dYv, float *, map_disk[i].Nx);176 177 for (j = 0; j < map_disk[i].Nx; j++) {178 ALLOCATE (table->map[i][0].dXv[j], float, map_disk[i].Ny);179 ALLOCATE (table->map[i][0].dYv[j], float, map_disk[i].Ny); 180 181 for (k = 0; k < map_disk[i].Ny; k++) {182 table->map[i][0].dXv[j ][k] = map_disk[i].dXv[j][k];183 table->map[i][0].dYv[j ][k] = map_disk[i].dYv[j][k];198 int Nx = table->map[i][0].Nx; 199 int Ny = table->map[i][0].Ny; 200 201 ALLOCATE (table->map[i][0].dXv, float, Nx*Ny); 202 ALLOCATE (table->map[i][0].dYv, float, Nx*Ny); 203 204 for (j = 0; j < Nx; j++) { 205 for (k = 0; k < Ny; k++) { 206 table->map[i][0].dXv[j + k*Nx] = map_disk[i].dXv[j][k]; 207 table->map[i][0].dYv[j + k*Nx] = map_disk[i].dYv[j][k]; 184 208 } 185 209 } … … 209 233 map_disk[Ndisk].dY = table->map[i][0].dY; 210 234 211 for (j = 0; j < map_disk[Ndisk].Nx; j++) { 212 for (k = 0; k < map_disk[Ndisk].Ny; k++) { 213 map_disk[Ndisk].dXv[j][k] = table->map[i][0].dXv[j][k]; 214 map_disk[Ndisk].dYv[j][k] = table->map[i][0].dYv[j][k]; 235 int Nx = table->map[i][0].Nx; 236 int Ny = table->map[i][0].Ny; 237 238 for (j = 0; j < Nx; j++) { 239 for (k = 0; k < Ny; k++) { 240 map_disk[Ndisk].dXv[j][k] = table->map[i][0].dXv[j + k*Nx]; 241 map_disk[Ndisk].dYv[j][k] = table->map[i][0].dYv[j + k*Nx]; 215 242 } 216 243 for (k = map_disk[Ndisk].Ny; k < 6; k++) { … … 242 269 } else { 243 270 Nstart = table->Nmap; 271 if (table->Nmap + Nmap > table->NMAP) { 272 table->NMAP = table->Nmap + Nmap; 273 REALLOCATE (table->map, AstromOffsetMap *, table->NMAP); 274 } 244 275 table->Nmap += Nmap; 245 REALLOCATE (table->map, AstromOffsetMap *, table->Nmap);246 276 } 247 277 … … 264 294 table->map[N][0].keep = TRUE; 265 295 266 ALLOCATE (table->map[N][0].dXv, float *, map_disk[i].Nx);267 ALLOCATE (table->map[N][0].dYv, float *, map_disk[i].Nx);268 269 for (j = 0; j < map_disk[i].Nx; j++) {270 ALLOCATE (table->map[N][0].dXv[j], float, map_disk[i].Ny);271 ALLOCATE (table->map[N][0].dYv[j], float, map_disk[i].Ny); 272 273 for (k = 0; k < map_disk[i].Ny; k++) {274 table->map[N][0].dXv[j ][k] = map_disk[i].dXv[j][k];275 table->map[N][0].dYv[j ][k] = map_disk[i].dYv[j][k];296 int Nx = table->map[N][0].Nx; 297 int Ny = table->map[N][0].Ny; 298 299 ALLOCATE (table->map[N][0].dXv, float, Nx*Ny); 300 ALLOCATE (table->map[N][0].dYv, float, Nx*Ny); 301 302 for (j = 0; j < Nx; j++) { 303 for (k = 0; k < Ny; k++) { 304 table->map[N][0].dXv[j + k*Nx] = map_disk[i].dXv[j][k]; 305 table->map[N][0].dYv[j + k*Nx] = map_disk[i].dYv[j][k]; 276 306 } 277 307 } -
branches/eam_branches/ipp-20150625/Ohana/src/libdvo/src/AstromOffsetMapOps.c
r37807 r38693 12 12 // given x,y find the offset (x-direction) at that location from the map 13 13 14 float **V = xdir ? map->dXv : map->dYv; 14 int Nx = map->Nx; 15 int Ny = map->Ny; 16 17 float *V = xdir ? map->dXv : map->dYv; 15 18 16 19 // if there is no spatial information, the value at the point is the value in the map 17 if (( map->Nx == 1) && (map->Ny == 1)) return V[0][0];20 if ((Nx == 1) && (Ny == 1)) return V[0]; 18 21 19 22 // if there is no spatial information in 1D, the interpolation is 1D 20 if ( map->Nx == 1) {23 if (Nx == 1) { 21 24 float ymo = y * map->dY - 0.5; 22 25 int ymi = floor(ymo); 23 ymi = MAX(0,MIN( map->Ny - 2, ymi)); // force range of ymi to be 0,Ny-2 (Ny must be > 1)26 ymi = MAX(0,MIN(Ny - 2, ymi)); // force range of ymi to be 0,Ny-2 (Ny must be > 1) 24 27 25 28 float ymf = ymo - ymi; 26 29 27 float value = ymf * V[ 0][ymi+1] + (1.0 - ymf) * V[0][ymi];30 float value = ymf * V[ymi+1] + (1.0 - ymf) * V[ymi]; 28 31 return value; 29 32 } 30 33 31 34 // if there is no spatial information in 1D, the interpolation is 1D 32 if ( map->Ny == 1) {35 if (Ny == 1) { 33 36 float xmo = x * map->dX - 0.5; 34 37 int xmi = floor(xmo); 35 xmi = MAX(0,MIN( map->Nx - 2, xmi)); // force range of ymi to be 0,Nx-2 (Nx must be > 1)38 xmi = MAX(0,MIN(Nx - 2, xmi)); // force range of ymi to be 0,Nx-2 (Nx must be > 1) 36 39 37 40 float xmf = xmo - xmi; 38 41 39 float value = xmf * V[xmi+1] [0] + (1.0 - xmf) * V[xmi][0];42 float value = xmf * V[xmi+1] + (1.0 - xmf) * V[xmi]; 40 43 return value; 41 44 } … … 45 48 float xmo = x * map->dX - 0.5; 46 49 int xmi = floor(xmo); 47 xmi = MAX(0,MIN( map->Nx - 2, xmi)); // force range of ymi to be 0,Nx-150 xmi = MAX(0,MIN(Nx - 2, xmi)); // force range of ymi to be 0,Nx-1 48 51 float xmf = xmo - xmi; 49 52 50 53 float ymo = y * map->dY - 0.5; 51 54 int ymi = floor(ymo); 52 ymi = MAX(0,MIN( map->Ny - 2, ymi)); // force range of ymi to be 0,Ny-255 ymi = MAX(0,MIN(Ny - 2, ymi)); // force range of ymi to be 0,Ny-2 53 56 float ymf = ymo - ymi; 54 57 55 float V00 = V[xmi+0 ][ymi+0];56 float V01 = V[xmi+0 ][ymi+1];57 float V10 = V[xmi+1 ][ymi+0];58 float V11 = V[xmi+1 ][ymi+1];58 float V00 = V[xmi+0 + (ymi+0)*Nx]; 59 float V01 = V[xmi+0 + (ymi+1)*Nx]; 60 float V10 = V[xmi+1 + (ymi+0)*Nx]; 61 float V11 = V[xmi+1 + (ymi+1)*Nx]; 59 62 60 63 float Vx0 = V10*xmf + V00*(1.0 - xmf); … … 78 81 79 82 // choose to map direction: 80 float * *V= xdir ? map->dXv : map->dYv;83 float *Vptr = xdir ? map->dXv : map->dYv; 81 84 82 85 // special cases: … … 88 91 89 92 vstats_getstats_f (f, NULL, NULL, Npts, &stats); 90 V [0][0] = stats.mean;93 Vptr[0] = stats.mean; 91 94 return TRUE; 92 95 } … … 352 355 for (iy = 0; iy < Ny; iy++) { 353 356 int I = ix + Nx * iy; 354 V [ix][iy] = B[I][0];357 Vptr[I] = B[I][0]; 355 358 // error[ix][iy] = sqrt(A[I][I]); 356 359 } … … 376 379 377 380 // choose to map direction: 378 float * *V= xdir ? map->dXv : map->dYv;381 float *Vptr = xdir ? map->dXv : map->dYv; 379 382 380 383 // measure clipped median in each bin … … 422 425 if (Nvalue[I] > 5) { 423 426 vstats_getstats (values[I], NULL, NULL, Nvalue[I], &stats); 424 V [ix][iy] = stats.mean;427 Vptr[I] = stats.mean; 425 428 } else { 426 V [ix][iy] = NAN;429 Vptr[I] = NAN; 427 430 } 428 431 } … … 453 456 int ix, iy; 454 457 455 float * *Vfix = NULL;456 ALLOCATE (Vfix, float *, Nx);458 float *Vfix = NULL; 459 ALLOCATE (Vfix, float, Nx*Ny); 457 460 for (ix = 0; ix < Nx; ix++) { 458 ALLOCATE (Vfix[ix], float, Ny); 459 for (iy = 0; iy < Ny; iy++) { 460 Vfix[ix][iy] = NAN; 461 for (iy = 0; iy < Ny; iy++) { 462 Vfix[ix + iy*Nx] = NAN; 461 463 } 462 464 } … … 468 470 for (ix = 0; ix < Nx; ix++) { 469 471 for (iy = 0; iy < Ny; iy++) { 470 float value = xdir ? map->dXv[ix][iy] : map->dYv[ix][iy]; 472 int I = ix + iy*Nx; 473 float value = xdir ? map->dXv[I] : map->dYv[I]; 471 474 if (isnan(value)) continue; 472 475 mean += value; … … 479 482 for (ix = 0; ix < Nx; ix++) { 480 483 for (iy = 0; iy < Ny; iy++) { 481 482 float value = xdir ? map->dXv[ ix][iy] : map->dYv[ix][iy];484 int I = ix + iy*Nx; 485 float value = xdir ? map->dXv[I] : map->dYv[I]; 483 486 if (!isnan(value)) { 484 Vfix[ ix][iy] = value;487 Vfix[I] = value; 485 488 continue; 486 489 } … … 499 502 if (ny < 0) continue; 500 503 if (ny >= Ny) continue; 501 float value = xdir ? map->dXv[nx][ny] : map->dYv[nx][ny]; 504 int I = ix + iy*Nx; 505 float value = xdir ? map->dXv[I] : map->dYv[I]; 502 506 if (isnan(value)) continue; 503 507 … … 508 512 // if there are no valid (non-NAN) local pixels, use global mean 509 513 meanLocal = (npixLocal > 0.0) ? meanLocal / npixLocal : mean; 510 Vfix[ ix][iy] = meanLocal;514 Vfix[I] = meanLocal; 511 515 } 512 516 } … … 515 519 for (ix = 0; ix < Ny; ix++) { 516 520 for (iy = 0; iy < Ny; iy++) { 521 int I = ix + iy*Nx; 517 522 if (xdir) { 518 map->dXv[ ix][iy] = Vfix[ix][iy];523 map->dXv[I] = Vfix[I]; 519 524 } else { 520 map->dYv[ix][iy] = Vfix[ix][iy]; 521 } 522 } 523 } 524 for (ix = 0; ix < Nx; ix++) { 525 free (Vfix[ix]); 525 map->dYv[I] = Vfix[I]; 526 } 527 } 526 528 } 527 529 free (Vfix); -
branches/eam_branches/ipp-20150625/Ohana/src/libdvo/src/AstromOffsetMapUtils.c
r37807 r38693 36 36 map->keep = TRUE; // output map size 37 37 38 ALLOCATE (map->dXv, float *, map->Nx); 39 ALLOCATE (map->dYv, float *, map->Nx); 40 41 int j, k; 42 for (j = 0; j < map->Nx; j++) { 43 ALLOCATE (map->dXv[j], float, map->Ny); 44 ALLOCATE (map->dYv[j], float, map->Ny); 45 46 for (k = 0; k < map->Ny; k++) { 47 map->dXv[j][k] = 0.0; 48 map->dYv[j][k] = 0.0; 38 ALLOCATE (map->dXv, float, Nx*Ny); 39 ALLOCATE (map->dYv, float, Nx*Ny); 40 41 int j, k; 42 for (j = 0; j < Nx; j++) { 43 for (k = 0; k < Ny; k++) { 44 map->dXv[j + k*Nx] = 0.0; 45 map->dYv[j + k*Nx] = 0.0; 49 46 } 50 47 } … … 56 53 57 54 if (!map) return; 58 59 int j;60 for (j = 0; j < map->Nx; j++) {61 if (map->dXv) free (map->dXv[j]);62 if (map->dYv) free (map->dYv[j]);63 }64 55 65 56 free (map->dXv); … … 76 67 77 68 // rather than try to figure out how to resize, and free/allocate, lets just free the old arrays and make new ones 78 for (j = 0; j < map->Nx; j++) {79 if (map->dXv) free (map->dXv[j]);80 if (map->dYv) free (map->dYv[j]);81 }82 69 free (map->dXv); 83 70 free (map->dYv); … … 90 77 map->keep = TRUE; // output map size 91 78 92 ALLOCATE (map->dXv, float *, map->Nx); 93 ALLOCATE (map->dYv, float *, map->Nx); 94 95 for (j = 0; j < map->Nx; j++) { 96 ALLOCATE (map->dXv[j], float, map->Ny); 97 ALLOCATE (map->dYv[j], float, map->Ny); 98 99 for (k = 0; k < map->Ny; k++) { 100 map->dXv[j][k] = 0.0; 101 map->dYv[j][k] = 0.0; 79 ALLOCATE (map->dXv, float, Nx*Ny); 80 ALLOCATE (map->dYv, float, Nx*Ny); 81 82 for (j = 0; j < Nx; j++) { 83 for (k = 0; k < Ny; k++) { 84 map->dXv[j + k*Nx] = 0.0; 85 map->dYv[j + k*Nx] = 0.0; 102 86 } 103 87 } … … 116 100 tgt->tableID = map->tableID; 117 101 118 int j, k; 119 for (j = 0; j < tgt->Nx; j++) { 120 for (k = 0; k < map->Ny; k++) { 121 tgt->dXv[j][k] = map->dXv[j][k]; 122 tgt->dYv[j][k] = map->dYv[j][k]; 102 int Nx = map->Nx; 103 int Ny = map->Ny; 104 105 int j, k; 106 for (j = 0; j < Nx; j++) { 107 for (k = 0; k < Ny; k++) { 108 tgt->dXv[j + k*Nx] = map->dXv[j + k*Nx]; 109 tgt->dYv[j + k*Nx] = map->dYv[j + k*Nx]; 123 110 } 124 111 } … … 139 126 tgt->keep = src->keep; 140 127 141 int j, k; 142 for (j = 0; j < tgt->Nx; j++) { 143 for (k = 0; k < src->Ny; k++) { 144 tgt->dXv[j][k] = src->dXv[j][k]; 145 tgt->dYv[j][k] = src->dYv[j][k]; 128 int Nx = src->dX; 129 int Ny = src->dY; 130 131 int j, k; 132 for (j = 0; j < Nx; j++) { 133 for (k = 0; k < Ny; k++) { 134 tgt->dXv[j + k*Nx] = src->dXv[j + k*Nx]; 135 tgt->dYv[j + k*Nx] = src->dYv[j + k*Nx]; 146 136 } 147 137 } … … 153 143 if (!table) return; 154 144 155 int i , j;145 int i; 156 146 for (i = 0; i < table->Nmap; i++) { 157 for (j = 0; j < table->map[i][0].Nx; j++) {158 free (table->map[i][0].dXv[j]);159 free (table->map[i][0].dYv[j]);160 }161 147 if (!table->map[i]) continue; 162 148 FREE (table->map[i][0].dXv); … … 260 246 } 261 247 248 int Nx = map->Nx; 249 int Ny = map->Ny; 250 262 251 fprintf (f, "imageID: %d, tableID: %d (dX: %f, dY: %f), keep: %d\n", map->imageID, map->tableID, map->dX, map->dY, map->keep); 263 252 int ix, iy; 264 253 fprintf (f, "dXv map:\n"); 265 for (ix = 0; ix < map->Nx; ix++) {266 for (iy = 0; iy < map->Ny; iy++) {267 fprintf (f, "%9.5f ", map->dXv[ix ][iy]);254 for (ix = 0; ix < Nx; ix++) { 255 for (iy = 0; iy < Ny; iy++) { 256 fprintf (f, "%9.5f ", map->dXv[ix + iy*Nx]); 268 257 } 269 258 fprintf (f, "\n"); 270 259 } 271 260 fprintf (f, "dYv map:\n"); 272 for (ix = 0; ix < map->Nx; ix++) {273 for (iy = 0; iy < map->Ny; iy++) {274 fprintf (f, "%9.5f ", map->dYv[ix ][iy]);261 for (ix = 0; ix < Nx; ix++) { 262 for (iy = 0; iy < Ny; iy++) { 263 fprintf (f, "%9.5f ", map->dYv[ix + iy*Nx]); 275 264 } 276 265 fprintf (f, "\n"); -
branches/eam_branches/ipp-20150625/Ohana/src/libdvo/src/dvo_convert.c
r38590 r38693 77 77 average = Average_PS1_V4alt_ToInternal (tmpAverage, *Naverage); 78 78 free (tmpAverage); 79 ftable[0].buffer = NULL; 79 80 *format = DVO_FORMAT_PS1_V4; 80 81 return (average); … … 91 92 average = Average_PS1_V5alt_ToInternal (tmpAverage, *Naverage); 92 93 free (tmpAverage); 94 ftable[0].buffer = NULL; 93 95 *format = DVO_FORMAT_PS1_V5; 94 96 return (average); 95 97 } 96 98 97 # define CONVERT_FORMAT(NAME, FORMAT, TYPE) \98 if (!strcmp (extname, NAME)) { \99 Average_##TYPE *tmpAverage; \100 tmpAverage = gfits_table_get_Average_##TYPE (ftable, Naverage, NULL, &nativeBytes); \101 if (!tmpAverage) { \102 fprintf (stderr, "ERROR: failed to read averages\n"); \103 exit (2); \104 } \99 # define CONVERT_FORMAT(NAME, FORMAT, TYPE) \ 100 if (!strcmp (extname, NAME)) { \ 101 Average_##TYPE *tmpAverage; \ 102 tmpAverage = gfits_table_get_Average_##TYPE (ftable, Naverage, NULL, &nativeBytes); \ 103 if (!tmpAverage) { \ 104 fprintf (stderr, "ERROR: failed to read averages\n"); \ 105 exit (2); \ 106 } \ 105 107 average = Average_##TYPE##_ToInternal (tmpAverage, *Naverage, primary); \ 106 free (tmpAverage); \ 107 *format = DVO_FORMAT_##FORMAT; \ 108 free (tmpAverage); \ 109 ftable[0].buffer = NULL; \ 110 *format = DVO_FORMAT_##FORMAT; \ 108 111 return (average); } 109 112 … … 141 144 int AverageToFtable (FTable *ftable, Average *average, off_t Naverage, DVOCatFormat format, SecFilt *primary, int swapFromNative) { 142 145 143 # define FORMAT_CASE(FORMAT, TYPE) \146 # define FORMAT_CASE(FORMAT, TYPE) \ 144 147 case DVO_FORMAT_##FORMAT: { \ 145 148 Average_##TYPE *tmpAverage; \ 146 tmpAverage = AverageInternalTo_##TYPE (average, Naverage, primary); \147 gfits_table_set_Average_##TYPE (ftable, tmpAverage, Naverage, swapFromNative); \148 free (tmpAverage);\149 break; }149 tmpAverage = AverageInternalTo_##TYPE (average, Naverage, primary); \ 150 gfits_table_set_Average_##TYPE (ftable, tmpAverage, Naverage, swapFromNative); \ 151 free (tmpAverage); \ 152 break; } 150 153 151 154 /* convert from the internal format */ … … 205 208 measure = Measure_PS1_V4alt_ToInternal (average, tmpMeasure, *Nmeasure); 206 209 free (tmpMeasure); 210 ftable[0].buffer = NULL; 207 211 *format = DVO_FORMAT_PS1_V4; 208 212 return (measure); … … 222 226 measure = Measure_PS1_V5alt_ToInternal (average, tmpMeasure, *Nmeasure); 223 227 free (tmpMeasure); 228 ftable[0].buffer = NULL; 224 229 *format = DVO_FORMAT_PS1_V5; 225 230 return (measure); 226 231 } 227 232 228 # define CONVERT_FORMAT(NAME, FORMAT, TYPE, ABS_COORDS) \233 # define CONVERT_FORMAT(NAME, FORMAT, TYPE, ABS_COORDS) \ 229 234 if (!strcmp (extname, NAME)) { \ 230 235 Measure_##TYPE *tmpMeasure; \ 231 tmpMeasure = gfits_table_get_Measure_##TYPE (ftable, Nmeasure, NULL, &nativeBytes); \232 if (!tmpMeasure) {\233 fprintf (stderr, "ERROR: failed to read measures\n"); \234 exit (2);\235 }\236 myAssert (ABS_COORDS || average, "conversion to internal needs average table"); \236 tmpMeasure = gfits_table_get_Measure_##TYPE (ftable, Nmeasure, NULL, &nativeBytes); \ 237 if (!tmpMeasure) { \ 238 fprintf (stderr, "ERROR: failed to read measures\n"); \ 239 exit (2); \ 240 } \ 241 myAssert (ABS_COORDS || average, "conversion to internal needs average table"); \ 237 242 measure = Measure_##TYPE##_ToInternal (average, tmpMeasure, *Nmeasure); \ 238 243 free (tmpMeasure); \ 244 ftable[0].buffer = NULL; \ 239 245 *format = DVO_FORMAT_##FORMAT; \ 240 246 return (measure); } … … 274 280 int MeasureToFtable (FTable *ftable, Average *average, Measure *measure, off_t Nmeasure, DVOCatFormat format, int swapFromNative) { 275 281 276 # define FORMAT_CASE(FORMAT, TYPE, ABS_COORDS) \277 case DVO_FORMAT_##FORMAT: {\278 Measure_##TYPE *tmpMeasure;\279 myAssert (ABS_COORDS || average, "conversion from internal needs average table"); \280 tmpMeasure = MeasureInternalTo_##TYPE (average, measure, Nmeasure); \281 gfits_table_set_Measure_##TYPE (ftable, tmpMeasure, Nmeasure, swapFromNative); \282 free (tmpMeasure);\283 break; }282 # define FORMAT_CASE(FORMAT, TYPE, ABS_COORDS) \ 283 case DVO_FORMAT_##FORMAT: { \ 284 Measure_##TYPE *tmpMeasure; \ 285 myAssert (ABS_COORDS || average, "conversion from internal needs average table"); \ 286 tmpMeasure = MeasureInternalTo_##TYPE (average, measure, Nmeasure); \ 287 gfits_table_set_Measure_##TYPE (ftable, tmpMeasure, Nmeasure, swapFromNative); \ 288 free (tmpMeasure); \ 289 break; } 284 290 285 291 /* convert from the internal format */ … … 324 330 } 325 331 326 # define SKIPPING_FORMAT(NAME, FORMAT, TYPE) \332 # define SKIPPING_FORMAT(NAME, FORMAT, TYPE) \ 327 333 if (!strcmp (extname, NAME)) { \ 328 334 fprintf (stderr, "ERROR: format %s not defined for missing, skipping\n", NAME); \ 329 *Nmissing = 0; \330 return NULL; \331 } 332 333 # define CONVERT_FORMAT(NAME, FORMAT, TYPE) \335 *Nmissing = 0; \ 336 return NULL; \ 337 } 338 339 # define CONVERT_FORMAT(NAME, FORMAT, TYPE) \ 334 340 if (!strcmp (extname, NAME)) { \ 335 341 Missing_##TYPE *tmpMissing; \ … … 339 345 exit (2); \ 340 346 } \ 341 missing = Missing_##TYPE##_ToInternal (tmpMissing, *Nmissing); \347 missing = Missing_##TYPE##_ToInternal (tmpMissing, *Nmissing); \ 342 348 free (tmpMissing); \ 349 ftable[0].buffer = NULL; \ 343 350 *format = DVO_FORMAT_##FORMAT; \ 344 351 return (missing); } … … 410 417 secfilt = SecFilt_PS1_V5alt_ToInternal (tmpSecFilt, *Nsecfilt); 411 418 free (tmpSecFilt); 419 ftable[0].buffer = NULL; 412 420 *format = DVO_FORMAT_PS1_V5; 413 421 return (secfilt); … … 415 423 416 424 417 # define CONVERT_FORMAT(NAME, FORMAT, TYPE) \418 if (!strcmp (extname, NAME)) { \419 SecFilt_##TYPE *tmpSecFilt; \425 # define CONVERT_FORMAT(NAME, FORMAT, TYPE) \ 426 if (!strcmp (extname, NAME)) { \ 427 SecFilt_##TYPE *tmpSecFilt; \ 420 428 tmpSecFilt = gfits_table_get_SecFilt_##TYPE (ftable, Nsecfilt, NULL, &nativeBytes); \ 421 if (!tmpSecFilt) { \ 422 fprintf (stderr, "ERROR: failed to read secfilts\n"); \ 423 exit (2); \ 424 } \ 425 secfilt = SecFilt_##TYPE##_ToInternal (tmpSecFilt, *Nsecfilt); \ 426 free (tmpSecFilt); \ 427 *format = DVO_FORMAT_##FORMAT; \ 429 if (!tmpSecFilt) { \ 430 fprintf (stderr, "ERROR: failed to read secfilts\n"); \ 431 exit (2); \ 432 } \ 433 secfilt = SecFilt_##TYPE##_ToInternal (tmpSecFilt, *Nsecfilt); \ 434 free (tmpSecFilt); \ 435 ftable[0].buffer = NULL; \ 436 *format = DVO_FORMAT_##FORMAT; \ 428 437 return (secfilt); } 429 438 … … 461 470 int SecFiltToFtable (FTable *ftable, SecFilt *secfilt, off_t Nsecfilt, DVOCatFormat format, int swapFromNative) { 462 471 463 # define FORMAT_CASE(FORMAT, TYPE) \464 case DVO_FORMAT_##FORMAT: {\465 SecFilt_##TYPE *tmpSecFilt;\466 tmpSecFilt = SecFiltInternalTo_##TYPE (secfilt, Nsecfilt);\467 gfits_table_set_SecFilt_##TYPE (ftable, tmpSecFilt, Nsecfilt, swapFromNative); \468 free (tmpSecFilt);\469 break; }472 # define FORMAT_CASE(FORMAT, TYPE) \ 473 case DVO_FORMAT_##FORMAT: { \ 474 SecFilt_##TYPE *tmpSecFilt; \ 475 tmpSecFilt = SecFiltInternalTo_##TYPE (secfilt, Nsecfilt); \ 476 gfits_table_set_SecFilt_##TYPE (ftable, tmpSecFilt, Nsecfilt, swapFromNative); \ 477 free (tmpSecFilt); \ 478 break; } 470 479 471 480 /* convert from the internal format */ … … 519 528 lensing = Lensing_PS1_V5_R0_ToInternal (tmpLensing, *Nlensing); 520 529 free (tmpLensing); 530 ftable[0].buffer = NULL; 521 531 *format = DVO_FORMAT_PS1_V5; 522 532 return (lensing); } … … 531 541 lensing = Lensing_PS1_V5_R1_ToInternal (tmpLensing, *Nlensing); 532 542 free (tmpLensing); 543 ftable[0].buffer = NULL; 533 544 *format = DVO_FORMAT_PS1_V5; 534 545 return (lensing); } … … 543 554 lensing = Lensing_PS1_V5_R2_ToInternal (tmpLensing, *Nlensing); 544 555 free (tmpLensing); 556 ftable[0].buffer = NULL; 545 557 *format = DVO_FORMAT_PS1_V5; 546 558 return (lensing); } 547 559 548 # define SKIPPING_FORMAT(NAME, FORMAT, TYPE) \560 # define SKIPPING_FORMAT(NAME, FORMAT, TYPE) \ 549 561 if (!strcmp (extname, NAME)) { \ 550 562 fprintf (stderr, "ERROR: format %s not defined for lensing, skipping\n", NAME); \ 551 *Nlensing = 0; \552 return NULL; \553 } 554 555 # define CONVERT_FORMAT(NAME, FORMAT, TYPE) \563 *Nlensing = 0; \ 564 return NULL; \ 565 } 566 567 # define CONVERT_FORMAT(NAME, FORMAT, TYPE) \ 556 568 if (!strcmp (extname, NAME)) { \ 557 569 Lensing_##TYPE *tmpLensing; \ … … 561 573 exit (2); \ 562 574 } \ 563 lensing = Lensing_##TYPE##_ToInternal (tmpLensing, *Nlensing); \575 lensing = Lensing_##TYPE##_ToInternal (tmpLensing, *Nlensing); \ 564 576 free (tmpLensing); \ 577 ftable[0].buffer = NULL; \ 565 578 *format = DVO_FORMAT_##FORMAT; \ 566 579 return (lensing); } … … 601 614 int LensingToFtable (FTable *ftable, Lensing *lensing, off_t Nlensing, DVOCatFormat format, int swapFromNative) { 602 615 603 # define FORMAT_CASE(FORMAT, TYPE) \604 case DVO_FORMAT_##FORMAT: {\605 Lensing_##TYPE *tmpLensing;\606 tmpLensing = LensingInternalTo_##TYPE (lensing, Nlensing);\607 gfits_table_set_Lensing_##TYPE (ftable, tmpLensing, Nlensing, swapFromNative); \608 free (tmpLensing);\609 break; }616 # define FORMAT_CASE(FORMAT, TYPE) \ 617 case DVO_FORMAT_##FORMAT: { \ 618 Lensing_##TYPE *tmpLensing; \ 619 tmpLensing = LensingInternalTo_##TYPE (lensing, Nlensing); \ 620 gfits_table_set_Lensing_##TYPE (ftable, tmpLensing, Nlensing, swapFromNative); \ 621 free (tmpLensing); \ 622 break; } 610 623 611 624 /* convert from the internal format */ … … 658 671 lensobj = Lensobj_PS1_V5_R0_ToInternal (tmpLensobj, *Nlensobj); 659 672 free (tmpLensobj); 673 ftable[0].buffer = NULL; 660 674 *format = DVO_FORMAT_PS1_V5; 661 675 return (lensobj); } 662 676 663 # define SKIPPING_FORMAT(NAME, FORMAT, TYPE) \677 # define SKIPPING_FORMAT(NAME, FORMAT, TYPE) \ 664 678 if (!strcmp (extname, NAME)) { \ 665 679 fprintf (stderr, "ERROR: format %s not defined for lensobj, skipping\n", NAME); \ 666 *Nlensobj = 0; \667 return NULL; \668 } 669 670 # define CONVERT_FORMAT(NAME, FORMAT, TYPE) \680 *Nlensobj = 0; \ 681 return NULL; \ 682 } 683 684 # define CONVERT_FORMAT(NAME, FORMAT, TYPE) \ 671 685 if (!strcmp (extname, NAME)) { \ 672 686 Lensobj_##TYPE *tmpLensobj; \ … … 676 690 exit (2); \ 677 691 } \ 678 lensobj = Lensobj_##TYPE##_ToInternal (tmpLensobj, *Nlensobj); \692 lensobj = Lensobj_##TYPE##_ToInternal (tmpLensobj, *Nlensobj); \ 679 693 free (tmpLensobj); \ 694 ftable[0].buffer = NULL; \ 680 695 *format = DVO_FORMAT_##FORMAT; \ 681 696 return (lensobj); } … … 716 731 int LensobjToFtable (FTable *ftable, Lensobj *lensobj, off_t Nlensobj, DVOCatFormat format, int swapFromNative) { 717 732 718 # define FORMAT_CASE(FORMAT, TYPE) \719 case DVO_FORMAT_##FORMAT: {\720 Lensobj_##TYPE *tmpLensobj;\721 tmpLensobj = LensobjInternalTo_##TYPE (lensobj, Nlensobj);\722 gfits_table_set_Lensobj_##TYPE (ftable, tmpLensobj, Nlensobj, swapFromNative); \723 free (tmpLensobj);\724 break; }733 # define FORMAT_CASE(FORMAT, TYPE) \ 734 case DVO_FORMAT_##FORMAT: { \ 735 Lensobj_##TYPE *tmpLensobj; \ 736 tmpLensobj = LensobjInternalTo_##TYPE (lensobj, Nlensobj); \ 737 gfits_table_set_Lensobj_##TYPE (ftable, tmpLensobj, Nlensobj, swapFromNative); \ 738 free (tmpLensobj); \ 739 break; } 725 740 726 741 /* convert from the internal format */ … … 764 779 } 765 780 766 # define SKIPPING_FORMAT(NAME, FORMAT, TYPE) \781 # define SKIPPING_FORMAT(NAME, FORMAT, TYPE) \ 767 782 if (!strcmp (extname, NAME)) { \ 768 783 fprintf (stderr, "ERROR: format %s not defined for starpar, skipping\n", NAME); \ 769 *Nstarpar = 0; \770 return NULL; \771 } 772 773 # define CONVERT_FORMAT(NAME, FORMAT, TYPE) \784 *Nstarpar = 0; \ 785 return NULL; \ 786 } 787 788 # define CONVERT_FORMAT(NAME, FORMAT, TYPE) \ 774 789 if (!strcmp (extname, NAME)) { \ 775 790 StarPar_##TYPE *tmpStarPar; \ … … 779 794 exit (2); \ 780 795 } \ 781 starpar = StarPar_##TYPE##_ToInternal (tmpStarPar, *Nstarpar); \796 starpar = StarPar_##TYPE##_ToInternal (tmpStarPar, *Nstarpar); \ 782 797 free (tmpStarPar); \ 798 ftable[0].buffer = NULL; \ 783 799 *format = DVO_FORMAT_##FORMAT; \ 784 800 return (starpar); } … … 819 835 int StarParToFtable (FTable *ftable, StarPar *starpar, off_t Nstarpar, DVOCatFormat format, int swapFromNative) { 820 836 821 # define FORMAT_CASE(FORMAT, TYPE) \822 case DVO_FORMAT_##FORMAT: {\823 StarPar_##TYPE *tmpStarPar;\824 tmpStarPar = StarParInternalTo_##TYPE (starpar, Nstarpar);\825 gfits_table_set_StarPar_##TYPE (ftable, tmpStarPar, Nstarpar, swapFromNative); \826 free (tmpStarPar);\827 break; }837 # define FORMAT_CASE(FORMAT, TYPE) \ 838 case DVO_FORMAT_##FORMAT: { \ 839 StarPar_##TYPE *tmpStarPar; \ 840 tmpStarPar = StarParInternalTo_##TYPE (starpar, Nstarpar); \ 841 gfits_table_set_StarPar_##TYPE (ftable, tmpStarPar, Nstarpar, swapFromNative); \ 842 free (tmpStarPar); \ 843 break; } 828 844 829 845 /* convert from the internal format */ … … 868 884 } 869 885 870 # define SKIPPING_FORMAT(NAME, FORMAT, TYPE) \886 # define SKIPPING_FORMAT(NAME, FORMAT, TYPE) \ 871 887 if (!strcmp (extname, NAME)) { \ 872 888 fprintf (stderr, "ERROR: format %s not defined for galphot, skipping\n", NAME); \ 873 *Ngalphot = 0; \874 return NULL; \875 } 876 877 # define CONVERT_FORMAT(NAME, FORMAT, TYPE) \889 *Ngalphot = 0; \ 890 return NULL; \ 891 } 892 893 # define CONVERT_FORMAT(NAME, FORMAT, TYPE) \ 878 894 if (!strcmp (extname, NAME)) { \ 879 895 GalPhot_##TYPE *tmpGalPhot; \ … … 883 899 exit (2); \ 884 900 } \ 885 galphot = GalPhot_##TYPE##_ToInternal (tmpGalPhot, *Ngalphot); \901 galphot = GalPhot_##TYPE##_ToInternal (tmpGalPhot, *Ngalphot); \ 886 902 free (tmpGalPhot); \ 903 ftable[0].buffer = NULL; \ 887 904 *format = DVO_FORMAT_##FORMAT; \ 888 905 return (galphot); } … … 923 940 int GalPhotToFtable (FTable *ftable, GalPhot *galphot, off_t Ngalphot, DVOCatFormat format, int swapFromNative) { 924 941 925 # define FORMAT_CASE(FORMAT, TYPE) \926 case DVO_FORMAT_##FORMAT: {\927 GalPhot_##TYPE *tmpGalPhot;\928 tmpGalPhot = GalPhotInternalTo_##TYPE (galphot, Ngalphot);\929 gfits_table_set_GalPhot_##TYPE (ftable, tmpGalPhot, Ngalphot, swapFromNative); \930 free (tmpGalPhot);\931 break; }942 # define FORMAT_CASE(FORMAT, TYPE) \ 943 case DVO_FORMAT_##FORMAT: { \ 944 GalPhot_##TYPE *tmpGalPhot; \ 945 tmpGalPhot = GalPhotInternalTo_##TYPE (galphot, Ngalphot); \ 946 gfits_table_set_GalPhot_##TYPE (ftable, tmpGalPhot, Ngalphot, swapFromNative); \ 947 free (tmpGalPhot); \ 948 break; } 932 949 933 950 /* convert from the internal format */ … … 992 1009 } 993 1010 994 # define CONVERT_FORMAT(NAME, FORMAT, TYPE) \995 if (!strcmp (extname, NAME)) { \996 Image_##TYPE *tmpimage; \997 *format = DVO_FORMAT_##FORMAT; \1011 # define CONVERT_FORMAT(NAME, FORMAT, TYPE) \ 1012 if (!strcmp (extname, NAME)) { \ 1013 Image_##TYPE *tmpimage; \ 1014 *format = DVO_FORMAT_##FORMAT; \ 998 1015 tmpimage = gfits_table_get_Image_##TYPE (ftable, &Nimage, NULL, NULL); \ 999 if (!tmpimage) { \1000 fprintf (stderr, "ERROR: failed to read images\n"); \1001 exit (2); \1002 } \1016 if (!tmpimage) { \ 1017 fprintf (stderr, "ERROR: failed to read images\n"); \ 1018 exit (2); \ 1019 } \ 1003 1020 off_t Nalloc = gfits_data_pad_size(Nimage*sizeof(Image)); \ 1004 1021 ftable[0].buffer = (char *) Image_##TYPE##_ToInternal (tmpimage, Nimage, Nalloc); \ 1005 free (tmpimage); \1006 gfits_free_header (theader); \1007 gfits_table_mkheader_Image (theader); \1008 gfits_modify (theader, "NAXIS2", OFF_T_FMT, 1, Nimage); \1009 theader[0].Naxis[1] = Nimage; \1010 ftable[0].datasize = gfits_data_size (theader); \1022 free (tmpimage); \ 1023 gfits_free_header (theader); \ 1024 gfits_table_mkheader_Image (theader); \ 1025 gfits_modify (theader, "NAXIS2", OFF_T_FMT, 1, Nimage); \ 1026 theader[0].Naxis[1] = Nimage; \ 1027 ftable[0].datasize = gfits_data_size (theader); \ 1011 1028 return (TRUE); } 1012 1029 … … 1037 1054 Nimage = theader[0].Naxis[1]; 1038 1055 1039 # define FORMAT_CASE(FORMAT, TYPE) \1040 case DVO_FORMAT_##FORMAT: { \1056 # define FORMAT_CASE(FORMAT, TYPE) \ 1057 case DVO_FORMAT_##FORMAT: { \ 1041 1058 Image_##TYPE *tmpImage; \ 1042 tmpImage = ImageInternalTo_##TYPE ((Image *) ftable[0].buffer, Nimage); \1043 free (ftable[0].buffer);\1044 gfits_free_header (ftable->header);\1045 gfits_table_set_Image_##TYPE (ftable, tmpImage, Nimage, TRUE); \1046 free (tmpImage);\1047 break; }1059 tmpImage = ImageInternalTo_##TYPE ((Image *) ftable[0].buffer, Nimage); \ 1060 free (ftable[0].buffer); \ 1061 gfits_free_header (ftable->header); \ 1062 gfits_table_set_Image_##TYPE (ftable, tmpImage, Nimage, TRUE); \ 1063 free (tmpImage); \ 1064 break; } 1048 1065 1049 1066 /* convert from the internal format */ 1050 1067 switch (format) { 1051 FORMAT_CASE (ELIXIR, Elixir);1052 FORMAT_CASE (LONEOS, Loneos);1053 FORMAT_CASE (PANSTARRS_DEV_0, Panstarrs_DEV_0);1054 FORMAT_CASE (PANSTARRS_DEV_1, Panstarrs_DEV_1);1055 FORMAT_CASE (PS1_DEV_1, PS1_DEV_1);1056 FORMAT_CASE (PS1_DEV_2, PS1_DEV_2);1057 FORMAT_CASE (PS1_V1, PS1_V1);1058 FORMAT_CASE (PS1_V2, PS1_V2);1059 FORMAT_CASE (PS1_V3, PS1_V3);1060 FORMAT_CASE (PS1_V4, PS1_V4);1061 FORMAT_CASE (PS1_V5, PS1_V5);1062 FORMAT_CASE (PS1_REF, PS1_REF);1063 FORMAT_CASE (PS1_SIM, PS1_SIM);1068 FORMAT_CASE (ELIXIR, Elixir); 1069 FORMAT_CASE (LONEOS, Loneos); 1070 FORMAT_CASE (PANSTARRS_DEV_0, Panstarrs_DEV_0); 1071 FORMAT_CASE (PANSTARRS_DEV_1, Panstarrs_DEV_1); 1072 FORMAT_CASE (PS1_DEV_1, PS1_DEV_1); 1073 FORMAT_CASE (PS1_DEV_2, PS1_DEV_2); 1074 FORMAT_CASE (PS1_V1, PS1_V1); 1075 FORMAT_CASE (PS1_V2, PS1_V2); 1076 FORMAT_CASE (PS1_V3, PS1_V3); 1077 FORMAT_CASE (PS1_V4, PS1_V4); 1078 FORMAT_CASE (PS1_V5, PS1_V5); 1079 FORMAT_CASE (PS1_REF, PS1_REF); 1080 FORMAT_CASE (PS1_SIM, PS1_SIM); 1064 1081 1065 1082 # undef FORMAT_CASE … … 1078 1095 Nrow = vtable[0].Nrow; 1079 1096 1080 # define FORMAT_CASE(FORMAT, TYPE) \1081 case DVO_FORMAT_##FORMAT: { \1082 Image_##TYPE *tmpImage;\1083 /* convert table rows from internal to external format */\1084 for (i = 0; i < Nrow; i++) {\1085 tmpImage = ImageInternalTo_##TYPE ((Image *) vtable[0].buffer[i], 1); \1086 gfits_convert_Image_##TYPE (tmpImage, sizeof(Image_##TYPE), 1);\1087 free (vtable[0].buffer[i]);\1088 vtable[0].buffer[i] = (char *) tmpImage;\1089 }\1090 /* convert header from old format to new format */\1091 gfits_scan (theader, "NAXIS2", OFF_T_FMT, 1, &Nimage);\1092 gfits_free_header (theader);\1093 gfits_table_mkheader_Image_##TYPE (theader);\1094 gfits_modify (theader, "NAXIS2", OFF_T_FMT, 1, Nimage);\1095 theader[0].Naxis[1] = Nimage;\1096 vtable[0].datasize = gfits_data_size (theader);\1097 return (TRUE); }1097 # define FORMAT_CASE(FORMAT, TYPE) \ 1098 case DVO_FORMAT_##FORMAT: { \ 1099 Image_##TYPE *tmpImage; \ 1100 /* convert table rows from internal to external format */ \ 1101 for (i = 0; i < Nrow; i++) { \ 1102 tmpImage = ImageInternalTo_##TYPE ((Image *) vtable[0].buffer[i], 1); \ 1103 gfits_convert_Image_##TYPE (tmpImage, sizeof(Image_##TYPE), 1); \ 1104 free (vtable[0].buffer[i]); \ 1105 vtable[0].buffer[i] = (char *) tmpImage; \ 1106 } \ 1107 /* convert header from old format to new format */ \ 1108 gfits_scan (theader, "NAXIS2", OFF_T_FMT, 1, &Nimage); \ 1109 gfits_free_header (theader); \ 1110 gfits_table_mkheader_Image_##TYPE (theader); \ 1111 gfits_modify (theader, "NAXIS2", OFF_T_FMT, 1, Nimage); \ 1112 theader[0].Naxis[1] = Nimage; \ 1113 vtable[0].datasize = gfits_data_size (theader); \ 1114 return (TRUE); } 1098 1115 1099 1116 1100 1117 /* convert from the internal format */ 1101 1118 switch (format) { 1102 FORMAT_CASE (ELIXIR, Elixir);1103 FORMAT_CASE (LONEOS, Loneos);1104 FORMAT_CASE (PANSTARRS_DEV_0, Panstarrs_DEV_0);1105 FORMAT_CASE (PANSTARRS_DEV_1, Panstarrs_DEV_1);1106 FORMAT_CASE (PS1_DEV_1, PS1_DEV_1);1107 FORMAT_CASE (PS1_DEV_2, PS1_DEV_2);1108 FORMAT_CASE (PS1_V1, PS1_V1);1109 FORMAT_CASE (PS1_V2, PS1_V2);1110 FORMAT_CASE (PS1_V3, PS1_V3);1111 FORMAT_CASE (PS1_V4, PS1_V4);1112 FORMAT_CASE (PS1_V5, PS1_V5);1113 FORMAT_CASE (PS1_REF, PS1_REF);1114 FORMAT_CASE (PS1_SIM, PS1_SIM);1119 FORMAT_CASE (ELIXIR, Elixir); 1120 FORMAT_CASE (LONEOS, Loneos); 1121 FORMAT_CASE (PANSTARRS_DEV_0, Panstarrs_DEV_0); 1122 FORMAT_CASE (PANSTARRS_DEV_1, Panstarrs_DEV_1); 1123 FORMAT_CASE (PS1_DEV_1, PS1_DEV_1); 1124 FORMAT_CASE (PS1_DEV_2, PS1_DEV_2); 1125 FORMAT_CASE (PS1_V1, PS1_V1); 1126 FORMAT_CASE (PS1_V2, PS1_V2); 1127 FORMAT_CASE (PS1_V3, PS1_V3); 1128 FORMAT_CASE (PS1_V4, PS1_V4); 1129 FORMAT_CASE (PS1_V5, PS1_V5); 1130 FORMAT_CASE (PS1_REF, PS1_REF); 1131 FORMAT_CASE (PS1_SIM, PS1_SIM); 1115 1132 1116 1133 # undef FORMAT_CASE
Note:
See TracChangeset
for help on using the changeset viewer.
