What's Present, What's Missing

Functionality missing from the initial release falls into two categories: facilities that are designed to be supported but are incompletely implemented, and facilities for which there is no support at present. Functions not supported are, of course, accessible through standard calls to cfitsio. However, calls that modify the data that are not supported by the CCfits library will cause differences between the FITS file and the FITS object. Modifying the fits file using the CCfits interface after using cfitsio calls will likely lead to unexpected results.

In addition, it has not been possible to exercise the entire library before release, particularly because of the many functions implemented as member templates. These are created when an application is linked to the library using either g++ and SunPro CC. Much of the read interface for Table extensions, however, has been tested thoroughly during the development of XSPEC.

Most of the functionality of cfitsio described in Chapter 5 of the cfitsio manual is present, although CCfits is designed to provide atomic read/write operations rather than primitive file manipulation. For example, opening and creating FITS files are private operations which are called by reading and writing constructors. Similarly, errors are treated by C++ exception handling rather than returning status codes, and moving between HDUs within a file is a primitive rather than an atomic operation [in CCfits, operations typically call an internal HDU::makeThisCurrent() call on a specific table or image extension, and then perform the requested read/write operation].

Read/Write operations for keys (in the HDU class) are provided; these implement calls to fits_read_key and fits_update_key respectively. In the case of keywords, which have one of five data types (Integer, Logical, String, Floating and Complex) the user is expected to know the data type of the keyword value in this release. In reading image and table data, intrinsic type conversions are performed as in cfitsio with the exception that reading numeric data into character data is not supported. There is an extensive set of member functions supporting equivalents of most of cfitsio's read/write operations: the classes PHDU [primary HDU] and ExtHDU [with subclasses template <typename t>=""> ImageExt<T>], provide multiple overloaded versions of read and write functions. The Column class, instances of which can be held in Table instances [with subclasses AsciiTable and BinTable] has also an extensive set of read/write operations.

A special constructor is provided which creates a new file with the Primary HDU of a source file. A FITS::copy(const HDU&) function copies HDUs from one file into another. Support for filtering table rows by expression is provided by a FITS::filter( ... ) call which may be used to create a new filtered file or overwrite an existing HDU (see cfitsio manual section 5.6.4).

Functions are provided for adding and deleting columns, and inserting and deleting rows in tables.

HDU objects also have functions to implement writing of history, comment and date keys.

The coordinate library manipulations [cfitsio manual chapter 7] are not supported.

The iterator work functions [cfitsio manual chapter 6] are not supported. Many of the functions provided are easier to implement using the properties of the standard library, since the standard library containers either allow vectorized operations (in the case of valarrays) or standard library algorithms that take iterators or pointers. In some ways the fits_iterate_data function provide an alternative, approach to the same need for encapsulation addressed by CCfits.

The hierarchical grouping routines are not supported.

Explicit opening of in-memory data sets as described in Chapter 9 of the manual is not supported since none of the FITS constructors call the appropriate cfitsio primitives. The extended file name syntax described in chapters 10 and 11 of the cfitsio manual is not yet supported as it internally creates in-memory objects. This will be supported in a future release.


Generated on Thu Jun 28 11:49:08 2007 for CCfits by  doxygen 1.4.7