Loading [MathJax]/extensions/TeX/AMSsymbols.js
LALPulsar 7.1.1.1-5e288d3
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
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
29extern "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///
54typedef 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/// @{
68FITSFile *XLALFITSFileOpenWrite( const CHAR *file_name );
69FITSFile *XLALFITSFileOpenRead( const CHAR *file_name );
72int 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/// @{
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/// @{
109int XLALFITSHeaderWriteComment( FITSFile *file, const CHAR *format, ... ) _LAL_GCC_PRINTF_FORMAT_( 2, 3 );
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/// @{
155int XLALFITSArrayOpenRead( FITSFile *file, const CHAR *name, size_t *ndim, size_t dims[] );
159int XLALFITSArrayOpenRead2( FITSFile *file, const CHAR *name, size_t *dim0, size_t *dim1 );
176int XLALFITSArrayWriteGSLMatrix( FITSFile *file, const size_t idx[], const gsl_matrix *elems );
177int 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
223int 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 );
224int 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 );
225int 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 );
226int 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 );
227int 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 );
228int 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 );
229int 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 );
230int 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 );
231int 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 );
232int 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 );
233int 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 );
234int 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 );
235int 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
287int XLALFITSTableWriteRow( FITSFile *file, const void *record );
288int 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)
FITSFile * XLALFITSFileOpenWrite(const CHAR *file_name)
int XLALFITSTableWriteRow(FITSFile *file, const void *record)
int XLALFITSHeaderWriteUINT4(FITSFile *file, const CHAR *key, const UINT4 value, const CHAR *comment)
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)
FITSFile * XLALFITSFileOpenRead(const CHAR *file_name)
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)
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]