31 fprintf(stderr, "Error at %s:%d\n", __func__, __LINE__); \
32 if (errno) perror(NULL); \
39 if (cpl_error_get_code()) { \
40 cpl_msg_error(cpl_func, "%s", cpl_error_get_where()); \
45 int main(
int argc,
char *argv[])
49 const int maxsize = 100*1000;
51 cpl_init(CPL_INIT_DEFAULT);
55 "Usage:\n %s [stetson.pho] [stetson.pos] [stetson.fits]\n", argv[0]);
59 const char *filename_pho = argv[1];
60 const char *filename_pos = argv[2];
61 const char *filename_out = argv[3];
63 table = cpl_table_new(maxsize);
72 {
"OBJECT", CPL_TYPE_STRING, NULL},
74 {
"RA" , CPL_TYPE_DOUBLE,
"degree"},
75 {
"DEC", CPL_TYPE_DOUBLE,
"degree"},
78 {
"VAR", CPL_TYPE_FLOAT,
"mag rms"},
85 {
"B" , CPL_TYPE_FLOAT,
"mag"},
86 {
"ERR_B", CPL_TYPE_FLOAT,
"mag"},
87 {
"N_B" , CPL_TYPE_INT, NULL},
88 {
"n_B" , CPL_TYPE_INT, NULL},
90 {
"V" , CPL_TYPE_FLOAT,
"mag"},
91 {
"ERR_V", CPL_TYPE_FLOAT,
"mag"},
92 {
"N_V" , CPL_TYPE_INT, NULL},
93 {
"n_V" , CPL_TYPE_INT, NULL},
95 {
"R" , CPL_TYPE_FLOAT,
"mag"},
96 {
"ERR_R", CPL_TYPE_FLOAT,
"mag"},
97 {
"N_R" , CPL_TYPE_INT, NULL},
98 {
"n_R" , CPL_TYPE_INT, NULL},
100 {
"I" , CPL_TYPE_FLOAT,
"mag"},
101 {
"ERR_I", CPL_TYPE_FLOAT,
"mag"},
102 {
"N_I" , CPL_TYPE_INT, NULL},
103 {
"n_I" , CPL_TYPE_INT, NULL}
109 for (i = 0; i <
sizeof(data) /
sizeof(*data); i++) {
110 cpl_table_new_column (table, data[i].colname, data[i].type);
111 if (data[i].unit != NULL) {
112 cpl_table_set_column_unit(table, data[i].colname, data[i].unit);
129 FILE *file_pho = fopen(filename_pho,
"r");
130 FILE *file_pos = fopen(filename_pos,
"r");
132 if (file_pho == NULL) DIE;
133 if (file_pos == NULL) DIE;
136 while((items_assigned = fscanf(file_pho,
144 &mag[0], &err[0], &N[0], &n[0],
145 &mag[1], &err[1], &N[1], &n[1],
146 &mag[2], &err[2], &N[2], &n[2],
147 &mag[3], &err[3], &N[3], &n[3], &var))
152 printf(
"%d: %s ", items_assigned, name_pho);
153 printf(
"%f %f %d %d ", mag[0], err[0], N[0], n[0]);
154 printf(
"%f %f %d %d ", mag[1], err[1], N[1], n[1]);
155 printf(
"%f %f %d %d ", mag[2], err[2], N[2], n[2]);
156 printf(
"%f %f %d %d ", mag[3], err[3], N[3], n[3]);
159 if (items_assigned != 18) DIE;
170 &dummy, &dummy, &dummy,
171 &dummy, &dummy, &dummy,
172 &dummy, &dummy, &dummy, &dummy,
173 name_pos) != 13) DIE;
175 printf(
"%s (%f, %f)", name_pos, ra, dec);
178 if (strcmp(name_pho, name_pos) != 0) {
179 fprintf(stderr,
"Mismatching OBJECT name: %s (pho), %s (pos)\n",
184 cpl_table_set_string(table, data[0].colname, size, name_pho);
185 cpl_table_set_double(table, data[1].colname, size, ra);
186 cpl_table_set_double(table, data[2].colname, size, dec);
187 cpl_table_set_float (table, data[3].colname, size, var);
189 for (i = 0; i < 4; i++) {
191 if (N[i] == 0 && n[i] != 0) DIE;
192 if (N[i] != 0 && n[i] == 0) DIE;
195 cpl_table_set_float (table, data[i*4+4].colname, size, mag[i]);
196 cpl_table_set_float (table, data[i*4+5].colname, size, err[i]);
197 cpl_table_set_int (table, data[i*4+6].colname, size, N[i]);
198 cpl_table_set_int (table, data[i*4+7].colname, size, n[i]);
200 cpl_table_set_invalid(table, data[i*4+4].colname, size);
201 cpl_table_set_invalid(table, data[i*4+5].colname, size);
202 cpl_table_set_invalid(table, data[i*4+6].colname, size);
203 cpl_table_set_invalid(table, data[i*4+7].colname, size);
216 cpl_table_set_size(table, size);
218 cpl_table_save(table, NULL, NULL, filename_out, CPL_IO_DEFAULT);
222 fprintf(stdout,
"Created %s\n", filename_out);
int main(void)
Generic library tests.