00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifdef HAVE_CONFIG_H
00028 # include <config.h>
00029 #endif
00030
00031
00039
00040
00043 #include "xsh_dump.h"
00044
00045 #include <xsh_error.h>
00046 #include <xsh_msg.h>
00047
00048 #include <cpl.h>
00049
00050
00062
00063 cpl_error_code
00064 xsh_print_cpl_propertylist (const cpl_propertylist * pl, long low, long high)
00065 {
00066 cpl_property *prop;
00067 long i = 0;
00068
00069 assure (0 <= low && high <= cpl_propertylist_get_size (pl) && low <= high,
00070 CPL_ERROR_ILLEGAL_INPUT, "Illegal range");
00071
00072
00073 if (pl == NULL) {
00074 xsh_msg ("NULL");
00075 }
00076 else if (cpl_propertylist_is_empty (pl)) {
00077 xsh_msg ("[Empty property list]");
00078 }
00079 else
00080 for (i = low; i < high; i++) {
00081
00082
00083 prop = cpl_propertylist_get ((cpl_propertylist *) pl, i);
00084 check (xsh_print_cpl_property (prop));
00085 }
00086
00087 cleanup:
00088 return cpl_error_get_code ();
00089 }
00090
00091
00099
00100
00101 cpl_error_code
00102 xsh_print_cpl_property (const cpl_property * prop)
00103 {
00104 cpl_type t;
00105
00106 if (prop == NULL) {
00107 xsh_msg ("NULL");
00108 }
00109 else {
00110
00111
00112
00113
00114
00115
00116
00117
00118 xsh_msg ("%s =", cpl_property_get_name (prop));
00119
00120
00121
00122 check (t = cpl_property_get_type (prop));
00123
00124 switch (t & (~CPL_TYPE_FLAG_ARRAY)) {
00125 case CPL_TYPE_CHAR:
00126 if (t & CPL_TYPE_FLAG_ARRAY) {
00127 xsh_msg (" '%s'", cpl_property_get_string (prop));
00128 }
00129 else {
00130
00131 xsh_msg (" %c", cpl_property_get_char (prop));
00132 }
00133 break;
00134 case CPL_TYPE_BOOL:
00135 if (cpl_property_get_bool (prop)) {
00136 xsh_msg (" true");
00137 }
00138 else {
00139 xsh_msg (" false");
00140 }
00141 break;
00142 case CPL_TYPE_UCHAR:
00143 xsh_msg (" %c", cpl_property_get_char (prop));
00144 break;
00145 case CPL_TYPE_INT:
00146 xsh_msg (" %d", cpl_property_get_int (prop));
00147 break;
00148 case CPL_TYPE_UINT:
00149 xsh_msg (" %d", cpl_property_get_int (prop));
00150 break;
00151 case CPL_TYPE_LONG:
00152 xsh_msg (" %ld", cpl_property_get_long (prop));
00153 break;
00154 case CPL_TYPE_ULONG:
00155 xsh_msg (" %ld", cpl_property_get_long (prop));
00156 break;
00157 case CPL_TYPE_FLOAT:
00158 xsh_msg (" %f", cpl_property_get_float (prop));
00159 break;
00160 case CPL_TYPE_DOUBLE:
00161 xsh_msg (" %f", cpl_property_get_double (prop));
00162 break;
00163 case CPL_TYPE_POINTER:
00164 xsh_msg (" POINTER");
00165 break;
00166 case CPL_TYPE_INVALID:
00167 xsh_msg (" INVALID");
00168 break;
00169 default:
00170 xsh_msg (" unrecognized property");
00171 break;
00172 }
00173
00174
00175 if (t & CPL_TYPE_FLAG_ARRAY) {
00176 xsh_msg (" (array size = %ld)", cpl_property_get_size (prop));
00177 }
00178
00179
00180 if (cpl_property_get_comment (prop) != NULL) {
00181 xsh_msg (" %s", cpl_property_get_comment (prop));
00182 }
00183 }
00184
00185 cleanup:
00186 return cpl_error_get_code ();
00187 }
00188
00189
00197
00198 cpl_error_code
00199 xsh_print_cpl_frameset (cpl_frameset * frames)
00200 {
00201
00202
00203 if (frames == NULL) {
00204 xsh_msg ("NULL");
00205 }
00206 else {
00207 cpl_frame *f = NULL;
00208 check (f = cpl_frameset_get_first (frames));
00209
00210 if (f == NULL) {
00211 xsh_msg ("[Empty frame set]");
00212 }
00213 else {
00214 do {
00215 check (xsh_print_cpl_frame (f));
00216 check (f = cpl_frameset_get_next (frames));
00217 }
00218 while (f != NULL);
00219 }
00220 }
00221
00222 cleanup:
00223 return cpl_error_get_code ();
00224 }
00225
00226
00234
00235 cpl_error_code
00236 xsh_print_cpl_frame (const cpl_frame * f)
00237 {
00238 if (f == NULL) {
00239 xsh_msg ("NULL");
00240 }
00241 else {
00242 xsh_msg ("%-7s %-20s '%s'",
00243 xsh_tostring_cpl_frame_group (cpl_frame_get_group (f)),
00244 cpl_frame_get_tag (f) != NULL ? cpl_frame_get_tag (f) : "Null",
00245 cpl_frame_get_filename (f));
00246
00247 xsh_msg_dbg_low ("type \t= %s",
00248 xsh_tostring_cpl_frame_type (cpl_frame_get_type (f)));
00249 xsh_msg_dbg_low ("group \t= %s",
00250 xsh_tostring_cpl_frame_group (cpl_frame_get_group (f)));
00251 xsh_msg_dbg_low ("level \t= %s",
00252 xsh_tostring_cpl_frame_level (cpl_frame_get_level (f)));
00253 }
00254
00255 return cpl_error_get_code ();
00256 }
00257
00258
00264
00265 const char *
00266 xsh_tostring_cpl_frame_type (cpl_frame_type ft)
00267 {
00268 switch (ft) {
00269 case CPL_FRAME_TYPE_NONE:
00270 return "NONE";
00271 break;
00272 case CPL_FRAME_TYPE_IMAGE:
00273 return "IMAGE";
00274 break;
00275 case CPL_FRAME_TYPE_MATRIX:
00276 return "MATRIX";
00277 break;
00278 case CPL_FRAME_TYPE_TABLE:
00279 return "TABLE";
00280 break;
00281 default:
00282 return "unrecognized frame type";
00283 }
00284 }
00285
00286
00292
00293 const char *
00294 xsh_tostring_cpl_frame_group (cpl_frame_group fg)
00295 {
00296 switch (fg) {
00297 case CPL_FRAME_GROUP_NONE:
00298 return "NONE";
00299 break;
00300 case CPL_FRAME_GROUP_RAW:
00301 return CPL_FRAME_GROUP_RAW_ID;
00302 break;
00303 case CPL_FRAME_GROUP_CALIB:
00304 return CPL_FRAME_GROUP_CALIB_ID;
00305 break;
00306 case CPL_FRAME_GROUP_PRODUCT:
00307 return CPL_FRAME_GROUP_PRODUCT_ID;
00308 break;
00309 default:
00310 return "unrecognized frame group";
00311 }
00312 }
00313
00314
00320
00321 const char *
00322 xsh_tostring_cpl_frame_level (cpl_frame_level fl)
00323 {
00324
00325 switch (fl) {
00326 case CPL_FRAME_LEVEL_NONE:
00327 return "NONE";
00328 break;
00329 case CPL_FRAME_LEVEL_TEMPORARY:
00330 return "TEMPORARY";
00331 break;
00332 case CPL_FRAME_LEVEL_INTERMEDIATE:
00333 return "INTERMEDIATE";
00334 break;
00335 case CPL_FRAME_LEVEL_FINAL:
00336 return "FINAL";
00337 break;
00338 default:
00339 return "unrecognized frame level";
00340 }
00341 }
00342
00343
00344
00350
00351 const char *
00352 xsh_tostring_cpl_type (cpl_type t)
00353 {
00354
00355
00356
00357
00358 if (!(t & CPL_TYPE_FLAG_ARRAY))
00359 switch (t & (~CPL_TYPE_FLAG_ARRAY)) {
00360 case CPL_TYPE_CHAR:
00361 return "char";
00362 break;
00363 case CPL_TYPE_UCHAR:
00364 return "uchar";
00365 break;
00366 case CPL_TYPE_BOOL:
00367 return "boolean";
00368 break;
00369 case CPL_TYPE_INT:
00370 return "int";
00371 break;
00372 case CPL_TYPE_UINT:
00373 return "uint";
00374 break;
00375 case CPL_TYPE_LONG:
00376 return "long";
00377 break;
00378 case CPL_TYPE_ULONG:
00379 return "ulong";
00380 break;
00381 case CPL_TYPE_FLOAT:
00382 return "float";
00383 break;
00384 case CPL_TYPE_DOUBLE:
00385 return "double";
00386 break;
00387 case CPL_TYPE_POINTER:
00388 return "pointer";
00389 break;
00390
00391 case CPL_TYPE_INVALID:
00392 return "invalid";
00393 break;
00394 default:
00395 return "unrecognized type";
00396 }
00397 else
00398 switch (t & (~CPL_TYPE_FLAG_ARRAY)) {
00399 case CPL_TYPE_CHAR:
00400 return "string (char array)";
00401 break;
00402 case CPL_TYPE_UCHAR:
00403 return "uchar array";
00404 break;
00405 case CPL_TYPE_BOOL:
00406 return "boolean array";
00407 break;
00408 case CPL_TYPE_INT:
00409 return "int array";
00410 break;
00411 case CPL_TYPE_UINT:
00412 return "uint array";
00413 break;
00414 case CPL_TYPE_LONG:
00415 return "long array";
00416 break;
00417 case CPL_TYPE_ULONG:
00418 return "ulong array";
00419 break;
00420 case CPL_TYPE_FLOAT:
00421 return "float array";
00422 break;
00423 case CPL_TYPE_DOUBLE:
00424 return "double array";
00425 break;
00426 case CPL_TYPE_POINTER:
00427 return "pointer array";
00428 break;
00429
00430 case CPL_TYPE_INVALID:
00431 return "invalid (array)";
00432 break;
00433 default:
00434 return "unrecognized type";
00435 }
00436 }
00437