GammaLib 2.2.0.dev
Loading...
Searching...
No Matches
GFitsCfitsio.hpp
Go to the documentation of this file.
1/***************************************************************************
2 * GFitsCfitsio.hpp - CFITSIO interface header *
3 * ----------------------------------------------------------------------- *
4 * copyright (C) 2008-2021 by Juergen Knoedlseder *
5 * ----------------------------------------------------------------------- *
6 * *
7 * This program is free software: you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation, either version 3 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * This program is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU General Public License *
18 * along with this program. If not, see <http://www.gnu.org/licenses/>. *
19 * *
20 ***************************************************************************/
21/**
22 * @file GFitsCfitsio.hpp
23 * @brief CFITSIO interface header
24 * @author Juergen Knoedlseder
25 */
26
27#ifndef GFITSCFITSIO_HPP
28#define GFITSCFITSIO_HPP
29
30/* __ Includes ___________________________________________________________ */
31#ifdef HAVE_CONFIG_H
32#include <config.h>
33#endif
34#include <cstring>
35
36/* __ Namespaces _________________________________________________________ */
37
38
39/***************************************************************************
40 * CFITSIO is available *
41 ***************************************************************************/
42#if defined(HAVE_LIBCFITSIO)
43
44#if defined(HAVE_CFITSIO_FITSIO_H)
45#include <cfitsio/fitsio.h>
46#elif defined(HAVE_LIBCFITSIO0_FITSIO_H)
47#include <libcfitsio0/fitsio.h>
48#else
49#include <fitsio.h>
50#endif
51
52/* __ Macros _____________________________________________________________ */
53#define __ffclos(A, B) ffclos(A, B)
54#define __ffcrim(A, B, C, D, E) ffcrim(A, B, C, D, E)
55#define __ffcrtb(A, B, C, D, E, F, G, H, I) ffcrtb(A, B, C, D, E, F, G, H, I)
56#define __ffdcol(A, B, C) ffdcol(A, B, C)
57#define __ffdelt(A, B) ffdelt(A, B)
58#define __ffdhdu(A, B, C) ffdhdu(A, B, C)
59#define __ffdrow(A, B, C, D) ffdrow(A, B, C, D)
60#define __ffflus(A, B) ffflus(A, B)
61#define __ffgabc(A, B, C, D, E, F) ffgabc(A, B, C, D, E, F)
62#define __ffgcv(A, B, C, D, E, F, G, H, I, J) ffgcv(A, B, C, D, E, F, G, H, I, J)
63#define __ffgcvb(A, B, C, D, E, F, G, H, I) ffgcvb(A, B, C, D, E, F, G, H, I)
64#define __ffgcvs(A, B, C, D, E, F, G, H, I) ffgcvs(A, B, C, D, E, F, G, H, I)
65#define __ffgdes(A, B, C, D, E, F) ffgdes(A, B, C, D, E, F)
66#define __ffgerr(A, B) ffgerr(A, B)
67#define __ffghdt(A, B, C) ffghdt(A, B, C)
68#define __ffghsp(A, B, C, D) ffghsp(A, B, C, D)
69#define __ffgidm(A, B, C) ffgidm(A, B, C)
70#define __ffgidt(A, B, C) ffgidt(A, B, C)
71#define __ffgiet(A, B, C) ffgiet(A, B, C)
72#define __ffgipr(A, B, C, D, E, F) ffgipr(A, B, C, D, E, F)
73#define __ffgisz(A, B, C, D) ffgisz(A, B, C, D)
74#define __ffgky(A, B, C, D, E, F) ffgky(A, B, C, D, E, F)
75#define __ffgkey(A, B, C, D, E) ffgkey(A, B, C, D, E)
76#define __ffgkyd(A, B, C, D, E) ffgkyd(A, B, C, D, E)
77#define __ffgkyn(A, B, C, D, E, F) ffgkyn(A, B, C, D, E, F)
78#define __ffgnrw(A, B, C) ffgnrw(A, B, C)
79#define __ffgncl(A, B, C) ffgncl(A, B, C)
80#define __ffgsv(A, B, C, D, E, F, G, H, I) ffgsv(A, B, C, D, E, F, G, H, I)
81#define __ffgtcl(A, B, C, D, E, F) ffgtcl(A, B, C, D, E, F)
82#define __ffibin(A, B, C, D, E, F, G, H, I) ffibin(A, B, C, D, E, F, G, H, I)
83#define __fficol(A, B, C, D, E) fficol(A, B, C, D, E)
84#define __ffiimg(A, B, C, D, E) ffiimg(A, B, C, D, E)
85#define __ffiimgll(A, B, C, D, E) ffiimgll(A, B, C, D, E)
86#define __ffinit(A, B, C) ffinit(A, B, C)
87#define __ffirow(A, B, C, D) ffirow(A, B, C, D)
88#define __ffitab(A, B, C, D, E, F, G, H, I, J) ffitab(A, B, C, D, E, F, G, H, I, J)
89#define __ffopen(A, B, C, D) ffopen(A, B, C, D)
90#define __ffmahd(A, B, C, D) ffmahd(A, B, C, D)
91#define __ffpcn(A, B, C, D, E, F, G, H, I) ffpcn(A, B, C, D, E, F, G, H, I)
92#define __ffpcom(A, B, C) ffpcom(A, B, C)
93#define __ffphis(A, B, C) ffphis(A, B, C)
94#define __ffpss(A, B, C, D, E, F) ffpss(A, B, C, D, E, F)
95#define __ffpscl(A, B, C, D) ffpscl(A, B, C, D)
96#define __ffprec(A, B, C) ffprec(A, B, C)
97#define __ffrsim(A, B, C, D, E) ffrsim(A, B, C, D, E)
98#define __ffsrow(A, B, C, D) ffsrow(A, B, C, D)
99#define __ffthdu(A, B, C) ffthdu(A, B, C)
100#define __fftscl(A, B, C, D, E) fftscl(A, B, C, D, E)
101#define __ffuky(A, B, C, D, E, F) ffuky(A, B, C, D, E, F)
102#define __ffukye(A, B, C, D, E, F) ffukye(A, B, C, D, E, F)
103#define __ffukyd(A, B, C, D, E, F) ffukyd(A, B, C, D, E, F)
104#define __ffukyj(A, B, C, D, E) ffukyj(A, B, C, D, E)
105#define __ffukyl(A, B, C, D, E) ffukyl(A, B, C, D, E)
106#define __ffukys(A, B, C, D, E) ffukys(A, B, C, D, E)
107#define __ffukyu(A, B, C, D) ffukyu(A, B, C, D)
108#define __TNULL 0
109#define __TBIT TBIT
110#define __TBYTE TBYTE
111#define __TSBYTE TSBYTE
112#define __TLOGICAL TLOGICAL
113#define __TSTRING TSTRING
114#define __TUSHORT TUSHORT
115#define __TSHORT TSHORT
116#define __TUINT TUINT
117#define __TINT TINT
118#define __TULONG TULONG
119#define __TLONG TLONG
120#define __TFLOAT TFLOAT
121#define __TLONGLONG TLONGLONG
122#define __TDOUBLE TDOUBLE
123#define __TCOMPLEX TCOMPLEX
124#define __TDBLCOMPLEX TDBLCOMPLEX
125
126/* __ Type definition ____________________________________________________ */
127typedef fitsfile __fitsfile;
128
129/***************************************************************************
130 * CFITSIO is not available *
131 ***************************************************************************/
132#else
133
134/* __ Macros _____________________________________________________________ */
135#define __ffclos(A, B) __dummy()
136#define __ffcrim(A, B, C, D, E) __dummy()
137#define __ffcrtb(A, B, C, D, E, F, G, H, I) __dummy()
138#define __ffdcol(A, B, C) __dummy()
139#define __ffdelt(A, B) __dummy()
140#define __ffdhdu(A, B, C) __dummy()
141#define __ffdrow(A, B, C, D) __dummy()
142#define __ffflus(A, B) __dummy()
143#define __ffgabc(A, B, C, D, E, F) __dummy()
144#define __ffgcv(A, B, C, D, E, F, G, H, I, J) __dummy()
145#define __ffgcvb(A, B, C, D, E, F, G, H, I) __dummy()
146#define __ffgcvs(A, B, C, D, E, F, G, H, I) __dummy()
147#define __ffgdes(A, B, C, D, E, F) __dummy()
148#define __ffgerr(A, B) __error(A, B)
149#define __ffghdt(A, B, C) __dummy()
150#define __ffghsp(A, B, C, D) __dummy()
151#define __ffgidm(A, B, C) __dummy()
152#define __ffgidt(A, B, C) __dummy()
153#define __ffgiet(A, B, C) __dummy()
154#define __ffgipr(A, B, C, D, E, F) __dummy()
155#define __ffgisz(A, B, C, D) __dummy()
156#define __ffgky(A, B, C, D, E, F) __dummy()
157#define __ffgkey(A, B, C, D, E) __dummy()
158#define __ffgkyd(A, B, C, D, E) __dummy()
159#define __ffgkyn(A, B, C, D, E, F) __dummy()
160#define __ffgnrw(A, B, C) __dummy()
161#define __ffgncl(A, B, C) __dummy()
162#define __ffgsv(A, B, C, D, E, F, G, H, I) __dummy()
163#define __ffgtcl(A, B, C, D, E, F) __dummy()
164#define __ffibin(A, B, C, D, E, F, G, H, I) __dummy()
165#define __fficol(A, B, C, D, E) __dummy()
166#define __ffiimg(A, B, C, D, E) __dummy()
167#define __ffiimgll(A, B, C, D, E) __dummy()
168#define __ffinit(A, B, C) __dummy()
169#define __ffirow(A, B, C, D) __dummy()
170#define __ffitab(A, B, C, D, E, F, G, H, I, J) __dummy()
171#define __ffmahd(A, B, C, D) __dummy()
172#define __ffopen(A, B, C, D) __dummy()
173#define __ffpcn(A, B, C, D, E, F, G, H, I) __dummy()
174#define __ffpcom(A, B, C) __dummy()
175#define __ffphis(A, B, C) __dummy()
176#define __ffpscl(A, B, C, D) __dummy()
177#define __ffpss(A, B, C, D, E, F) __dummy()
178#define __ffprec(A, B, C) __dummy()
179#define __ffrsim(A, B, C, D, E) __dummy()
180#define __ffsrow(A, B, C, D) __dummy()
181#define __ffthdu(A, B, C) __dummy()
182#define __fftscl(A, B, C, D, E) __dummy()
183#define __ffuky(A, B, C, D, E, F) __dummy()
184#define __ffukye(A, B, C, D, E, F) __dummy()
185#define __ffukyd(A, B, C, D, E, F) __dummy()
186#define __ffukyj(A, B, C, D, E) __dummy()
187#define __ffukyl(A, B, C, D, E) __dummy()
188#define __ffukys(A, B, C, D, E) __dummy()
189#define __ffukyu(A, B, C, D) __dummy()
190#define __TNULL 0
191#define __TBIT 1
192#define __TBYTE 11
193#define __TSBYTE 12
194#define __TLOGICAL 14
195#define __TSTRING 16
196#define __TUSHORT 20
197#define __TSHORT 21
198#define __TUINT 30
199#define __TINT 31
200#define __TULONG 40
201#define __TLONG 41
202#define __TFLOAT 42
203#define __TLONGLONG 81
204#define __TDOUBLE 82
205#define __TCOMPLEX 83
206#define __TDBLCOMPLEX 163
207
208/* __ Type definition ____________________________________________________ */
209typedef struct {
210 int HDUposition; // HDU position in file; 0 = first HDU
211 int* Fptr; // Pointer to FITS file structure
212} __fitsfile;
213
214/* __ Dummy function _____________________________________________________ */
215inline
216void __error(int status, char* err_text)
217{
218 std::strcpy(err_text, "CFITSIO not available");
219}
220inline
221int __dummy(void)
222{
223 return 0;
224}
225
226#endif
227
228/* __ Common macros ______________________________________________________ */
229#define FPTR(A) ((__fitsfile*)A)
230#define FHANDLE(A) ((__fitsfile**)&A)
231#define FPTR_COPY(A, B) *((__fitsfile*)A) = *((__fitsfile*)B)
232
233#endif /* GFITSCFITSIO_HPP */
void __error(int status, char *err_text)
int __dummy(void)