Changeset 3441 for trunk/psLib/src/astronomy/psMetadataIO.c
- Timestamp:
- Mar 17, 2005, 9:01:01 AM (21 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/astronomy/psMetadataIO.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/astronomy/psMetadataIO.c
r3381 r3441 9 9 * @author Ross Harman, MHPCC 10 10 * 11 * @version $Revision: 1.2 2$ $Name: not supported by cvs2svn $12 * @date $Date: 2005-03- 07 20:58:50$11 * @version $Revision: 1.23 $ $Name: not supported by cvs2svn $ 12 * @date $Date: 2005-03-17 19:01:01 $ 13 13 * 14 14 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 315 315 type = metadataItem->type; 316 316 317 switch(type) { 318 case PS_META_BOOL: 319 fprintf(fd, format, metadataItem->data.B); 317 // determining the format type 318 char* fType = strchr(format,'%'); 319 if (fType == NULL) { 320 // well, the format contains no reference to the metadataItem's data: 321 // that is truly trival to do! 322 fprintf(fd,format); 323 return success; 324 } 325 326 // skip over any format modifiers 327 const char* formatEnd = format+strlen(format); 328 while ( (fType < formatEnd) && 329 (strchr(" +-01234567890.$#, hlL",*(++fType)) != NULL) ) {} 330 331 #define METADATAITEM_NUMERIC_CAST(FORMAT_TYPE) { \ 332 switch(type) { \ 333 case PS_META_BOOL: \ 334 fprintf(fd, format, (FORMAT_TYPE) metadataItem->data.B); \ 335 break; \ 336 case PS_META_S32: \ 337 fprintf(fd,format,(FORMAT_TYPE) metadataItem->data.S32); \ 338 break; \ 339 case PS_META_F32: \ 340 fprintf(fd, format,(FORMAT_TYPE) metadataItem->data.F32); \ 341 break; \ 342 case PS_META_F64: \ 343 fprintf(fd, format,(FORMAT_TYPE) metadataItem->data.F64); \ 344 break; \ 345 default: \ 346 psError(PS_ERR_BAD_PARAMETER_TYPE,true, \ 347 PS_ERRORTEXT_psMetadata_METATYPE_INVALID, (int)type); \ 348 success = false; \ 349 } \ 350 } 351 352 switch(*fType) { 353 case 'd': 354 case 'i': 355 case 'c': 356 METADATAITEM_NUMERIC_CAST(int) 320 357 break; 321 case PS_META_S32: 322 fprintf(fd,format, metadataItem->data.S32); 358 case 'o': 359 case 'u': 360 case 'x': 361 case 'X': 362 METADATAITEM_NUMERIC_CAST(unsigned int) 323 363 break; 324 case PS_META_F32: 325 fprintf(fd, format, metadataItem->data.F32); 364 case 'e': 365 case 'E': 366 case 'f': 367 case 'F': 368 case 'g': 369 case 'G': 370 case 'a': 371 case 'A': 372 METADATAITEM_NUMERIC_CAST(double) 326 373 break; 327 case PS_META_F64: 328 fprintf(fd, format, metadataItem->data.F64); 374 case 's': 375 if (type == PS_META_STR) { 376 fprintf(fd,format,(char*)metadataItem->data.V); 377 } else { 378 psError(PS_ERR_BAD_PARAMETER_TYPE,true, 379 PS_ERRORTEXT_psMetadata_METATYPE_INVALID, (int)type); 380 success = false; 381 } 329 382 break; 330 case PS_META_STR:331 fprintf(fd,format, (char*)metadataItem->data.V);383 case 'p': 384 fprintf(fd,format,metadataItem->data.V); 332 385 break; 333 386 default: 334 psError(PS_ERR_BAD_PARAMETER_TYPE,true, PS_ERRORTEXT_psMetadata_METATYPE_INVALID, (int)type); 335 success = false; 387 psError(PS_ERR_BAD_PARAMETER_TYPE, true, 388 PS_ERRORTEXT_psMetadata_FORMAT_INVALID, *fType); 389 break; 336 390 } 337 391
Note:
See TracChangeset
for help on using the changeset viewer.
