shapeSize() was wrong for N = 0readSize() of ImageHdu and ImageRaster was wrong for N != 2Raster<T, N> becomes Raster<T, N, TContainer> to work with any contiguous container (with PtrRaster<T, N> = Raster<T, N, T*> and VecRaster<T, N> = Raster<T, N, vector<T>>)ColumnInfo<T> becomes ColumnInfo<T, N> and variable repeatCount becomes method repeatCount() to support multidimensional entriesColumn<T> becomes Column<T, N, TContainer> to support multidimensional entries and to work with any contiguous container (with PtrColumn<T, N> = Column<T, N, T*> and VecColumn<T, N> = Column<T, N, vector<T>>)PtrColumn(info, elementCount, data) becomes PtrColumn(info, rowCount, data) for homogeneity with VecColumnBintableColumns::initSeq() was ill-formed for non-tuple sequencesBintableColumns::readSegmentSeq() with unresolved bound (-1)Raster, Column and Position inherit DataContainer (see below)PtrRaster, VecRaster, PtrColumn and VecColumn are now mere aliasesRaster& or Column& as parameter now accept any type which fullfills Raster or Column requirementsDataContainers fulfill the standard ContiguousContainer requirements (e.g are iterable)DataContainers have vector space arithmetic (e.g. support +, -, *, /)DataContainer::apply() and DataContainer::generate() enable arbitrary element-wise transforms, including with other DataContainers as argumentsColumnInfo has a member shape in lieu of repeatCount to support multidimensional entriesColumn::entry() returns a view as a PtrRaster for multidimensional columnsColumn::elementCount() is deprecated and replaced with standard size()MefFile method names have been standardized (old names are kept for backward compatibility but deprecated)VecRaster::vector() and VecColumn::vector() are deprecated (use container() instead, which performs no copy)Named and Indexed are deprecated (use maker function as())MefFile (e.g. access<ImageRaster>(1) is a shortcut for access<ImageHdu>(1).raster())FileMode::Write added to edit an existing file or create a new oneBintableColumns::readSeq() overloads for homogeneous sequences (returns std::vector<VecColumn<T>>)Record and DataContainers support operator<<()FitsFile::handoverToCfitsio() returns the CFITSIO's fitsfile*ColumnKey and TypedKey)EL_FitsIO -> EleFitsEL_CfitsioWrapper -> EleCfitsioWrapperEL_FitsUtils -> EleFitsUtilsEL_FitsData -> EleFitsDataEL_FitsFile -> EleFitsEL_FitsIO_Examples -> EleFitsExamplesEL_FitsIO_Validation -> EleFitsValidationFitsIO -> FitsEL_FITSIO prefix -> ELEFITSSifFile::header() returns a Header instead of an HduRaster.shape and Column.info become Raster.shape() and Column.info()Raster.data(), Column.data() and Column.elementCount() are not virtual anymore: they call private virtual dataImpl() and Column.elementCountImpl() according to the NVI idiomHdu, ImageHdu and BintableHdu which were moved to Header, ImageRaster and BintableColumnsRecordHdu is renamed as HduHeader, ImageRaster and BintableColumns are responsible for reading and writing header and data unitsVariantValue to prepare migration from boost::any to boost::variant variantFileMode replaces FitsFile::Permission, SifFile::Permission and MefFile::PermissionHduCategory replaces enum HduTypeRecordVector is renamed as RecordVecFitsIOError is renamed as FitsErrorEXTVER keyword and use HDU type to disambiguate name-version couplesHduCategory (e.g. Primary vs. Ext, Data vs. Metadata) than with HduTypeRecordMode controls the behavior of record writing methodsRecordSeq is a shortcut for RecordVec<VariantValue>Region and FileMemRegions are introducedPosition has arithmetics operatorsmakeRaster allows bypassing template parameters to build RastersSegment and FileMemSegments are introducedColumns can be read and written, in addition to tuplesRecordHdu is a deprecated alias to HduHdu, ImageHdu and BintableHdu to read and write records, rasters and columns are deprecated: They should be replaced with analogous methods of Header, ImageRaster and BintableColumnsboost::any: should be replaced with VariantValueFitsFile::Permission is a deprecated alias to FileModeHduType is a deprecated alias to HduCategoryVecRefRaster and VecRefColumnRecordVector is a deprecated alias to RecordVecFitsIOError is a deprecated alias to FitsErrorRaster is refactored, and the value type can be const-qualified for read-only dataPosition is a proper class, instead of a compile-time conditional aliasKeywordCategory is merged into StandardKeyword (named KeywordCategory analogously to HduCategory)Cfitsio namespaces are renamed to disambiguate documentationseqForeach() and seqTransform() loop transparently over various sequences (vector, tuple, array...), which simplifies top-level signaturesEL_FitsIO_ReadStructureMefFile::access(string) checks that extactly one HDU with given name existsColumn values can be accessed directly with operator()Raster and Column values can be accessed with backward (negative) indices through at methodsNamed and Indexed improve readability and safety to read records and columnsRaster and Column define a Value type, Raster define a Dim constantRecordHdu.as() casts to another HDU handlerFitsIOErrorRecordHdu::readKeywords() using new enum KeywordCategoryFitsFile::open is protected again, FitsFile::reopen is more robustany are properly cast to records of complex (when valid)n = -1) can be read and writtenEL_FitsIO_PrintStructure lists HDU characteristics and keywordsFindEL_FitsIO.cmake added to link against the library outside of EDENFitsIOError is used to throw all exceptionsversion() returns the version of EL_FitsIOColumnInfo::repeat -> ColumnInfo::repeatCountEL_FitsIO_PrintSupportedTypes prints supported types for each data class!HDUNAME keyword support for extension nameFitsFile::open throws an error if already openunsigned long records larger than the greatest long cannot be read (CFITSIO bug), although they can be written[foo] bar are correctly written.ImageHdu::resize -> ImageHdu::updateShapeMefFile::hduNames -> MefFile::readHduNamesRecordHdu::keywords -> RecordHdu::readKeywordsRecordHdu::name -> RecordHdu::readNameRecordHdu::rename -> RecordHdu::updateNameColumn::nelements -> Column::elementCountColumn::rows -> Column::rowCountany can be read and writtenRecord<T>::cast<U>() where T and U can be anyRecordVector to find homogeneous records by keywordRecordHdu::parseAllRecords parses a whole header unitImageHdu::readShapeunsigned long records larger than the greatest long cannot be read (CFITSIO bug), although they can be writtenlongs instead size_t`sconst char* values in addition string`unsigned long records (see known bugs)unsigned long records larger than the greatest long cannot be read (CFITSIO bug), although they can be writtenconst char* is not supported; string should be used insteadFile handlers:
Records:
Binary tables: