EleFits  5.0.0
A modern C++ API on top of CFITSIO
Static Public Attributes | List of all members
MefFile Class Reference

#include <MefFile.h>

Detailed Description

Multi-Extension FITS file reader-writer.

In addition to FitsFile's methods, this class provides HDU access and creation services.

A MefFile can roughly be seen as a sequence of image HDUs and binary table HDUs (see What's a FITS file?). Methods to access HDUs, header units or data units all return constant references, because they are stateless views on the MefFile object, which is the only handler modified by write operation.

At creation, a MefFile already contains a Primary, which is empty but can be resized and filled. HDUs are accessed either directly by their index, e.g. with access(), or by finding a {type, name, version} triplet with find(). Although it should not be an issue for most files (even with hundreds of HDUs), the second option is much slower because it consists in reading each header unit until a match is found. Once a HDU has been accessed, the reference can be safely reused (please don't re-find an already accessed HDU). It is possible to specify the return type of access() and find() to best fit target usage, e.g.:

const auto& p = f.primary(); // ImageHdu
const auto& hdu = f[1]; // Hdu
const auto& hdu = f.access<Hdu>(1);
const auto& hdu = f.access<ImageHdu>(1);
const auto& hdu = f.access<BintableHdu>(1);
const auto& h = f.access<Header>(1);
const auto& du = f.access<ImageRaster>(1);
const auto& du = f.access<BintableColumns>(1);

Creating extensions can be done in three ways:

Note
Single Image FITS files can be handled by this class, but SifFile is better suited: it is safer and provides shortcuts.
See also
File and HDU handlers
HDU selectors and iterators
Optimization and good practices

Static Public Attributes

static constexpr long primaryIndex = 0
 The index of the Primary HDU. More...
 

Public Member Functions

Construction
virtual ~MefFile ()=default
 Destroy the object and close the file. More...
 
 MefFile (const std::string &filename, FileMode permission)
 Create a new FITS file handler with given filename and permission. More...
 
Properties
long hduCount () const
 Get the number of HDUs. More...
 
std::vector< std::stringreadHduNames ()
 Read the name of each HDU. More...
 
std::vector< std::pair< std::string, long > > readHduNamesVersions ()
 Read the name and version of each HDU. More...
 
Element access
template<class T = Hdu>
const T & access (long index)
 Access the HDU at given 0-based index. More...
 
const Hduoperator[] (long index)
 Shortcut for access<Hdu>(long)
 
template<class T = Hdu>
const T & find (const std::string &name, long version=0)
 Access the first HDU with given name, type and version. More...
 
template<class T = Hdu>
const T & access (const std::string &name, long version=0)
 Access the only HDU with given name, type and version. More...
 
const ImageHduprimary ()
 Access the Primary HDU. More...
 
template<typename THdu = Hdu>
HduSelector< THdu > filter (const HduFilter &categories=HduCategory::Any)
 Get an iterable object which represents a filtered set of HDUs. More...
 
Data modifiers
template<typename T = unsigned char>
const ImageHduappendImageHeader (const std::string &name="", const RecordSeq &records={})
 Append a new image extension with empty data unit (NAXIS = 0).
 
template<typename T , long N = 2>
const ImageHduappendNullImage (const std::string &name, const RecordSeq &records, const Position< N > &shape)
 Append and new image extension and fill the data unit with null values. More...
 
template<typename TRaster >
const ImageHduappendImage (const std::string &name, const RecordSeq &records, const TRaster &raster)
 Append and write a new image extension. More...
 
template<typename... TInfos>
const BintableHduappendBintableHeader (const std::string &name="", const RecordSeq &records={}, const TInfos &... infos)
 Append a binary table extension with empty data unit (0 rows and possibly 0 columns).
 
template<typename... TInfos>
const BintableHduappendNullBintable (const std::string &name, const RecordSeq &records, long rowCount, const TInfos &... infos)
 Append a binary table extension and fill it with null values. More...
 
template<typename... TColumns>
const BintableHduappendBintable (const std::string &name="", const RecordSeq &records={}, const TColumns &... columns)
 Append and write a new binary table extension.
 
template<typename TColumns , std::size_t Size = std::tuple_size<TColumns>::value>
const BintableHduappendBintable (const std::string &name, const RecordSeq &records, const TColumns &columns)
 Append and write a new binary table extension.
 
Deprecated
template<class T = Hdu>
const T & accessFirst (const std::string &name, long version=0)
 Deprecated alias for backward compatibility. More...
 
template<typename THdu = Hdu>
HduSelector< THdu > select (const HduFilter &categories=HduCategory::Any)
 Deprecated alias for backward compatibility. More...
 
const HduinitRecordExt (const std::string &name)
 Append a new Hdu (as an empty ImageHdu) with given name. More...
 
template<typename T , long N>
const ImageHduinitImageExt (const std::string &name, const Position< N > &shape)
 Append a new ImageHdu with given name and shape. More...
 
template<typename TRaster >
const ImageHduassignImageExt (const std::string &name, const TRaster &raster)
 Append an ImageHdu with given name and data. More...
 
template<typename... TInfos>
const BintableHduinitBintableExt (const std::string &name, const TInfos &... header)
 Append a BintableHdu with given name and columns info. More...
 
template<typename... TColumns>
const BintableHduassignBintableExt (const std::string &name, const TColumns &... columns)
 Append a BintableHdu with given name and data. More...
 
template<typename TTuple , std::size_t Size = std::tuple_size<TTuple>::value>
const BintableHduassignBintableExt (const std::string &name, const TTuple &columns)
 Append a BintableHdu with given name and data. More...
 
- Public Member Functions inherited from FitsFile
 FitsFile (const std::string &filename, FileMode permission)
 Create a new FITS file handler with given filename and permission.
 
virtual ~FitsFile ()
 Destroy the object and close the file. More...
 
std::string filename () const
 Get the file name.
 
bool isOpen () const
 Check whether the file is open.
 
void reopen ()
 Reopen the file. More...
 
void close ()
 Close the file. More...
 
void closeAndDelete ()
 Close and delete the file.
 
fitsfile * handoverToCfitsio ()
 Get CFITSIO's fitsfile*. More...
 

Additional Inherited Members


The documentation for this class was generated from the following file: