LALPulsar  6.1.0.1-89842e6
FITSFileIO.h
Go to the documentation of this file.
1 //
2 // Copyright (C) 2016 Karl Wette
3 //
4 // This program is free software; you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation; either version 2 of the License, or
7 // (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with with program; see the file COPYING. If not, write to the
16 // Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17 // MA 02110-1301 USA
18 //
19 
20 #ifndef _FITSFILEIO_H
21 #define _FITSFILEIO_H
22 
23 #include <stdint.h>
24 #include <gsl/gsl_matrix.h>
25 #include <lal/LALStdlib.h>
26 #include <lal/LALVCSInfoType.h>
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
32 ///
33 /// \defgroup FITSFileIO_h Header FITSFileIO.h
34 /// \ingroup lalpulsar_general
35 /// \author Karl Wette
36 /// \brief Routines for reading/writing data to/from FITS files
37 ///
38 
39 /// @{
40 
41 ///
42 /// \name General Definitions
43 ///
44 /// @{
45 
46 ///
47 /// Maximum possible number of FITS array dimensions, and FITS table columns
48 ///
49 #define FFIO_MAX 999
50 
51 ///
52 /// Representation of a FITS file
53 ///
54 typedef struct tagFITSFile FITSFile;
55 
56 /// @}
57 
58 ///
59 /// \name Open/Close FITS File, and Write History Information to Primary FITS Header-Data Unit
60 ///
61 /// These functions open a FITS file \p file_name for writing or reading, and close a FITS file
62 /// represented by \p file. The current header-data unit (HDU) may be changed, either by seeking a
63 /// named HDU or by returning to the primary (first) HDU. History information may also be written to
64 /// the primary HDU.
65 ///
66 /// @{
68 FITSFile *XLALFITSFileOpenWrite( const CHAR *file_name );
69 FITSFile *XLALFITSFileOpenRead( const CHAR *file_name );
72 int XLALFITSFileWriteHistory( FITSFile *file, const CHAR *format, ... ) _LAL_GCC_PRINTF_FORMAT_( 2, 3 );
75 /// @}
76 
77 ///
78 /// \name Query FITS Header-Data Unit
79 ///
80 /// These function perform various queries of the current FITS header-data unit (HDU):
81 /// - XLALFITSHeaderQueryKeyExists() checks if the given key exists in the current HDU.
82 ///
83 /// @{
84 int XLALFITSHeaderQueryKeyExists( FITSFile *file, const CHAR *key, BOOLEAN *exists );
85 /// @}
86 
87 ///
88 /// \name Write/Read Key-Value Pairs to/from FITS Header-Data Unit
89 ///
90 /// These functions write/read key-value pairs (\p key, \p value) to/from a FITS header-data unit (HDU).
91 /// Scalar ::BOOLEAN, ::UINT2, ::UINT4, ::UINT8, ::INT2, ::INT4, ::INT8, ::REAL4, ::REAL8, ::COMPLEX8, and ::COMPLEX16 values,
92 /// strings, string vectors (\c LALStringVector) and GPS times (\c LIGOTimeGPS) can be written and read.
93 /// A \p comment string describing the value is required when writing to an HDU, and an arbitrary
94 /// formatted comment string can also be written. Units for numeric header values may be specified
95 /// in square brackets after the header key, e.g. "freq [Hz]".
96 ///
97 /// There are some usage restrictions:
98 ///
99 /// - When writing to or reading from the primary HDU, these functions can be used as soon as the
100 /// FITS file is opened.
101 ///
102 /// - When writing to an extension HDU containing an array or table, these functions can only be
103 /// used after data has been written to the array or table.
104 ///
105 /// - When reading from an extension HDU containing an array or table, these functions can only be
106 /// used after the array or table is opened for reading.
107 ///
108 /// @{
109 int XLALFITSHeaderWriteComment( FITSFile *file, const CHAR *format, ... ) _LAL_GCC_PRINTF_FORMAT_( 2, 3 );
110 int XLALFITSHeaderWriteBOOLEAN( FITSFile *file, const CHAR *key, const BOOLEAN value, const CHAR *comment );
111 int XLALFITSHeaderReadBOOLEAN( FITSFile *file, const CHAR *key, BOOLEAN *value );
112 int XLALFITSHeaderWriteUINT2( FITSFile *file, const CHAR *key, const UINT2 value, const CHAR *comment );
113 int XLALFITSHeaderReadUINT2( FITSFile *file, const CHAR *key, UINT2 *value );
114 int XLALFITSHeaderWriteUINT4( FITSFile *file, const CHAR *key, const UINT4 value, const CHAR *comment );
115 int XLALFITSHeaderReadUINT4( FITSFile *file, const CHAR *key, UINT4 *value );
116 int XLALFITSHeaderWriteUINT8( FITSFile *file, const CHAR *key, const UINT8 value, const CHAR *comment );
117 int XLALFITSHeaderReadUINT8( FITSFile *file, const CHAR *key, UINT8 *value );
118 int XLALFITSHeaderWriteINT2( FITSFile *file, const CHAR *key, const INT2 value, const CHAR *comment );
119 int XLALFITSHeaderReadINT2( FITSFile *file, const CHAR *key, INT2 *value );
120 int XLALFITSHeaderWriteINT4( FITSFile *file, const CHAR *key, const INT4 value, const CHAR *comment );
121 int XLALFITSHeaderReadINT4( FITSFile *file, const CHAR *key, INT4 *value );
122 int XLALFITSHeaderWriteINT8( FITSFile *file, const CHAR *key, const INT8 value, const CHAR *comment );
123 int XLALFITSHeaderReadINT8( FITSFile *file, const CHAR *key, INT8 *value );
124 int XLALFITSHeaderWriteREAL4( FITSFile *file, const CHAR *key, const REAL4 value, const CHAR *comment );
125 int XLALFITSHeaderReadREAL4( FITSFile *file, const CHAR *key, REAL4 *value );
126 int XLALFITSHeaderWriteREAL8( FITSFile *file, const CHAR *key, const REAL8 value, const CHAR *comment );
127 int XLALFITSHeaderReadREAL8( FITSFile *file, const CHAR *key, REAL8 *value );
128 int XLALFITSHeaderWriteCOMPLEX8( FITSFile *file, const CHAR *key, const COMPLEX8 value, const CHAR *comment );
130 int XLALFITSHeaderWriteCOMPLEX16( FITSFile *file, const CHAR *key, const COMPLEX16 value, const CHAR *comment );
132 int XLALFITSHeaderWriteString( FITSFile *file, const CHAR *key, const CHAR *value, const CHAR *comment );
133 int XLALFITSHeaderReadString( FITSFile *file, const CHAR *key, CHAR **value );
134 int XLALFITSHeaderWriteStringVector( FITSFile *file, const CHAR *key, const LALStringVector *values, const CHAR *comment );
136 int XLALFITSHeaderWriteGPSTime( FITSFile *file, const CHAR *key, const LIGOTimeGPS *value, const CHAR *comment );
138 /// @}
139 
140 ///
141 /// \name Write/Read Array to/from FITS File
142 ///
143 /// These function write/read arbitrary-dimensional array to/from a FITS image extension data
144 /// unit. A call to XLALFITSArrayOpenWrite() or XLALFITSArrayOpenRead() is required first to
145 /// write/read the dimension count \p ndim and sizes \p dims[]; the functions
146 /// <tt>XLALFITSArrayOpenWrite<i>N</i>()</tt> and <tt>XLALFITSArrayOpenRead<i>N</i>()</tt> are
147 /// convenience functions for 1- and 2-dimensional arrays. The functions
148 /// <tt>XLALFITSArrayWrite<i>TYPE</i>()</tt> and <tt>XLALFITSArrayRead<i>TYPE</i>()</tt> are then
149 /// used to write scalar ::UINT2, ::UINT4, ::UINT8, ::INT2, ::INT4, ::INT8, ::REAL4, and ::REAL8 values to the array
150 /// element indexed by \p idx. For the convenience the functions XLALFITSArrayWriteGSLMatrix() and
151 /// XLALFITSArrayReadGSLMatrix() exist for writing/reading elements to/from a <tt>gsl_matrix</tt>.
152 ///
153 /// @{
154 int XLALFITSArrayOpenWrite( FITSFile *file, const CHAR *name, const size_t ndim, const size_t dims[], const CHAR *comment );
155 int XLALFITSArrayOpenRead( FITSFile *file, const CHAR *name, size_t *ndim, size_t dims[] );
156 int XLALFITSArrayOpenWrite1( FITSFile *file, const CHAR *name, const size_t dim0, const CHAR *comment );
157 int XLALFITSArrayOpenRead1( FITSFile *file, const CHAR *name, size_t *dim0 );
158 int XLALFITSArrayOpenWrite2( FITSFile *file, const CHAR *name, const size_t dim0, const size_t dim1, const CHAR *comment );
159 int XLALFITSArrayOpenRead2( FITSFile *file, const CHAR *name, size_t *dim0, size_t *dim1 );
160 int XLALFITSArrayWriteUINT2( FITSFile *file, const size_t idx[], const UINT2 elem );
161 int XLALFITSArrayReadUINT2( FITSFile *file, const size_t idx[], UINT2 *elem );
162 int XLALFITSArrayWriteUINT4( FITSFile *file, const size_t idx[], const UINT4 elem );
163 int XLALFITSArrayReadUINT4( FITSFile *file, const size_t idx[], UINT4 *elem );
164 int XLALFITSArrayWriteUINT8( FITSFile *file, const size_t idx[], const UINT8 elem );
165 int XLALFITSArrayReadUINT8( FITSFile *file, const size_t idx[], UINT8 *elem );
166 int XLALFITSArrayWriteINT2( FITSFile *file, const size_t idx[], const INT2 elem );
167 int XLALFITSArrayReadINT2( FITSFile *file, const size_t idx[], INT2 *elem );
168 int XLALFITSArrayWriteINT4( FITSFile *file, const size_t idx[], const INT4 elem );
169 int XLALFITSArrayReadINT4( FITSFile *file, const size_t idx[], INT4 *elem );
170 int XLALFITSArrayWriteINT8( FITSFile *file, const size_t idx[], const INT8 elem );
171 int XLALFITSArrayReadINT8( FITSFile *file, const size_t idx[], INT8 *elem );
172 int XLALFITSArrayWriteREAL4( FITSFile *file, const size_t idx[], const REAL4 elem );
173 int XLALFITSArrayReadREAL4( FITSFile *file, const size_t idx[], REAL4 *elem );
174 int XLALFITSArrayWriteREAL8( FITSFile *file, const size_t idx[], const REAL8 elem );
175 int XLALFITSArrayReadREAL8( FITSFile *file, const size_t idx[], REAL8 *elem );
176 int XLALFITSArrayWriteGSLMatrix( FITSFile *file, const size_t idx[], const gsl_matrix *elems );
177 int XLALFITSArrayReadGSLMatrix( FITSFile *file, const size_t idx[], gsl_matrix **elems );
178 /// @}
179 
180 ///
181 /// \name Write/Read Table to/from FITS File
182 ///
183 /// These functions write/read arbitrary tables to/from a FITS binary table extension data unit.
184 /// A call to XLALFITSTableOpenWrite() or XLALFITSTableOpenRead() is required first; the latter
185 /// returns the number of rows in the table \p nrows, if needed. The table columns must then be
186 /// specified using the <tt>XLAL_FITS_TABLE_COLUMN_...()</tt> macros:
187 ///
188 /// First, \ref XLAL_FITS_TABLE_COLUMN_BEGIN(\p record_type) is called, where \p record_type is the
189 /// name of a C structure that will store the values of the columns written to or read from the
190 /// table. For example:
191 ///
192 /// \code
193 /// typedef struct { INT4 index; CHAR name[32]; REAL4 x; } Row
194 /// XLAL_FITS_TABLE_COLUMN_BEGIN(Row);
195 /// \endcode
196 ///
197 /// Next, \ref XLAL_FITS_TABLE_COLUMN_ADD(\p file, \p type, \p field) is called, where \p file is
198 /// the FITS file, \p type is the C type of the field in \p record_type, and \p field is the C
199 /// structure field. For array fields, including fixed-length strings, \ref
200 /// XLAL_FITS_TABLE_COLUMN_ADD_ARRAY(\p file, \p type, \p field) should be used instead. An
201 /// alternative name for the FITS table column can be specified using \ref
202 /// XLAL_FITS_TABLE_COLUMN_ADD_NAMED(\p file, \p type, \p field, \p col_name). For example:
203 ///
204 /// \code
205 /// XLAL_FITS_TABLE_COLUMN_ADD(file, INT4, index);
206 /// XLAL_FITS_TABLE_COLUMN_ADD_ARRAY(file, CHAR, name);
207 /// XLAL_FITS_TABLE_COLUMN_ADD_NAMED(file, REAL4, x, "value");
208 /// \endcode
209 ///
210 /// The <tt>XLAL_FITS_TABLE_COLUMN_PTR_ARRAY_...()</tt> macros are for pointers to C arrays, and the
211 /// <tt>XLAL_FITS_TABLE_COLUMN_PTR_STRUCT_...()</tt> macros are for more complicated C structures
212 /// which contain pointers to other C structures. Units for numeric columns may be specified in
213 /// square brackets after the column name, e.g. "freq [Hz]".
214 ///
215 /// Finally, XLALFITSTableWriteRow() or XLALFITSTableReadRow() are called to write/read table rows;
216 /// the latter returns the number of rows remaining in the table \p rem_nrows, if needed.
217 ///
218 /// @{
221 
222 /// \cond DONT_DOXYGEN
223 int XLALFITSTableColumnAddBOOLEAN( FITSFile *file, const CHAR *col_name, const size_t noffsets, const size_t offsets[2], const void *record, const size_t record_size, const BOOLEAN *field, const size_t field_size );
224 int XLALFITSTableColumnAddUINT2( FITSFile *file, const CHAR *col_name, const size_t noffsets, const size_t offsets[2], const void *record, const size_t record_size, const UINT2 *field, const size_t field_size );
225 int XLALFITSTableColumnAddUINT4( FITSFile *file, const CHAR *col_name, const size_t noffsets, const size_t offsets[2], const void *record, const size_t record_size, const UINT4 *field, const size_t field_size );
226 int XLALFITSTableColumnAddUINT8( FITSFile *file, const CHAR *col_name, const size_t noffsets, const size_t offsets[2], const void *record, const size_t record_size, const UINT8 *field, const size_t field_size );
227 int XLALFITSTableColumnAddINT2( FITSFile *file, const CHAR *col_name, const size_t noffsets, const size_t offsets[2], const void *record, const size_t record_size, const INT2 *field, const size_t field_size );
228 int XLALFITSTableColumnAddINT4( FITSFile *file, const CHAR *col_name, const size_t noffsets, const size_t offsets[2], const void *record, const size_t record_size, const INT4 *field, const size_t field_size );
229 int XLALFITSTableColumnAddINT8( FITSFile *file, const CHAR *col_name, const size_t noffsets, const size_t offsets[2], const void *record, const size_t record_size, const INT8 *field, const size_t field_size );
230 int XLALFITSTableColumnAddREAL4( FITSFile *file, const CHAR *col_name, const size_t noffsets, const size_t offsets[2], const void *record, const size_t record_size, const REAL4 *field, const size_t field_size );
231 int XLALFITSTableColumnAddREAL8( FITSFile *file, const CHAR *col_name, const size_t noffsets, const size_t offsets[2], const void *record, const size_t record_size, const REAL8 *field, const size_t field_size );
232 int XLALFITSTableColumnAddCOMPLEX8( FITSFile *file, const CHAR *col_name, const size_t noffsets, const size_t offsets[2], const void *record, const size_t record_size, const COMPLEX8 *field, const size_t field_size );
233 int XLALFITSTableColumnAddCOMPLEX16( FITSFile *file, const CHAR *col_name, const size_t noffsets, const size_t offsets[2], const void *record, const size_t record_size, const COMPLEX16 *field, const size_t field_size );
234 int XLALFITSTableColumnAddCHAR( FITSFile *file, const CHAR *col_name, const size_t noffsets, const size_t offsets[2], const void *record, const size_t record_size, const void *field, const size_t field_size );
235 int XLALFITSTableColumnAddGPSTime( FITSFile *file, const CHAR *col_name, const size_t noffsets, const size_t offsets[2], const void *record, const size_t record_size, const LIGOTimeGPS *field, const size_t field_size );
236 /// \endcond
237 
238 /// \hideinitializer
239 #define XLAL_FITS_TABLE_COLUMN_BEGIN(record_type) \
240  record_type XLAL_INIT_DECL(_xlal_fits_record_); \
241  size_t _xlal_fits_offsets_[2] = {0};
242 /// \hideinitializer
243 #define XLAL_FITS_TABLE_COLUMN_ADD(file, type, field) \
244  XLALFITSTableColumnAdd ## type (file, #field, 1, _xlal_fits_offsets_, &_xlal_fits_record_, sizeof(_xlal_fits_record_), &(_xlal_fits_record_.field), sizeof(_xlal_fits_record_.field))
245 /// \hideinitializer
246 #define XLAL_FITS_TABLE_COLUMN_ADD_NAMED(file, type, field, col_name) \
247  XLALFITSTableColumnAdd ## type (file, col_name, 1, _xlal_fits_offsets_, &_xlal_fits_record_, sizeof(_xlal_fits_record_), &(_xlal_fits_record_.field), sizeof(_xlal_fits_record_.field))
248 /// \hideinitializer
249 #define XLAL_FITS_TABLE_COLUMN_ADD_ARRAY(file, type, field) \
250  XLALFITSTableColumnAdd ## type (file, #field, 1, _xlal_fits_offsets_, &_xlal_fits_record_, sizeof(_xlal_fits_record_), &(_xlal_fits_record_.field[0]), sizeof(_xlal_fits_record_.field))
251 /// \hideinitializer
252 #define XLAL_FITS_TABLE_COLUMN_ADD_ARRAY_NAMED(file, type, field, col_name) \
253  XLALFITSTableColumnAdd ## type (file, col_name, 1, _xlal_fits_offsets_, &_xlal_fits_record_, sizeof(_xlal_fits_record_), &(_xlal_fits_record_.field[0]), sizeof(_xlal_fits_record_.field))
254 /// \hideinitializer
255 #define XLAL_FITS_TABLE_COLUMN_ADD_ARRAY2(file, type, field) \
256  XLALFITSTableColumnAdd ## type (file, #field, 1, _xlal_fits_offsets_, &_xlal_fits_record_, sizeof(_xlal_fits_record_), &(_xlal_fits_record_.field[0][0]), sizeof(_xlal_fits_record_.field))
257 /// \hideinitializer
258 #define XLAL_FITS_TABLE_COLUMN_ADD_ARRAY2_NAMED(file, type, field, col_name) \
259  XLALFITSTableColumnAdd ## type (file, col_name, 1, _xlal_fits_offsets_, &_xlal_fits_record_, sizeof(_xlal_fits_record_), &(_xlal_fits_record_.field[0][0]), sizeof(_xlal_fits_record_.field))
260 /// \hideinitializer
261 #define XLAL_FITS_TABLE_COLUMN_ADD_PTR_ARRAY(file, type, length, field) \
262  ( _xlal_fits_record_.field = (void*) &(_xlal_fits_record_.field), _xlal_fits_offsets_[0] = (size_t)(((intptr_t) &(_xlal_fits_record_.field)) - ((intptr_t) &_xlal_fits_record_)), XLALFITSTableColumnAdd ## type (file, #field, 2, _xlal_fits_offsets_, _xlal_fits_record_.field, ( length ) * sizeof(_xlal_fits_record_.field[0]), _xlal_fits_record_.field, ( length ) * sizeof(_xlal_fits_record_.field[0])) )
263 /// \hideinitializer
264 #define XLAL_FITS_TABLE_COLUMN_ADD_PTR_ARRAY_NAMED(file, type, length, field, col_name) \
265  ( _xlal_fits_record_.field = (void*) &(_xlal_fits_record_.field), _xlal_fits_offsets_[0] = (size_t)(((intptr_t) &(_xlal_fits_record_.field)) - ((intptr_t) &_xlal_fits_record_)), XLALFITSTableColumnAdd ## type (file, col_name, 2, _xlal_fits_offsets_, _xlal_fits_record_.field, ( length ) * sizeof(_xlal_fits_record_.field[0]), _xlal_fits_record_.field, ( length ) * sizeof(_xlal_fits_record_.field[0])) )
266 /// \hideinitializer
267 #define XLAL_FITS_TABLE_COLUMN_ADD_PTR_ARRAY2(file, type, length, field) \
268  ( _xlal_fits_record_.field = (void*) &(_xlal_fits_record_.field), _xlal_fits_offsets_[0] = (size_t)(((intptr_t) &(_xlal_fits_record_.field)) - ((intptr_t) &_xlal_fits_record_)), XLALFITSTableColumnAdd ## type (file, #field, 2, _xlal_fits_offsets_, _xlal_fits_record_.field, ( length ) * sizeof(_xlal_fits_record_.field[0][0]), _xlal_fits_record_.field, ( length ) * sizeof(_xlal_fits_record_.field[0][0])) )
269 /// \hideinitializer
270 #define XLAL_FITS_TABLE_COLUMN_ADD_PTR_ARRAY2_NAMED(file, type, length, field, col_name) \
271  ( _xlal_fits_record_.field = (void*) &(_xlal_fits_record_.field), _xlal_fits_offsets_[0] = (size_t)(((intptr_t) &(_xlal_fits_record_.field)) - ((intptr_t) &_xlal_fits_record_)), XLALFITSTableColumnAdd ## type (file, col_name, 2, _xlal_fits_offsets_, _xlal_fits_record_.field, ( length ) * sizeof(_xlal_fits_record_.field[0][0]), _xlal_fits_record_.field, ( length ) * sizeof(_xlal_fits_record_.field[0][0])) )
272 /// \hideinitializer
273 #define XLAL_FITS_TABLE_COLUMN_PTR_STRUCT_BEGIN(field, ptr_record_type, length) \
274  ptr_record_type XLAL_INIT_DECL(_xlal_fits_ptr_record_, [length]); \
275  _xlal_fits_record_.field = &_xlal_fits_ptr_record_[0]; \
276  _xlal_fits_offsets_[0] = (size_t)(((intptr_t) &(_xlal_fits_record_.field)) - ((intptr_t) &_xlal_fits_record_));
277 /// \hideinitializer
278 #define XLAL_FITS_TABLE_COLUMN_ADD_PTR_STRUCT_NAMED(file, index, type, field, col_name) \
279  XLALFITSTableColumnAdd ## type (file, col_name, 2, _xlal_fits_offsets_, &_xlal_fits_ptr_record_[0], sizeof(_xlal_fits_ptr_record_), &(_xlal_fits_ptr_record_[index].field), sizeof(_xlal_fits_ptr_record_[index].field))
280 /// \hideinitializer
281 #define XLAL_FITS_TABLE_COLUMN_ADD_PTR_STRUCT_ARRAY_NAMED(file, index, type, field, col_name) \
282  XLALFITSTableColumnAdd ## type (file, col_name, 2, _xlal_fits_offsets_, &_xlal_fits_ptr_record_[0], sizeof(_xlal_fits_ptr_record_), &(_xlal_fits_ptr_record_[index].field[0]), sizeof(_xlal_fits_ptr_record_[index].field))
283 /// \hideinitializer
284 #define XLAL_FITS_TABLE_COLUMN_ADD_PTR_STRUCT_ARRAY2_NAMED(file, index, type, field, col_name) \
285  XLALFITSTableColumnAdd ## type (file, col_name, 2, _xlal_fits_offsets_, &_xlal_fits_ptr_record_[0], sizeof(_xlal_fits_ptr_record_), &(_xlal_fits_ptr_record_[index].field[0][0]), sizeof(_xlal_fits_ptr_record_[index].field))
286 
287 int XLALFITSTableWriteRow( FITSFile *file, const void *record );
288 int XLALFITSTableReadRow( FITSFile *file, void *record, UINT8 *rem_nrows );
289 /// @}
290 
291 /// @}
292 
293 #ifdef __cplusplus
294 }
295 #endif
296 
297 #endif // _FITSFILEIO_H
298 
299 // Local Variables:
300 // c-file-style: "linux"
301 // c-basic-offset: 2
302 // End:
int XLALFITSTableColumnAddCOMPLEX16(FITSFile UNUSED *file, const CHAR UNUSED *col_name, const size_t UNUSED noffsets, const size_t UNUSED offsets[2], const void UNUSED *record, const size_t UNUSED record_size, const COMPLEX16 UNUSED *field, const size_t UNUSED field_size)
Definition: FITSFileIO.c:2497
int XLALFITSTableColumnAddINT8(FITSFile UNUSED *file, const CHAR UNUSED *col_name, const size_t UNUSED noffsets, const size_t UNUSED offsets[2], const void UNUSED *record, const size_t UNUSED record_size, const INT8 UNUSED *field, const size_t UNUSED field_size)
Definition: FITSFileIO.c:2429
int XLALFITSTableColumnAddUINT2(FITSFile UNUSED *file, const CHAR UNUSED *col_name, const size_t UNUSED noffsets, const size_t UNUSED offsets[2], const void UNUSED *record, const size_t UNUSED record_size, const UINT2 UNUSED *field, const size_t UNUSED field_size)
Definition: FITSFileIO.c:2344
int XLALFITSTableColumnAddCOMPLEX8(FITSFile UNUSED *file, const CHAR UNUSED *col_name, const size_t UNUSED noffsets, const size_t UNUSED offsets[2], const void UNUSED *record, const size_t UNUSED record_size, const COMPLEX8 UNUSED *field, const size_t UNUSED field_size)
Definition: FITSFileIO.c:2480
int XLALFITSTableColumnAddINT2(FITSFile UNUSED *file, const CHAR UNUSED *col_name, const size_t UNUSED noffsets, const size_t UNUSED offsets[2], const void UNUSED *record, const size_t UNUSED record_size, const INT2 UNUSED *field, const size_t UNUSED field_size)
Definition: FITSFileIO.c:2395
int XLALFITSTableColumnAddUINT4(FITSFile UNUSED *file, const CHAR UNUSED *col_name, const size_t UNUSED noffsets, const size_t UNUSED offsets[2], const void UNUSED *record, const size_t UNUSED record_size, const UINT4 UNUSED *field, const size_t UNUSED field_size)
Definition: FITSFileIO.c:2361
int XLALFITSTableColumnAddREAL8(FITSFile UNUSED *file, const CHAR UNUSED *col_name, const size_t UNUSED noffsets, const size_t UNUSED offsets[2], const void UNUSED *record, const size_t UNUSED record_size, const REAL8 UNUSED *field, const size_t UNUSED field_size)
Definition: FITSFileIO.c:2463
int XLALFITSTableColumnAddREAL4(FITSFile UNUSED *file, const CHAR UNUSED *col_name, const size_t UNUSED noffsets, const size_t UNUSED offsets[2], const void UNUSED *record, const size_t UNUSED record_size, const REAL4 UNUSED *field, const size_t UNUSED field_size)
Definition: FITSFileIO.c:2446
int XLALFITSTableColumnAddGPSTime(FITSFile UNUSED *file, const CHAR UNUSED *col_name, const size_t UNUSED noffsets, const size_t UNUSED offsets[2], const void UNUSED *record, const size_t UNUSED record_size, const LIGOTimeGPS UNUSED *field, const size_t UNUSED field_size)
Definition: FITSFileIO.c:2529
int XLALFITSTableColumnAddINT4(FITSFile UNUSED *file, const CHAR UNUSED *col_name, const size_t UNUSED noffsets, const size_t UNUSED offsets[2], const void UNUSED *record, const size_t UNUSED record_size, const INT4 UNUSED *field, const size_t UNUSED field_size)
Definition: FITSFileIO.c:2412
int XLALFITSTableColumnAddCHAR(FITSFile UNUSED *file, const CHAR UNUSED *col_name, const size_t UNUSED noffsets, const size_t UNUSED offsets[2], const void UNUSED *record, const size_t UNUSED record_size, const void UNUSED *field, const size_t UNUSED field_size)
Definition: FITSFileIO.c:2514
int XLALFITSTableColumnAddUINT8(FITSFile UNUSED *file, const CHAR UNUSED *col_name, const size_t UNUSED noffsets, const size_t UNUSED offsets[2], const void UNUSED *record, const size_t UNUSED record_size, const UINT8 UNUSED *field, const size_t UNUSED field_size)
Definition: FITSFileIO.c:2378
int XLALFITSTableColumnAddBOOLEAN(FITSFile UNUSED *file, const CHAR UNUSED *col_name, const size_t UNUSED noffsets, const size_t UNUSED offsets[2], const void UNUSED *record, const size_t UNUSED record_size, const BOOLEAN UNUSED *field, const size_t UNUSED field_size)
Definition: FITSFileIO.c:2329
const char * name
Definition: SearchTiming.c:93
const char * comment
Definition: SearchTiming.c:94
int int XLALFITSFileWriteVCSInfo(FITSFile *file, const LALVCSInfoList vcs_list)
int XLALFITSArrayReadINT2(FITSFile *file, const size_t idx[], INT2 *elem)
int XLALFITSHeaderReadINT2(FITSFile *file, const CHAR *key, INT2 *value)
int XLALFITSArrayReadREAL8(FITSFile *file, const size_t idx[], REAL8 *elem)
int XLALFITSTableReadRow(FITSFile *file, void *record, UINT8 *rem_nrows)
int XLALFITSHeaderReadINT8(FITSFile *file, const CHAR *key, INT8 *value)
int XLALFITSArrayReadREAL4(FITSFile *file, const size_t idx[], REAL4 *elem)
int XLALFITSHeaderWriteREAL4(FITSFile *file, const CHAR *key, const REAL4 value, const CHAR *comment)
int XLALFITSHeaderReadREAL8(FITSFile *file, const CHAR *key, REAL8 *value)
void XLALFITSFileClose(FITSFile *file)
int XLALFITSArrayWriteUINT8(FITSFile *file, const size_t idx[], const UINT8 elem)
int XLALFITSArrayReadINT4(FITSFile *file, const size_t idx[], INT4 *elem)
int XLALFITSArrayOpenWrite2(FITSFile *file, const CHAR *name, const size_t dim0, const size_t dim1, const CHAR *comment)
int XLALFITSHeaderWriteINT4(FITSFile *file, const CHAR *key, const INT4 value, const CHAR *comment)
int XLALFITSArrayOpenRead2(FITSFile *file, const CHAR *name, size_t *dim0, size_t *dim1)
int XLALFITSHeaderReadString(FITSFile *file, const CHAR *key, CHAR **value)
int XLALFITSHeaderWriteStringVector(FITSFile *file, const CHAR *key, const LALStringVector *values, const CHAR *comment)
int XLALFITSHeaderReadBOOLEAN(FITSFile *file, const CHAR *key, BOOLEAN *value)
int int XLALFITSHeaderWriteBOOLEAN(FITSFile *file, const CHAR *key, const BOOLEAN value, const CHAR *comment)
int XLALFITSHeaderWriteREAL8(FITSFile *file, const CHAR *key, const REAL8 value, const CHAR *comment)
int XLALFITSTableWriteRow(FITSFile *file, const void *record)
int XLALFITSHeaderWriteUINT4(FITSFile *file, const CHAR *key, const UINT4 value, const CHAR *comment)
FITSFile * XLALFITSFileOpenWrite(const CHAR *file_name)
int XLALFITSHeaderWriteCOMPLEX16(FITSFile *file, const CHAR *key, const COMPLEX16 value, const CHAR *comment)
int XLALFITSHeaderReadCOMPLEX16(FITSFile *file, const CHAR *key, COMPLEX16 *value)
int XLALFITSHeaderReadGPSTime(FITSFile *file, const CHAR *key, LIGOTimeGPS *value)
int XLALFITSArrayOpenWrite1(FITSFile *file, const CHAR *name, const size_t dim0, const CHAR *comment)
int XLALFITSFileWriteUVarCmdLine(FITSFile *file)
int XLALFITSHeaderReadCOMPLEX8(FITSFile *file, const CHAR *key, COMPLEX8 *value)
int XLALFITSHeaderWriteINT2(FITSFile *file, const CHAR *key, const INT2 value, const CHAR *comment)
int XLALFITSHeaderReadUINT8(FITSFile *file, const CHAR *key, UINT8 *value)
int XLALFITSHeaderWriteString(FITSFile *file, const CHAR *key, const CHAR *value, const CHAR *comment)
int XLALFITSArrayOpenRead(FITSFile *file, const CHAR *name, size_t *ndim, size_t dims[])
int XLALFITSArrayReadUINT2(FITSFile *file, const size_t idx[], UINT2 *elem)
int XLALFITSArrayWriteUINT4(FITSFile *file, const size_t idx[], const UINT4 elem)
int XLALFITSHeaderReadREAL4(FITSFile *file, const CHAR *key, REAL4 *value)
int XLALFITSHeaderWriteUINT2(FITSFile *file, const CHAR *key, const UINT2 value, const CHAR *comment)
int XLALFITSArrayReadUINT4(FITSFile *file, const size_t idx[], UINT4 *elem)
int XLALFITSTableOpenWrite(FITSFile *file, const CHAR *name, const CHAR *comment)
int XLALFITSHeaderWriteGPSTime(FITSFile *file, const CHAR *key, const LIGOTimeGPS *value, const CHAR *comment)
int XLALFITSHeaderWriteINT8(FITSFile *file, const CHAR *key, const INT8 value, const CHAR *comment)
int XLALFITSArrayReadGSLMatrix(FITSFile *file, const size_t idx[], gsl_matrix **elems)
int XLALFITSFileSeekPrimaryHDU(FITSFile *file)
int XLALFITSFileWriteHistory(FITSFile *file, const CHAR *format,...) _LAL_GCC_PRINTF_FORMAT_(2
int XLALFITSArrayOpenWrite(FITSFile *file, const CHAR *name, const size_t ndim, const size_t dims[], const CHAR *comment)
int XLALFITSHeaderReadUINT4(FITSFile *file, const CHAR *key, UINT4 *value)
int XLALFITSArrayReadINT8(FITSFile *file, const size_t idx[], INT8 *elem)
int XLALFITSArrayWriteREAL4(FITSFile *file, const size_t idx[], const REAL4 elem)
int XLALFITSArrayOpenRead1(FITSFile *file, const CHAR *name, size_t *dim0)
int XLALFITSArrayWriteREAL8(FITSFile *file, const size_t idx[], const REAL8 elem)
int XLALFITSArrayWriteINT4(FITSFile *file, const size_t idx[], const INT4 elem)
int XLALFITSArrayReadUINT8(FITSFile *file, const size_t idx[], UINT8 *elem)
int XLALFITSHeaderReadStringVector(FITSFile *file, const CHAR *key, LALStringVector **values)
int XLALFITSHeaderWriteUINT8(FITSFile *file, const CHAR *key, const UINT8 value, const CHAR *comment)
int XLALFITSArrayWriteUINT2(FITSFile *file, const size_t idx[], const UINT2 elem)
FITSFile * XLALFITSFileOpenRead(const CHAR *file_name)
int XLALFITSHeaderQueryKeyExists(FITSFile *file, const CHAR *key, BOOLEAN *exists)
struct tagFITSFile FITSFile
Representation of a FITS file.
Definition: FITSFileIO.h:54
int XLALFITSTableOpenRead(FITSFile *file, const CHAR *name, UINT8 *nrows)
int XLALFITSArrayWriteINT8(FITSFile *file, const size_t idx[], const INT8 elem)
int XLALFITSArrayWriteGSLMatrix(FITSFile *file, const size_t idx[], const gsl_matrix *elems)
int XLALFITSHeaderWriteComment(FITSFile *file, const CHAR *format,...) _LAL_GCC_PRINTF_FORMAT_(2
int XLALFITSHeaderReadUINT2(FITSFile *file, const CHAR *key, UINT2 *value)
int XLALFITSHeaderReadINT4(FITSFile *file, const CHAR *key, INT4 *value)
int XLALFITSFileSeekNamedHDU(FITSFile *file, const CHAR *name)
int XLALFITSHeaderWriteCOMPLEX8(FITSFile *file, const CHAR *key, const COMPLEX8 value, const CHAR *comment)
int XLALFITSArrayWriteINT2(FITSFile *file, const size_t idx[], const INT2 elem)
unsigned char BOOLEAN
uint64_t UINT8
double complex COMPLEX16
double REAL8
int16_t INT2
int64_t INT8
uint16_t UINT2
char CHAR
uint32_t UINT4
float complex COMPLEX8
int32_t INT4
float REAL4
const LALVCSInfo *const LALVCSInfoList[16]