cfitsio (4.3.1)
1 #ifndef _FITSIO2_H
2 #define _FITSIO2_H
3
4 #include "fitsio.h"
5
6 /*
7 Threading support using POSIX threads programming interface
8 (supplied by Bruce O'Neel)
9
10 All threaded programs MUST have the
11
12 -D_REENTRANT
13
14 on the compile line and must link with -lpthread. This means that
15 when one builds cfitsio for threads you must have -D_REENTRANT on the
16 gcc or cc command line.
17 */
18
19 #ifdef _REENTRANT
20 #include <pthread.h>
21 /* #include <assert.h> not needed any more */
22 extern pthread_mutex_t Fitsio_Lock;
23 extern int Fitsio_Pthread_Status;
24
25 #define FFLOCK1(lockname) (Fitsio_Pthread_Status = pthread_mutex_lock(&lockname))
26 #define FFUNLOCK1(lockname) (Fitsio_Pthread_Status = pthread_mutex_unlock(&lockname))
27 #define FFLOCK FFLOCK1(Fitsio_Lock)
28 #define FFUNLOCK FFUNLOCK1(Fitsio_Lock)
29 #define ffstrtok(str, tok, save) strtok_r(str, tok, save)
30
31 #else
32 #define FFLOCK
33 #define FFUNLOCK
34 #define ffstrtok(str, tok, save) strtok(str, tok)
35 #endif
36
37 /*
38 If REPLACE_LINKS is defined, then whenever CFITSIO fails to open
39 a file with write access because it is a soft link to a file that
40 only has read access, then CFITSIO will attempt to replace
41 the link with a local copy of the file, with write access. This
42 feature was originally added to support the ftools in the Hera
43 environment, where many of the user's data file are soft links.
44 */
45 #if defined(BUILD_HERA)
46 #define REPLACE_LINKS 1
47 #endif
48
49 #define USE_LARGE_VALUE -99 /* flag used when writing images */
50
51 #define DBUFFSIZE 28800 /* size of data buffer in bytes */
52
53 #define NMAXFILES 10000 /* maximum number of FITS files that can be opened */
54 /* CFITSIO will allocate (NMAXFILES * 80) bytes of memory */
55 /* plus each file that is opened will use NIOBUF * 2880 bytes of memeory */
56 /* where NIOBUF is defined in fitio.h and has a default value of 40 */
57
58 #define MINDIRECT 8640 /* minimum size for direct reads and writes */
59 /* MINDIRECT must have a value >= 8640 */
60
61 /* it is useful to identify certain specific types of machines */
62 #define NATIVE 0 /* machine that uses non-byteswapped IEEE formats */
63 #define OTHERTYPE 1 /* any other type of machine */
64 #define VAXVMS 3 /* uses an odd floating point format */
65 #define ALPHAVMS 4 /* uses an odd floating point format */
66 #define IBMPC 5 /* used in drvrfile.c to work around a bug on PCs */
67 #define CRAY 6 /* requires a special NaN test algorithm */
68
69 #define GFLOAT 1 /* used for VMS */
70 #define IEEEFLOAT 2 /* used for VMS */
71
72 /* ======================================================================= */
73 /* The following logic is used to determine the type machine, */
74 /* whether the bytes are swapped, and the number of bits in a long value */
75 /* ======================================================================= */
76
77 /* The following platforms have sizeof(long) == 8 */
78 /* This block of code should match a similar block in fitsio.h */
79 /* and the block of code at the beginning of f77_wrap.h */
80
81 #if defined(__alpha) && ( defined(__unix__) || defined(__NetBSD__) )
82 /* old Dec Alpha platforms running OSF */
83 #define BYTESWAPPED TRUE
84 #define LONGSIZE 64
85
86 #elif defined(__sparcv9) || (defined(__sparc__) && defined(__arch64__))
87 /* SUN Solaris7 in 64-bit mode */
88 #define BYTESWAPPED FALSE
89 #define MACHINE NATIVE
90 #define LONGSIZE 64
91
92 /* IBM System z mainframe support */
93 #elif defined(__s390x__)
94 #define BYTESWAPPED FALSE
95 #define LONGSIZE 64
96
97 #elif defined(__s390__)
98 #define BYTESWAPPED FALSE
99 #define LONGSIZE 32
100
101 #elif defined(__ia64__) || defined(__x86_64__) || defined(__AARCH64EL__)
102 /* Intel itanium 64-bit PC, or AMD opteron 64-bit PC */
103 #define BYTESWAPPED TRUE
104 #define LONGSIZE 64
105
106 #elif defined(_SX) /* Nec SuperUx */
107
108 #define BYTESWAPPED FALSE
109 #define MACHINE NATIVE
110 #define LONGSIZE 64
111
112 #elif defined(__powerpc64__) || defined(__64BIT__) || defined(__AARCH64EB__) /* IBM 64-bit AIX powerpc*/
113 /* could also test for __ppc64__ or __PPC64 */
114
115 # if defined(__LITTLE_ENDIAN__)
116 # define BYTESWAPPED TRUE
117 # else
118 # define BYTESWAPPED FALSE
119 # define MACHINE NATIVE
120 # endif
121 # define LONGSIZE 64
122
123 #elif defined(_MIPS_SZLONG)
124
125 # if defined(MIPSEL)
126 # define BYTESWAPPED TRUE
127 # else
128 # define BYTESWAPPED FALSE
129 # define MACHINE NATIVE
130 # endif
131
132 # if _MIPS_SZLONG == 32
133 # define LONGSIZE 32
134 # elif _MIPS_SZLONG == 64
135 # define LONGSIZE 64
136 # else
137 # error "can't handle long size given by _MIPS_SZLONG"
138 # endif
139
140 #elif defined(__riscv)
141
142 /* RISC-V is always little endian */
143
144 #define BYTESWAPPED TRUE
145
146 # if __riscv_xlen == 32
147 # define LONGSIZE 32
148 # elif __riscv_xlen == 64
149 # define LONGSIZE 64
150 # else
151 # error "can't handle long size given by __riscv_xlen"
152 # endif
153
154 /* ============================================================== */
155 /* the following are all 32-bit byteswapped platforms */
156
157 #elif defined(vax) && defined(VMS)
158
159 #define MACHINE VAXVMS
160 #define BYTESWAPPED TRUE
161
162 #elif defined(__alpha) && defined(__VMS)
163
164 #if (__D_FLOAT == TRUE)
165
166 /* this float option is the same as for VAX/VMS machines. */
167 #define MACHINE VAXVMS
168 #define BYTESWAPPED TRUE
169
170 #elif (__G_FLOAT == TRUE)
171
172 /* G_FLOAT is the default for ALPHA VMS systems */
173 #define MACHINE ALPHAVMS
174 #define BYTESWAPPED TRUE
175 #define FLOATTYPE GFLOAT
176
177 #elif (__IEEE_FLOAT == TRUE)
178
179 #define MACHINE ALPHAVMS
180 #define BYTESWAPPED TRUE
181 #define FLOATTYPE IEEEFLOAT
182
183 #endif /* end of alpha VMS case */
184
185 #elif defined(ultrix) && defined(unix)
186 /* old Dec ultrix machines */
187 #define BYTESWAPPED TRUE
188
189 #elif defined(__i386) || defined(__i386__) || defined(__i486__) || defined(__i586__) \
190 || defined(_MSC_VER) || defined(__BORLANDC__) || defined(__TURBOC__) \
191 || defined(_NI_mswin_) || defined(__EMX__)
192
193 /* generic 32-bit IBM PC */
194 #define MACHINE IBMPC
195 #define BYTESWAPPED TRUE
196
197 #elif defined(__arm__)
198
199 /* This assumes all ARM are little endian. In the future, it might be */
200 /* necessary to use "if defined(__ARMEL__)" to distinguish little from big. */
201 /* (__ARMEL__ would be defined on little-endian, but not on big-endian). */
202
203 #define BYTESWAPPED TRUE
204
205 #elif defined(__tile__)
206
207 /* 64-core 8x8-architecture Tile64 platform */
208
209 #define BYTESWAPPED TRUE
210
211 #elif defined(__sh__)
212
213 /* SuperH CPU can be used in both little and big endian modes */
214
215 #if defined(__LITTLE_ENDIAN__)
216 #define BYTESWAPPED TRUE
217 #else
218 #define BYTESWAPPED FALSE
219 #endif
220
221 #else
222
223 /* assume all other machine uses the same IEEE formats as used in FITS files */
224 /* e.g., Macs fall into this category */
225
226 #define MACHINE NATIVE
227 #define BYTESWAPPED FALSE
228
229 #endif
230
231 #ifndef MACHINE
232 #define MACHINE OTHERTYPE
233 #endif
234
235 /* assume longs are 4 bytes long, unless previously set otherwise */
236 #ifndef LONGSIZE
237 #define LONGSIZE 32
238 #endif
239
240 /* end of block that determine long size and byte swapping */
241 /* ==================================================================== */
242
243 #define IGNORE_EOF 1
244 #define REPORT_EOF 0
245 #define DATA_UNDEFINED -1
246 #define NULL_UNDEFINED 1234554321
247 #define ASCII_NULL_UNDEFINED 1 /* indicate no defined null value */
248
249 #define maxvalue(A,B) ((A) > (B) ? (A) : (B))
250 #define minvalue(A,B) ((A) < (B) ? (A) : (B))
251
252 /* faster string comparison macros */
253 #define FSTRCMP(a,b) ((a)[0]<(b)[0]? -1:(a)[0]>(b)[0]?1:strcmp((a),(b)))
254 #define FSTRNCMP(a,b,n) ((a)[0]<(b)[0]?-1:(a)[0]>(b)[0]?1:strncmp((a),(b),(n)))
255
256 #if defined(__VMS) || defined(VMS)
257
258 #define FNANMASK 0xFFFF /* mask all bits */
259 #define DNANMASK 0xFFFF /* mask all bits */
260
261 #else
262
263 #define FNANMASK 0x7F80 /* mask bits 1 - 8; all set on NaNs */
264 /* all 0 on underflow or 0. */
265
266 #define DNANMASK 0x7FF0 /* mask bits 1 - 11; all set on NaNs */
267 /* all 0 on underflow or 0. */
268
269 #endif
270
271 #if MACHINE == CRAY
272 /*
273 Cray machines: the large negative integer corresponds
274 to the 3 most sig digits set to 1. If these
275 3 bits are set in a floating point number (64 bits), then it represents
276 a reserved value (i.e., a NaN)
277 */
278 #define fnan(L) ( (L) >= 0xE000000000000000 ? 1 : 0) )
279
280 #else
281 /* these functions work for both big and little endian machines */
282 /* that use the IEEE floating point format for internal numbers */
283
284 /* These functions tests whether the float value is a reserved IEEE */
285 /* value such as a Not-a-Number (NaN), or underflow, overflow, or */
286 /* infinity. The functions returns 1 if the value is a NaN, overflow */
287 /* or infinity; it returns 2 if the value is an denormalized underflow */
288 /* value; otherwise it returns 0. fnan tests floats, dnan tests doubles */
289
290 #define fnan(L) \
291 ( (L & FNANMASK) == FNANMASK ? 1 : (L & FNANMASK) == 0 ? 2 : 0)
292
293 #define dnan(L) \
294 ( (L & DNANMASK) == DNANMASK ? 1 : (L & DNANMASK) == 0 ? 2 : 0)
295
296 #endif
297
298 #define DSCHAR_MAX 127.49 /* max double value that fits in an signed char */
299 #define DSCHAR_MIN -128.49 /* min double value that fits in an signed char */
300 #define DUCHAR_MAX 255.49 /* max double value that fits in an unsigned char */
301 #define DUCHAR_MIN -0.49 /* min double value that fits in an unsigned char */
302 #define DUSHRT_MAX 65535.49 /* max double value that fits in a unsigned short*/
303 #define DUSHRT_MIN -0.49 /* min double value that fits in an unsigned short */
304 #define DSHRT_MAX 32767.49 /* max double value that fits in a short */
305 #define DSHRT_MIN -32768.49 /* min double value that fits in a short */
306
307 #if LONGSIZE == 32
308 # define DLONG_MAX 2147483647.49 /* max double value that fits in a long */
309 # define DLONG_MIN -2147483648.49 /* min double value that fits in a long */
310 # define DULONG_MAX 4294967295.49 /* max double that fits in a unsigned long */
311 #else
312 # define DLONG_MAX 9.2233720368547752E18 /* max double value long */
313 # define DLONG_MIN -9.2233720368547752E18 /* min double value long */
314 # define DULONG_MAX 1.84467440737095504E19 /* max double value ulong */
315 #endif
316
317 #define DULONG_MIN -0.49 /* min double value that fits in an unsigned long */
318 #define DULONGLONG_MAX 18446744073709551615. /* max unsigned longlong */
319 #define DULONGLONG_MIN -0.49
320 #define DLONGLONG_MAX 9.2233720368547755807E18 /* max double value longlong */
321 #define DLONGLONG_MIN -9.2233720368547755808E18 /* min double value longlong */
322 #define DUINT_MAX 4294967295.49 /* max dbl that fits in a unsigned 4-byte int */
323 #define DUINT_MIN -0.49 /* min dbl that fits in an unsigned 4-byte int */
324 #define DINT_MAX 2147483647.49 /* max double value that fits in a 4-byte int */
325 #define DINT_MIN -2147483648.49 /* min double value that fits in a 4-byte int */
326
327 #ifndef UINT64_MAX
328 #define UINT64_MAX 18446744073709551615U /* max unsigned 64-bit integer */
329 #endif
330 #ifndef UINT32_MAX
331 #define UINT32_MAX 4294967295U /* max unsigned 32-bit integer */
332 #endif
333 #ifndef INT32_MAX
334 #define INT32_MAX 2147483647 /* max 32-bit integer */
335 #endif
336 #ifndef INT32_MIN
337 #define INT32_MIN (-INT32_MAX -1) /* min 32-bit integer */
338 #endif
339
340
341 #define COMPRESS_NULL_VALUE -2147483647
342 #define N_RANDOM 10000 /* DO NOT CHANGE THIS; used when quantizing real numbers */
343
344 int ffgnky(fitsfile *fptr, char *card, int *status);
345 void ffcfmt(char *tform, char *cform);
346 void ffcdsp(char *tform, char *cform);
347 void ffswap2(short *values, long nvalues);
348 void ffswap4(INT32BIT *values, long nvalues);
349 void ffswap8(double *values, long nvalues);
350 int ffi2c(LONGLONG ival, char *cval, int *status);
351 int ffu2c(ULONGLONG ival, char *cval, int *status);
352 int ffl2c(int lval, char *cval, int *status);
353 int ffs2c(const char *instr, char *outstr, int *status);
354 int ffs2c_nopad(const char *instr, char *outstr, int *status);
355 int ffr2f(float fval, int decim, char *cval, int *status);
356 int ffr2e(float fval, int decim, char *cval, int *status);
357 int ffd2f(double dval, int decim, char *cval, int *status);
358 int ffd2e(double dval, int decim, char *cval, int *status);
359 int ffc2ii(const char *cval, long *ival, int *status);
360 int ffc2jj(const char *cval, LONGLONG *ival, int *status);
361 int ffc2ujj(const char *cval, ULONGLONG *ival, int *status);
362 int ffc2ll(const char *cval, int *lval, int *status);
363 int ffc2rr(const char *cval, float *fval, int *status);
364 int ffc2dd(const char *cval, double *dval, int *status);
365 int ffc2x(const char *cval, char *dtype, long *ival, int *lval, char *sval,
366 double *dval, int *status);
367 int ffc2xx(const char *cval, char *dtype, LONGLONG *ival, int *lval, char *sval,
368 double *dval, int *status);
369 int ffc2uxx(const char *cval, char *dtype, ULONGLONG *ival, int *lval, char *sval,
370 double *dval, int *status);
371 int ffc2s(const char *instr, char *outstr, int *status);
372 int ffc2i(const char *cval, long *ival, int *status);
373 int ffc2j(const char *cval, LONGLONG *ival, int *status);
374 int ffc2uj(const char *cval, ULONGLONG *ival, int *status);
375 int ffc2r(const char *cval, float *fval, int *status);
376 int ffc2d(const char *cval, double *dval, int *status);
377 int ffc2l(const char *cval, int *lval, int *status);
378 void ffxmsg(int action, char *err_message);
379 int ffgcnt(fitsfile *fptr, char *value, char *comm, int *status);
380 int ffgtkn(fitsfile *fptr, int numkey, char *keyname, long *value, int *status);
381 int ffgtknjj(fitsfile *fptr, int numkey, char *keyname, LONGLONG *value, int *status);
382 int fftkyn(fitsfile *fptr, int numkey, char *keyname, char *value, int *status);
383 int ffgphd(fitsfile *fptr, int maxdim, int *simple, int *bitpix, int *naxis,
384 LONGLONG naxes[], long *pcount, long *gcount, int *extend, double *bscale,
385 double *bzero, LONGLONG *blank, int *nspace, int *status);
386 int ffgttb(fitsfile *fptr, LONGLONG *rowlen, LONGLONG *nrows, LONGLONG *pcount,
387 long *tfield, int *status);
388 int ffglkut(fitsfile *fptr,const char *keyname,int firstchar,int maxchar,int maxcomchar,
389 char *value,int *valuelen,char *comm,int *comlen,int *status);
390
391 int ffmkey(fitsfile *fptr, const char *card, int *status);
392 int fits_make_longstr_key_util(fitsfile *fptr, const char *keyname, const char *value,
393 const char *comm, int position, int *status);
394
395 /* ffmbyt has been moved to fitsio.h */
396 int ffgbyt(fitsfile *fptr, LONGLONG nbytes, void *buffer, int *status);
397 int ffpbyt(fitsfile *fptr, LONGLONG nbytes, void *buffer, int *status);
398 int ffgbytoff(fitsfile *fptr, long gsize, long ngroups, long offset,
399 void *buffer, int *status);
400 int ffpbytoff(fitsfile *fptr, long gsize, long ngroups, long offset,
401 void *buffer, int *status);
402 int ffldrc(fitsfile *fptr, long record, int err_mode, int *status);
403 int ffwhbf(fitsfile *fptr, int *nbuff);
404 int ffbfeof(fitsfile *fptr, int *status);
405 int ffbfwt(FITSfile *Fptr, int nbuff, int *status);
406 int ffpxsz(int datatype);
407
408 int ffourl(char *url, char *urltype, char *outfile, char *tmplfile,
409 char *compspec, int *status);
410 int ffparsecompspec(fitsfile *fptr, char *compspec, int *status);
411 int ffoptplt(fitsfile *fptr, const char *tempname, int *status);
412 int fits_is_this_a_copy(char *urltype);
413 char *fits_find_match_delim(char *, char);
414 int fits_store_Fptr(FITSfile *Fptr, int *status);
415 int fits_clear_Fptr(FITSfile *Fptr, int *status);
416 int fits_already_open(fitsfile **fptr, char *url,
417 char *urltype, char *infile, char *extspec, char *rowfilter,
418 char *binspec, char *colspec, int mode, int noextsyn,
419 int *isopen, int *status);
420 int ffedit_columns(fitsfile **fptr, char *outfile, char *expr, int *status);
421 int fits_get_col_minmax(fitsfile *fptr, int colnum, double *datamin,
422 double *datamax, int *status);
423 /* "Extended syntax" versions of histogram binning which permit
424 expressions instead of just columns. The existing interfaces
425 still work */
426 int fits_get_expr_minmax(fitsfile *fptr, char *expr, double *datamin,
427 double *datamax, int *datatype, int *status);
428 int ffbinse(char *binspec, int *imagetype, int *haxis,
429 char colname[4][FLEN_VALUE], double *minin,
430 double *maxin, double *binsizein,
431 char minname[4][FLEN_VALUE], char maxname[4][FLEN_VALUE],
432 char binname[4][FLEN_VALUE], double *weight, char *wtname,
433 int *recip, char ***exprs, int *status);
434 int ffbinre(char **binspec, char *colname, char **exprbeg, char **exprend,
435 double *minin, double *maxin, double *binsizein, char *minname,
436 char *maxname, char *binname, int *status);
437 int ffhist2e(fitsfile **fptr, char *outfile, int imagetype, int naxis,
438 char colname[4][FLEN_VALUE], char *colexpr[4],
439 double *minin, double *maxin, double *binsizein,
440 char minname[4][FLEN_VALUE], char maxname[4][FLEN_VALUE],
441 char binname[4][FLEN_VALUE],
442 double weightin, char wtcol[FLEN_VALUE], char *wtexpr,
443 int recip, char *selectrow, int *status);
444 int fits_calc_binningde(fitsfile *, int, char colname[4][FLEN_VALUE],
445 char *colexpr[4], double *minin, double *maxin, double *binsizein,
446 char minname[4][FLEN_VALUE], char maxname[4][FLEN_VALUE], char binname[4][FLEN_VALUE],
447 int *, int *, long *, double *, double *, double *, long *, int *);
448 int fits_write_keys_histoe(fitsfile *fptr, fitsfile *histptr,
449 int naxis, int *colnum, char colname[4][FLEN_VALUE], char *colexpr[4], int *status);
450 int fits_make_histde(fitsfile *fptr, fitsfile *histptr, int *datatypes, int bitpix,int naxis,
451 long *naxes, int *colnum, char *colexpr[4], double *amin, double *amax, double *binsize,
452 double weight, int wtcolnum, char *wtexpr, int recip, char *selectrow, int *status);
453 int ffwritehisto(long totaln, long offset, long firstn, long nvalues,
454 int narrays, iteratorCol *imagepars, void *userPointer);
455 int ffcalchist(long totalrows, long offset, long firstrow, long nrows,
456 int ncols, iteratorCol *colpars, void *userPointer);
457 int ffpinit(fitsfile *fptr, int *status);
458 int ffainit(fitsfile *fptr, int *status);
459 int ffbinit(fitsfile *fptr, int *status);
460 int ffchdu(fitsfile *fptr, int *status);
461 int ffwend(fitsfile *fptr, int *status);
462 int ffpdfl(fitsfile *fptr, int *status);
463 int ffuptf(fitsfile *fptr, int *status);
464
465 int ffdblk(fitsfile *fptr, long nblocks, int *status);
466 int ffgext(fitsfile *fptr, int moveto, int *exttype, int *status);
467 int ffgtbc(fitsfile *fptr, LONGLONG *totalwidth, int *status);
468 int ffgtbp(fitsfile *fptr, char *name, char *value, int *status);
469 int ffiblk(fitsfile *fptr, long nblock, int headdata, int *status);
470 int ffshft(fitsfile *fptr, LONGLONG firstbyte, LONGLONG nbytes, LONGLONG nshift,
471 int *status);
472
473 int ffgcprll(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
474 LONGLONG nelem, int writemode, double *scale, double *zero, char *tform,
475 long *twidth, int *tcode, int *maxelem, LONGLONG *startpos,
476 LONGLONG *elemnum, long *incre, LONGLONG *repeat, LONGLONG *rowlen,
477 int *hdutype, LONGLONG *tnull, char *snull, int *status);
478
479 int ffflushx(FITSfile *fptr);
480 int ffseek(FITSfile *fptr, LONGLONG position);
481 int ffread(FITSfile *fptr, long nbytes, void *buffer,
482 int *status);
483 int ffwrite(FITSfile *fptr, long nbytes, void *buffer,
484 int *status);
485 int fftrun(fitsfile *fptr, LONGLONG filesize, int *status);
486
487 int ffpcluc(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
488 LONGLONG nelem, int *status);
489
490 int ffgcll(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
491 LONGLONG nelem, int nultyp, char nulval, char *array, char *nularray,
492 int *anynul, int *status);
493 int ffgcls(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
494 LONGLONG nelem, int nultyp, char *nulval,
495 char **array, char *nularray, int *anynul, int *status);
496 int ffgcls2(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
497 LONGLONG nelem, int nultyp, char *nulval,
498 char **array, char *nularray, int *anynul, int *status);
499 int ffgclb(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
500 LONGLONG nelem, long elemincre, int nultyp, unsigned char nulval,
501 unsigned char *array, char *nularray, int *anynul, int *status);
502 int ffgclsb(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
503 LONGLONG nelem, long elemincre, int nultyp, signed char nulval,
504 signed char *array, char *nularray, int *anynul, int *status);
505 int ffgclui(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
506 LONGLONG nelem, long elemincre, int nultyp, unsigned short nulval,
507 unsigned short *array, char *nularray, int *anynul, int *status);
508 int ffgcli(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
509 LONGLONG nelem, long elemincre, int nultyp, short nulval,
510 short *array, char *nularray, int *anynul, int *status);
511 int ffgcluj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
512 LONGLONG nelem, long elemincre, int nultyp, unsigned long nulval,
513 unsigned long *array, char *nularray, int *anynul, int *status);
514 int ffgclujj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
515 LONGLONG nelem, long elemincre, int nultyp, ULONGLONG nulval,
516 ULONGLONG *array, char *nularray, int *anynul, int *status);
517 int ffgcljj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
518 LONGLONG nelem, long elemincre, int nultyp, LONGLONG nulval,
519 LONGLONG *array, char *nularray, int *anynul, int *status);
520 int ffgclj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
521 LONGLONG nelem, long elemincre, int nultyp, long nulval, long *array,
522 char *nularray, int *anynul, int *status);
523 int ffgcluk(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
524 LONGLONG nelem, long elemincre, int nultyp, unsigned int nulval,
525 unsigned int *array, char *nularray, int *anynul, int *status);
526 int ffgclk(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
527 LONGLONG nelem, long elemincre, int nultyp, int nulval, int *array,
528 char *nularray, int *anynul, int *status);
529 int ffgcle(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
530 LONGLONG nelem, long elemincre, int nultyp, float nulval, float *array,
531 char *nularray, int *anynul, int *status);
532 int ffgcld(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
533 LONGLONG nelem, long elemincre, int nultyp, double nulval,
534 double *array, char *nularray, int *anynul, int *status);
535
536 int ffpi1b(fitsfile *fptr, long nelem, long incre, unsigned char *buffer,
537 int *status);
538 int ffpi2b(fitsfile *fptr, long nelem, long incre, short *buffer, int *status);
539 int ffpi4b(fitsfile *fptr, long nelem, long incre, INT32BIT *buffer,
540 int *status);
541 int ffpi8b(fitsfile *fptr, long nelem, long incre, long *buffer, int *status);
542 int ffpr4b(fitsfile *fptr, long nelem, long incre, float *buffer, int *status);
543 int ffpr8b(fitsfile *fptr, long nelem, long incre, double *buffer, int *status);
544
545 int ffgi1b(fitsfile *fptr, LONGLONG pos, long nelem, long incre,
546 unsigned char *buffer, int *status);
547 int ffgi2b(fitsfile *fptr, LONGLONG pos, long nelem, long incre, short *buffer,
548 int *status);
549 int ffgi4b(fitsfile *fptr, LONGLONG pos, long nelem, long incre, INT32BIT *buffer,
550 int *status);
551 int ffgi8b(fitsfile *fptr, LONGLONG pos, long nelem, long incre, long *buffer,
552 int *status);
553 int ffgr4b(fitsfile *fptr, LONGLONG pos, long nelem, long incre, float *buffer,
554 int *status);
555 int ffgr8b(fitsfile *fptr, LONGLONG pos, long nelem, long incre, double *buffer,
556 int *status);
557
558 int ffcins(fitsfile *fptr, LONGLONG naxis1, LONGLONG naxis2, LONGLONG nbytes,
559 LONGLONG bytepos, int *status);
560 int ffcdel(fitsfile *fptr, LONGLONG naxis1, LONGLONG naxis2, LONGLONG nbytes,
561 LONGLONG bytepos, int *status);
562 int ffkshf(fitsfile *fptr, int firstcol, int tfields, int nshift, int *status);
563 int fffvcl(fitsfile *fptr, int *nvarcols, int *colnums, int *status);
564
565 int fffi1i1(unsigned char *input, long ntodo, double scale, double zero,
566 int nullcheck, unsigned char tnull, unsigned char nullval, char
567 *nullarray, int *anynull, unsigned char *output, int *status);
568 int fffi2i1(short *input, long ntodo, double scale, double zero,
569 int nullcheck, short tnull, unsigned char nullval, char *nullarray,
570 int *anynull, unsigned char *output, int *status);
571 int fffi4i1(INT32BIT *input, long ntodo, double scale, double zero,
572 int nullcheck, INT32BIT tnull, unsigned char nullval, char *nullarray,
573 int *anynull, unsigned char *output, int *status);
574 int fffi8i1(LONGLONG *input, long ntodo, double scale, double zero,
575 int nullcheck, LONGLONG tnull, unsigned char nullval, char *nullarray,
576 int *anynull, unsigned char *output, int *status);
577 int fffr4i1(float *input, long ntodo, double scale, double zero,
578 int nullcheck, unsigned char nullval, char *nullarray,
579 int *anynull, unsigned char *output, int *status);
580 int fffr8i1(double *input, long ntodo, double scale, double zero,
581 int nullcheck, unsigned char nullval, char *nullarray,
582 int *anynull, unsigned char *output, int *status);
583 int fffstri1(char *input, long ntodo, double scale, double zero,
584 long twidth, double power, int nullcheck, char *snull,
585 unsigned char nullval, char *nullarray, int *anynull,
586 unsigned char *output, int *status);
587
588 int fffi1s1(unsigned char *input, long ntodo, double scale, double zero,
589 int nullcheck, unsigned char tnull, signed char nullval, char
590 *nullarray, int *anynull, signed char *output, int *status);
591 int fffi2s1(short *input, long ntodo, double scale, double zero,
592 int nullcheck, short tnull, signed char nullval, char *nullarray,
593 int *anynull, signed char *output, int *status);
594 int fffi4s1(INT32BIT *input, long ntodo, double scale, double zero,
595 int nullcheck, INT32BIT tnull, signed char nullval, char *nullarray,
596 int *anynull, signed char *output, int *status);
597 int fffi8s1(LONGLONG *input, long ntodo, double scale, double zero,
598 int nullcheck, LONGLONG tnull, signed char nullval, char *nullarray,
599 int *anynull, signed char *output, int *status);
600 int fffr4s1(float *input, long ntodo, double scale, double zero,
601 int nullcheck, signed char nullval, char *nullarray,
602 int *anynull, signed char *output, int *status);
603 int fffr8s1(double *input, long ntodo, double scale, double zero,
604 int nullcheck, signed char nullval, char *nullarray,
605 int *anynull, signed char *output, int *status);
606 int fffstrs1(char *input, long ntodo, double scale, double zero,
607 long twidth, double power, int nullcheck, char *snull,
608 signed char nullval, char *nullarray, int *anynull,
609 signed char *output, int *status);
610
611 int fffi1u2(unsigned char *input, long ntodo, double scale, double zero,
612 int nullcheck, unsigned char tnull, unsigned short nullval,
613 char *nullarray,
614 int *anynull, unsigned short *output, int *status);
615 int fffi2u2(short *input, long ntodo, double scale, double zero,
616 int nullcheck, short tnull, unsigned short nullval, char *nullarray,
617 int *anynull, unsigned short *output, int *status);
618 int fffi4u2(INT32BIT *input, long ntodo, double scale, double zero,
619 int nullcheck, INT32BIT tnull, unsigned short nullval, char *nullarray,
620 int *anynull, unsigned short *output, int *status);
621 int fffi8u2(LONGLONG *input, long ntodo, double scale, double zero,
622 int nullcheck, LONGLONG tnull, unsigned short nullval, char *nullarray,
623 int *anynull, unsigned short *output, int *status);
624 int fffr4u2(float *input, long ntodo, double scale, double zero,
625 int nullcheck, unsigned short nullval, char *nullarray,
626 int *anynull, unsigned short *output, int *status);
627 int fffr8u2(double *input, long ntodo, double scale, double zero,
628 int nullcheck, unsigned short nullval, char *nullarray,
629 int *anynull, unsigned short *output, int *status);
630 int fffstru2(char *input, long ntodo, double scale, double zero,
631 long twidth, double power, int nullcheck, char *snull,
632 unsigned short nullval, char *nullarray, int *anynull,
633 unsigned short *output, int *status);
634
635 int fffi1i2(unsigned char *input, long ntodo, double scale, double zero,
636 int nullcheck, unsigned char tnull, short nullval, char *nullarray,
637 int *anynull, short *output, int *status);
638 int fffi2i2(short *input, long ntodo, double scale, double zero,
639 int nullcheck, short tnull, short nullval, char *nullarray,
640 int *anynull, short *output, int *status);
641 int fffi4i2(INT32BIT *input, long ntodo, double scale, double zero,
642 int nullcheck, INT32BIT tnull, short nullval, char *nullarray,
643 int *anynull, short *output, int *status);
644 int fffi8i2(LONGLONG *input, long ntodo, double scale, double zero,
645 int nullcheck, LONGLONG tnull, short nullval, char *nullarray,
646 int *anynull, short *output, int *status);
647 int fffr4i2(float *input, long ntodo, double scale, double zero,
648 int nullcheck, short nullval, char *nullarray,
649 int *anynull, short *output, int *status);
650 int fffr8i2(double *input, long ntodo, double scale, double zero,
651 int nullcheck, short nullval, char *nullarray,
652 int *anynull, short *output, int *status);
653 int fffstri2(char *input, long ntodo, double scale, double zero,
654 long twidth, double power, int nullcheck, char *snull,
655 short nullval, char *nullarray, int *anynull, short *output,
656 int *status);
657
658 int fffi1u4(unsigned char *input, long ntodo, double scale, double zero,
659 int nullcheck, unsigned char tnull, unsigned long nullval,
660 char *nullarray,
661 int *anynull, unsigned long *output, int *status);
662 int fffi2u4(short *input, long ntodo, double scale, double zero,
663 int nullcheck, short tnull, unsigned long nullval, char *nullarray,
664 int *anynull, unsigned long *output, int *status);
665 int fffi4u4(INT32BIT *input, long ntodo, double scale, double zero,
666 int nullcheck, INT32BIT tnull, unsigned long nullval, char *nullarray,
667 int *anynull, unsigned long *output, int *status);
668 int fffi8u4(LONGLONG *input, long ntodo, double scale, double zero,
669 int nullcheck, LONGLONG tnull, unsigned long nullval, char *nullarray,
670 int *anynull, unsigned long *output, int *status);
671 int fffr4u4(float *input, long ntodo, double scale, double zero,
672 int nullcheck, unsigned long nullval, char *nullarray,
673 int *anynull, unsigned long *output, int *status);
674 int fffr8u4(double *input, long ntodo, double scale, double zero,
675 int nullcheck, unsigned long nullval, char *nullarray,
676 int *anynull, unsigned long *output, int *status);
677 int fffstru4(char *input, long ntodo, double scale, double zero,
678 long twidth, double power, int nullcheck, char *snull,
679 unsigned long nullval, char *nullarray, int *anynull,
680 unsigned long *output, int *status);
681
682 int fffi1i4(unsigned char *input, long ntodo, double scale, double zero,
683 int nullcheck, unsigned char tnull, long nullval, char *nullarray,
684 int *anynull, long *output, int *status);
685 int fffi2i4(short *input, long ntodo, double scale, double zero,
686 int nullcheck, short tnull, long nullval, char *nullarray,
687 int *anynull, long *output, int *status);
688 int fffi4i4(INT32BIT *input, long ntodo, double scale, double zero,
689 int nullcheck, INT32BIT tnull, long nullval, char *nullarray,
690 int *anynull, long *output, int *status);
691 int fffi8i4(LONGLONG *input, long ntodo, double scale, double zero,
692 int nullcheck, LONGLONG tnull, long nullval, char *nullarray,
693 int *anynull, long *output, int *status);
694 int fffr4i4(float *input, long ntodo, double scale, double zero,
695 int nullcheck, long nullval, char *nullarray,
696 int *anynull, long *output, int *status);
697 int fffr8i4(double *input, long ntodo, double scale, double zero,
698 int nullcheck, long nullval, char *nullarray,
699 int *anynull, long *output, int *status);
700 int fffstri4(char *input, long ntodo, double scale, double zero,
701 long twidth, double power, int nullcheck, char *snull,
702 long nullval, char *nullarray, int *anynull, long *output,
703 int *status);
704
705 int fffi1int(unsigned char *input, long ntodo, double scale, double zero,
706 int nullcheck, unsigned char tnull, int nullval, char *nullarray,
707 int *anynull, int *output, int *status);
708 int fffi2int(short *input, long ntodo, double scale, double zero,
709 int nullcheck, short tnull, int nullval, char *nullarray,
710 int *anynull, int *output, int *status);
711 int fffi4int(INT32BIT *input, long ntodo, double scale, double zero,
712 int nullcheck, INT32BIT tnull, int nullval, char *nullarray,
713 int *anynull, int *output, int *status);
714 int fffi8int(LONGLONG *input, long ntodo, double scale, double zero,
715 int nullcheck, LONGLONG tnull, int nullval, char *nullarray,
716 int *anynull, int *output, int *status);
717 int fffr4int(float *input, long ntodo, double scale, double zero,
718 int nullcheck, int nullval, char *nullarray,
719 int *anynull, int *output, int *status);
720 int fffr8int(double *input, long ntodo, double scale, double zero,
721 int nullcheck, int nullval, char *nullarray,
722 int *anynull, int *output, int *status);
723 int fffstrint(char *input, long ntodo, double scale, double zero,
724 long twidth, double power, int nullcheck, char *snull,
725 int nullval, char *nullarray, int *anynull, int *output,
726 int *status);
727
728 int fffi1uint(unsigned char *input, long ntodo, double scale, double zero,
729 int nullcheck, unsigned char tnull, unsigned int nullval,
730 char *nullarray, int *anynull, unsigned int *output, int *status);
731 int fffi2uint(short *input, long ntodo, double scale, double zero,
732 int nullcheck, short tnull, unsigned int nullval, char *nullarray,
733 int *anynull, unsigned int *output, int *status);
734 int fffi4uint(INT32BIT *input, long ntodo, double scale, double zero,
735 int nullcheck, INT32BIT tnull, unsigned int nullval, char *nullarray,
736 int *anynull, unsigned int *output, int *status);
737 int fffi8uint(LONGLONG *input, long ntodo, double scale, double zero,
738 int nullcheck, LONGLONG tnull, unsigned int nullval, char *nullarray,
739 int *anynull, unsigned int *output, int *status);
740 int fffr4uint(float *input, long ntodo, double scale, double zero,
741 int nullcheck, unsigned int nullval, char *nullarray,
742 int *anynull, unsigned int *output, int *status);
743 int fffr8uint(double *input, long ntodo, double scale, double zero,
744 int nullcheck, unsigned int nullval, char *nullarray,
745 int *anynull, unsigned int *output, int *status);
746 int fffstruint(char *input, long ntodo, double scale, double zero,
747 long twidth, double power, int nullcheck, char *snull,
748 unsigned int nullval, char *nullarray, int *anynull,
749 unsigned int *output, int *status);
750
751 int fffi1i8(unsigned char *input, long ntodo, double scale, double zero,
752 int nullcheck, unsigned char tnull, LONGLONG nullval,
753 char *nullarray, int *anynull, LONGLONG *output, int *status);
754 int fffi2i8(short *input, long ntodo, double scale, double zero,
755 int nullcheck, short tnull, LONGLONG nullval, char *nullarray,
756 int *anynull, LONGLONG *output, int *status);
757 int fffi4i8(INT32BIT *input, long ntodo, double scale, double zero,
758 int nullcheck, INT32BIT tnull, LONGLONG nullval, char *nullarray,
759 int *anynull, LONGLONG *output, int *status);
760 int fffi8i8(LONGLONG *input, long ntodo, double scale, double zero,
761 int nullcheck, LONGLONG tnull, LONGLONG nullval, char *nullarray,
762 int *anynull, LONGLONG *output, int *status);
763 int fffr4i8(float *input, long ntodo, double scale, double zero,
764 int nullcheck, LONGLONG nullval, char *nullarray,
765 int *anynull, LONGLONG *output, int *status);
766 int fffr8i8(double *input, long ntodo, double scale, double zero,
767 int nullcheck, LONGLONG nullval, char *nullarray,
768 int *anynull, LONGLONG *output, int *status);
769 int fffstri8(char *input, long ntodo, double scale, double zero,
770 long twidth, double power, int nullcheck, char *snull,
771 LONGLONG nullval, char *nullarray, int *anynull, LONGLONG *output,
772 int *status);
773
774 int fffi1u8(unsigned char *input, long ntodo, double scale, double zero,
775 int nullcheck, unsigned char tnull, ULONGLONG nullval,
776 char *nullarray, int *anynull, ULONGLONG *output, int *status);
777 int fffi2u8(short *input, long ntodo, double scale, double zero,
778 int nullcheck, short tnull, ULONGLONG nullval, char *nullarray,
779 int *anynull, ULONGLONG *output, int *status);
780 int fffi4u8(INT32BIT *input, long ntodo, double scale, double zero,
781 int nullcheck, INT32BIT tnull, ULONGLONG nullval, char *nullarray,
782 int *anynull, ULONGLONG *output, int *status);
783 int fffi8u8(LONGLONG *input, long ntodo, double scale, double zero,
784 int nullcheck, LONGLONG tnull, ULONGLONG nullval, char *nullarray,
785 int *anynull, ULONGLONG *output, int *status);
786 int fffr4u8(float *input, long ntodo, double scale, double zero,
787 int nullcheck, ULONGLONG nullval, char *nullarray,
788 int *anynull, ULONGLONG *output, int *status);
789 int fffr8u8(double *input, long ntodo, double scale, double zero,
790 int nullcheck, ULONGLONG nullval, char *nullarray,
791 int *anynull, ULONGLONG *output, int *status);
792 int fffstru8(char *input, long ntodo, double scale, double zero,
793 long twidth, double power, int nullcheck, char *snull,
794 ULONGLONG nullval, char *nullarray, int *anynull, ULONGLONG *output,
795 int *status);
796
797
798 int fffi1r4(unsigned char *input, long ntodo, double scale, double zero,
799 int nullcheck, unsigned char tnull, float nullval, char *nullarray,
800 int *anynull, float *output, int *status);
801 int fffi2r4(short *input, long ntodo, double scale, double zero,
802 int nullcheck, short tnull, float nullval, char *nullarray,
803 int *anynull, float *output, int *status);
804 int fffi4r4(INT32BIT *input, long ntodo, double scale, double zero,
805 int nullcheck, INT32BIT tnull, float nullval, char *nullarray,
806 int *anynull, float *output, int *status);
807 int fffi8r4(LONGLONG *input, long ntodo, double scale, double zero,
808 int nullcheck, LONGLONG tnull, float nullval, char *nullarray,
809 int *anynull, float *output, int *status);
810 int fffr4r4(float *input, long ntodo, double scale, double zero,
811 int nullcheck, float nullval, char *nullarray,
812 int *anynull, float *output, int *status);
813 int fffr8r4(double *input, long ntodo, double scale, double zero,
814 int nullcheck, float nullval, char *nullarray,
815 int *anynull, float *output, int *status);
816 int fffstrr4(char *input, long ntodo, double scale, double zero,
817 long twidth, double power, int nullcheck, char *snull,
818 float nullval, char *nullarray, int *anynull, float *output,
819 int *status);
820
821 int fffi1r8(unsigned char *input, long ntodo, double scale, double zero,
822 int nullcheck, unsigned char tnull, double nullval, char *nullarray,
823 int *anynull, double *output, int *status);
824 int fffi2r8(short *input, long ntodo, double scale, double zero,
825 int nullcheck, short tnull, double nullval, char *nullarray,
826 int *anynull, double *output, int *status);
827 int fffi4r8(INT32BIT *input, long ntodo, double scale, double zero,
828 int nullcheck, INT32BIT tnull, double nullval, char *nullarray,
829 int *anynull, double *output, int *status);
830 int fffi8r8(LONGLONG *input, long ntodo, double scale, double zero,
831 int nullcheck, LONGLONG tnull, double nullval, char *nullarray,
832 int *anynull, double *output, int *status);
833 int fffr4r8(float *input, long ntodo, double scale, double zero,
834 int nullcheck, double nullval, char *nullarray,
835 int *anynull, double *output, int *status);
836 int fffr8r8(double *input, long ntodo, double scale, double zero,
837 int nullcheck, double nullval, char *nullarray,
838 int *anynull, double *output, int *status);
839 int fffstrr8(char *input, long ntodo, double scale, double zero,
840 long twidth, double power, int nullcheck, char *snull,
841 double nullval, char *nullarray, int *anynull, double *output,
842 int *status);
843
844 int ffi1fi1(unsigned char *array, long ntodo, double scale, double zero,
845 unsigned char *buffer, int *status);
846 int ffs1fi1(signed char *array, long ntodo, double scale, double zero,
847 unsigned char *buffer, int *status);
848 int ffu2fi1(unsigned short *array, long ntodo, double scale, double zero,
849 unsigned char *buffer, int *status);
850 int ffi2fi1(short *array, long ntodo, double scale, double zero,
851 unsigned char *buffer, int *status);
852 int ffu4fi1(unsigned long *array, long ntodo, double scale, double zero,
853 unsigned char *buffer, int *status);
854 int ffi4fi1(long *array, long ntodo, double scale, double zero,
855 unsigned char *buffer, int *status);
856 int ffu8fi1(ULONGLONG *array, long ntodo, double scale, double zero,
857 unsigned char *buffer, int *status);
858 int ffi8fi1(LONGLONG *array, long ntodo, double scale, double zero,
859 unsigned char *buffer, int *status);
860 int ffuintfi1(unsigned int *array, long ntodo, double scale, double zero,
861 unsigned char *buffer, int *status);
862 int ffintfi1(int *array, long ntodo, double scale, double zero,
863 unsigned char *buffer, int *status);
864 int ffr4fi1(float *array, long ntodo, double scale, double zero,
865 unsigned char *buffer, int *status);
866 int ffr8fi1(double *array, long ntodo, double scale, double zero,
867 unsigned char *buffer, int *status);
868
869 int ffi1fi2(unsigned char *array, long ntodo, double scale, double zero,
870 short *buffer, int *status);
871 int ffs1fi2(signed char *array, long ntodo, double scale, double zero,
872 short *buffer, int *status);
873 int ffu2fi2(unsigned short *array, long ntodo, double scale, double zero,
874 short *buffer, int *status);
875 int ffi2fi2(short *array, long ntodo, double scale, double zero,
876 short *buffer, int *status);
877 int ffu4fi2(unsigned long *array, long ntodo, double scale, double zero,
878 short *buffer, int *status);
879 int ffi4fi2(long *array, long ntodo, double scale, double zero,
880 short *buffer, int *status);
881 int ffu8fi2(ULONGLONG *array, long ntodo, double scale, double zero,
882 short *buffer, int *status);
883 int ffi8fi2(LONGLONG *array, long ntodo, double scale, double zero,
884 short *buffer, int *status);
885 int ffuintfi2(unsigned int *array, long ntodo, double scale, double zero,
886 short *buffer, int *status);
887 int ffintfi2(int *array, long ntodo, double scale, double zero,
888 short *buffer, int *status);
889 int ffr4fi2(float *array, long ntodo, double scale, double zero,
890 short *buffer, int *status);
891 int ffr8fi2(double *array, long ntodo, double scale, double zero,
892 short *buffer, int *status);
893
894 int ffi1fi4(unsigned char *array, long ntodo, double scale, double zero,
895 INT32BIT *buffer, int *status);
896 int ffs1fi4(signed char *array, long ntodo, double scale, double zero,
897 INT32BIT *buffer, int *status);
898 int ffu2fi4(unsigned short *array, long ntodo, double scale, double zero,
899 INT32BIT *buffer, int *status);
900 int ffi2fi4(short *array, long ntodo, double scale, double zero,
901 INT32BIT *buffer, int *status);
902 int ffu4fi4(unsigned long *array, long ntodo, double scale, double zero,
903 INT32BIT *buffer, int *status);
904 int ffu8fi4(ULONGLONG *array, long ntodo, double scale, double zero,
905 INT32BIT *buffer, int *status);
906 int ffi4fi4(long *array, long ntodo, double scale, double zero,
907 INT32BIT *buffer, int *status);
908 int ffi8fi4(LONGLONG *array, long ntodo, double scale, double zero,
909 INT32BIT *buffer, int *status);
910 int ffuintfi4(unsigned int *array, long ntodo, double scale, double zero,
911 INT32BIT *buffer, int *status);
912 int ffintfi4(int *array, long ntodo, double scale, double zero,
913 INT32BIT *buffer, int *status);
914 int ffr4fi4(float *array, long ntodo, double scale, double zero,
915 INT32BIT *buffer, int *status);
916 int ffr8fi4(double *array, long ntodo, double scale, double zero,
917 INT32BIT *buffer, int *status);
918
919 int ffi4fi8(long *array, long ntodo, double scale, double zero,
920 LONGLONG *buffer, int *status);
921 int ffi8fi8(LONGLONG *array, long ntodo, double scale, double zero,
922 LONGLONG *buffer, int *status);
923 int ffi2fi8(short *array, long ntodo, double scale, double zero,
924 LONGLONG *buffer, int *status);
925 int ffi1fi8(unsigned char *array, long ntodo, double scale, double zero,
926 LONGLONG *buffer, int *status);
927 int ffs1fi8(signed char *array, long ntodo, double scale, double zero,
928 LONGLONG *buffer, int *status);
929 int ffr4fi8(float *array, long ntodo, double scale, double zero,
930 LONGLONG *buffer, int *status);
931 int ffr8fi8(double *array, long ntodo, double scale, double zero,
932 LONGLONG *buffer, int *status);
933 int ffintfi8(int *array, long ntodo, double scale, double zero,
934 LONGLONG *buffer, int *status);
935 int ffu2fi8(unsigned short *array, long ntodo, double scale, double zero,
936 LONGLONG *buffer, int *status);
937 int ffu4fi8(unsigned long *array, long ntodo, double scale, double zero,
938 LONGLONG *buffer, int *status);
939 int ffu8fi8(ULONGLONG *array, long ntodo, double scale, double zero,
940 LONGLONG *buffer, int *status);
941 int ffuintfi8(unsigned int *array, long ntodo, double scale, double zero,
942 LONGLONG *buffer, int *status);
943
944 int ffi1fr4(unsigned char *array, long ntodo, double scale, double zero,
945 float *buffer, int *status);
946 int ffs1fr4(signed char *array, long ntodo, double scale, double zero,
947 float *buffer, int *status);
948 int ffu2fr4(unsigned short *array, long ntodo, double scale, double zero,
949 float *buffer, int *status);
950 int ffi2fr4(short *array, long ntodo, double scale, double zero,
951 float *buffer, int *status);
952 int ffu4fr4(unsigned long *array, long ntodo, double scale, double zero,
953 float *buffer, int *status);
954 int ffi4fr4(long *array, long ntodo, double scale, double zero,
955 float *buffer, int *status);
956 int ffu8fr4(ULONGLONG *array, long ntodo, double scale, double zero,
957 float *buffer, int *status);
958 int ffi8fr4(LONGLONG *array, long ntodo, double scale, double zero,
959 float *buffer, int *status);
960 int ffuintfr4(unsigned int *array, long ntodo, double scale, double zero,
961 float *buffer, int *status);
962 int ffintfr4(int *array, long ntodo, double scale, double zero,
963 float *buffer, int *status);
964 int ffr4fr4(float *array, long ntodo, double scale, double zero,
965 float *buffer, int *status);
966 int ffr8fr4(double *array, long ntodo, double scale, double zero,
967 float *buffer, int *status);
968
969 int ffi1fr8(unsigned char *array, long ntodo, double scale, double zero,
970 double *buffer, int *status);
971 int ffs1fr8(signed char *array, long ntodo, double scale, double zero,
972 double *buffer, int *status);
973 int ffu2fr8(unsigned short *array, long ntodo, double scale, double zero,
974 double *buffer, int *status);
975 int ffi2fr8(short *array, long ntodo, double scale, double zero,
976 double *buffer, int *status);
977 int ffu4fr8(unsigned long *array, long ntodo, double scale, double zero,
978 double *buffer, int *status);
979 int ffi4fr8(long *array, long ntodo, double scale, double zero,
980 double *buffer, int *status);
981 int ffu8fr8(ULONGLONG *array, long ntodo, double scale, double zero,
982 double *buffer, int *status);
983 int ffi8fr8(LONGLONG *array, long ntodo, double scale, double zero,
984 double *buffer, int *status);
985 int ffuintfr8(unsigned int *array, long ntodo, double scale, double zero,
986 double *buffer, int *status);
987 int ffintfr8(int *array, long ntodo, double scale, double zero,
988 double *buffer, int *status);
989 int ffr4fr8(float *array, long ntodo, double scale, double zero,
990 double *buffer, int *status);
991 int ffr8fr8(double *array, long ntodo, double scale, double zero,
992 double *buffer, int *status);
993
994 int ffi1fstr(unsigned char *input, long ntodo, double scale, double zero,
995 char *cform, long twidth, char *output, int *status);
996 int ffs1fstr(signed char *input, long ntodo, double scale, double zero,
997 char *cform, long twidth, char *output, int *status);
998 int ffu2fstr(unsigned short *input, long ntodo, double scale, double zero,
999 char *cform, long twidth, char *output, int *status);
1000 int ffi2fstr(short *input, long ntodo, double scale, double zero,
1001 char *cform, long twidth, char *output, int *status);
1002 int ffu4fstr(unsigned long *input, long ntodo, double scale, double zero,
1003 char *cform, long twidth, char *output, int *status);
1004 int ffi4fstr(long *input, long ntodo, double scale, double zero,
1005 char *cform, long twidth, char *output, int *status);
1006 int ffu8fstr(ULONGLONG *input, long ntodo, double scale, double zero,
1007 char *cform, long twidth, char *output, int *status);
1008 int ffi8fstr(LONGLONG *input, long ntodo, double scale, double zero,
1009 char *cform, long twidth, char *output, int *status);
1010 int ffintfstr(int *input, long ntodo, double scale, double zero,
1011 char *cform, long twidth, char *output, int *status);
1012 int ffuintfstr(unsigned int *input, long ntodo, double scale, double zero,
1013 char *cform, long twidth, char *output, int *status);
1014 int ffr4fstr(float *input, long ntodo, double scale, double zero,
1015 char *cform, long twidth, char *output, int *status);
1016 int ffr8fstr(double *input, long ntodo, double scale, double zero,
1017 char *cform, long twidth, char *output, int *status);
1018
1019 /* the following 4 routines are VMS macros used on VAX or Alpha VMS */
1020 void ieevpd(double *inarray, double *outarray, long *nvals);
1021 void ieevud(double *inarray, double *outarray, long *nvals);
1022 void ieevpr(float *inarray, float *outarray, long *nvals);
1023 void ieevur(float *inarray, float *outarray, long *nvals);
1024
1025 /* routines related to the lexical parser */
1026 typedef struct ParseData_struct ParseData;
1027 int ffselect_table(fitsfile **fptr, char *outfile, char *expr, int *status);
1028 int ffiprs( fitsfile *fptr, int compressed, char *expr, int maxdim,
1029 int *datatype, long *nelem, int *naxis, long *naxes,
1030 ParseData *, int *status );
1031 void ffcprs( ParseData * );
1032 int ffcvtn( int inputType, void *input, char *undef, long ntodo,
1033 int outputType, void *nulval, void *output,
1034 int *anynull, int *status );
1035 int fits_parser_workfn( long totalrows, long offset, long firstrow,
1036 long nrows, int nCols, iteratorCol *colData,
1037 void *userPtr );
1038 int fits_uncompress_hkdata( ParseData *,
1039 fitsfile *fptr, long ntimes,
1040 double *times, int *status );
1041 int ffffrw_work( long totalrows, long offset, long firstrow,
1042 long nrows, int nCols, iteratorCol *colData,
1043 void *userPtr );
1044
1045 int fits_translate_pixkeyword(char *inrec, char *outrec,char *patterns[][2],
1046 int npat, int naxis, int *colnum, int *pat_num, int *i,
1047 int *j, int *n, int *m, int *l, int *status);
1048
1049 /* image compression routines */
1050 int fits_write_compressed_img(fitsfile *fptr,
1051 int datatype, long *fpixel, long *lpixel,
1052 int nullcheck, void *array, void *nulval,
1053 int *status);
1054 int fits_write_compressed_pixels(fitsfile *fptr,
1055 int datatype, LONGLONG fpixel, LONGLONG npixels,
1056 int nullcheck, void *array, void *nulval,
1057 int *status);
1058 int fits_write_compressed_img_plane(fitsfile *fptr, int datatype,
1059 int bytesperpixel, long nplane, long *firstcoord, long *lastcoord,
1060 long *naxes, int nullcheck,
1061 void *array, void *nullval, long *nread, int *status);
1062
1063 int imcomp_init_table(fitsfile *outfptr,
1064 int bitpix, int naxis,long *naxes, int writebitpix, int *status);
1065 int imcomp_calc_max_elem (int comptype, int nx, int zbitpix, int blocksize);
1066 int imcomp_copy_imheader(fitsfile *infptr, fitsfile *outfptr,
1067 int *status);
1068 int imcomp_copy_img2comp(fitsfile *infptr, fitsfile *outfptr, int *status);
1069 int imcomp_copy_comp2img(fitsfile *infptr, fitsfile *outfptr,
1070 int norec, int *status);
1071 int imcomp_copy_prime2img(fitsfile *infptr, fitsfile *outfptr, int *status);
1072 int imcomp_compress_image (fitsfile *infptr, fitsfile *outfptr,
1073 int *status);
1074 int imcomp_compress_tile (fitsfile *outfptr, long row,
1075 int datatype, void *tiledata, long tilelen, long nx, long ny,
1076 int nullcheck, void *nullval, int *status);
1077 int imcomp_nullscale(int *idata, long tilelen, int nullflagval, int nullval,
1078 double scale, double zero, int * status);
1079 int imcomp_nullvalues(int *idata, long tilelen, int nullflagval, int nullval,
1080 int * status);
1081 int imcomp_scalevalues(int *idata, long tilelen, double scale, double zero,
1082 int * status);
1083 int imcomp_nullscalefloats(float *fdata, long tilelen, int *idata,
1084 double scale, double zero, int nullcheck, float nullflagval, int nullval,
1085 int *status);
1086 int imcomp_nullfloats(float *fdata, long tilelen, int *idata, int nullcheck,
1087 float nullflagval, int nullval, int *status);
1088 int imcomp_nullscaledoubles(double *fdata, long tilelen, int *idata,
1089 double scale, double zero, int nullcheck, double nullflagval, int nullval,
1090 int *status);
1091 int imcomp_nulldoubles(double *fdata, long tilelen, int *idata, int nullcheck,
1092 double nullflagval, int nullval, int *status);
1093
1094
1095 /* image decompression routines */
1096 int fits_read_compressed_img(fitsfile *fptr,
1097 int datatype, LONGLONG *fpixel,LONGLONG *lpixel,long *inc,
1098 int nullcheck, void *nulval, void *array, char *nullarray,
1099 int *anynul, int *status);
1100 int fits_read_compressed_pixels(fitsfile *fptr,
1101 int datatype, LONGLONG fpixel, LONGLONG npixels,
1102 int nullcheck, void *nulval, void *array, char *nullarray,
1103 int *anynul, int *status);
1104 int fits_read_compressed_img_plane(fitsfile *fptr, int datatype,
1105 int bytesperpixel, long nplane, LONGLONG *firstcoord, LONGLONG *lastcoord,
1106 long *inc, long *naxes, int nullcheck, void *nullval,
1107 void *array, char *nullarray, int *anynul, long *nread, int *status);
1108
1109 int imcomp_get_compressed_image_par(fitsfile *infptr, int *status);
1110 int imcomp_decompress_tile (fitsfile *infptr,
1111 int nrow, int tilesize, int datatype, int nullcheck,
1112 void *nulval, void *buffer, char *bnullarray, int *anynul,
1113 int *status);
1114 int imcomp_copy_overlap (char *tile, int pixlen, int ndim,
1115 long *tfpixel, long *tlpixel, char *bnullarray, char *image,
1116 long *fpixel, long *lpixel, long *inc, int nullcheck, char *nullarray,
1117 int *status);
1118 int imcomp_test_overlap (int ndim, long *tfpixel, long *tlpixel,
1119 long *fpixel, long *lpixel, long *inc, int *status);
1120 int imcomp_merge_overlap (char *tile, int pixlen, int ndim,
1121 long *tfpixel, long *tlpixel, char *bnullarray, char *image,
1122 long *fpixel, long *lpixel, int nullcheck, int *status);
1123 int imcomp_decompress_img(fitsfile *infptr, fitsfile *outfptr, int datatype,
1124 int *status);
1125 int fits_quantize_float (long row, float fdata[], long nx, long ny, int nullcheck,
1126 float in_null_value, float quantize_level,
1127 int dither_method, int idata[], double *bscale, double *bzero,
1128 int *iminval, int *imaxval);
1129 int fits_quantize_double (long row, double fdata[], long nx, long ny, int nullcheck,
1130 double in_null_value, float quantize_level,
1131 int dither_method, int idata[], double *bscale, double *bzero,
1132 int *iminval, int *imaxval);
1133 int fits_rcomp(int a[], int nx, unsigned char *c, int clen,int nblock);
1134 int fits_rcomp_short(short a[], int nx, unsigned char *c, int clen,int nblock);
1135 int fits_rcomp_byte(signed char a[], int nx, unsigned char *c, int clen,int nblock);
1136 int fits_rdecomp (unsigned char *c, int clen, unsigned int array[], int nx,
1137 int nblock);
1138 int fits_rdecomp_short (unsigned char *c, int clen, unsigned short array[], int nx,
1139 int nblock);
1140 int fits_rdecomp_byte (unsigned char *c, int clen, unsigned char array[], int nx,
1141 int nblock);
1142 int pl_p2li (int *pxsrc, int xs, short *lldst, int npix);
1143 int pl_l2pi (short *ll_src, int xs, int *px_dst, int npix);
1144 int fits_init_randoms(void);
1145 int fits_unset_compression_param( fitsfile *fptr, int *status);
1146 int fits_unset_compression_request( fitsfile *fptr, int *status);
1147 int fitsio_init_lock(void);
1148
1149 /* general driver routines */
1150
1151 int urltype2driver(char *urltype, int *driver);
1152
1153 void fits_dwnld_prog_bar(int flag);
1154 int fits_net_timeout(int sec);
1155
1156 int fits_register_driver( char *prefix,
1157 int (*init)(void),
1158 int (*fitsshutdown)(void),
1159 int (*setoptions)(int option),
1160 int (*getoptions)(int *options),
1161 int (*getversion)(int *version),
1162 int (*checkfile) (char *urltype, char *infile, char *outfile),
1163 int (*fitsopen)(char *filename, int rwmode, int *driverhandle),
1164 int (*fitscreate)(char *filename, int *driverhandle),
1165 int (*fitstruncate)(int driverhandle, LONGLONG filesize),
1166 int (*fitsclose)(int driverhandle),
1167 int (*fremove)(char *filename),
1168 int (*size)(int driverhandle, LONGLONG *sizex),
1169 int (*flush)(int driverhandle),
1170 int (*seek)(int driverhandle, LONGLONG offset),
1171 int (*fitsread) (int driverhandle, void *buffer, long nbytes),
1172 int (*fitswrite)(int driverhandle, void *buffer, long nbytes));
1173
1174 /* file driver I/O routines */
1175
1176 int file_init(void);
1177 int file_setoptions(int options);
1178 int file_getoptions(int *options);
1179 int file_getversion(int *version);
1180 int file_shutdown(void);
1181 int file_checkfile(char *urltype, char *infile, char *outfile);
1182 int file_open(char *filename, int rwmode, int *driverhandle);
1183 int file_compress_open(char *filename, int rwmode, int *hdl);
1184 int file_openfile(char *filename, int rwmode, FILE **diskfile);
1185 int file_create(char *filename, int *driverhandle);
1186 int file_truncate(int driverhandle, LONGLONG filesize);
1187 int file_size(int driverhandle, LONGLONG *filesize);
1188 int file_close(int driverhandle);
1189 int file_remove(char *filename);
1190 int file_flush(int driverhandle);
1191 int file_seek(int driverhandle, LONGLONG offset);
1192 int file_read (int driverhandle, void *buffer, long nbytes);
1193 int file_write(int driverhandle, void *buffer, long nbytes);
1194 int file_is_compressed(char *filename);
1195
1196 /* stream driver I/O routines */
1197
1198 int stream_open(char *filename, int rwmode, int *driverhandle);
1199 int stream_create(char *filename, int *driverhandle);
1200 int stream_size(int driverhandle, LONGLONG *filesize);
1201 int stream_close(int driverhandle);
1202 int stream_flush(int driverhandle);
1203 int stream_seek(int driverhandle, LONGLONG offset);
1204 int stream_read (int driverhandle, void *buffer, long nbytes);
1205 int stream_write(int driverhandle, void *buffer, long nbytes);
1206
1207 /* memory driver I/O routines */
1208
1209 int mem_init(void);
1210 int mem_setoptions(int options);
1211 int mem_getoptions(int *options);
1212 int mem_getversion(int *version);
1213 int mem_shutdown(void);
1214 int mem_create(char *filename, int *handle);
1215 int mem_create_comp(char *filename, int *handle);
1216 int mem_openmem(void **buffptr, size_t *buffsize, size_t deltasize,
1217 void *(*memrealloc)(void *p, size_t newsize), int *handle);
1218 int mem_createmem(size_t memsize, int *handle);
1219 int stdin_checkfile(char *urltype, char *infile, char *outfile);
1220 int stdin_open(char *filename, int rwmode, int *handle);
1221 int stdin2mem(int hd);
1222 int stdin2file(int hd);
1223 int stdout_close(int handle);
1224 int mem_compress_openrw(char *filename, int rwmode, int *hdl);
1225 int mem_compress_open(char *filename, int rwmode, int *hdl);
1226 int mem_compress_stdin_open(char *filename, int rwmode, int *hdl);
1227 int mem_zuncompress_and_write(int hdl, void *buffer, long nbytes);
1228 int mem_iraf_open(char *filename, int rwmode, int *hdl);
1229 int mem_rawfile_open(char *filename, int rwmode, int *hdl);
1230 int mem_size(int handle, LONGLONG *filesize);
1231 int mem_truncate(int handle, LONGLONG filesize);
1232 int mem_close_free(int handle);
1233 int mem_close_keep(int handle);
1234 int mem_close_comp(int handle);
1235 int mem_seek(int handle, LONGLONG offset);
1236 int mem_read(int hdl, void *buffer, long nbytes);
1237 int mem_write(int hdl, void *buffer, long nbytes);
1238 int mem_uncompress2mem(char *filename, FILE *diskfile, int hdl);
1239
1240 int iraf2mem(char *filename, char **buffptr, size_t *buffsize,
1241 size_t *filesize, int *status);
1242
1243 /* root driver I/O routines */
1244
1245 int root_init(void);
1246 int root_setoptions(int options);
1247 int root_getoptions(int *options);
1248 int root_getversion(int *version);
1249 int root_shutdown(void);
1250 int root_open(char *filename, int rwmode, int *driverhandle);
1251 int root_create(char *filename, int *driverhandle);
1252 int root_close(int driverhandle);
1253 int root_flush(int driverhandle);
1254 int root_seek(int driverhandle, LONGLONG offset);
1255 int root_read (int driverhandle, void *buffer, long nbytes);
1256 int root_write(int driverhandle, void *buffer, long nbytes);
1257 int root_size(int handle, LONGLONG *filesize);
1258
1259 /* http driver I/O routines */
1260
1261 int http_checkfile(char *urltype, char *infile, char *outfile);
1262 int http_open(char *filename, int rwmode, int *driverhandle);
1263 int http_file_open(char *filename, int rwmode, int *driverhandle);
1264 int http_compress_open(char *filename, int rwmode, int *driverhandle);
1265
1266 /* https driver I/O routines */
1267 int https_checkfile(char* urltype, char *infile, char *outfile);
1268 int https_open(char *filename, int rwmode, int *driverhandle);
1269 int https_file_open(char *filename, int rwmode, int *driverhandle);
1270 void https_set_verbose(int flag);
1271
1272 /* ftps driver I/O routines */
1273 int ftps_checkfile(char* urltype, char *infile, char *outfile);
1274 int ftps_open(char *filename, int rwmode, int *handle);
1275 int ftps_file_open(char *filename, int rwmode, int *handle);
1276 int ftps_compress_open(char *filename, int rwmode, int *driverhandle);
1277
1278 /* ftp driver I/O routines */
1279
1280 int ftp_checkfile(char *urltype, char *infile, char *outfile);
1281 int ftp_open(char *filename, int rwmode, int *driverhandle);
1282 int ftp_file_open(char *filename, int rwmode, int *driverhandle);
1283 int ftp_compress_open(char *filename, int rwmode, int *driverhandle);
1284
1285 int uncompress2mem(char *filename, FILE *diskfile,
1286 char **buffptr, size_t *buffsize,
1287 void *(*mem_realloc)(void *p, size_t newsize),
1288 size_t *filesize, int *status);
1289
1290 int uncompress2mem_from_mem(
1291 char *inmemptr,
1292 size_t inmemsize,
1293 char **buffptr,
1294 size_t *buffsize,
1295 void *(*mem_realloc)(void *p, size_t newsize),
1296 size_t *filesize,
1297 int *status);
1298
1299 int uncompress2file(char *filename,
1300 FILE *indiskfile,
1301 FILE *outdiskfile,
1302 int *status);
1303
1304 int compress2mem_from_mem(
1305 char *inmemptr,
1306 size_t inmemsize,
1307 char **buffptr,
1308 size_t *buffsize,
1309 void *(*mem_realloc)(void *p, size_t newsize),
1310 size_t *filesize,
1311 int *status);
1312
1313 int compress2file_from_mem(
1314 char *inmemptr,
1315 size_t inmemsize,
1316 FILE *outdiskfile,
1317 size_t *filesize, /* O - size of file, in bytes */
1318 int *status);
1319
1320
1321 #ifdef HAVE_GSIFTP
1322 /* prototypes for gsiftp driver I/O routines */
1323 #include "drvrgsiftp.h"
1324 #endif
1325
1326 #ifdef HAVE_SHMEM_SERVICES
1327 /* prototypes for shared memory driver I/O routines */
1328 #include "drvrsmem.h"
1329 #endif
1330
1331 /* A hack for nonunix machines, which lack strcasecmp and strncasecmp */
1332 /* these functions are in fitscore.c */
1333 int fits_strcasecmp (const char *s1, const char *s2 );
1334 int fits_strncasecmp(const char *s1, const char *s2, size_t n);
1335 /* "recalloc" which is a reallocator in the style of calloc */
1336 void *fits_recalloc(void *ptr, size_t old_num, size_t new_num, size_t size);
1337
1338 /* end of the entire "ifndef _FITSIO2_H" block */
1339 #endif