My Project
 All Classes Files Functions Variables Enumerations Enumerator Friends Macros Pages
fitsio2.h
1 #ifndef _FITSIO2_H
2 #define _FITSIO2_H
3 
4 #include "fitsio.h"
5 
6 #define USE_LARGE_VALUE -99 /* flag used when writing images */
7 
8 #define DBUFFSIZE 28800 /* size of data buffer in bytes */
9 
10 #define NIOBUF 25 /* number of IO buffers to create */
11 #define IOBUFLEN 2880 /* size in bytes of each IO buffer */
12 #define MINDIRECT 8640 /* minimum size for direct reads and writes */
13  /* MINDIRECT must have a value >= 8640 */
14 
15 #define NATIVE 0 /* a generic machine that uses IEEE formats */
16 #define ULTRIX 1
17 #define ALPHA_OSF 2
18 #define VAXVMS 3
19 #define ALPHAVMS 4
20 #define IBMPC 5
21 #define CRAY 6
22 
23 #define GFLOAT 1
24 #define IEEEFLOAT 2
25 
26 /* the following are used to determine what type machine we are running on */
27 
28 /* the following block determines the size of longs on SGI IRIX machines */
29 #if defined(_MIPS_SZLONG)
30 # if _MIPS_SZLONG == 32
31 # define LONGSIZE 32
32 # elif _MIPS_SZLONG == 64
33 # define LONGSIZE 64
34 # else
35 # error "can't handle long size given by _MIPS_SZLONG"
36 # endif
37 #endif
38 
39 #if defined(vax) && defined(VMS)
40 
41 #define MACHINE VAXVMS
42 #define BYTESWAPPED TRUE
43 
44 #elif defined(__alpha) && defined(__VMS)
45 
46 #if (__D_FLOAT == TRUE)
47 
48 /* this float option is the same as for VAX/VMS machines. */
49 #define MACHINE VAXVMS
50 #define BYTESWAPPED TRUE
51 
52 #elif (__G_FLOAT == TRUE)
53 
54 /* G_FLOAT is the default for ALPHA VMS systems */
55 #define MACHINE ALPHAVMS
56 #define BYTESWAPPED TRUE
57 #define FLOATTYPE GFLOAT
58 
59 #elif (__IEEE_FLOAT == TRUE)
60 
61 #define MACHINE ALPHAVMS
62 #define BYTESWAPPED TRUE
63 #define FLOATTYPE IEEEFLOAT
64 
65 #endif
66 
67 #elif defined(__alpha) && defined(__unix__)
68 
69 #define MACHINE ALPHA_OSF
70 #define BYTESWAPPED TRUE
71 #define LONGSIZE 64
72 
73 #elif defined(ultrix) && defined(unix)
74 
75 #define MACHINE ULTRIX
76 #define BYTESWAPPED TRUE
77 
78 #elif defined(__i386) || defined(__i386__) || defined(__i486__) || defined(__i586__)
79 
80 /* IBM PC */
81 #define MACHINE IBMPC
82 #define BYTESWAPPED TRUE
83 
84 #elif defined(_MSC_VER) || defined(__BORLANDC__) || defined(__TURBOC__)
85 
86 /* IBM PC running DOS or Windows */
87 #define MACHINE IBMPC
88 #define BYTESWAPPED TRUE
89 
90 #elif defined(_NI_mswin_)
91 
92 /* LabWindows/CVI with Windows 3.x, 95, or NT */
93 #define MACHINE IBMPC
94 #define BYTESWAPPED TRUE
95 
96 #elif defined(__EMX__)
97 
98 /* IBM PC running OS/2 */
99 #define MACHINE IBMPC
100 #define BYTESWAPPED TRUE
101 
102 #elif defined(__sparcv9)
103 
104 /* SUN Solaris7 in 64-bit mode */
105 #define BYTESWAPPED FALSE
106 #define MACHINE NATIVE
107 #define LONGSIZE 64
108 
109 #else
110 
111 /* assume machine uses the same IEEE formats as used in FITS files */
112 #define MACHINE NATIVE
113 #define BYTESWAPPED FALSE
114 
115 #endif
116 
117 /* assume longs are 4 bytes long, unless previously set otherwise */
118 #ifndef LONGSIZE
119 #define LONGSIZE 32
120 #endif
121 
122 #define IGNORE_EOF 1
123 #define REPORT_EOF 0
124 #define DATA_UNDEFINED -1
125 #define NULL_UNDEFINED 1234554321
126 #define ASCII_NULL_UNDEFINED 1 /* indicate no defined null value */
127 
128 #define maxvalue(A,B) ((A) > (B) ? (A) : (B))
129 #define minvalue(A,B) ((A) < (B) ? (A) : (B))
130 
131 /* faster string comparison macros */
132 #define FSTRCMP(a,b) ((a)[0]<(b)[0]? -1:(a)[0]>(b)[0]?1:strcmp((a),(b)))
133 #define FSTRNCMP(a,b,n) ((a)[0]<(b)[0]?-1:(a)[0]>(b)[0]?1:strncmp((a),(b),(n)))
134 
135 #if defined(__VMS) || defined(VMS)
136 
137 #define FNANMASK 0xFFFF /* mask all bits */
138 #define DNANMASK 0xFFFF /* mask all bits */
139 
140 #else
141 
142 #define FNANMASK 0x7F80 /* mask bits 1 - 8; all set on NaNs */
143  /* all 0 on underflow or 0. */
144 
145 #define DNANMASK 0x7FF0 /* mask bits 1 - 11; all set on NaNs */
146  /* all 0 on underflow or 0. */
147 
148 #endif
149 
150 #if MACHINE == CRAY
151  /*
152  Cray machines: the large negative integer corresponds
153  to the 3 most sig digits set to 1. If these
154  3 bits are set in a floating point number (64 bits), then it represents
155  a reserved value (i.e., a NaN)
156  */
157 #define fnan(L) ( (L) >= 0xE000000000000000 ? 1 : 0) )
158 
159 #else
160  /* these functions work for both big and little endian machines */
161  /* that use the IEEE floating point format for internal numbers */
162 
163  /* These functions tests whether the float value is a reserved IEEE */
164  /* value such as a Not-a-Number (NaN), or underflow, overflow, or */
165  /* infinity. The functions returns 1 if the value is a NaN, overflow */
166  /* or infinity; it returns 2 if the value is an denormalized underflow */
167  /* value; otherwise it returns 0. fnan tests floats, dnan tests doubles */
168 
169 #define fnan(L) \
170  ( (L & FNANMASK) == FNANMASK ? 1 : (L & FNANMASK) == 0 ? 2 : 0)
171 
172 #define dnan(L) \
173  ( (L & DNANMASK) == DNANMASK ? 1 : (L & DNANMASK) == 0 ? 2 : 0)
174 
175 #endif
176 
177 #define DUCHAR_MAX 255.49 /* max double value that fits in an unsigned char */
178 #define DUCHAR_MIN -0.49 /* min double value that fits in an unsigned char */
179 #define DUSHRT_MAX 65535.49 /* max double value that fits in a unsigned short*/
180 #define DUSHRT_MIN -0.49 /* min double value that fits in an unsigned short */
181 #define DSHRT_MAX 32767.49 /* max double value that fits in a short */
182 #define DSHRT_MIN -32768.49 /* min double value that fits in a short */
183 #define DULONG_MAX 4294967295.49 /* max double that fits in a unsigned long */
184 #define DULONG_MIN -0.49 /* min double value that fits in an unsigned long */
185 #define DLONG_MAX 2147483647.49 /* max double value that fits in a long */
186 #define DLONG_MIN -2147483648.49 /* min double value that fits in a long */
187 #define DUINT_MAX 4294967295.49 /* max dbl that fits in a unsigned 4-byte int */
188 #define DUINT_MIN -0.49 /* min dbl that fits in an unsigned 4-byte int */
189 #define DINT_MAX 2147483647.49 /* max double value that fits in a 4-byte int */
190 #define DINT_MIN -2147483648.49 /* min double value that fits in a 4-byte int */
191 
192 #ifndef UINT32_MAX
193 #define UINT32_MAX 4294967295U /* max unsigned 32-bit integer */
194 #endif
195 #ifndef INT32_MAX
196 #define INT32_MAX 2147483647 /* max 32-bit integer */
197 #endif
198 #ifndef INT32_MIN
199 #define INT32_MIN -2147483647 /* min 32-bit integer */
200 #endif
201 
202 #define COMPRESS_NULL_VALUE -2147483647
203 
204 int ffmkky(char *keyname, char *keyval, char *comm, char *card, int *status);
205 int ffgnky(fitsfile *fptr, char *card, int *status);
206 void ffcfmt(char *tform, char *cform);
207 void ffcdsp(char *tform, char *cform);
208 void ffswap2(short *values, long nvalues);
209 void ffswap4(INT32BIT *values, long nvalues);
210 void ffswap8(double *values, long nvalues);
211 int ffi2c(long ival, char *cval, int *status);
212 int ffl2c(int lval, char *cval, int *status);
213 int ffs2c(char *instr, char *outstr, int *status);
214 int ffr2f(float fval, int decim, char *cval, int *status);
215 int ffr2e(float fval, int decim, char *cval, int *status);
216 int ffd2f(double dval, int decim, char *cval, int *status);
217 int ffd2e(double dval, int decim, char *cval, int *status);
218 int ffc2ii(char *cval, long *ival, int *status);
219 int ffc2ll(char *cval, int *lval, int *status);
220 int ffc2rr(char *cval, float *fval, int *status);
221 int ffc2dd(char *cval, double *dval, int *status);
222 int ffc2x(char *cval, char *dtype, long *ival, int *lval, char *sval,
223  double *dval, int *status);
224 int ffc2s(char *instr, char *outstr, int *status);
225 int ffc2i(char *cval, long *ival, int *status);
226 int ffc2r(char *cval, float *fval, int *status);
227 int ffc2d(char *cval, double *dval, int *status);
228 int ffc2l(char *cval, int *lval, int *status);
229 void ffxmsg(int action, char *err_message);
230 int ffgcnt(fitsfile *fptr, char *value, int *status);
231 int ffgtkn(fitsfile *fptr, int numkey, char *keyname, long *value, int *status);
232 int fftkyn(fitsfile *fptr, int numkey, char *keyname, char *value, int *status);
233 int ffgphd(fitsfile *fptr, int maxdim, int *simple, int *bitpix, int *naxis,
234  long naxes[], long *pcount, long *gcount, int *extend, double *bscale,
235  double *bzero, long *blank, int *nspace, int *status);
236 int ffgttb(fitsfile *fptr, long *rowlen, long *nrows, long *pcount,
237  long *tfield, int *status);
238 
239 int ffmkey(fitsfile *fptr, char *card, int *status);
240 int ffikey(fitsfile *fptr, char *card, int *status);
241 
242 int ffmbyt(fitsfile *fptr, OFF_T bytpos, int ignore_err, int *status);
243 int ffgbyt(fitsfile *fptr, long nbytes, void *buffer, int *status);
244 int ffpbyt(fitsfile *fptr, long nbytes, void *buffer, int *status);
245 int ffgbytoff(fitsfile *fptr, long gsize, long ngroups, long offset,
246  void *buffer, int *status);
247 int ffpbytoff(fitsfile *fptr, long gsize, long ngroups, long offset,
248  void *buffer, int *status);
249 int ffldrc(fitsfile *fptr, long record, int err_mode, int *status);
250 int ffwhbf(fitsfile *fptr, int *nbuff);
251 int ffcurbuf(int nbuff, FITSfile **Fptr);
252 int ffflsh(fitsfile *fptr, int clearbuf, int *status);
253 int ffbfeof(fitsfile *fptr, int *status);
254 int ffbfwt(int nbuff, int *status);
255 int fits_get_num_files(void);
256 int ffpxsz(int datatype);
257 
258 int ffoptplt(fitsfile *fptr, const char *tempname, int *status);
259 int fits_is_this_a_copy(char *urltype);
260 int fits_already_open(fitsfile **fptr, char *url,
261  char *urltype, char *infile, char *extspec, char *rowfilter,
262  char *binspec, char *colspec, int mode,int *isopen, int *status);
263 int ffedit_columns(fitsfile **fptr, char *outfile, char *expr, int *status);
264 int fits_get_col_minmax(fitsfile *fptr, int colnum, float *datamin,
265  float *datamax, int *status);
266 int ffwritehisto(long totaln, long offset, long firstn, long nvalues,
267  int narrays, iteratorCol *imagepars, void *userPointer);
268 int ffcalchist(long totalrows, long offset, long firstrow, long nrows,
269  int ncols, iteratorCol *colpars, void *userPointer);
270 int fits_copy_image_cell(fitsfile **fptr, char *outfile, char *colname,
271  long rownum, int *status);
272 int fits_copy_image_keywords(fitsfile *infptr, fitsfile *outfptr, int *status);
273 int fits_get_section_range(char **ptr,long *secmin,long *secmax,long *incre,
274  int *status);
275 int ffrhdu(fitsfile *fptr, int *hdutype, int *status);
276 int ffpinit(fitsfile *fptr, int *status);
277 int ffainit(fitsfile *fptr, int *status);
278 int ffbinit(fitsfile *fptr, int *status);
279 int ffchdu(fitsfile *fptr, int *status);
280 int ffwend(fitsfile *fptr, int *status);
281 int ffpdfl(fitsfile *fptr, int *status);
282 int ffuptf(fitsfile *fptr, int *status);
283 
284 int ffdblk(fitsfile *fptr, long nblocks, int *status);
285 int ffgext(fitsfile *fptr, int moveto, int *exttype, int *status);
286 int ffgtbc(fitsfile *fptr, long *totalwidth, int *status);
287 int ffgtbp(fitsfile *fptr, char *name, char *value, int *status);
288 int ffiblk(fitsfile *fptr, long nblock, int headdata, int *status);
289 int ffshft(fitsfile *fptr, OFF_T firstbyte, OFF_T nbytes, OFF_T nshift,
290  int *status);
291 
292 int ffgcpr(fitsfile *fptr, int colnum, long firstrow, OFF_T firstelem,
293  long nelem, int writemode, double *scale, double *zero, char *tform,
294  long *twidth, int *tcode, int *maxelem, OFF_T *startpos,
295  OFF_T *elemnum, long *incre, OFF_T *repeat, OFF_T *rowlen,
296  int *hdutype, long *tnull, char *snull, int *status);
297 
298 int ffflushx(FITSfile *fptr);
299 int ffseek(FITSfile *fptr, OFF_T position);
300 int ffread(FITSfile *fptr, long nbytes, void *buffer,
301  int *status);
302 int ffwrite(FITSfile *fptr, long nbytes, void *buffer,
303  int *status);
304 int fftrun(fitsfile *fptr, OFF_T filesize, int *status);
305 
306 int ffgcll(fitsfile *fptr, int colnum, long firstrow, long firstelem, long
307  nelem, int nultyp, char nulval, char *array, char *nularray,
308  int *anynul, int *status);
309 int ffgcls(fitsfile *fptr, int colnum, long firstrow, long firstelem,
310  long nelem, int nultyp, char *nulval,
311  char **array, char *nularray, int *anynul, int *status);
312 int ffgcls2(fitsfile *fptr, int colnum, long firstrow, long firstelem,
313  long nelem, int nultyp, char *nulval,
314  char **array, char *nularray, int *anynul, int *status);
315 int ffgclb(fitsfile *fptr, int colnum, long firstrow, OFF_T firstelem,
316  long nelem, long elemincre, int nultyp, unsigned char nulval,
317  unsigned char *array, char *nularray, int *anynul, int *status);
318 int ffgclui(fitsfile *fptr, int colnum, long firstrow, OFF_T firstelem,
319  long nelem, long elemincre, int nultyp, unsigned short nulval,
320  unsigned short *array, char *nularray, int *anynul, int *status);
321 int ffgcli(fitsfile *fptr, int colnum, long firstrow, OFF_T firstelem,
322  long nelem, long elemincre, int nultyp, short nulval,
323  short *array, char *nularray, int *anynul, int *status);
324 int ffgcluj(fitsfile *fptr, int colnum, long firstrow, OFF_T firstelem,
325  long nelem, long elemincre, int nultyp, unsigned long nulval,
326  unsigned long *array, char *nularray, int *anynul, int *status);
327 int ffgclj(fitsfile *fptr, int colnum, long firstrow, OFF_T firstelem,
328  long nelem, long elemincre, int nultyp, long nulval, long *array,
329  char *nularray, int *anynul, int *status);
330 int ffgcluk(fitsfile *fptr, int colnum, long firstrow, OFF_T firstelem,
331  long nelem, long elemincre, int nultyp, unsigned int nulval,
332  unsigned int *array, char *nularray, int *anynul, int *status);
333 int ffgclk(fitsfile *fptr, int colnum, long firstrow, OFF_T firstelem,
334  long nelem, long elemincre, int nultyp, int nulval, int *array,
335  char *nularray, int *anynul, int *status);
336 int ffgcle(fitsfile *fptr, int colnum, long firstrow, OFF_T firstelem,
337  long nelem, long elemincre, int nultyp, float nulval, float *array,
338  char *nularray, int *anynul, int *status);
339 int ffgcld(fitsfile *fptr, int colnum, long firstrow, OFF_T firstelem,
340  long nelem, long elemincre, int nultyp, double nulval,
341  double *array, char *nularray, int *anynul, int *status);
342 
343 int ffpi1b(fitsfile *fptr, long nelem, long incre, unsigned char *buffer,
344  int *status);
345 int ffpi2b(fitsfile *fptr, long nelem, long incre, short *buffer, int *status);
346 int ffpi4b(fitsfile *fptr, long nelem, long incre, INT32BIT *buffer,
347  int *status);
348 int ffpr4b(fitsfile *fptr, long nelem, long incre, float *buffer, int *status);
349 int ffpr8b(fitsfile *fptr, long nelem, long incre, double *buffer, int *status);
350 
351 int ffgi1b(fitsfile *fptr, OFF_T pos, long nelem, long incre,
352  unsigned char *buffer, int *status);
353 int ffgi2b(fitsfile *fptr, OFF_T pos, long nelem, long incre, short *buffer,
354  int *status);
355 int ffgi4b(fitsfile *fptr, OFF_T pos, long nelem, long incre, INT32BIT *buffer,
356  int *status);
357 int ffgr4b(fitsfile *fptr, OFF_T pos, long nelem, long incre, float *buffer,
358  int *status);
359 int ffgr8b(fitsfile *fptr, OFF_T pos, long nelem, long incre, double *buffer,
360  int *status);
361 
362 int ffcins(fitsfile *fptr, long naxis1, long naxis2, long nbytes,
363  long bytepos, int *status);
364 int ffcdel(fitsfile *fptr, long naxis1, long naxis2, long nbytes,
365  long bytepos, int *status);
366 int ffkshf(fitsfile *fptr, int firstcol, int tfields, int nshift, int *status);
367 
368 int fffi1i1(unsigned char *input, long ntodo, double scale, double zero,
369  int nullcheck, unsigned char tnull, unsigned char nullval, char
370  *nullarray, int *anynull, unsigned char *output, int *status);
371 int fffi2i1(short *input, long ntodo, double scale, double zero,
372  int nullcheck, short tnull, unsigned char nullval, char *nullarray,
373  int *anynull, unsigned char *output, int *status);
374 int fffi4i1(INT32BIT *input, long ntodo, double scale, double zero,
375  int nullcheck, INT32BIT tnull, unsigned char nullval, char *nullarray,
376  int *anynull, unsigned char *output, int *status);
377 int fffr4i1(float *input, long ntodo, double scale, double zero,
378  int nullcheck, unsigned char nullval, char *nullarray,
379  int *anynull, unsigned char *output, int *status);
380 int fffr8i1(double *input, long ntodo, double scale, double zero,
381  int nullcheck, unsigned char nullval, char *nullarray,
382  int *anynull, unsigned char *output, int *status);
383 int fffstri1(char *input, long ntodo, double scale, double zero,
384  long twidth, double power, int nullcheck, char *snull,
385  unsigned char nullval, char *nullarray, int *anynull,
386  unsigned char *output, int *status);
387 
388 int fffi1u2(unsigned char *input, long ntodo, double scale, double zero,
389  int nullcheck, unsigned char tnull, unsigned short nullval,
390  char *nullarray,
391  int *anynull, unsigned short *output, int *status);
392 int fffi2u2(short *input, long ntodo, double scale, double zero,
393  int nullcheck, short tnull, unsigned short nullval, char *nullarray,
394  int *anynull, unsigned short *output, int *status);
395 int fffi4u2(INT32BIT *input, long ntodo, double scale, double zero,
396  int nullcheck, INT32BIT tnull, unsigned short nullval, char *nullarray,
397  int *anynull, unsigned short *output, int *status);
398 int fffr4u2(float *input, long ntodo, double scale, double zero,
399  int nullcheck, unsigned short nullval, char *nullarray,
400  int *anynull, unsigned short *output, int *status);
401 int fffr8u2(double *input, long ntodo, double scale, double zero,
402  int nullcheck, unsigned short nullval, char *nullarray,
403  int *anynull, unsigned short *output, int *status);
404 int fffstru2(char *input, long ntodo, double scale, double zero,
405  long twidth, double power, int nullcheck, char *snull,
406  unsigned short nullval, char *nullarray, int *anynull,
407  unsigned short *output, int *status);
408 
409 int fffi1i2(unsigned char *input, long ntodo, double scale, double zero,
410  int nullcheck, unsigned char tnull, short nullval, char *nullarray,
411  int *anynull, short *output, int *status);
412 int fffi2i2(short *input, long ntodo, double scale, double zero,
413  int nullcheck, short tnull, short nullval, char *nullarray,
414  int *anynull, short *output, int *status);
415 int fffi4i2(INT32BIT *input, long ntodo, double scale, double zero,
416  int nullcheck, INT32BIT tnull, short nullval, char *nullarray,
417  int *anynull, short *output, int *status);
418 int fffr4i2(float *input, long ntodo, double scale, double zero,
419  int nullcheck, short nullval, char *nullarray,
420  int *anynull, short *output, int *status);
421 int fffr8i2(double *input, long ntodo, double scale, double zero,
422  int nullcheck, short nullval, char *nullarray,
423  int *anynull, short *output, int *status);
424 int fffstri2(char *input, long ntodo, double scale, double zero,
425  long twidth, double power, int nullcheck, char *snull,
426  short nullval, char *nullarray, int *anynull, short *output,
427  int *status);
428 
429 int fffi1u4(unsigned char *input, long ntodo, double scale, double zero,
430  int nullcheck, unsigned char tnull, unsigned long nullval,
431  char *nullarray,
432  int *anynull, unsigned long *output, int *status);
433 int fffi2u4(short *input, long ntodo, double scale, double zero,
434  int nullcheck, short tnull, unsigned long nullval, char *nullarray,
435  int *anynull, unsigned long *output, int *status);
436 int fffi4u4(INT32BIT *input, long ntodo, double scale, double zero,
437  int nullcheck, INT32BIT tnull, unsigned long nullval, char *nullarray,
438  int *anynull, unsigned long *output, int *status);
439 int fffr4u4(float *input, long ntodo, double scale, double zero,
440  int nullcheck, unsigned long nullval, char *nullarray,
441  int *anynull, unsigned long *output, int *status);
442 int fffr8u4(double *input, long ntodo, double scale, double zero,
443  int nullcheck, unsigned long nullval, char *nullarray,
444  int *anynull, unsigned long *output, int *status);
445 int fffstru4(char *input, long ntodo, double scale, double zero,
446  long twidth, double power, int nullcheck, char *snull,
447  unsigned long nullval, char *nullarray, int *anynull,
448  unsigned long *output, int *status);
449 
450 int fffi1i4(unsigned char *input, long ntodo, double scale, double zero,
451  int nullcheck, unsigned char tnull, long nullval, char *nullarray,
452  int *anynull, long *output, int *status);
453 int fffi2i4(short *input, long ntodo, double scale, double zero,
454  int nullcheck, short tnull, long nullval, char *nullarray,
455  int *anynull, long *output, int *status);
456 int fffi4i4(INT32BIT *input, long ntodo, double scale, double zero,
457  int nullcheck, INT32BIT tnull, long nullval, char *nullarray,
458  int *anynull, long *output, int *status);
459 int fffr4i4(float *input, long ntodo, double scale, double zero,
460  int nullcheck, long nullval, char *nullarray,
461  int *anynull, long *output, int *status);
462 int fffr8i4(double *input, long ntodo, double scale, double zero,
463  int nullcheck, long nullval, char *nullarray,
464  int *anynull, long *output, int *status);
465 int fffstri4(char *input, long ntodo, double scale, double zero,
466  long twidth, double power, int nullcheck, char *snull,
467  long nullval, char *nullarray, int *anynull, long *output,
468  int *status);
469 
470 int fffi1int(unsigned char *input, long ntodo, double scale, double zero,
471  int nullcheck, unsigned char tnull, int nullval, char *nullarray,
472  int *anynull, int *output, int *status);
473 int fffi2int(short *input, long ntodo, double scale, double zero,
474  int nullcheck, short tnull, int nullval, char *nullarray,
475  int *anynull, int *output, int *status);
476 int fffi4int(INT32BIT *input, long ntodo, double scale, double zero,
477  int nullcheck, INT32BIT tnull, int nullval, char *nullarray,
478  int *anynull, int *output, int *status);
479 int fffr4int(float *input, long ntodo, double scale, double zero,
480  int nullcheck, int nullval, char *nullarray,
481  int *anynull, int *output, int *status);
482 int fffr8int(double *input, long ntodo, double scale, double zero,
483  int nullcheck, int nullval, char *nullarray,
484  int *anynull, int *output, int *status);
485 int fffstrint(char *input, long ntodo, double scale, double zero,
486  long twidth, double power, int nullcheck, char *snull,
487  int nullval, char *nullarray, int *anynull, int *output,
488  int *status);
489 
490 int fffi1uint(unsigned char *input, long ntodo, double scale, double zero,
491  int nullcheck, unsigned char tnull, unsigned int nullval,
492  char *nullarray, int *anynull, unsigned int *output, int *status);
493 int fffi2uint(short *input, long ntodo, double scale, double zero,
494  int nullcheck, short tnull, unsigned int nullval, char *nullarray,
495  int *anynull, unsigned int *output, int *status);
496 int fffi4uint(INT32BIT *input, long ntodo, double scale, double zero,
497  int nullcheck, INT32BIT tnull, unsigned int nullval, char *nullarray,
498  int *anynull, unsigned int *output, int *status);
499 int fffr4uint(float *input, long ntodo, double scale, double zero,
500  int nullcheck, unsigned int nullval, char *nullarray,
501  int *anynull, unsigned int *output, int *status);
502 int fffr8uint(double *input, long ntodo, double scale, double zero,
503  int nullcheck, unsigned int nullval, char *nullarray,
504  int *anynull, unsigned int *output, int *status);
505 int fffstruint(char *input, long ntodo, double scale, double zero,
506  long twidth, double power, int nullcheck, char *snull,
507  unsigned int nullval, char *nullarray, int *anynull,
508  unsigned int *output, int *status);
509 
510 int fffi1r4(unsigned char *input, long ntodo, double scale, double zero,
511  int nullcheck, unsigned char tnull, float nullval, char *nullarray,
512  int *anynull, float *output, int *status);
513 int fffi2r4(short *input, long ntodo, double scale, double zero,
514  int nullcheck, short tnull, float nullval, char *nullarray,
515  int *anynull, float *output, int *status);
516 int fffi4r4(INT32BIT *input, long ntodo, double scale, double zero,
517  int nullcheck, INT32BIT tnull, float nullval, char *nullarray,
518  int *anynull, float *output, int *status);
519 int fffr4r4(float *input, long ntodo, double scale, double zero,
520  int nullcheck, float nullval, char *nullarray,
521  int *anynull, float *output, int *status);
522 int fffr8r4(double *input, long ntodo, double scale, double zero,
523  int nullcheck, float nullval, char *nullarray,
524  int *anynull, float *output, int *status);
525 int fffstrr4(char *input, long ntodo, double scale, double zero,
526  long twidth, double power, int nullcheck, char *snull,
527  float nullval, char *nullarray, int *anynull, float *output,
528  int *status);
529 
530 int fffi1r8(unsigned char *input, long ntodo, double scale, double zero,
531  int nullcheck, unsigned char tnull, double nullval, char *nullarray,
532  int *anynull, double *output, int *status);
533 int fffi2r8(short *input, long ntodo, double scale, double zero,
534  int nullcheck, short tnull, double nullval, char *nullarray,
535  int *anynull, double *output, int *status);
536 int fffi4r8(INT32BIT *input, long ntodo, double scale, double zero,
537  int nullcheck, INT32BIT tnull, double nullval, char *nullarray,
538  int *anynull, double *output, int *status);
539 int fffr4r8(float *input, long ntodo, double scale, double zero,
540  int nullcheck, double nullval, char *nullarray,
541  int *anynull, double *output, int *status);
542 int fffr8r8(double *input, long ntodo, double scale, double zero,
543  int nullcheck, double nullval, char *nullarray,
544  int *anynull, double *output, int *status);
545 int fffstrr8(char *input, long ntodo, double scale, double zero,
546  long twidth, double power, int nullcheck, char *snull,
547  double nullval, char *nullarray, int *anynull, double *output,
548  int *status);
549 
550 int ffi1fi1(unsigned char *array, long ntodo, double scale, double zero,
551  unsigned char *buffer, int *status);
552 int ffu2fi1(unsigned short *array, long ntodo, double scale, double zero,
553  unsigned char *buffer, int *status);
554 int ffi2fi1(short *array, long ntodo, double scale, double zero,
555  unsigned char *buffer, int *status);
556 int ffu4fi1(unsigned long *array, long ntodo, double scale, double zero,
557  unsigned char *buffer, int *status);
558 int ffi4fi1(long *array, long ntodo, double scale, double zero,
559  unsigned char *buffer, int *status);
560 int ffuintfi1(unsigned int *array, long ntodo, double scale, double zero,
561  unsigned char *buffer, int *status);
562 int ffintfi1(int *array, long ntodo, double scale, double zero,
563  unsigned char *buffer, int *status);
564 int ffr4fi1(float *array, long ntodo, double scale, double zero,
565  unsigned char *buffer, int *status);
566 int ffr8fi1(double *array, long ntodo, double scale, double zero,
567  unsigned char *buffer, int *status);
568 
569 int ffi1fi2(unsigned char *array, long ntodo, double scale, double zero,
570  short *buffer, int *status);
571 int ffu2fi2(unsigned short *array, long ntodo, double scale, double zero,
572  short *buffer, int *status);
573 int ffi2fi2(short *array, long ntodo, double scale, double zero,
574  short *buffer, int *status);
575 int ffu4fi2(unsigned long *array, long ntodo, double scale, double zero,
576  short *buffer, int *status);
577 int ffi4fi2(long *array, long ntodo, double scale, double zero,
578  short *buffer, int *status);
579 int ffuintfi2(unsigned int *array, long ntodo, double scale, double zero,
580  short *buffer, int *status);
581 int ffintfi2(int *array, long ntodo, double scale, double zero,
582  short *buffer, int *status);
583 int ffr4fi2(float *array, long ntodo, double scale, double zero,
584  short *buffer, int *status);
585 int ffr8fi2(double *array, long ntodo, double scale, double zero,
586  short *buffer, int *status);
587 
588 int ffi1fi4(unsigned char *array, long ntodo, double scale, double zero,
589  INT32BIT *buffer, int *status);
590 int ffu2fi4(unsigned short *array, long ntodo, double scale, double zero,
591  INT32BIT *buffer, int *status);
592 int ffi2fi4(short *array, long ntodo, double scale, double zero,
593  INT32BIT *buffer, int *status);
594 int ffu4fi4(unsigned long *array, long ntodo, double scale, double zero,
595  INT32BIT *buffer, int *status);
596 int ffi4fi4(long *array, long ntodo, double scale, double zero,
597  INT32BIT *buffer, int *status);
598 int ffuintfi4(unsigned int *array, long ntodo, double scale, double zero,
599  INT32BIT *buffer, int *status);
600 int ffintfi4(int *array, long ntodo, double scale, double zero,
601  INT32BIT *buffer, int *status);
602 int ffr4fi4(float *array, long ntodo, double scale, double zero,
603  INT32BIT *buffer, int *status);
604 int ffr8fi4(double *array, long ntodo, double scale, double zero,
605  INT32BIT *buffer, int *status);
606 
607 int ffi1fr4(unsigned char *array, long ntodo, double scale, double zero,
608  float *buffer, int *status);
609 int ffu2fr4(unsigned short *array, long ntodo, double scale, double zero,
610  float *buffer, int *status);
611 int ffi2fr4(short *array, long ntodo, double scale, double zero,
612  float *buffer, int *status);
613 int ffu4fr4(unsigned long *array, long ntodo, double scale, double zero,
614  float *buffer, int *status);
615 int ffi4fr4(long *array, long ntodo, double scale, double zero,
616  float *buffer, int *status);
617 int ffuintfr4(unsigned int *array, long ntodo, double scale, double zero,
618  float *buffer, int *status);
619 int ffintfr4(int *array, long ntodo, double scale, double zero,
620  float *buffer, int *status);
621 int ffr4fr4(float *array, long ntodo, double scale, double zero,
622  float *buffer, int *status);
623 int ffr8fr4(double *array, long ntodo, double scale, double zero,
624  float *buffer, int *status);
625 
626 int ffi1fr8(unsigned char *array, long ntodo, double scale, double zero,
627  double *buffer, int *status);
628 int ffu2fr8(unsigned short *array, long ntodo, double scale, double zero,
629  double *buffer, int *status);
630 int ffi2fr8(short *array, long ntodo, double scale, double zero,
631  double *buffer, int *status);
632 int ffu4fr8(unsigned long *array, long ntodo, double scale, double zero,
633  double *buffer, int *status);
634 int ffi4fr8(long *array, long ntodo, double scale, double zero,
635  double *buffer, int *status);
636 int ffuintfr8(unsigned int *array, long ntodo, double scale, double zero,
637  double *buffer, int *status);
638 int ffintfr8(int *array, long ntodo, double scale, double zero,
639  double *buffer, int *status);
640 int ffr4fr8(float *array, long ntodo, double scale, double zero,
641  double *buffer, int *status);
642 int ffr8fr8(double *array, long ntodo, double scale, double zero,
643  double *buffer, int *status);
644 
645 int ffi1fstr(unsigned char *input, long ntodo, double scale, double zero,
646  char *cform, long twidth, char *output, int *status);
647 int ffu2fstr(unsigned short *input, long ntodo, double scale, double zero,
648  char *cform, long twidth, char *output, int *status);
649 int ffi2fstr(short *input, long ntodo, double scale, double zero,
650  char *cform, long twidth, char *output, int *status);
651 int ffu4fstr(unsigned long *input, long ntodo, double scale, double zero,
652  char *cform, long twidth, char *output, int *status);
653 int ffi4fstr(long *input, long ntodo, double scale, double zero,
654  char *cform, long twidth, char *output, int *status);
655 int ffintfstr(int *input, long ntodo, double scale, double zero,
656  char *cform, long twidth, char *output, int *status);
657 int ffuintfstr(unsigned int *input, long ntodo, double scale, double zero,
658  char *cform, long twidth, char *output, int *status);
659 int ffr4fstr(float *input, long ntodo, double scale, double zero,
660  char *cform, long twidth, char *output, int *status);
661 int ffr8fstr(double *input, long ntodo, double scale, double zero,
662  char *cform, long twidth, char *output, int *status);
663 
664 /* the following 4 routines are VMS macros used on VAX or Alpha VMS */
665 void ieevpd(double *inarray, double *outarray, long *nvals);
666 void ieevud(double *inarray, double *outarray, long *nvals);
667 void ieevpr(float *inarray, float *outarray, long *nvals);
668 void ieevur(float *inarray, float *outarray, long *nvals);
669 
670 /* routines related to the lexical parser */
671 int ffselect_table(fitsfile **fptr, char *outfile, char *expr, int *status);
672 int ffiprs( fitsfile *fptr, int compressed, char *expr, int maxdim,
673  int *datatype, long *nelem, int *naxis, long *naxes,
674  int *status );
675 void ffcprs( void );
676 int ffcvtn( int inputType, void *input, char *undef, long ntodo,
677  int outputType, void *nulval, void *output,
678  int *anynull, int *status );
679 int parse_data( long totalrows, long offset, long firstrow,
680  long nrows, int nCols, iteratorCol *colData,
681  void *userPtr );
682 int uncompress_hkdata( fitsfile *fptr, long ntimes,
683  double *times, int *status );
684 int ffffrw_work( long totalrows, long offset, long firstrow,
685  long nrows, int nCols, iteratorCol *colData,
686  void *userPtr );
687 
688 
689 /* image compression routines */
690 int imcomp_init_table(fitsfile *outfptr, int compress_type,
691  int bitpix, int naxis,long *naxes,long *tilesize,
692  int rice_blocksize,int rice_nbits,int *status);
693 int imcomp_calc_max_elem (int comptype, int nx, int blocksize);
694 int imcomp_copy_imheader(fitsfile *infptr, fitsfile *outfptr,
695  int *status);
696 int imcomp_compress_image (fitsfile *infptr, fitsfile *outfptr,
697  int *status);
698 int imcomp_compress_tile (fitsfile *outfptr, long row,
699  int datatype, void *tiledata, long tilelen, int *status);
700 
701 /* image decompression routines */
702 int fits_read_compressed_img_plane(fitsfile *fptr, int datatype,
703  int bytesperpixel, long nplane, long *firstcoord, long *lastcoord,
704  long *inc, long *naxes, int nullcheck, void *nullval,
705  void *array, char *nullarray, int *anynul, long *nread, int *status);
706 int imcomp_get_compressed_image_par(fitsfile *infptr, int *status);
707 int imcomp_decompress_tile (fitsfile *infptr,
708  int nrow, int tilesize, int datatype, int nullcheck,
709  void *nulval, void *buffer, char *bnullarray, int *anynul,
710  int *status);
711 int imcomp_copy_overlap (char *tile, int datatype, int ndim,
712  long *tfpixel, long *tlpixel, char *bnullarray, char *image,
713  long *fpixel, long *lpixel, int nullcheck, char *nullarray,
714  int *status);
715 
716 int pl_p2li (int *pxsrc, int xs, short *lldst, int npix);
717 int pl_l2pi (short *ll_src, int xs, int *px_dst, int npix);
718 
719 /* general driver routines */
720 
721 int urltype2driver(char *urltype, int *driver);
722 int fits_init_cfitsio(void);
723 
724 int fits_register_driver( char *prefix,
725  int (*init)(void),
726  int (*fitsshutdown)(void),
727  int (*setoptions)(int option),
728  int (*getoptions)(int *options),
729  int (*getversion)(int *version),
730  int (*checkfile) (char *urltype, char *infile, char *outfile),
731  int (*fitsopen)(char *filename, int rwmode, int *driverhandle),
732  int (*fitscreate)(char *filename, int *driverhandle),
733  int (*fitstruncate)(int driverhandle, OFF_T filesize),
734  int (*fitsclose)(int driverhandle),
735  int (*fremove)(char *filename),
736  int (*size)(int driverhandle, OFF_T *size),
737  int (*flush)(int driverhandle),
738  int (*seek)(int driverhandle, OFF_T offset),
739  int (*fitsread) (int driverhandle, void *buffer, long nbytes),
740  int (*fitswrite)(int driverhandle, void *buffer, long nbytes));
741 
742 /* file driver I/O routines */
743 
744 int file_init(void);
745 int file_setoptions(int options);
746 int file_getoptions(int *options);
747 int file_getversion(int *version);
748 int file_shutdown(void);
749 int file_checkfile(char *urltype, char *infile, char *outfile);
750 int file_open(char *filename, int rwmode, int *driverhandle);
751 int file_compress_open(char *filename, int rwmode, int *hdl);
752 int file_openfile(char *filename, int rwmode, FILE **diskfile);
753 int file_create(char *filename, int *driverhandle);
754 int file_truncate(int driverhandle, OFF_T filesize);
755 int file_size(int driverhandle, OFF_T *filesize);
756 int file_close(int driverhandle);
757 int file_remove(char *filename);
758 int file_flush(int driverhandle);
759 int file_seek(int driverhandle, OFF_T offset);
760 int file_read (int driverhandle, void *buffer, long nbytes);
761 int file_write(int driverhandle, void *buffer, long nbytes);
762 int file_is_compressed(char *filename);
763 
764 /* memory driver I/O routines */
765 
766 int mem_init(void);
767 int mem_setoptions(int options);
768 int mem_getoptions(int *options);
769 int mem_getversion(int *version);
770 int mem_shutdown(void);
771 int mem_create(char *filename, int *handle);
772 int mem_openmem(void **buffptr, size_t *buffsize, size_t deltasize,
773  void *(*memrealloc)(void *p, size_t newsize), int *handle);
774 int mem_createmem(size_t memsize, int *handle);
775 int stdin_checkfile(char *urltype, char *infile, char *outfile);
776 int stdin_open(char *filename, int rwmode, int *handle);
777 int stdin2mem(int hd);
778 int stdin2file(int hd);
779 int stdout_close(int handle);
780 int mem_compress_open(char *filename, int rwmode, int *hdl);
781 int mem_iraf_open(char *filename, int rwmode, int *hdl);
782 int mem_size(int handle, OFF_T *filesize);
783 int mem_truncate(int handle, OFF_T filesize);
784 int mem_close_free(int handle);
785 int mem_close_keep(int handle);
786 int mem_seek(int handle, OFF_T offset);
787 int mem_read(int hdl, void *buffer, long nbytes);
788 int mem_write(int hdl, void *buffer, long nbytes);
789 int mem_uncompress2mem(char *filename, FILE *diskfile, int hdl);
790 
791 int iraf2mem(char *filename, char **buffptr, size_t *buffsize,
792  size_t *filesize, int *status);
793 
794 /* root driver I/O routines */
795 
796 int root_init(void);
797 int root_setoptions(int options);
798 int root_getoptions(int *options);
799 int root_getversion(int *version);
800 int root_shutdown(void);
801 int root_open(char *filename, int rwmode, int *driverhandle);
802 int root_create(char *filename, int *driverhandle);
803 int root_close(int driverhandle);
804 int root_flush(int driverhandle);
805 int root_seek(int driverhandle, OFF_T offset);
806 int root_read (int driverhandle, void *buffer, long nbytes);
807 int root_write(int driverhandle, void *buffer, long nbytes);
808 int root_size(int handle, OFF_T *filesize);
809 
810 /* http driver I/O routines */
811 
812 int http_checkfile(char *urltype, char *infile, char *outfile);
813 int http_open(char *filename, int rwmode, int *driverhandle);
814 int http_file_open(char *filename, int rwmode, int *driverhandle);
815 int http_compress_open(char *filename, int rwmode, int *driverhandle);
816 
817 /* ftp driver I/O routines */
818 
819 int ftp_checkfile(char *urltype, char *infile, char *outfile);
820 int ftp_open(char *filename, int rwmode, int *driverhandle);
821 int ftp_file_open(char *filename, int rwmode, int *driverhandle);
822 int ftp_compress_open(char *filename, int rwmode, int *driverhandle);
823 
824 
825 int uncompress2mem(char *filename, FILE *diskfile,
826  char **buffptr, size_t *buffsize,
827  void *(*mem_realloc)(void *p, size_t newsize),
828  size_t *filesize, int *status);
829 
830 int uncompress2mem_from_mem(
831  char *inmemptr,
832  size_t inmemsize,
833  char **buffptr,
834  size_t *buffsize,
835  void *(*mem_realloc)(void *p, size_t newsize),
836  size_t *filesize,
837  int *status);
838 
839 int uncompress2file(char *filename,
840  FILE *indiskfile,
841  FILE *outdiskfile,
842  int *status);
843 
844 int compress2mem_from_mem(
845  char *inmemptr,
846  size_t inmemsize,
847  char **buffptr,
848  size_t *buffsize,
849  void *(*mem_realloc)(void *p, size_t newsize),
850  size_t *filesize,
851  int *status);
852 
853 /* ==================== SHARED MEMORY DRIVER SECTION ======================= */
854 
855 #if HAVE_SHMEM_SERVICES==1
856 #include "drvrsmem.h"
857 #endif
858 
859 /* ==================== END OF SHARED MEMORY DRIVER SECTION ================ */
860 
861 #endif
862 
863 
864 #if defined(vms) || defined(__vms) || defined(WIN32) || defined(__WIN32__) || defined(macintosh)
865 
866 /* ================================================================== */
867 /* A hack for nonunix machines, which lack strcasecmp and strncasecmp */
868 /* ================================================================== */
869 
870 int strcasecmp (const char *s1, const char *s2 );
871 int strncasecmp(const char *s1, const char *s2, size_t n);
872 
873 #endif
Definition: fitsio.h:194
Definition: fitsio.h:254
Definition: eval_defs.h:33
Definition: tVideoCapabilitiesEml.cc:67
Definition: fitsio.h:248