CCfits: Previous Release Notes

CCfits 2.7

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

Previous Release Notes

Release Notes for Version 2.6 May 2021

Backwards Compatibility Issues:

- When copying keywords from one file to another, copyAllKeys() no longer copies the TYP_CKSUM_KEY, TYP_WCS_KEY, and TYP_CMPRS_KEY keyword types from the infile to the outfile, as they are file-specific keywords. As of 2.6, only TYP_REFSYS_KEY and TYP_USER_KEY keys are copied by default. Note that this affects only the copyAllKeys() function. readAllKeys() uses the same default keyword categories as before.
- As a result of the change described in the previous item, the array returned by the keywordCategories() function no longer applies to readAllKeys().
- For compatibility with C++17, removed dependencies on std::binary_function.

Enhancements:

- Added special treatment to allow the stand-alone CCfits to build the cookbook even when build directory is not named "CCfits".
- Removed FITSBase pattern.
- Added capability for user to specify keyword categories to read/copy.
- Replaced all uses of std::auto_ptr with std::unique_ptr, in tandem with configuration changes to add a C++11 compiler flag when necessary.
- Enable support of long string keywords (which use the CONTINUE key).
- All std::bad_cast exceptions are now caught by reference.

Bug Fixes:

- Bug fix to writeHistory and writeComment functions. When copying via the get/write functions, mult-line input was not properly formatted upon output.
- Bug fix needed for creation of ColumnVectorData<unsigned short> objects.
- Fixes to updating of Columns' internal buffers for certain cases of writes or insertions which add rows to a table. Also includes a speed increase to internal Column write function.
- Bug fix to HDUCreator::getScaling function. If BSCALE keyword isn't found, status flag must be reset to 0. Otherwise later call to fits_get_img_equivtype (if necessary) won't actually do anything. This matters for case where file is changing type from signed to unsigned integer-type, but only has a BZERO keyword.

Release Notes for Version 2.5 Jan 2016

Backwards Compatibility Issues:

- As part of an effort to allow tables to hold multiple columns with the same name (see "Enhancements" section), the Table class now stores Column objects in an internal multimap rather than a map. This affects the public interface in 2 places: the ExtHDU::column() and Table::column() accessor functions. These used to return a std::map reference, but now return a std::multimap (using new typedef 'ColMap' defined in CCfits.h).
- Removed the ImageExt<T>::image() accessor function from the public interface. This was only ever intended for internal use.

Enhancements:

- Added scripts for building with the CMake system, primarily intended for builds on Windows platforms.
- New functions: ExtHDU::copyColumn, HDU::readNextKey, HDU::resetImageRead, and a new Column::read overload for returning a single row into a std::vector.
- Keyword reads can now convert numerical types into strings.
- Added support for variable-width string columns (with new ValueType enum = VTstring).
- Image write functions are now allowed to dynamically increase the size of the outer dimension as needed. The corresponding NAXIS keyword will be updated automatically.
- Tables can now handle having multiple columns with the same column name. (Also see "Backwards Compatibility" section.)
- Added support for read/write of LONGLONG types for images.
- Added handling of 'D' exponent notation when reading keyword values with floating-point types.

Bug Fixes:

- Improved memory caching when reading images, reducing the number of unnecessary disk reads.
- Removed header inclusion of config.h due to potential conflicts with users' customized autotools config.h files.
- HDU's '<<' output operator was not showing output for the highest numbered axis.
- Removed unused NewColumn.h code file.
- Fixed memory leak in internal Column::setLimits function.
- Added #include statements to various files, the absence of which was causing compilation failures on recent Windows Visual Studio builds.
- Added missing 'break' statement for Tlonglong case in internal FITSType2String function.
- Replaced a valarray operation in ColumnVectorData.h file which caused a compiler glitch on certain Mac platforms. (This was previously released as a patch.)
- Fix made to HDU's getHistory and getComments internal search algorithm.
- Fix to FITS::addTable function for case where new table shares its name with a pre-existing HDU but has a different version number.
- Fix to memory management for certain Column write operations.

Release Notes for Version 2.4 Dec 2011

Fixes:

- Compressed images may now be written with BITPIX=32. This fix was made by internally storing the image array as int types rather than longs (see backwards compatibility issues).
- For variable-width columns, the write functions now allow all of the same type conversions as had been working with fixed-width columns.
- The null-value versions of the primary and extension image write functions are now working.
- The basic FITS constructor can now handle files containing multiple extensions which have the same name AND version number. (Note that this is still not a recommended file structure.)
- BinTable's addColumn function now automatically first makes itself the current extension so that the user doesn't have to call ExtHDU::makeThisCurrent().
- Bug fix to Table's deleteRows function. This error had been preventing the output stream operator from working on vector columns after rows had been deleted.

Backwards Compatibility Issue:

- For images of BITPIX=32, CCfits now stores the values in a valarray of ints rather than longs. This affects the public interface in one place: the return type of the ImageExt<T>::image() function.

Release Notes For Version 2.3 Nov 2010

Enhancements to CCfits:

- 3 previously protected functions are now made public: Keyword::keytype(), PHDU::simple(), and PHDU::extend().
- New function: ExtHDU::isCompressed().
- Uses less memory during the image loading operations for primary and extension HDUs.
- When the basic version of the FITS constructor is called in Write mode on a pre-existing file, it will now automatically read ALL of the headers rather than just the primary. This makes it conform more closely to the Read mode behavior, and it makes things easier when trying to append new HDUs to files containing an unknown number of existing HDUs. (See Backwards Compatibility)

Bug Fixes:

- In the 2 FITS class deleteExtension functions, the index numbers of all HDU objects which follow the deleted are now decremented by one. (See Backwards Compatibility)
- Fix to the PHDU write functions which take a nullValue argument. Neither could be instantiated due to an invalid static_cast of pointers.
- Fix needed for the FITS::copy function to allow the Columns in the newly created HDU to be modifiable.
- The basic version of the FITS constructor, when in Write mode, was ignoring the user's readDataFlag and optional primary keys input.
- An error in the (seldom instantiated) Image class assignment operator was preventing compilation with the nvcc compiler.
- On 64-bit Linux only, a bad cast error is triggered when trying to read an image of type signed or unsigned long, into a valarray with the opposite signed/unsigned qualifier.
- All of the FITS::read functions now perform a check to prevent multiple entries of the same HDU from appearing in the FITS::extension() multimap.
- For case of Columns of type unsigned longs, the object's lower data limit value was left unitialized.

Backwards Compatibility Issues:

- If you're calling either FITS::deleteExtension function AND you have saved references to any of the ExtHDU objects which follow the deleted object, note that those ExtHDUs will now have an index number 1 less than before. Their indices will now correctly match what's actually in the FITS file.
- When using the basic version of the FITS constructor in Write mode on a pre-existing file, you no longer need to first call FITS::read to access any of the ExtHDUs. These are now read automatically, same as when this constructor is called in Read mode. However this change shouldn't require the removal of the FITS::read calls from your code. They will merely be redundant if left in.

Release Notes For Version 2.2 Sep 2009

Enhancements to CCfits:

- Added an auto-generated pkg-config file to the stand-alone distribution.
- Added an option for case-insensitive searching in the ExtHDU and Table Column get-by-name functions.
- The public functions column() and numCols() have been added to the ExtHDU interface. They were previously available only in the derived Table class.
- New resetRead and getNullValue functions for Column class.
- Improved the documentation for the nullValue versions of the Column read/write member functions.

Bug Fixes:

- Converted non-standard calls to vector and valarray end iterators. These were causing runtime exceptions when built with Microsoft Visual C++ v9.0.
- The Column addNullValue function now works for cases where the null value argument is of a type that requires casting to match the type of data stored in the Column.
- Fix to the Column writeArrays function for the case where valarrays of varying length were sent to fixed-width columns. It was previously sending along a default null value even when the user did not request one.
- Fix for reading and writing complex data types to scalar columns. The first "firstRow" complex values were not being written or read.
- Renamed private FITS::extension() function to extensionMap(). This is to prevent user from having to explicitly declare a const FITS pointer in order to use the public const FITS::extension*() function.

Backwards Compatibility Issue:

- To prevent overloading ambiguity resulting from the new flag added to ExtHDU/Table get-by-name Column functions for case-insensitive searches, the protected column(string,Column*) function has been renamed to setColumn. As this is a protected function, the change should not affect standard usage of CCfits.

Changes for CCfits 2.1 release Nov 2008

- Modified several FITS constructors and FITS::open function to allow proper handling of CFITSIO extended filename syntax.
- Extended filename syntax example added to cookbook.
- Fix made to FITS::read function for case of missing EXTVER keyword when searching for HDU with extver > 1.
- Removed inclusion of the internal-only CFITSIO fitsio2.h file from Column.cxx. LONGLONG limits definitions are now found in fitsio.h.

Changes for CCfits 2.0 release Feb 2008

Enhancements to CCfits:

- Checksum Capability: 4 checksum related functions have been added to the HDU class, which now allows users to set and verify checksums directly from inside CCfits.
- Capturing Error Messages: The FitsException base class now stores its output error message, and it can be retrieved from any of the exception subclass objects with a call to the new FitsException::message() function.
- Improved Keyword Handling: New functions copyAllKeys, keywordCategories, and a second addKey function have been added to the HDU class. The Keyword class now offers a public setValue function to modify an existing keyword. Also the class member documentation for keyword related functions has been upgraded and expanded.
- Image Scaling: In the HDU class (for instances of its PHDU and image ExtHDU subclasses), scale and zero set functions can now write BSCALE and BZERO keywords to the file. A new suppressScaling function has been added to temporarily turn off scaling. The ImageExt<T> class has also been added to the documentation.
- Miscellaneous New Functions:Table::getRowsize() (submitted by Patrik Jonsson), Fits::fitsPointer(), Column::parent().

Bug Fixes:

- FITS constructor in Write mode caused a segmentation fault when used on read-only files. (Reported by Gerard Zins)
- Column write functions were not turning off NULL checking even when the nulval pointer was set to 0. (Reported by Gerard Zins)
- For the FITS constructor which takes an existing FITS object as an argument, when given the filename of an existing file (and without the '!' specifier), it places a new primary HDU in the first extension. It shouldn't allow a write operation at all in this case. (Reported by Andy Beardmore)
- Some additional #include statements are needed for compilation on a test version of g++4.3 (Reported by Aurelien Jarno)

Backwards Compatibility Issues:

- The following documented public access member functions have now been removed or made protected/private. As these functions were either never fully implemented or could not successfully be used from external code, it is hoped that these removals will not break any pre-existing code: FITS::clone, HDU::setKeyWord, the HDU::bitpix set function, the Keyword class constructors.

Changes for CCfits 1.8 release 10/07.

- Fixes made to bugs in Column write and writeArrays functions which were preventing the writing of variable-width columns. Also now allows writing to fixed-width columns with arrays that are shorter than the fixed width.
- The HDU::readAllKeys() function will no longer throw if it is unable to read a particular keyword. Instead it will skip it and move to the next keyword. This was done primarily to prevent it from tripping on undefined keywords.

Changes for CCfits 1.7 release 6/07.

Fixes for the following bugs:

- The FITS::copy function merely wrote the copied HDU to the file, but did not allow it to be accessed for further modifications within CCfits.
- When reading compressed images, CCfits should use the ZBITPIX and ZNAXIS keywords rather than BITPIX and NAXIS. (Fix is based on a patch submitted by Patrik Jonsson.)
- The BSCALE keyword was being ignored if the BZERO keyword didn't also exist.
- Cases of out-of-scope usage of std::string's c_str() pointers, could potentially cause crash. (Fix submitted by Jeremy Sanders.)

Changes for CCfits 1.6 release 11/06

- Added capbility to write compressed images, including 6 new wrapper public functions in FITS class.
- In FITS::addImage, corrected the logic which checks for a pre-existing image extension with the same version number.
- CFITSIO 3.02 renamed fitsfile struct member rice_nbits to noise_nbits. Made corresponding change in copyFitsPtr function in FITSUtil.cxx. As it stands, this makes this version of CCfits incompatible with earlier versions of CFITSIO
- In FITS.h definition, removed both friend declarations of HDUCreator Make functions. It seems neither function needs to be a friend, and one of them is actually private. Some compilers don't allow this (report came from MS VisualC++ user).
- Bug fix in Make function of HDUCreator.cxx. When creating a new ImageExt (and not the primary), it was only passing the version number along for float and double types. This causes problems when there is more than 1 image extension with the same name, and it needs the version number to distinguish them.
- A couple of bug fixes to the first/last/stride version of PHDU read image subset. It was not passing the proper parameters to fits_read_subset, and was not always correctly resizing the internal m_image array.