Changeset 21028 for trunk/psLib/src/fits/psFitsHeader.c
- Timestamp:
- Dec 17, 2008, 10:23:02 AM (17 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/fits/psFitsHeader.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/fits/psFitsHeader.c
r21027 r21028 7 7 * @author Robert DeSonia, MHPCC 8 8 * 9 * @version $Revision: 1.5 0$ $Name: not supported by cvs2svn $10 * @date $Date: 2008-12-17 20: 00:30$9 * @version $Revision: 1.51 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2008-12-17 20:23:02 $ 11 11 * 12 12 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 341 341 break; 342 342 343 case 'K': // long int. can't all fit in a psS32, put in psF64 344 case 'F': 343 case 'K': // long long (64-bit) integer 344 success = psMetadataAddS64(header, PS_LIST_TAIL, keyNameTrans, dupFlag, keyComment, 345 atoll(keyValue)); 346 break; 347 case 'F': // float/double 345 348 success = psMetadataAddF64(header, PS_LIST_TAIL, keyNameTrans, dupFlag, keyComment, 346 349 atof(keyValue)); … … 370 373 break; 371 374 } 372 case 'L': { 375 case 'L': { // Logical (boolean) 373 376 bool temp = (keyValue[0] == 'T') ? 1 : 0; 374 377 success = psMetadataAddBool(header, PS_LIST_TAIL, keyNameTrans, dupFlag, keyComment, temp); … … 589 592 // A regular FITS header 590 593 switch (item->type) { 591 case PS_DATA_BOOL: { 592 int value = item->data.B; 593 fits_update_key(fits->fd, TLOGICAL, name, &value, item->comment, &status); 594 case PS_DATA_BOOL: { 595 int value = item->data.B; 596 fits_update_key(fits->fd, TLOGICAL, name, &value, item->comment, &status); 597 break; 598 } 599 case PS_DATA_S8: 600 fits_update_key(fits->fd, TBYTE, name, &item->data.S8, item->comment, &status); 601 break; 602 case PS_DATA_S16: 603 fits_update_key(fits->fd, TSHORT, name, &item->data.S16, item->comment, &status); 604 break; 605 case PS_DATA_S32: 606 fits_update_key(fits->fd, TINT, name, &item->data.S32, item->comment, &status); 607 break; 608 case PS_DATA_S64: 609 fits_update_key(fits->fd, TLONGLONG, name, &item->data.S64, item->comment, &status); 610 break; 611 case PS_DATA_U8: { 612 unsigned short int temp = item->data.U8; 613 fits_update_key(fits->fd, TUSHORT, name, &temp, item->comment, &status); 614 break; 615 } 616 case PS_DATA_U16: 617 fits_update_key(fits->fd, TUSHORT, name, &item->data.U16, item->comment, &status); 618 break; 619 case PS_DATA_U32: 620 fits_update_key(fits->fd, TUINT, name, &item->data.U32, item->comment, &status); 621 break; 622 case PS_DATA_U64: 623 // CFITSIO doesn't support unsigned 64-bit integers; attempt to write as signed 624 if (item->data.U64 > PS_MAX_S64) { 625 psWarning("Unable to write 64-bit unsigned integer for item %s to header: " 626 "value %" PRIu64 " out of range", name, item->data.U64); 594 627 break; 595 628 } 596 case PS_DATA_S8: 597 fits_update_key(fits->fd, TBYTE, name, &item->data.S8, item->comment, &status); 598 break; 599 case PS_DATA_S16: 600 fits_update_key(fits->fd, TSHORT, name, &item->data.S16, item->comment, &status); 601 break; 602 case PS_DATA_S32: 603 fits_update_key(fits->fd, TINT, name, &item->data.S32, item->comment, &status); 604 break; 605 case PS_DATA_U8: { 606 unsigned short int temp = item->data.U8; 607 fits_update_key(fits->fd, TUSHORT, name, &temp, item->comment, &status); 608 } 609 break; 610 case PS_DATA_U16: 611 fits_update_key(fits->fd, TUSHORT, name, &item->data.U16, item->comment, &status); 612 break; 613 case PS_DATA_U32: 614 fits_update_key(fits->fd, TUINT, name, &item->data.U32, item->comment, &status); 615 break; 616 case PS_DATA_F32: { 617 int infCheck = 0; // Result of isinf() 618 if (isnan(item->data.F32)) { 619 fits_update_key(fits->fd, TSTRING, name, "NaN", item->comment, &status); 620 } else if ((infCheck = isinf(item->data.F32)) != 0) { 621 if (infCheck == 1) { 622 fits_update_key(fits->fd, TSTRING, name, "Inf", item->comment, &status); 623 } else { 624 fits_update_key(fits->fd, TSTRING, name, "-Inf", item->comment, &status); 625 } 626 } else { 627 fits_update_key(fits->fd, TFLOAT, name, &item->data.F32, item->comment, 628 &status); 629 } 630 break; 631 } 632 case PS_DATA_F64: { 633 int infCheck = 0; // Result of isinf() 634 if (isnan(item->data.F64)) { 635 fits_update_key(fits->fd, TSTRING, name, "NaN", item->comment, &status); 636 } else if ((infCheck = isinf(item->data.F64)) != 0) { 637 if (infCheck == 1) { 638 fits_update_key(fits->fd, TSTRING, name, "Inf", item->comment, &status); 639 } else { 640 fits_update_key(fits->fd, TSTRING, name, "-Inf", item->comment, &status); 641 } 642 } else { 643 fits_update_key(fits->fd, TDOUBLE, name, &item->data.F64, item->comment, 644 &status); 645 } 646 break; 647 } 648 case PS_DATA_STRING: 629 psS64 temp = item->data.U64; // Signed version 630 fits_update_key(fits->fd, TLONGLONG, name, &temp, item->comment, &status); 631 break; 632 case PS_DATA_F32: { 633 int infCheck = 0; // Result of isinf() 634 if (isnan(item->data.F32)) { 635 fits_update_key(fits->fd, TSTRING, name, "NaN", item->comment, &status); 636 } else if ((infCheck = isinf(item->data.F32)) != 0) { 637 if (infCheck == 1) { 638 fits_update_key(fits->fd, TSTRING, name, "Inf", item->comment, &status); 639 } else { 640 fits_update_key(fits->fd, TSTRING, name, "-Inf", item->comment, &status); 641 } 642 } else { 643 fits_update_key(fits->fd, TFLOAT, name, &item->data.F32, item->comment, 644 &status); 645 } 646 break; 647 } 648 case PS_DATA_F64: { 649 int infCheck = 0; // Result of isinf() 650 if (isnan(item->data.F64)) { 651 fits_update_key(fits->fd, TSTRING, name, "NaN", item->comment, &status); 652 } else if ((infCheck = isinf(item->data.F64)) != 0) { 653 if (infCheck == 1) { 654 fits_update_key(fits->fd, TSTRING, name, "Inf", item->comment, &status); 655 } else { 656 fits_update_key(fits->fd, TSTRING, name, "-Inf", item->comment, &status); 657 } 658 } else { 659 fits_update_key(fits->fd, TDOUBLE, name, &item->data.F64, item->comment, 660 &status); 661 } 662 break; 663 } 664 case PS_DATA_STRING: 649 665 fits_update_key(fits->fd, TSTRING, name, item->data.V, item->comment, &status); 650 666 break; 651 default: // all other META types are ignored 652 psWarning("Attempt to write metadata type %x to FITS header ignored.\n", item->type); 667 default: // all other META types are ignored 668 psWarning("Attempt to write metadata %s of type %x to FITS header ignored.\n", 669 item->name, item->type); 653 670 break; 654 671 }
Note:
See TracChangeset
for help on using the changeset viewer.
