parseAll()
threw when parsing long string user-defined keywordsColumn
constructors accept int
in addition to long
Position::emtpy()
renamed as Position::empty()
Column::entry()
deprecated and renamed as field()
(name was wrong wrt. the FITS standard)Linx
Linx
in version 6 are unchangedSeq
suffix as n
(e.g. parseSeq()
is now parse_n()
) following standard library conventionBintableColumns::rename()
as update_name()
to emphasize the write operationMefFile
supports backward indexing (e.g. const auto& hdu = f[-2]
)MefFile::remove()
MefFile::strategy()
and classes Strategy
, CompressionAction
and Action
ValidateChecksums
automatically validates and possibly updates checksumsCiteEleFits
adds a citation in the Primary (enabled by default)Quantization
, Gzip
, Rice
...Compress
and CompressAuto
EleFitsReadStructure
prints the compression type (algorithm and losslessness)EleFitsCompress
compresses FITS files according to the desired strategyMefFile
members were removedFits::Raster
with Linx::Raster
)HduCategory
and KeywordCategory
for cleaner API and better performanceEuclid
namespaceBintableColumns::initSeq()
was ill-formed for non-tuple sequencesBintableColumns::readSegmentSeq()
with unresolved bound (-1)BintableColumns::init()
while having accessed another HDU edited the wrong HDUshapeSize()
was wrong for N = 0
readSize()
of ImageHdu
and ImageRaster
was wrong for N != 2
Raster<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 VecColumn
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
requirementsDataContainer
s fulfill the standard ContiguousContainer
requirements (e.g are iterable)DataContainer
s have vector space arithmetic (e.g. support +
, -
, *
, /
)DataContainer::apply()
and DataContainer::generate()
enable arbitrary element-wise transforms, including with other DataContainer
s 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 DataContainer
s support operator<<()
FitsFile::handoverToCfitsio()
returns the CFITSIO's fitsfile*
ColumnKey
and TypedKey
)EL_FitsIO
-> EleFits
EL_CfitsioWrapper
-> EleCfitsioWrapper
EL_FitsUtils
-> EleFitsUtils
EL_FitsData
-> EleFitsData
EL_FitsFile
-> EleFits
EL_FitsIO_Examples
-> EleFitsExamples
EL_FitsIO_Validation
-> EleFitsValidation
FitsIO
-> Fits
EL_FITSIO
prefix -> ELEFITS
SifFile::header()
returns a Header
instead of an Hdu
Raster.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 BintableColumns
RecordHdu
is renamed as Hdu
Header
, 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::Permission
HduCategory
replaces enum HduType
RecordVector
is renamed as RecordVec
FitsIOError
is renamed as FitsError
EXTVER
keyword and use HDU type to disambiguate name-version couplesHduCategory
(e.g. Primary
vs. Ext
, Data
vs. Metadata
) than with HduType
RecordMode
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 Raster
sSegment
and FileMemSegments
are introducedColumn
s can be read and written, in addition to tuplesRecordHdu
is a deprecated alias to Hdu
Hdu
, ImageHdu
and BintableHdu
to read and write records, rasters and columns are deprecated: They should be replaced with analogous methods of Header
, ImageRaster
and BintableColumns
boost::any
: should be replaced with VariantValue
FitsFile::Permission
is a deprecated alias to FileMode
HduType
is a deprecated alias to HduCategory
VecRefRaster
and VecRefColumn
RecordVector
is a deprecated alias to RecordVec
FitsIOError
is a deprecated alias to FitsError
Raster
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_ReadStructure
MefFile::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 handlerFitsIOError
RecordHdu::readKeywords()
using new enum KeywordCategory
FitsFile::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::repeatCount()
EL_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::updateShape()
MefFile::hduNames()
-> MefFile::readHduNames()
RecordHdu::keywords()
-> RecordHdu::readKeywords()
RecordHdu::name()
-> RecordHdu::readName()
RecordHdu::rename()
-> RecordHdu::updateName()
Column::nelements()
-> Column::elementCount()
Column::rows()
-> Column::rowCount()
any
can be read and writtenRecord<T>::cast<U>()
where T
and U
can be any
RecordVector
to find homogeneous records by keywordRecordHdu::parseAllRecords()
parses a whole header unitImageHdu::readShape()
unsigned long
records larger than the greatest long
cannot be read (CFITSIO bug), although they can be writtenlong
s 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: