ifw-daq  1.0.0
IFW Data Acquisition modules
cfitsio.hpp
Go to the documentation of this file.
1 /**
2  * @file
3  * @ingroup daq_ocm_libfits
4  * @copyright 2021 ESO - European Southern Observatory
5  *
6  * @brief Contains functions and data structures related to cfitsio.
7  */
8 #ifndef DAQ_OCM_DAQ_FITS_CFITSIO_HPP_
9 #define DAQ_OCM_DAQ_FITS_CFITSIO_HPP_
10 #include <cfitsio/fitsio.h>
11 #include <memory>
12 
13 namespace daq::fits {
14 
15 /**
16  * Represents errors from cfitsio.
17  *
18  * @ingroup daq_ocm_libfits
19  */
20 class CfitsioError : public std::runtime_error {
21 public:
22  CfitsioError(int status, char const* message);
23  CfitsioError(int status, std::string const& message);
24 
25  /**
26  * @return cfitsio status code causing the exception.
27  */
28  int GetStatus() const noexcept;
29 
30 private:
31  int m_status;
32 };
33 
34 /**
35  * Default close function that is used by UniqueFitsFile as a deleter.
36  *
37  * @ingroup daq_ocm_libfits
38  */
39 void DefaultClose(fitsfile* ptr) noexcept;
40 
41 /**
42  * Defines unique ownership type to cfitsio fitsfile.
43  *
44  * @ingroup daq_ocm_libfits
45  */
46 using UniqueFitsFile = std::unique_ptr<fitsfile, void (*)(fitsfile*) noexcept>;
47 
48 /**
49  * Creates empty FITS file using @c fits_create_file and returns a pointer with a deleter that will
50  * close the file.
51  *
52  * @ingroup daq_ocm_libfits
53  */
54 UniqueFitsFile CreateEmpty(char const* filename);
55 
56 /**
57  * Initializes an empty FITS file with a primary HDU
58  *
59  * Mandatory keywords are set and primary HDU added if necessary.
60  *
61  * Mandatory keywords are initialized as:
62  * - SIMPLE = T
63  * - BITPIX = 8
64  * - NAXIS = 0
65  *
66  * @pre ptr != nullptr
67  *
68  * @param ptr Valid FITS file.
69  * @throw CfitsioError on error.
70  */
71 void InitPrimaryHduNoImage(fitsfile* ptr);
72 
73 } // namespace daq::fits
74 
75 #endif // #define DAQ_OCM_DAQ_FITS_CFITSIO_HPP_
daq::fits::CreateEmpty
UniqueFitsFile CreateEmpty(char const *filename)
Creates empty FITS file using fits_create_file and returns a pointer with a deleter that will close t...
Definition: cfitsio.cpp:79
daq::fits::CfitsioError
Represents errors from cfitsio.
Definition: cfitsio.hpp:20
daq::fits
Definition: cfitsio.cpp:14
daq::fits::UniqueFitsFile
std::unique_ptr< fitsfile, void(*)(fitsfile *) noexcept > UniqueFitsFile
Defines unique ownership type to cfitsio fitsfile.
Definition: cfitsio.hpp:46
daq::fits::CfitsioError::GetStatus
int GetStatus() const noexcept
Definition: cfitsio.cpp:31
daq::fits::InitPrimaryHduNoImage
void InitPrimaryHduNoImage(fitsfile *ptr)
Initializes an empty FITS file with a primary HDU.
Definition: cfitsio.cpp:35
daq::fits::DefaultClose
void DefaultClose(fitsfile *ptr) noexcept
Default close function that is used by UniqueFitsFile as a deleter.
Definition: cfitsio.cpp:23
daq::fits::CfitsioError::CfitsioError
CfitsioError(int status, char const *message)
Definition: cfitsio.cpp:16