PixelxCamera
fitsio.h
1 /* The FITSIO software was written by William Pence at the High Energy */
2 /* Astrophysic Science Archive Research Center (HEASARC) at the NASA */
3 /* Goddard Space Flight Center. */
4 /*
5 
6 Copyright (Unpublished--all rights reserved under the copyright laws of
7 the United States), U.S. Government as represented by the Administrator
8 of the National Aeronautics and Space Administration. No copyright is
9 claimed in the United States under Title 17, U.S. Code.
10 
11 Permission to freely use, copy, modify, and distribute this software
12 and its documentation without fee is hereby granted, provided that this
13 copyright notice and disclaimer of warranty appears in all copies.
14 
15 DISCLAIMER:
16 
17 THE SOFTWARE IS PROVIDED 'AS IS' WITHOUT ANY WARRANTY OF ANY KIND,
18 EITHER EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO,
19 ANY WARRANTY THAT THE SOFTWARE WILL CONFORM TO SPECIFICATIONS, ANY
20 IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
21 PURPOSE, AND FREEDOM FROM INFRINGEMENT, AND ANY WARRANTY THAT THE
22 DOCUMENTATION WILL CONFORM TO THE SOFTWARE, OR ANY WARRANTY THAT THE
23 SOFTWARE WILL BE ERROR FREE. IN NO EVENT SHALL NASA BE LIABLE FOR ANY
24 DAMAGES, INCLUDING, BUT NOT LIMITED TO, DIRECT, INDIRECT, SPECIAL OR
25 CONSEQUENTIAL DAMAGES, ARISING OUT OF, RESULTING FROM, OR IN ANY WAY
26 CONNECTED WITH THIS SOFTWARE, WHETHER OR NOT BASED UPON WARRANTY,
27 CONTRACT, TORT , OR OTHERWISE, WHETHER OR NOT INJURY WAS SUSTAINED BY
28 PERSONS OR PROPERTY OR OTHERWISE, AND WHETHER OR NOT LOSS WAS SUSTAINED
29 FROM, OR AROSE OUT OF THE RESULTS OF, OR USE OF, THE SOFTWARE OR
30 SERVICES PROVIDED HEREUNDER."
31 
32 */
33 
34 #ifndef _FITSIO_H
35 #define _FITSIO_H
36 
37 #define CFITSIO_VERSION 3.47
38 #define CFITSIO_MINOR 47
39 #define CFITSIO_MAJOR 3
40 #define CFITSIO_SONAME 8
41 
42 /* the SONAME is incremented in a new release if the binary shared */
43 /* library (on linux and Mac systems) is not backward compatible */
44 /* with the previous release of CFITSIO */
45 
46 
47 /* CFITS_API is defined below for use on Windows systems. */
48 /* It is used to identify the public functions which should be exported. */
49 /* This has no effect on non-windows platforms where "WIN32" is not defined */
50 
51 #if defined (WIN32)
52  #if defined(cfitsio_EXPORTS)
53  #define CFITS_API __declspec(dllexport)
54  #else
55  #define CFITS_API /* __declspec(dllimport) */
56  #endif /* CFITS_API */
57 #else /* defined (WIN32) */
58  #define CFITS_API
59 #endif
60 
61 #include <stdio.h>
62 
63 /* the following was provided by Michael Greason (GSFC) to fix a */
64 /* C/Fortran compatibility problem on an SGI Altix system running */
65 /* SGI ProPack 4 [this is a Novell SuSE Enterprise 9 derivative] */
66 /* and using the Intel C++ and Fortran compilers (version 9.1) */
67 #if defined(__INTEL_COMPILER) && defined(__itanium__)
68 # define mipsFortran 1
69 # define _MIPS_SZLONG 64
70 #endif
71 
72 #if defined(linux) || defined(__APPLE__) || defined(__sgi)
73 # include <sys/types.h> /* apparently needed on debian linux systems */
74 #endif /* to define off_t */
75 
76 #include <stdlib.h> /* apparently needed to define size_t with gcc 2.8.1 */
77 #include <limits.h> /* needed for LLONG_MAX and INT64_MAX definitions */
78 
79 /* Define the datatype for variables which store file offset values. */
80 /* The newer 'off_t' datatype should be used for this purpose, but some */
81 /* older compilers do not recognize this type, in which case we use 'long' */
82 /* instead. Note that _OFF_T is defined (or not) in stdio.h depending */
83 /* on whether _LARGEFILE_SOURCE is defined in sys/feature_tests.h */
84 /* (at least on Solaris platforms using cc) */
85 
86 /* Debian systems require: "(defined(linux) && defined(__off_t_defined))" */
87 /* the mingw-w64 compiler requires: "(defined(__MINGW32__) && defined(_OFF_T_DEFINED))" */
88 #if defined(_OFF_T) \
89  || (defined(linux) && defined(__off_t_defined)) \
90  || (defined(__MINGW32__) && defined(_OFF_T_DEFINED)) \
91  || defined(_MIPS_SZLONG) || defined(__APPLE__) || defined(_AIX)
92 # define OFF_T off_t
93 #elif defined(__BORLANDC__) || (defined(_MSC_VER) && (_MSC_VER>= 1400))
94 # define OFF_T long long
95 #else
96 # define OFF_T long
97 #endif
98 
99 /* this block determines if the the string function name is
100  strtol or strtoll, and whether to use %ld or %lld in printf statements */
101 
102 /*
103  The following 2 cases for that Athon64 were removed on 4 Jan 2006;
104  they appear to be incorrect now that LONGLONG is always typedef'ed
105  to 'long long'
106  || defined(__ia64__) \
107  || defined(__x86_64__) \
108 */
109 #if (defined(__alpha) && ( defined(__unix__) || defined(__NetBSD__) )) \
110  || defined(__sparcv9) || (defined(__sparc__) && defined(__arch64__)) \
111  || defined(__powerpc64__) || defined(__64BIT__) \
112  || (defined(_MIPS_SZLONG) && _MIPS_SZLONG == 64) \
113  || defined( _MSC_VER)|| defined(__BORLANDC__)
114 
115 # define USE_LL_SUFFIX 0
116 #else
117 # define USE_LL_SUFFIX 1
118 #endif
119 
120 /*
121  Determine what 8-byte integer data type is available.
122  'long long' is now supported by most compilers, but
123  older MS Visual C++ compilers before V7.0 use '__int64' instead.
124 */
125 
126 #ifndef LONGLONG_TYPE /* this may have been previously defined */
127 #if defined(_MSC_VER) /* Microsoft Visual C++ */
128 
129 #if (_MSC_VER < 1300) /* versions earlier than V7.0 do not have 'long long' */
130  typedef __int64 LONGLONG;
131  typedef unsigned __int64 ULONGLONG;
132 
133 #else /* newer versions do support 'long long' */
134  typedef long long LONGLONG;
135  typedef unsigned long long ULONGLONG;
136 
137 #endif
138 
139 #elif defined( __BORLANDC__) /* for the Borland 5.5 compiler, in particular */
140  typedef __int64 LONGLONG;
141  typedef unsigned __int64 ULONGLONG;
142 #else
143  typedef long long LONGLONG;
144  typedef unsigned long long ULONGLONG;
145 #endif
146 
147 #define LONGLONG_TYPE
148 #endif
149 
150 #ifndef LONGLONG_MAX
151 
152 #ifdef LLONG_MAX
153 /* Linux and Solaris definition */
154 #define LONGLONG_MAX LLONG_MAX
155 #define LONGLONG_MIN LLONG_MIN
156 
157 #elif defined(LONG_LONG_MAX)
158 #define LONGLONG_MAX LONG_LONG_MAX
159 #define LONGLONG_MIN LONG_LONG_MIN
160 
161 #elif defined(__LONG_LONG_MAX__)
162 /* Mac OS X & CYGWIN defintion */
163 #define LONGLONG_MAX __LONG_LONG_MAX__
164 #define LONGLONG_MIN (-LONGLONG_MAX -1LL)
165 
166 #elif defined(INT64_MAX)
167 /* windows definition */
168 #define LONGLONG_MAX INT64_MAX
169 #define LONGLONG_MIN INT64_MIN
170 
171 #elif defined(_I64_MAX)
172 /* windows definition */
173 #define LONGLONG_MAX _I64_MAX
174 #define LONGLONG_MIN _I64_MIN
175 
176 #elif (defined(__alpha) && ( defined(__unix__) || defined(__NetBSD__) )) \
177  || defined(__sparcv9) \
178  || defined(__ia64__) \
179  || defined(__x86_64__) \
180  || defined(_SX) \
181  || defined(__powerpc64__) || defined(__64BIT__) \
182  || (defined(_MIPS_SZLONG) && _MIPS_SZLONG == 64)
183 /* sizeof(long) = 64 */
184 #define LONGLONG_MAX 9223372036854775807L /* max 64-bit integer */
185 #define LONGLONG_MIN (-LONGLONG_MAX -1L) /* min 64-bit integer */
186 
187 #else
188 /* define a default value, even if it is never used */
189 #define LONGLONG_MAX 9223372036854775807LL /* max 64-bit integer */
190 #define LONGLONG_MIN (-LONGLONG_MAX -1LL) /* min 64-bit integer */
191 
192 #endif
193 #endif /* end of ndef LONGLONG_MAX section */
194 
195 
196 /* ================================================================= */
197 
198 
199 /* The following exclusion if __CINT__ is defined is needed for ROOT */
200 #ifndef __CINT__
201 #include "longnam.h"
202 #endif
203 
204 #define NIOBUF 40 /* number of IO buffers to create (default = 40) */
205  /* !! Significantly increasing NIOBUF may degrade performance !! */
206 
207 #define IOBUFLEN 2880 /* size in bytes of each IO buffer (DONT CHANGE!) */
208 
209 /* global variables */
210 
211 #define FLEN_FILENAME 1025 /* max length of a filename */
212 #define FLEN_KEYWORD 75 /* max length of a keyword (HIERARCH convention) */
213 #define FLEN_CARD 81 /* length of a FITS header card */
214 #define FLEN_VALUE 71 /* max length of a keyword value string */
215 #define FLEN_COMMENT 73 /* max length of a keyword comment string */
216 #define FLEN_ERRMSG 81 /* max length of a FITSIO error message */
217 #define FLEN_STATUS 31 /* max length of a FITSIO status text string */
218 
219 #define TBIT 1 /* codes for FITS table data types */
220 #define TBYTE 11
221 #define TSBYTE 12
222 #define TLOGICAL 14
223 #define TSTRING 16
224 #define TUSHORT 20
225 #define TSHORT 21
226 #define TUINT 30
227 #define TINT 31
228 #define TULONG 40
229 #define TLONG 41
230 #define TINT32BIT 41 /* used when returning datatype of a column */
231 #define TFLOAT 42
232 #define TULONGLONG 80
233 #define TLONGLONG 81
234 #define TDOUBLE 82
235 #define TCOMPLEX 83
236 #define TDBLCOMPLEX 163
237 
238 #define TYP_STRUC_KEY 10
239 #define TYP_CMPRS_KEY 20
240 #define TYP_SCAL_KEY 30
241 #define TYP_NULL_KEY 40
242 #define TYP_DIM_KEY 50
243 #define TYP_RANG_KEY 60
244 #define TYP_UNIT_KEY 70
245 #define TYP_DISP_KEY 80
246 #define TYP_HDUID_KEY 90
247 #define TYP_CKSUM_KEY 100
248 #define TYP_WCS_KEY 110
249 #define TYP_REFSYS_KEY 120
250 #define TYP_COMM_KEY 130
251 #define TYP_CONT_KEY 140
252 #define TYP_USER_KEY 150
253 
254 
255 #define INT32BIT int /* 32-bit integer datatype. Currently this */
256  /* datatype is an 'int' on all useful platforms */
257  /* however, it is possible that that are cases */
258  /* where 'int' is a 2-byte integer, in which case */
259  /* INT32BIT would need to be defined as 'long'. */
260 
261 #define BYTE_IMG 8 /* BITPIX code values for FITS image types */
262 #define SHORT_IMG 16
263 #define LONG_IMG 32
264 #define LONGLONG_IMG 64
265 #define FLOAT_IMG -32
266 #define DOUBLE_IMG -64
267  /* The following 2 codes are not true FITS */
268  /* datatypes; these codes are only used internally */
269  /* within cfitsio to make it easier for users */
270  /* to deal with unsigned integers. */
271 #define SBYTE_IMG 10
272 #define USHORT_IMG 20
273 #define ULONG_IMG 40
274 #define ULONGLONG_IMG 80
275 
276 #define IMAGE_HDU 0 /* Primary Array or IMAGE HDU */
277 #define ASCII_TBL 1 /* ASCII table HDU */
278 #define BINARY_TBL 2 /* Binary table HDU */
279 #define ANY_HDU -1 /* matches any HDU type */
280 
281 #define READONLY 0 /* options when opening a file */
282 #define READWRITE 1
283 
284 /* adopt a hopefully obscure number to use as a null value flag */
285 /* could be problems if the FITS files contain data with these values */
286 #define FLOATNULLVALUE -9.11912E-36F
287 #define DOUBLENULLVALUE -9.1191291391491E-36
288 
289 /* compression algorithm codes */
290 #define NO_DITHER -1
291 #define SUBTRACTIVE_DITHER_1 1
292 #define SUBTRACTIVE_DITHER_2 2
293 #define MAX_COMPRESS_DIM 6
294 #define RICE_1 11
295 #define GZIP_1 21
296 #define GZIP_2 22
297 #define PLIO_1 31
298 #define HCOMPRESS_1 41
299 #define BZIP2_1 51 /* not publicly supported; only for test purposes */
300 #define NOCOMPRESS -1
301 
302 #ifndef TRUE
303 #define TRUE 1
304 #endif
305 
306 #ifndef FALSE
307 #define FALSE 0
308 #endif
309 
310 #define CASESEN 1 /* do case-sensitive string match */
311 #define CASEINSEN 0 /* do case-insensitive string match */
312 
313 #define GT_ID_ALL_URI 0 /* hierarchical grouping parameters */
314 #define GT_ID_REF 1
315 #define GT_ID_POS 2
316 #define GT_ID_ALL 3
317 #define GT_ID_REF_URI 11
318 #define GT_ID_POS_URI 12
319 
320 #define OPT_RM_GPT 0
321 #define OPT_RM_ENTRY 1
322 #define OPT_RM_MBR 2
323 #define OPT_RM_ALL 3
324 
325 #define OPT_GCP_GPT 0
326 #define OPT_GCP_MBR 1
327 #define OPT_GCP_ALL 2
328 
329 #define OPT_MCP_ADD 0
330 #define OPT_MCP_NADD 1
331 #define OPT_MCP_REPL 2
332 #define OPT_MCP_MOV 3
333 
334 #define OPT_MRG_COPY 0
335 #define OPT_MRG_MOV 1
336 
337 #define OPT_CMT_MBR 1
338 #define OPT_CMT_MBR_DEL 11
339 
340 typedef struct /* structure used to store table column information */
341 {
342  char ttype[70]; /* column name = FITS TTYPEn keyword; */
343  LONGLONG tbcol; /* offset in row to first byte of each column */
344  int tdatatype; /* datatype code of each column */
345  LONGLONG trepeat; /* repeat count of column; number of elements */
346  double tscale; /* FITS TSCALn linear scaling factor */
347  double tzero; /* FITS TZEROn linear scaling zero point */
348  LONGLONG tnull; /* FITS null value for int image or binary table cols */
349  char strnull[20]; /* FITS null value string for ASCII table columns */
350  char tform[10]; /* FITS tform keyword value */
351  long twidth; /* width of each ASCII table column */
352 }tcolumn;
353 
354 #define VALIDSTRUC 555 /* magic value used to identify if structure is valid */
355 
356 typedef struct /* structure used to store basic FITS file information */
357 {
358  int filehandle; /* handle returned by the file open function */
359  int driver; /* defines which set of I/O drivers should be used */
360  int open_count; /* number of opened 'fitsfiles' using this structure */
361  char *filename; /* file name */
362  int validcode; /* magic value used to verify that structure is valid */
363  int only_one; /* flag meaning only copy the specified extension */
364  LONGLONG filesize; /* current size of the physical disk file in bytes */
365  LONGLONG logfilesize; /* logical size of file, including unflushed buffers */
366  int lasthdu; /* is this the last HDU in the file? 0 = no, else yes */
367  LONGLONG bytepos; /* current logical I/O pointer position in file */
368  LONGLONG io_pos; /* current I/O pointer position in the physical file */
369  int curbuf; /* number of I/O buffer currently in use */
370  int curhdu; /* current HDU number; 0 = primary array */
371  int hdutype; /* 0 = primary array, 1 = ASCII table, 2 = binary table */
372  int writemode; /* 0 = readonly, 1 = readwrite */
373  int maxhdu; /* highest numbered HDU known to exist in the file */
374  int MAXHDU; /* dynamically allocated dimension of headstart array */
375  LONGLONG *headstart; /* byte offset in file to start of each HDU */
376  LONGLONG headend; /* byte offest in file to end of the current HDU header */
377  LONGLONG ENDpos; /* byte offest to where the END keyword was last written */
378  LONGLONG nextkey; /* byte offset in file to beginning of next keyword */
379  LONGLONG datastart; /* byte offset in file to start of the current data unit */
380  int imgdim; /* dimension of image; cached for fast access */
381  LONGLONG imgnaxis[99]; /* length of each axis; cached for fast access */
382  int tfield; /* number of fields in the table (primary array has 2 */
383  int startcol; /* used by ffgcnn to record starting column number */
384  LONGLONG origrows; /* original number of rows (value of NAXIS2 keyword) */
385  LONGLONG numrows; /* number of rows in the table (dynamically updated) */
386  LONGLONG rowlength; /* length of a table row or image size (bytes) */
387  tcolumn *tableptr; /* pointer to the table structure */
388  LONGLONG heapstart; /* heap start byte relative to start of data unit */
389  LONGLONG heapsize; /* size of the heap, in bytes */
390 
391  /* the following elements are related to compressed images */
392 
393  /* these record the 'requested' options to be used when the image is compressed */
394  int request_compress_type; /* requested image compression algorithm */
395  long request_tilesize[MAX_COMPRESS_DIM]; /* requested tiling size */
396  float request_quantize_level; /* requested quantize level */
397  int request_quantize_method ; /* requested quantizing method */
398  int request_dither_seed; /* starting offset into the array of random dithering */
399  int request_lossy_int_compress; /* lossy compress integer image as if float image? */
400  int request_huge_hdu; /* use '1Q' rather then '1P' variable length arrays */
401  float request_hcomp_scale; /* requested HCOMPRESS scale factor */
402  int request_hcomp_smooth; /* requested HCOMPRESS smooth parameter */
403 
404  /* these record the actual options that were used when the image was compressed */
405  int compress_type; /* type of compression algorithm */
406  long tilesize[MAX_COMPRESS_DIM]; /* size of compression tiles */
407  float quantize_level; /* floating point quantization level */
408  int quantize_method; /* floating point pixel quantization algorithm */
409  int dither_seed; /* starting offset into the array of random dithering */
410 
411  /* other compression parameters */
412  int compressimg; /* 1 if HDU contains a compressed image, else 0 */
413  char zcmptype[12]; /* compression type string */
414  int zbitpix; /* FITS data type of image (BITPIX) */
415  int zndim; /* dimension of image */
416  long znaxis[MAX_COMPRESS_DIM]; /* length of each axis */
417  long maxtilelen; /* max number of pixels in each image tile */
418  long maxelem; /* maximum byte length of tile compressed arrays */
419 
420  int cn_compressed; /* column number for COMPRESSED_DATA column */
421  int cn_uncompressed; /* column number for UNCOMPRESSED_DATA column */
422  int cn_gzip_data; /* column number for GZIP2 lossless compressed data */
423  int cn_zscale; /* column number for ZSCALE column */
424  int cn_zzero; /* column number for ZZERO column */
425  int cn_zblank; /* column number for the ZBLANK column */
426 
427  double zscale; /* scaling value, if same for all tiles */
428  double zzero; /* zero pt, if same for all tiles */
429  double cn_bscale; /* value of the BSCALE keyword in header */
430  double cn_bzero; /* value of the BZERO keyword (may be reset) */
431  double cn_actual_bzero; /* actual value of the BZERO keyword */
432  int zblank; /* value for null pixels, if not a column */
433 
434  int rice_blocksize; /* first compression parameter: Rice pixels/block */
435  int rice_bytepix; /* 2nd compression parameter: Rice bytes/pixel */
436  float hcomp_scale; /* 1st hcompress compression parameter */
437  int hcomp_smooth; /* 2nd hcompress compression parameter */
438 
439  int *tilerow; /* row number of the array of uncompressed tiledata */
440  long *tiledatasize; /* length of the array of tile data in bytes */
441  int *tiletype; /* datatype of the array of tile (TINT, TSHORT, etc) */
442  void **tiledata; /* array of uncompressed tile of data, for row *tilerow */
443  void **tilenullarray; /* array of optional array of null value flags */
444  int *tileanynull; /* anynulls in the array of tile? */
445 
446  char *iobuffer; /* pointer to FITS file I/O buffers */
447  long bufrecnum[NIOBUF]; /* file record number of each of the buffers */
448  int dirty[NIOBUF]; /* has the corresponding buffer been modified? */
449  int ageindex[NIOBUF]; /* relative age of each buffer */
450 } FITSfile;
451 
452 typedef struct /* structure used to store basic HDU information */
453 {
454  int HDUposition; /* HDU position in file; 0 = first HDU */
455  FITSfile *Fptr; /* pointer to FITS file structure */
456 }fitsfile;
457 
458 typedef struct /* structure for the iterator function column information */
459 {
460  /* elements required as input to fits_iterate_data: */
461 
462  fitsfile *fptr; /* pointer to the HDU containing the column */
463  int colnum; /* column number in the table (use name if < 1) */
464  char colname[70]; /* name (= TTYPEn value) of the column (optional) */
465  int datatype; /* output datatype (converted if necessary */
466  int iotype; /* = InputCol, InputOutputCol, or OutputCol */
467 
468  /* output elements that may be useful for the work function: */
469 
470  void *array; /* pointer to the array (and the null value) */
471  long repeat; /* binary table vector repeat value */
472  long tlmin; /* legal minimum data value */
473  long tlmax; /* legal maximum data value */
474  char tunit[70]; /* physical unit string */
475  char tdisp[70]; /* suggested display format */
476 
477 } iteratorCol;
478 
479 #define InputCol 0 /* flag for input only iterator column */
480 #define InputOutputCol 1 /* flag for input and output iterator column */
481 #define OutputCol 2 /* flag for output only iterator column */
482 
483 /*=============================================================================
484 *
485 * The following wtbarr typedef is used in the fits_read_wcstab() routine,
486 * which is intended for use with the WCSLIB library written by Mark
487 * Calabretta, http://www.atnf.csiro.au/~mcalabre/index.html
488 *
489 * In order to maintain WCSLIB and CFITSIO as independent libraries it
490 * was not permissible for any CFITSIO library code to include WCSLIB
491 * header files, or vice versa. However, the CFITSIO function
492 * fits_read_wcstab() accepts an array of structs defined by wcs.h within
493 * WCSLIB. The problem then was to define this struct within fitsio.h
494 * without including wcs.h, especially noting that wcs.h will often (but
495 * not always) be included together with fitsio.h in an applications
496 * program that uses fits_read_wcstab().
497 *
498 * Of the various possibilities, the solution adopted was for WCSLIB to
499 * define "struct wtbarr" while fitsio.h defines "typedef wtbarr", a
500 * untagged struct with identical members. This allows both wcs.h and
501 * fitsio.h to define a wtbarr data type without conflict by virtue of
502 * the fact that structure tags and typedef names share different
503 * namespaces in C. Therefore, declarations within WCSLIB look like
504 *
505 * struct wtbarr *w;
506 *
507 * while within CFITSIO they are simply
508 *
509 * wtbarr *w;
510 *
511 * but as suggested by the commonality of the names, these are really the
512 * same aggregate data type. However, in passing a (struct wtbarr *) to
513 * fits_read_wcstab() a cast to (wtbarr *) is formally required.
514 *===========================================================================*/
515 
516 #ifndef WCSLIB_GETWCSTAB
517 #define WCSLIB_GETWCSTAB
518 
519 typedef struct {
520  int i; /* Image axis number. */
521  int m; /* Array axis number for index vectors. */
522  int kind; /* Array type, 'c' (coord) or 'i' (index). */
523  char extnam[72]; /* EXTNAME of binary table extension. */
524  int extver; /* EXTVER of binary table extension. */
525  int extlev; /* EXTLEV of binary table extension. */
526  char ttype[72]; /* TTYPEn of column containing the array. */
527  long row; /* Table row number. */
528  int ndim; /* Expected array dimensionality. */
529  int *dimlen; /* Where to write the array axis lengths. */
530  double **arrayp; /* Where to write the address of the array */
531  /* allocated to store the array. */
532 } wtbarr;
533 
534 /* The following exclusion if __CINT__ is defined is needed for ROOT */
535 #ifndef __CINT__
536 /* the following 3 lines are needed to support C++ compilers */
537 #ifdef __cplusplus
538 extern "C" {
539 #endif
540 #endif
541 
542 int CFITS_API fits_read_wcstab(fitsfile *fptr, int nwtb, wtbarr *wtb, int *status);
543 
544 /* The following exclusion if __CINT__ is defined is needed for ROOT */
545 #ifndef __CINT__
546 #ifdef __cplusplus
547 }
548 #endif
549 #endif
550 
551 #endif /* WCSLIB_GETWCSTAB */
552 
553 /* error status codes */
554 
555 #define CREATE_DISK_FILE -106 /* create disk file, without extended filename syntax */
556 #define OPEN_DISK_FILE -105 /* open disk file, without extended filename syntax */
557 #define SKIP_TABLE -104 /* move to 1st image when opening file */
558 #define SKIP_IMAGE -103 /* move to 1st table when opening file */
559 #define SKIP_NULL_PRIMARY -102 /* skip null primary array when opening file */
560 #define USE_MEM_BUFF -101 /* use memory buffer when opening file */
561 #define OVERFLOW_ERR -11 /* overflow during datatype conversion */
562 #define PREPEND_PRIMARY -9 /* used in ffiimg to insert new primary array */
563 #define SAME_FILE 101 /* input and output files are the same */
564 #define TOO_MANY_FILES 103 /* tried to open too many FITS files */
565 #define FILE_NOT_OPENED 104 /* could not open the named file */
566 #define FILE_NOT_CREATED 105 /* could not create the named file */
567 #define WRITE_ERROR 106 /* error writing to FITS file */
568 #define END_OF_FILE 107 /* tried to move past end of file */
569 #define READ_ERROR 108 /* error reading from FITS file */
570 #define FILE_NOT_CLOSED 110 /* could not close the file */
571 #define ARRAY_TOO_BIG 111 /* array dimensions exceed internal limit */
572 #define READONLY_FILE 112 /* Cannot write to readonly file */
573 #define MEMORY_ALLOCATION 113 /* Could not allocate memory */
574 #define BAD_FILEPTR 114 /* invalid fitsfile pointer */
575 #define NULL_INPUT_PTR 115 /* NULL input pointer to routine */
576 #define SEEK_ERROR 116 /* error seeking position in file */
577 #define BAD_NETTIMEOUT 117 /* bad value for file download timeout setting */
578 
579 #define BAD_URL_PREFIX 121 /* invalid URL prefix on file name */
580 #define TOO_MANY_DRIVERS 122 /* tried to register too many IO drivers */
581 #define DRIVER_INIT_FAILED 123 /* driver initialization failed */
582 #define NO_MATCHING_DRIVER 124 /* matching driver is not registered */
583 #define URL_PARSE_ERROR 125 /* failed to parse input file URL */
584 #define RANGE_PARSE_ERROR 126 /* failed to parse input file URL */
585 
586 #define SHARED_ERRBASE (150)
587 #define SHARED_BADARG (SHARED_ERRBASE + 1)
588 #define SHARED_NULPTR (SHARED_ERRBASE + 2)
589 #define SHARED_TABFULL (SHARED_ERRBASE + 3)
590 #define SHARED_NOTINIT (SHARED_ERRBASE + 4)
591 #define SHARED_IPCERR (SHARED_ERRBASE + 5)
592 #define SHARED_NOMEM (SHARED_ERRBASE + 6)
593 #define SHARED_AGAIN (SHARED_ERRBASE + 7)
594 #define SHARED_NOFILE (SHARED_ERRBASE + 8)
595 #define SHARED_NORESIZE (SHARED_ERRBASE + 9)
596 
597 #define HEADER_NOT_EMPTY 201 /* header already contains keywords */
598 #define KEY_NO_EXIST 202 /* keyword not found in header */
599 #define KEY_OUT_BOUNDS 203 /* keyword record number is out of bounds */
600 #define VALUE_UNDEFINED 204 /* keyword value field is blank */
601 #define NO_QUOTE 205 /* string is missing the closing quote */
602 #define BAD_INDEX_KEY 206 /* illegal indexed keyword name */
603 #define BAD_KEYCHAR 207 /* illegal character in keyword name or card */
604 #define BAD_ORDER 208 /* required keywords out of order */
605 #define NOT_POS_INT 209 /* keyword value is not a positive integer */
606 #define NO_END 210 /* couldn't find END keyword */
607 #define BAD_BITPIX 211 /* illegal BITPIX keyword value*/
608 #define BAD_NAXIS 212 /* illegal NAXIS keyword value */
609 #define BAD_NAXES 213 /* illegal NAXISn keyword value */
610 #define BAD_PCOUNT 214 /* illegal PCOUNT keyword value */
611 #define BAD_GCOUNT 215 /* illegal GCOUNT keyword value */
612 #define BAD_TFIELDS 216 /* illegal TFIELDS keyword value */
613 #define NEG_WIDTH 217 /* negative table row size */
614 #define NEG_ROWS 218 /* negative number of rows in table */
615 #define COL_NOT_FOUND 219 /* column with this name not found in table */
616 #define BAD_SIMPLE 220 /* illegal value of SIMPLE keyword */
617 #define NO_SIMPLE 221 /* Primary array doesn't start with SIMPLE */
618 #define NO_BITPIX 222 /* Second keyword not BITPIX */
619 #define NO_NAXIS 223 /* Third keyword not NAXIS */
620 #define NO_NAXES 224 /* Couldn't find all the NAXISn keywords */
621 #define NO_XTENSION 225 /* HDU doesn't start with XTENSION keyword */
622 #define NOT_ATABLE 226 /* the CHDU is not an ASCII table extension */
623 #define NOT_BTABLE 227 /* the CHDU is not a binary table extension */
624 #define NO_PCOUNT 228 /* couldn't find PCOUNT keyword */
625 #define NO_GCOUNT 229 /* couldn't find GCOUNT keyword */
626 #define NO_TFIELDS 230 /* couldn't find TFIELDS keyword */
627 #define NO_TBCOL 231 /* couldn't find TBCOLn keyword */
628 #define NO_TFORM 232 /* couldn't find TFORMn keyword */
629 #define NOT_IMAGE 233 /* the CHDU is not an IMAGE extension */
630 #define BAD_TBCOL 234 /* TBCOLn keyword value < 0 or > rowlength */
631 #define NOT_TABLE 235 /* the CHDU is not a table */
632 #define COL_TOO_WIDE 236 /* column is too wide to fit in table */
633 #define COL_NOT_UNIQUE 237 /* more than 1 column name matches template */
634 #define BAD_ROW_WIDTH 241 /* sum of column widths not = NAXIS1 */
635 #define UNKNOWN_EXT 251 /* unrecognizable FITS extension type */
636 #define UNKNOWN_REC 252 /* unrecognizable FITS record */
637 #define END_JUNK 253 /* END keyword is not blank */
638 #define BAD_HEADER_FILL 254 /* Header fill area not blank */
639 #define BAD_DATA_FILL 255 /* Data fill area not blank or zero */
640 #define BAD_TFORM 261 /* illegal TFORM format code */
641 #define BAD_TFORM_DTYPE 262 /* unrecognizable TFORM datatype code */
642 #define BAD_TDIM 263 /* illegal TDIMn keyword value */
643 #define BAD_HEAP_PTR 264 /* invalid BINTABLE heap address */
644 
645 #define BAD_HDU_NUM 301 /* HDU number < 1 or > MAXHDU */
646 #define BAD_COL_NUM 302 /* column number < 1 or > tfields */
647 #define NEG_FILE_POS 304 /* tried to move before beginning of file */
648 #define NEG_BYTES 306 /* tried to read or write negative bytes */
649 #define BAD_ROW_NUM 307 /* illegal starting row number in table */
650 #define BAD_ELEM_NUM 308 /* illegal starting element number in vector */
651 #define NOT_ASCII_COL 309 /* this is not an ASCII string column */
652 #define NOT_LOGICAL_COL 310 /* this is not a logical datatype column */
653 #define BAD_ATABLE_FORMAT 311 /* ASCII table column has wrong format */
654 #define BAD_BTABLE_FORMAT 312 /* Binary table column has wrong format */
655 #define NO_NULL 314 /* null value has not been defined */
656 #define NOT_VARI_LEN 317 /* this is not a variable length column */
657 #define BAD_DIMEN 320 /* illegal number of dimensions in array */
658 #define BAD_PIX_NUM 321 /* first pixel number greater than last pixel */
659 #define ZERO_SCALE 322 /* illegal BSCALE or TSCALn keyword = 0 */
660 #define NEG_AXIS 323 /* illegal axis length < 1 */
661 
662 #define NOT_GROUP_TABLE 340
663 #define HDU_ALREADY_MEMBER 341
664 #define MEMBER_NOT_FOUND 342
665 #define GROUP_NOT_FOUND 343
666 #define BAD_GROUP_ID 344
667 #define TOO_MANY_HDUS_TRACKED 345
668 #define HDU_ALREADY_TRACKED 346
669 #define BAD_OPTION 347
670 #define IDENTICAL_POINTERS 348
671 #define BAD_GROUP_ATTACH 349
672 #define BAD_GROUP_DETACH 350
673 
674 #define BAD_I2C 401 /* bad int to formatted string conversion */
675 #define BAD_F2C 402 /* bad float to formatted string conversion */
676 #define BAD_INTKEY 403 /* can't interprete keyword value as integer */
677 #define BAD_LOGICALKEY 404 /* can't interprete keyword value as logical */
678 #define BAD_FLOATKEY 405 /* can't interprete keyword value as float */
679 #define BAD_DOUBLEKEY 406 /* can't interprete keyword value as double */
680 #define BAD_C2I 407 /* bad formatted string to int conversion */
681 #define BAD_C2F 408 /* bad formatted string to float conversion */
682 #define BAD_C2D 409 /* bad formatted string to double conversion */
683 #define BAD_DATATYPE 410 /* bad keyword datatype code */
684 #define BAD_DECIM 411 /* bad number of decimal places specified */
685 #define NUM_OVERFLOW 412 /* overflow during datatype conversion */
686 
687 # define DATA_COMPRESSION_ERR 413 /* error in imcompress routines */
688 # define DATA_DECOMPRESSION_ERR 414 /* error in imcompress routines */
689 # define NO_COMPRESSED_TILE 415 /* compressed tile doesn't exist */
690 
691 #define BAD_DATE 420 /* error in date or time conversion */
692 
693 #define PARSE_SYNTAX_ERR 431 /* syntax error in parser expression */
694 #define PARSE_BAD_TYPE 432 /* expression did not evaluate to desired type */
695 #define PARSE_LRG_VECTOR 433 /* vector result too large to return in array */
696 #define PARSE_NO_OUTPUT 434 /* data parser failed not sent an out column */
697 #define PARSE_BAD_COL 435 /* bad data encounter while parsing column */
698 #define PARSE_BAD_OUTPUT 436 /* Output file not of proper type */
699 
700 #define ANGLE_TOO_BIG 501 /* celestial angle too large for projection */
701 #define BAD_WCS_VAL 502 /* bad celestial coordinate or pixel value */
702 #define WCS_ERROR 503 /* error in celestial coordinate calculation */
703 #define BAD_WCS_PROJ 504 /* unsupported type of celestial projection */
704 #define NO_WCS_KEY 505 /* celestial coordinate keywords not found */
705 #define APPROX_WCS_KEY 506 /* approximate WCS keywords were calculated */
706 
707 #define NO_CLOSE_ERROR 999 /* special value used internally to switch off */
708  /* the error message from ffclos and ffchdu */
709 
710 /*------- following error codes are used in the grparser.c file -----------*/
711 #define NGP_ERRBASE (360) /* base chosen so not to interfere with CFITSIO */
712 #define NGP_OK (0)
713 #define NGP_NO_MEMORY (NGP_ERRBASE + 0) /* malloc failed */
714 #define NGP_READ_ERR (NGP_ERRBASE + 1) /* read error from file */
715 #define NGP_NUL_PTR (NGP_ERRBASE + 2) /* null pointer passed as argument */
716 #define NGP_EMPTY_CURLINE (NGP_ERRBASE + 3) /* line read seems to be empty */
717 #define NGP_UNREAD_QUEUE_FULL (NGP_ERRBASE + 4) /* cannot unread more then 1 line (or single line twice) */
718 #define NGP_INC_NESTING (NGP_ERRBASE + 5) /* too deep include file nesting (inf. loop ?) */
719 #define NGP_ERR_FOPEN (NGP_ERRBASE + 6) /* fopen() failed, cannot open file */
720 #define NGP_EOF (NGP_ERRBASE + 7) /* end of file encountered */
721 #define NGP_BAD_ARG (NGP_ERRBASE + 8) /* bad arguments passed */
722 #define NGP_TOKEN_NOT_EXPECT (NGP_ERRBASE + 9) /* token not expected here */
723 
724 /* The following exclusion if __CINT__ is defined is needed for ROOT */
725 #ifndef __CINT__
726 /* the following 3 lines are needed to support C++ compilers */
727 #ifdef __cplusplus
728 extern "C" {
729 #endif
730 #endif
731 
732 int CFITS2Unit( fitsfile *fptr );
733 CFITS_API fitsfile* CUnit2FITS(int unit);
734 
735 /*---------------- FITS file URL parsing routines -------------*/
736 int CFITS_API fits_get_token (char **ptr, char *delimiter, char *token, int *isanumber);
737 int CFITS_API fits_get_token2(char **ptr, char *delimiter, char **token, int *isanumber, int *status);
738 char CFITS_API *fits_split_names(char *list);
739 int CFITS_API ffiurl( char *url, char *urltype, char *infile,
740  char *outfile, char *extspec, char *rowfilter,
741  char *binspec, char *colspec, int *status);
742 int CFITS_API ffifile (char *url, char *urltype, char *infile,
743  char *outfile, char *extspec, char *rowfilter,
744  char *binspec, char *colspec, char *pixfilter, int *status);
745 int CFITS_API ffifile2 (char *url, char *urltype, char *infile,
746  char *outfile, char *extspec, char *rowfilter,
747  char *binspec, char *colspec, char *pixfilter, char *compspec, int *status);
748 int CFITS_API ffrtnm(char *url, char *rootname, int *status);
749 int CFITS_API ffexist(const char *infile, int *exists, int *status);
750 int CFITS_API ffexts(char *extspec, int *extnum, char *extname, int *extvers,
751  int *hdutype, char *colname, char *rowexpress, int *status);
752 int CFITS_API ffextn(char *url, int *extension_num, int *status);
753 int CFITS_API ffurlt(fitsfile *fptr, char *urlType, int *status);
754 int CFITS_API ffbins(char *binspec, int *imagetype, int *haxis,
755  char colname[4][FLEN_VALUE], double *minin,
756  double *maxin, double *binsizein,
757  char minname[4][FLEN_VALUE], char maxname[4][FLEN_VALUE],
758  char binname[4][FLEN_VALUE], double *weight, char *wtname,
759  int *recip, int *status);
760 int CFITS_API ffbinr(char **binspec, char *colname, double *minin,
761  double *maxin, double *binsizein, char *minname,
762  char *maxname, char *binname, int *status);
763 int CFITS_API fits_copy_cell2image(fitsfile *fptr, fitsfile *newptr, char *colname,
764  long rownum, int *status);
765 int CFITS_API fits_copy_image2cell(fitsfile *fptr, fitsfile *newptr, char *colname,
766  long rownum, int copykeyflag, int *status);
767 int CFITS_API fits_copy_pixlist2image(fitsfile *infptr, fitsfile *outfptr, int firstkey, /* I - first HDU record number to start with */
768  int naxis, int *colnum, int *status);
769 int CFITS_API ffimport_file( char *filename, char **contents, int *status );
770 int CFITS_API ffrwrg( char *rowlist, LONGLONG maxrows, int maxranges, int *numranges,
771  long *minrow, long *maxrow, int *status);
772 int CFITS_API ffrwrgll( char *rowlist, LONGLONG maxrows, int maxranges, int *numranges,
773  LONGLONG *minrow, LONGLONG *maxrow, int *status);
774 /*---------------- FITS file I/O routines -------------*/
775 int CFITS_API fits_init_cfitsio(void);
776 int CFITS_API ffomem(fitsfile **fptr, const char *name, int mode, void **buffptr,
777  size_t *buffsize, size_t deltasize,
778  void *(*mem_realloc)(void *p, size_t newsize),
779  int *status);
780 int CFITS_API ffopen(fitsfile **fptr, const char *filename, int iomode, int *status);
781 int CFITS_API ffopentest(int soname, fitsfile **fptr, const char *filename, int iomode, int *status);
782 
783 int CFITS_API ffdopn(fitsfile **fptr, const char *filename, int iomode, int *status);
784 int CFITS_API ffeopn(fitsfile **fptr, const char *filename, int iomode,
785  char *extlist, int *hdutype, int *status);
786 int CFITS_API fftopn(fitsfile **fptr, const char *filename, int iomode, int *status);
787 int CFITS_API ffiopn(fitsfile **fptr, const char *filename, int iomode, int *status);
788 int CFITS_API ffdkopn(fitsfile **fptr, const char *filename, int iomode, int *status);
789 int CFITS_API ffreopen(fitsfile *openfptr, fitsfile **newfptr, int *status);
790 int CFITS_API ffinit( fitsfile **fptr, const char *filename, int *status);
791 int CFITS_API ffdkinit(fitsfile **fptr, const char *filename, int *status);
792 int CFITS_API ffimem(fitsfile **fptr, void **buffptr,
793  size_t *buffsize, size_t deltasize,
794  void *(*mem_realloc)(void *p, size_t newsize),
795  int *status);
796 int CFITS_API fftplt(fitsfile **fptr, const char *filename, const char *tempname,
797  int *status);
798 int CFITS_API ffflus(fitsfile *fptr, int *status);
799 int CFITS_API ffflsh(fitsfile *fptr, int clearbuf, int *status);
800 int CFITS_API ffclos(fitsfile *fptr, int *status);
801 int CFITS_API ffdelt(fitsfile *fptr, int *status);
802 int CFITS_API ffflnm(fitsfile *fptr, char *filename, int *status);
803 int CFITS_API ffflmd(fitsfile *fptr, int *filemode, int *status);
804 int CFITS_API fits_delete_iraf_file(const char *filename, int *status);
805 
806 /*---------------- utility routines -------------*/
807 
808 float CFITS_API ffvers(float *version);
809 void CFITS_API ffupch(char *string);
810 void CFITS_API ffgerr(int status, char *errtext);
811 void CFITS_API ffpmsg(const char *err_message);
812 void CFITS_API ffpmrk(void);
813 int CFITS_API ffgmsg(char *err_message);
814 void CFITS_API ffcmsg(void);
815 void CFITS_API ffcmrk(void);
816 void CFITS_API ffrprt(FILE *stream, int status);
817 void CFITS_API ffcmps(char *templt, char *colname, int casesen, int *match,
818  int *exact);
819 int CFITS_API fftkey(const char *keyword, int *status);
820 int CFITS_API fftrec(char *card, int *status);
821 int CFITS_API ffnchk(fitsfile *fptr, int *status);
822 int CFITS_API ffkeyn(const char *keyroot, int value, char *keyname, int *status);
823 int CFITS_API ffnkey(int value, const char *keyroot, char *keyname, int *status);
824 int CFITS_API ffgkcl(char *card);
825 int CFITS_API ffdtyp(const char *cval, char *dtype, int *status);
826 int CFITS_API ffinttyp(char *cval, int *datatype, int *negative, int *status);
827 int CFITS_API ffpsvc(char *card, char *value, char *comm, int *status);
828 int CFITS_API ffgknm(char *card, char *name, int *length, int *status);
829 int CFITS_API ffgthd(char *tmplt, char *card, int *hdtype, int *status);
830 int CFITS_API ffmkky(const char *keyname, char *keyval, const char *comm, char *card, int *status);
831 int CFITS_API fits_translate_keyword(char *inrec, char *outrec, char *patterns[][2],
832  int npat, int n_value, int n_offset, int n_range, int *pat_num,
833  int *i, int *j, int *m, int *n, int *status);
834 int CFITS_API fits_translate_keywords(fitsfile *infptr, fitsfile *outfptr,
835  int firstkey, char *patterns[][2],
836  int npat, int n_value, int n_offset, int n_range, int *status);
837 int CFITS_API ffasfm(char *tform, int *datacode, long *width, int *decim, int *status);
838 int CFITS_API ffbnfm(char *tform, int *datacode, long *repeat, long *width, int *status);
839 int CFITS_API ffbnfmll(char *tform, int *datacode, LONGLONG *repeat, long *width, int *status);
840 int CFITS_API ffgabc(int tfields, char **tform, int space, long *rowlen, long *tbcol,
841  int *status);
842 int CFITS_API fits_get_section_range(char **ptr,long *secmin,long *secmax,long *incre,
843  int *status);
844 /* ffmbyt should not normally be used in application programs, but it is
845  defined here as a publicly available routine because there are a few
846  rare cases where it is needed
847 */
848 int CFITS_API ffmbyt(fitsfile *fptr, LONGLONG bytpos, int ignore_err, int *status);
849 /*----------------- write single keywords --------------*/
850 int CFITS_API ffpky(fitsfile *fptr, int datatype, const char *keyname, void *value,
851  const char *comm, int *status);
852 int CFITS_API ffprec(fitsfile *fptr, const char *card, int *status);
853 int CFITS_API ffpcom(fitsfile *fptr, const char *comm, int *status);
854 int CFITS_API ffpunt(fitsfile *fptr, const char *keyname, const char *unit, int *status);
855 int CFITS_API ffphis(fitsfile *fptr, const char *history, int *status);
856 int CFITS_API ffpdat(fitsfile *fptr, int *status);
857 int CFITS_API ffverifydate(int year, int month, int day, int *status);
858 int CFITS_API ffgstm(char *timestr, int *timeref, int *status);
859 int CFITS_API ffgsdt(int *day, int *month, int *year, int *status);
860 int CFITS_API ffdt2s(int year, int month, int day, char *datestr, int *status);
861 int CFITS_API fftm2s(int year, int month, int day, int hour, int minute, double second,
862  int decimals, char *datestr, int *status);
863 int CFITS_API ffs2dt(char *datestr, int *year, int *month, int *day, int *status);
864 int CFITS_API ffs2tm(char *datestr, int *year, int *month, int *day, int *hour,
865  int *minute, double *second, int *status);
866 int CFITS_API ffpkyu(fitsfile *fptr, const char *keyname, const char *comm, int *status);
867 int CFITS_API ffpkys(fitsfile *fptr, const char *keyname, const char *value, const char *comm,int *status);
868 int CFITS_API ffpkls(fitsfile *fptr, const char *keyname, const char *value, const char *comm,int *status);
869 int CFITS_API ffplsw(fitsfile *fptr, int *status);
870 int CFITS_API ffpkyl(fitsfile *fptr, const char *keyname, int value, const char *comm, int *status);
871 int CFITS_API ffpkyj(fitsfile *fptr, const char *keyname, LONGLONG value, const char *comm, int *status);
872 int CFITS_API ffpkyuj(fitsfile *fptr, const char *keyname, ULONGLONG value, const char *comm, int *status);
873 int CFITS_API ffpkyf(fitsfile *fptr, const char *keyname, float value, int decim, const char *comm,
874  int *status);
875 int CFITS_API ffpkye(fitsfile *fptr, const char *keyname, float value, int decim, const char *comm,
876  int *status);
877 int CFITS_API ffpkyg(fitsfile *fptr, const char *keyname, double value, int decim, const char *comm,
878  int *status);
879 int CFITS_API ffpkyd(fitsfile *fptr, const char *keyname, double value, int decim, const char *comm,
880  int *status);
881 int CFITS_API ffpkyc(fitsfile *fptr, const char *keyname, float *value, int decim, const char *comm,
882  int *status);
883 int CFITS_API ffpkym(fitsfile *fptr, const char *keyname, double *value, int decim, const char *comm,
884  int *status);
885 int CFITS_API ffpkfc(fitsfile *fptr, const char *keyname, float *value, int decim, const char *comm,
886  int *status);
887 int CFITS_API ffpkfm(fitsfile *fptr, const char *keyname, double *value, int decim, const char *comm,
888  int *status);
889 int CFITS_API ffpkyt(fitsfile *fptr, const char *keyname, long intval, double frac, const char *comm,
890  int *status);
891 int CFITS_API ffptdm( fitsfile *fptr, int colnum, int naxis, long naxes[], int *status);
892 int CFITS_API ffptdmll( fitsfile *fptr, int colnum, int naxis, LONGLONG naxes[], int *status);
893 
894 /*----------------- write array of keywords --------------*/
895 int CFITS_API ffpkns(fitsfile *fptr, const char *keyroot, int nstart, int nkey, char *value[],
896  char *comm[], int *status);
897 int CFITS_API ffpknl(fitsfile *fptr, const char *keyroot, int nstart, int nkey, int *value,
898  char *comm[], int *status);
899 int CFITS_API ffpknj(fitsfile *fptr, const char *keyroot, int nstart, int nkey, long *value,
900  char *comm[], int *status);
901 int CFITS_API ffpknjj(fitsfile *fptr, const char *keyroot, int nstart, int nkey, LONGLONG *value,
902  char *comm[], int *status);
903 int CFITS_API ffpknf(fitsfile *fptr, const char *keyroot, int nstart, int nkey, float *value,
904  int decim, char *comm[], int *status);
905 int CFITS_API ffpkne(fitsfile *fptr, const char *keyroot, int nstart, int nkey, float *value,
906  int decim, char *comm[], int *status);
907 int CFITS_API ffpkng(fitsfile *fptr, const char *keyroot, int nstart, int nkey, double *value,
908  int decim, char *comm[], int *status);
909 int CFITS_API ffpknd(fitsfile *fptr, const char *keyroot, int nstart, int nkey, double *value,
910  int decim, char *comm[], int *status);
911 int CFITS_API ffcpky(fitsfile *infptr,fitsfile *outfptr,int incol,int outcol,
912  char *rootname, int *status);
913 
914 /*----------------- write required header keywords --------------*/
915 int CFITS_API ffphps( fitsfile *fptr, int bitpix, int naxis, long naxes[], int *status);
916 int CFITS_API ffphpsll( fitsfile *fptr, int bitpix, int naxis, LONGLONG naxes[], int *status);
917 int CFITS_API ffphpr( fitsfile *fptr, int simple, int bitpix, int naxis, long naxes[],
918  LONGLONG pcount, LONGLONG gcount, int extend, int *status);
919 int CFITS_API ffphprll( fitsfile *fptr, int simple, int bitpix, int naxis, LONGLONG naxes[],
920  LONGLONG pcount, LONGLONG gcount, int extend, int *status);
921 int CFITS_API ffphtb(fitsfile *fptr, LONGLONG naxis1, LONGLONG naxis2, int tfields, char **ttype,
922  long *tbcol, char **tform, char **tunit, const char *extname, int *status);
923 int CFITS_API ffphbn(fitsfile *fptr, LONGLONG naxis2, int tfields, char **ttype,
924  char **tform, char **tunit, const char *extname, LONGLONG pcount, int *status);
925 int CFITS_API ffphext( fitsfile *fptr, const char *xtension, int bitpix, int naxis, long naxes[],
926  LONGLONG pcount, LONGLONG gcount, int *status);
927 /*----------------- write template keywords --------------*/
928 int CFITS_API ffpktp(fitsfile *fptr, const char *filename, int *status);
929 
930 /*------------------ get header information --------------*/
931 int CFITS_API ffghsp(fitsfile *fptr, int *nexist, int *nmore, int *status);
932 int CFITS_API ffghps(fitsfile *fptr, int *nexist, int *position, int *status);
933 
934 /*------------------ move position in header -------------*/
935 int CFITS_API ffmaky(fitsfile *fptr, int nrec, int *status);
936 int CFITS_API ffmrky(fitsfile *fptr, int nrec, int *status);
937 
938 /*------------------ read single keywords -----------------*/
939 int CFITS_API ffgnxk(fitsfile *fptr, char **inclist, int ninc, char **exclist,
940  int nexc, char *card, int *status);
941 int CFITS_API ffgrec(fitsfile *fptr, int nrec, char *card, int *status);
942 int CFITS_API ffgcrd(fitsfile *fptr, const char *keyname, char *card, int *status);
943 int CFITS_API ffgstr(fitsfile *fptr, const char *string, char *card, int *status);
944 int CFITS_API ffgunt(fitsfile *fptr, const char *keyname, char *unit, int *status);
945 int CFITS_API ffgkyn(fitsfile *fptr, int nkey, char *keyname, char *keyval, char *comm,
946  int *status);
947 int CFITS_API ffgkey(fitsfile *fptr, const char *keyname, char *keyval, char *comm,
948  int *status);
949 
950 int CFITS_API ffgky( fitsfile *fptr, int datatype, const char *keyname, void *value,
951  char *comm, int *status);
952 int CFITS_API ffgkys(fitsfile *fptr, const char *keyname, char *value, char *comm, int *status);
953 int CFITS_API ffgksl(fitsfile *fptr, const char *keyname, int *length, int *status);
954 int CFITS_API ffgkls(fitsfile *fptr, const char *keyname, char **value, char *comm, int *status);
955 int CFITS_API ffgsky(fitsfile *fptr, const char *keyname, int firstchar, int maxchar,
956  char *value, int *valuelen, char *comm, int *status);
957 int CFITS_API fffree(void *value, int *status);
958 int CFITS_API fffkls(char *value, int *status);
959 int CFITS_API ffgkyl(fitsfile *fptr, const char *keyname, int *value, char *comm, int *status);
960 int CFITS_API ffgkyj(fitsfile *fptr, const char *keyname, long *value, char *comm, int *status);
961 int CFITS_API ffgkyjj(fitsfile *fptr, const char *keyname, LONGLONG *value, char *comm, int *status);
962 int CFITS_API ffgkyujj(fitsfile *fptr, const char *keyname, ULONGLONG *value, char *comm, int *status);
963 int CFITS_API ffgkye(fitsfile *fptr, const char *keyname, float *value, char *comm,int *status);
964 int CFITS_API ffgkyd(fitsfile *fptr, const char *keyname, double *value,char *comm,int *status);
965 int CFITS_API ffgkyc(fitsfile *fptr, const char *keyname, float *value, char *comm,int *status);
966 int CFITS_API ffgkym(fitsfile *fptr, const char *keyname, double *value,char *comm,int *status);
967 int CFITS_API ffgkyt(fitsfile *fptr, const char *keyname, long *ivalue, double *dvalue,
968  char *comm, int *status);
969 int CFITS_API ffgtdm(fitsfile *fptr, int colnum, int maxdim, int *naxis, long naxes[],
970  int *status);
971 int CFITS_API ffgtdmll(fitsfile *fptr, int colnum, int maxdim, int *naxis, LONGLONG naxes[],
972  int *status);
973 int CFITS_API ffdtdm(fitsfile *fptr, char *tdimstr, int colnum, int maxdim,
974  int *naxis, long naxes[], int *status);
975 int CFITS_API ffdtdmll(fitsfile *fptr, char *tdimstr, int colnum, int maxdim,
976  int *naxis, LONGLONG naxes[], int *status);
977 
978 /*------------------ read array of keywords -----------------*/
979 int CFITS_API ffgkns(fitsfile *fptr, const char *keyname, int nstart, int nmax, char *value[],
980  int *nfound, int *status);
981 int CFITS_API ffgknl(fitsfile *fptr, const char *keyname, int nstart, int nmax, int *value,
982  int *nfound, int *status);
983 int CFITS_API ffgknj(fitsfile *fptr, const char *keyname, int nstart, int nmax, long *value,
984  int *nfound, int *status);
985 int CFITS_API ffgknjj(fitsfile *fptr, const char *keyname, int nstart, int nmax, LONGLONG *value,
986  int *nfound, int *status);
987 int CFITS_API ffgkne(fitsfile *fptr, const char *keyname, int nstart, int nmax, float *value,
988  int *nfound, int *status);
989 int CFITS_API ffgknd(fitsfile *fptr, const char *keyname, int nstart, int nmax, double *value,
990  int *nfound, int *status);
991 int CFITS_API ffh2st(fitsfile *fptr, char **header, int *status);
992 int CFITS_API ffhdr2str( fitsfile *fptr, int exclude_comm, char **exclist,
993  int nexc, char **header, int *nkeys, int *status);
994 int CFITS_API ffcnvthdr2str( fitsfile *fptr, int exclude_comm, char **exclist,
995  int nexc, char **header, int *nkeys, int *status);
996 
997 /*----------------- read required header keywords --------------*/
998 int CFITS_API ffghpr(fitsfile *fptr, int maxdim, int *simple, int *bitpix, int *naxis,
999  long naxes[], long *pcount, long *gcount, int *extend, int *status);
1000 
1001 int CFITS_API ffghprll(fitsfile *fptr, int maxdim, int *simple, int *bitpix, int *naxis,
1002  LONGLONG naxes[], long *pcount, long *gcount, int *extend, int *status);
1003 
1004 int CFITS_API ffghtb(fitsfile *fptr,int maxfield, long *naxis1, long *naxis2,
1005  int *tfields, char **ttype, long *tbcol, char **tform, char **tunit,
1006  char *extname, int *status);
1007 
1008 int CFITS_API ffghtbll(fitsfile *fptr,int maxfield, LONGLONG *naxis1, LONGLONG *naxis2,
1009  int *tfields, char **ttype, LONGLONG *tbcol, char **tform, char **tunit,
1010  char *extname, int *status);
1011 
1012 
1013 int CFITS_API ffghbn(fitsfile *fptr, int maxfield, long *naxis2, int *tfields,
1014  char **ttype, char **tform, char **tunit, char *extname,
1015  long *pcount, int *status);
1016 
1017 int CFITS_API ffghbnll(fitsfile *fptr, int maxfield, LONGLONG *naxis2, int *tfields,
1018  char **ttype, char **tform, char **tunit, char *extname,
1019  LONGLONG *pcount, int *status);
1020 
1021 /*--------------------- update keywords ---------------*/
1022 int CFITS_API ffuky(fitsfile *fptr, int datatype, const char *keyname, void *value,
1023  const char *comm, int *status);
1024 int CFITS_API ffucrd(fitsfile *fptr, const char *keyname, const char *card, int *status);
1025 int CFITS_API ffukyu(fitsfile *fptr, const char *keyname, const char *comm, int *status);
1026 int CFITS_API ffukys(fitsfile *fptr, const char *keyname, const char *value, const char *comm, int *status);
1027 int CFITS_API ffukls(fitsfile *fptr, const char *keyname, const char *value, const char *comm, int *status);
1028 int CFITS_API ffukyl(fitsfile *fptr, const char *keyname, int value, const char *comm, int *status);
1029 int CFITS_API ffukyj(fitsfile *fptr, const char *keyname, LONGLONG value, const char *comm, int *status);
1030 int CFITS_API ffukyf(fitsfile *fptr, const char *keyname, float value, int decim, const char *comm,
1031  int *status);
1032 int CFITS_API ffukye(fitsfile *fptr, const char *keyname, float value, int decim, const char *comm,
1033  int *status);
1034 int CFITS_API ffukyg(fitsfile *fptr, const char *keyname, double value, int decim, const char *comm,
1035  int *status);
1036 int CFITS_API ffukyd(fitsfile *fptr, const char *keyname, double value, int decim, const char *comm,
1037  int *status);
1038 int CFITS_API ffukyc(fitsfile *fptr, const char *keyname, float *value, int decim, const char *comm,
1039  int *status);
1040 int CFITS_API ffukym(fitsfile *fptr, const char *keyname, double *value, int decim, const char *comm,
1041  int *status);
1042 int CFITS_API ffukfc(fitsfile *fptr, const char *keyname, float *value, int decim, const char *comm,
1043  int *status);
1044 int CFITS_API ffukfm(fitsfile *fptr, const char *keyname, double *value, int decim, const char *comm,
1045  int *status);
1046 
1047 /*--------------------- modify keywords ---------------*/
1048 int CFITS_API ffmrec(fitsfile *fptr, int nkey, const char *card, int *status);
1049 int CFITS_API ffmcrd(fitsfile *fptr, const char *keyname, const char *card, int *status);
1050 int CFITS_API ffmnam(fitsfile *fptr, const char *oldname, const char *newname, int *status);
1051 int CFITS_API ffmcom(fitsfile *fptr, const char *keyname, const char *comm, int *status);
1052 int CFITS_API ffmkyu(fitsfile *fptr, const char *keyname, const char *comm, int *status);
1053 int CFITS_API ffmkys(fitsfile *fptr, const char *keyname, const char *value, const char *comm,int *status);
1054 int CFITS_API ffmkls(fitsfile *fptr, const char *keyname, const char *value, const char *comm,int *status);
1055 int CFITS_API ffmkyl(fitsfile *fptr, const char *keyname, int value, const char *comm, int *status);
1056 int CFITS_API ffmkyj(fitsfile *fptr, const char *keyname, LONGLONG value, const char *comm, int *status);
1057 int CFITS_API ffmkyf(fitsfile *fptr, const char *keyname, float value, int decim, const char *comm,
1058  int *status);
1059 int CFITS_API ffmkye(fitsfile *fptr, const char *keyname, float value, int decim, const char *comm,
1060  int *status);
1061 int CFITS_API ffmkyg(fitsfile *fptr, const char *keyname, double value, int decim, const char *comm,
1062  int *status);
1063 int CFITS_API ffmkyd(fitsfile *fptr, const char *keyname, double value, int decim, const char *comm,
1064  int *status);
1065 int CFITS_API ffmkyc(fitsfile *fptr, const char *keyname, float *value, int decim, const char *comm,
1066  int *status);
1067 int CFITS_API ffmkym(fitsfile *fptr, const char *keyname, double *value, int decim, const char *comm,
1068  int *status);
1069 int CFITS_API ffmkfc(fitsfile *fptr, const char *keyname, float *value, int decim, const char *comm,
1070  int *status);
1071 int CFITS_API ffmkfm(fitsfile *fptr, const char *keyname, double *value, int decim, const char *comm,
1072  int *status);
1073 
1074 /*--------------------- insert keywords ---------------*/
1075 int CFITS_API ffirec(fitsfile *fptr, int nkey, const char *card, int *status);
1076 int CFITS_API ffikey(fitsfile *fptr, const char *card, int *status);
1077 int CFITS_API ffikyu(fitsfile *fptr, const char *keyname, const char *comm, int *status);
1078 int CFITS_API ffikys(fitsfile *fptr, const char *keyname, const char *value, const char *comm,int *status);
1079 int CFITS_API ffikls(fitsfile *fptr, const char *keyname, const char *value, const char *comm,int *status);
1080 int CFITS_API ffikyl(fitsfile *fptr, const char *keyname, int value, const char *comm, int *status);
1081 int CFITS_API ffikyj(fitsfile *fptr, const char *keyname, LONGLONG value, const char *comm, int *status);
1082 int CFITS_API ffikyf(fitsfile *fptr, const char *keyname, float value, int decim, const char *comm,
1083  int *status);
1084 int CFITS_API ffikye(fitsfile *fptr, const char *keyname, float value, int decim, const char *comm,
1085  int *status);
1086 int CFITS_API ffikyg(fitsfile *fptr, const char *keyname, double value, int decim, const char *comm,
1087  int *status);
1088 int CFITS_API ffikyd(fitsfile *fptr, const char *keyname, double value, int decim, const char *comm,
1089  int *status);
1090 int CFITS_API ffikyc(fitsfile *fptr, const char *keyname, float *value, int decim, const char *comm,
1091  int *status);
1092 int CFITS_API ffikym(fitsfile *fptr, const char *keyname, double *value, int decim, const char *comm,
1093  int *status);
1094 int CFITS_API ffikfc(fitsfile *fptr, const char *keyname, float *value, int decim, const char *comm,
1095  int *status);
1096 int CFITS_API ffikfm(fitsfile *fptr, const char *keyname, double *value, int decim, const char *comm,
1097  int *status);
1098 
1099 /*--------------------- delete keywords ---------------*/
1100 int CFITS_API ffdkey(fitsfile *fptr, const char *keyname, int *status);
1101 int CFITS_API ffdstr(fitsfile *fptr, const char *string, int *status);
1102 int CFITS_API ffdrec(fitsfile *fptr, int keypos, int *status);
1103 
1104 /*--------------------- get HDU information -------------*/
1105 int CFITS_API ffghdn(fitsfile *fptr, int *chdunum);
1106 int CFITS_API ffghdt(fitsfile *fptr, int *exttype, int *status);
1107 int CFITS_API ffghad(fitsfile *fptr, long *headstart, long *datastart, long *dataend,
1108  int *status);
1109 int CFITS_API ffghadll(fitsfile *fptr, LONGLONG *headstart, LONGLONG *datastart,
1110  LONGLONG *dataend, int *status);
1111 int CFITS_API ffghof(fitsfile *fptr, OFF_T *headstart, OFF_T *datastart, OFF_T *dataend,
1112  int *status);
1113 int CFITS_API ffgipr(fitsfile *fptr, int maxaxis, int *imgtype, int *naxis,
1114  long *naxes, int *status);
1115 int CFITS_API ffgiprll(fitsfile *fptr, int maxaxis, int *imgtype, int *naxis,
1116  LONGLONG *naxes, int *status);
1117 int CFITS_API ffgidt(fitsfile *fptr, int *imgtype, int *status);
1118 int CFITS_API ffgiet(fitsfile *fptr, int *imgtype, int *status);
1119 int CFITS_API ffgidm(fitsfile *fptr, int *naxis, int *status);
1120 int CFITS_API ffgisz(fitsfile *fptr, int nlen, long *naxes, int *status);
1121 int CFITS_API ffgiszll(fitsfile *fptr, int nlen, LONGLONG *naxes, int *status);
1122 
1123 /*--------------------- HDU operations -------------*/
1124 int CFITS_API ffmahd(fitsfile *fptr, int hdunum, int *exttype, int *status);
1125 int CFITS_API ffmrhd(fitsfile *fptr, int hdumov, int *exttype, int *status);
1126 int CFITS_API ffmnhd(fitsfile *fptr, int exttype, char *hduname, int hduvers,
1127  int *status);
1128 int CFITS_API ffthdu(fitsfile *fptr, int *nhdu, int *status);
1129 int CFITS_API ffcrhd(fitsfile *fptr, int *status);
1130 int CFITS_API ffcrim(fitsfile *fptr, int bitpix, int naxis, long *naxes, int *status);
1131 int CFITS_API ffcrimll(fitsfile *fptr, int bitpix, int naxis, LONGLONG *naxes, int *status);
1132 int CFITS_API ffcrtb(fitsfile *fptr, int tbltype, LONGLONG naxis2, int tfields, char **ttype,
1133  char **tform, char **tunit, const char *extname, int *status);
1134 int CFITS_API ffiimg(fitsfile *fptr, int bitpix, int naxis, long *naxes, int *status);
1135 int CFITS_API ffiimgll(fitsfile *fptr, int bitpix, int naxis, LONGLONG *naxes, int *status);
1136 int CFITS_API ffitab(fitsfile *fptr, LONGLONG naxis1, LONGLONG naxis2, int tfields, char **ttype,
1137  long *tbcol, char **tform, char **tunit, const char *extname, int *status);
1138 int CFITS_API ffibin(fitsfile *fptr, LONGLONG naxis2, int tfields, char **ttype, char **tform,
1139  char **tunit, const char *extname, LONGLONG pcount, int *status);
1140 int CFITS_API ffrsim(fitsfile *fptr, int bitpix, int naxis, long *naxes, int *status);
1141 int CFITS_API ffrsimll(fitsfile *fptr, int bitpix, int naxis, LONGLONG *naxes, int *status);
1142 int CFITS_API ffdhdu(fitsfile *fptr, int *hdutype, int *status);
1143 int CFITS_API ffcopy(fitsfile *infptr, fitsfile *outfptr, int morekeys, int *status);
1144 int CFITS_API ffcpfl(fitsfile *infptr, fitsfile *outfptr, int prev, int cur, int follow,
1145  int *status);
1146 int CFITS_API ffcphd(fitsfile *infptr, fitsfile *outfptr, int *status);
1147 int CFITS_API ffcpdt(fitsfile *infptr, fitsfile *outfptr, int *status);
1148 int CFITS_API ffchfl(fitsfile *fptr, int *status);
1149 int CFITS_API ffcdfl(fitsfile *fptr, int *status);
1150 int CFITS_API ffwrhdu(fitsfile *fptr, FILE *outstream, int *status);
1151 
1152 int CFITS_API ffrdef(fitsfile *fptr, int *status);
1153 int CFITS_API ffrhdu(fitsfile *fptr, int *hdutype, int *status);
1154 int CFITS_API ffhdef(fitsfile *fptr, int morekeys, int *status);
1155 int CFITS_API ffpthp(fitsfile *fptr, long theap, int *status);
1156 
1157 int CFITS_API ffcsum(fitsfile *fptr, long nrec, unsigned long *sum, int *status);
1158 void CFITS_API ffesum(unsigned long sum, int complm, char *ascii);
1159 unsigned long CFITS_API ffdsum(char *ascii, int complm, unsigned long *sum);
1160 int CFITS_API ffpcks(fitsfile *fptr, int *status);
1161 int CFITS_API ffupck(fitsfile *fptr, int *status);
1162 int CFITS_API ffvcks(fitsfile *fptr, int *datastatus, int *hdustatus, int *status);
1163 int CFITS_API ffgcks(fitsfile *fptr, unsigned long *datasum, unsigned long *hdusum,
1164  int *status);
1165 
1166 /*--------------------- define scaling or null values -------------*/
1167 int CFITS_API ffpscl(fitsfile *fptr, double scale, double zeroval, int *status);
1168 int CFITS_API ffpnul(fitsfile *fptr, LONGLONG nulvalue, int *status);
1169 int CFITS_API fftscl(fitsfile *fptr, int colnum, double scale, double zeroval, int *status);
1170 int CFITS_API fftnul(fitsfile *fptr, int colnum, LONGLONG nulvalue, int *status);
1171 int CFITS_API ffsnul(fitsfile *fptr, int colnum, char *nulstring, int *status);
1172 
1173 /*--------------------- get column information -------------*/
1174 int CFITS_API ffgcno(fitsfile *fptr, int casesen, char *templt, int *colnum,
1175  int *status);
1176 int CFITS_API ffgcnn(fitsfile *fptr, int casesen, char *templt, char *colname,
1177  int *colnum, int *status);
1178 
1179 int CFITS_API ffgtcl(fitsfile *fptr, int colnum, int *typecode, long *repeat,
1180  long *width, int *status);
1181 int CFITS_API ffgtclll(fitsfile *fptr, int colnum, int *typecode, LONGLONG *repeat,
1182  LONGLONG *width, int *status);
1183 int CFITS_API ffeqty(fitsfile *fptr, int colnum, int *typecode, long *repeat,
1184  long *width, int *status);
1185 int CFITS_API ffeqtyll(fitsfile *fptr, int colnum, int *typecode, LONGLONG *repeat,
1186  LONGLONG *width, int *status);
1187 int CFITS_API ffgncl(fitsfile *fptr, int *ncols, int *status);
1188 int CFITS_API ffgnrw(fitsfile *fptr, long *nrows, int *status);
1189 int CFITS_API ffgnrwll(fitsfile *fptr, LONGLONG *nrows, int *status);
1190 int CFITS_API ffgacl(fitsfile *fptr, int colnum, char *ttype, long *tbcol,
1191  char *tunit, char *tform, double *tscal, double *tzero,
1192  char *tnull, char *tdisp, int *status);
1193 int CFITS_API ffgbcl(fitsfile *fptr, int colnum, char *ttype, char *tunit,
1194  char *dtype, long *repeat, double *tscal, double *tzero,
1195  long *tnull, char *tdisp, int *status);
1196 int CFITS_API ffgbclll(fitsfile *fptr, int colnum, char *ttype, char *tunit,
1197  char *dtype, LONGLONG *repeat, double *tscal, double *tzero,
1198  LONGLONG *tnull, char *tdisp, int *status);
1199 int CFITS_API ffgrsz(fitsfile *fptr, long *nrows, int *status);
1200 int CFITS_API ffgcdw(fitsfile *fptr, int colnum, int *width, int *status);
1201 
1202 /*--------------------- read primary array or image elements -------------*/
1203 int CFITS_API ffgpxv(fitsfile *fptr, int datatype, long *firstpix, LONGLONG nelem,
1204  void *nulval, void *array, int *anynul, int *status);
1205 int CFITS_API ffgpxvll(fitsfile *fptr, int datatype, LONGLONG *firstpix, LONGLONG nelem,
1206  void *nulval, void *array, int *anynul, int *status);
1207 int CFITS_API ffgpxf(fitsfile *fptr, int datatype, long *firstpix, LONGLONG nelem,
1208  void *array, char *nullarray, int *anynul, int *status);
1209 int CFITS_API ffgpxfll(fitsfile *fptr, int datatype, LONGLONG *firstpix, LONGLONG nelem,
1210  void *array, char *nullarray, int *anynul, int *status);
1211 int CFITS_API ffgsv(fitsfile *fptr, int datatype, long *blc, long *trc, long *inc,
1212  void *nulval, void *array, int *anynul, int *status);
1213 
1214 int CFITS_API ffgpv(fitsfile *fptr, int datatype, LONGLONG firstelem, LONGLONG nelem,
1215  void *nulval, void *array, int *anynul, int *status);
1216 int CFITS_API ffgpf(fitsfile *fptr, int datatype, LONGLONG firstelem, LONGLONG nelem,
1217  void *array, char *nullarray, int *anynul, int *status);
1218 int CFITS_API ffgpvb(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem, unsigned
1219  char nulval, unsigned char *array, int *anynul, int *status);
1220 int CFITS_API ffgpvsb(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem, signed
1221  char nulval, signed char *array, int *anynul, int *status);
1222 int CFITS_API ffgpvui(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1223  unsigned short nulval, unsigned short *array, int *anynul,
1224  int *status);
1225 int CFITS_API ffgpvi(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1226  short nulval, short *array, int *anynul, int *status);
1227 int CFITS_API ffgpvuj(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1228  unsigned long nulval, unsigned long *array, int *anynul,
1229  int *status);
1230 int CFITS_API ffgpvj(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1231  long nulval, long *array, int *anynul, int *status);
1232 int CFITS_API ffgpvujj(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1233  ULONGLONG nulval, ULONGLONG *array, int *anynul, int *status);
1234 int CFITS_API ffgpvjj(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1235  LONGLONG nulval, LONGLONG *array, int *anynul, int *status);
1236 int CFITS_API ffgpvuk(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1237  unsigned int nulval, unsigned int *array, int *anynul, int *status);
1238 int CFITS_API ffgpvk(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1239  int nulval, int *array, int *anynul, int *status);
1240 int CFITS_API ffgpve(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1241  float nulval, float *array, int *anynul, int *status);
1242 int CFITS_API ffgpvd(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1243  double nulval, double *array, int *anynul, int *status);
1244 
1245 int CFITS_API ffgpfb(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1246  unsigned char *array, char *nularray, int *anynul, int *status);
1247 int CFITS_API ffgpfsb(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1248  signed char *array, char *nularray, int *anynul, int *status);
1249 int CFITS_API ffgpfui(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1250  unsigned short *array, char *nularray, int *anynul, int *status);
1251 int CFITS_API ffgpfi(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1252  short *array, char *nularray, int *anynul, int *status);
1253 int CFITS_API ffgpfuj(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1254  unsigned long *array, char *nularray, int *anynul, int *status);
1255 int CFITS_API ffgpfj(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1256  long *array, char *nularray, int *anynul, int *status);
1257 int CFITS_API ffgpfujj(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1258  ULONGLONG *array, char *nularray, int *anynul, int *status);
1259 int CFITS_API ffgpfjj(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1260  LONGLONG *array, char *nularray, int *anynul, int *status);
1261 int CFITS_API ffgpfuk(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1262  unsigned int *array, char *nularray, int *anynul, int *status);
1263 int CFITS_API ffgpfk(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1264  int *array, char *nularray, int *anynul, int *status);
1265 int CFITS_API ffgpfe(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1266  float *array, char *nularray, int *anynul, int *status);
1267 int CFITS_API ffgpfd(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1268  double *array, char *nularray, int *anynul, int *status);
1269 
1270 int CFITS_API ffg2db(fitsfile *fptr, long group, unsigned char nulval, LONGLONG ncols,
1271  LONGLONG naxis1, LONGLONG naxis2, unsigned char *array,
1272  int *anynul, int *status);
1273 int CFITS_API ffg2dsb(fitsfile *fptr, long group, signed char nulval, LONGLONG ncols,
1274  LONGLONG naxis1, LONGLONG naxis2, signed char *array,
1275  int *anynul, int *status);
1276 int CFITS_API ffg2dui(fitsfile *fptr, long group, unsigned short nulval, LONGLONG ncols,
1277  LONGLONG naxis1, LONGLONG naxis2, unsigned short *array,
1278  int *anynul, int *status);
1279 int CFITS_API ffg2di(fitsfile *fptr, long group, short nulval, LONGLONG ncols,
1280  LONGLONG naxis1, LONGLONG naxis2, short *array,
1281  int *anynul, int *status);
1282 int CFITS_API ffg2duj(fitsfile *fptr, long group, unsigned long nulval, LONGLONG ncols,
1283  LONGLONG naxis1, LONGLONG naxis2, unsigned long *array,
1284  int *anynul, int *status);
1285 int CFITS_API ffg2dj(fitsfile *fptr, long group, long nulval, LONGLONG ncols,
1286  LONGLONG naxis1, LONGLONG naxis2, long *array,
1287  int *anynul, int *status);
1288 int CFITS_API ffg2dujj(fitsfile *fptr, long group, ULONGLONG nulval, LONGLONG ncols,
1289  LONGLONG naxis1, LONGLONG naxis2, ULONGLONG *array,
1290  int *anynul, int *status);
1291 int CFITS_API ffg2djj(fitsfile *fptr, long group, LONGLONG nulval, LONGLONG ncols,
1292  LONGLONG naxis1, LONGLONG naxis2, LONGLONG *array,
1293  int *anynul, int *status);
1294 int CFITS_API ffg2duk(fitsfile *fptr, long group, unsigned int nulval, LONGLONG ncols,
1295  LONGLONG naxis1, LONGLONG naxis2, unsigned int *array,
1296  int *anynul, int *status);
1297 int CFITS_API ffg2dk(fitsfile *fptr, long group, int nulval, LONGLONG ncols,
1298  LONGLONG naxis1, LONGLONG naxis2, int *array,
1299  int *anynul, int *status);
1300 int CFITS_API ffg2de(fitsfile *fptr, long group, float nulval, LONGLONG ncols,
1301  LONGLONG naxis1, LONGLONG naxis2, float *array,
1302  int *anynul, int *status);
1303 int CFITS_API ffg2dd(fitsfile *fptr, long group, double nulval, LONGLONG ncols,
1304  LONGLONG naxis1, LONGLONG naxis2, double *array,
1305  int *anynul, int *status);
1306 
1307 int CFITS_API ffg3db(fitsfile *fptr, long group, unsigned char nulval, LONGLONG ncols,
1308  LONGLONG nrows, LONGLONG naxis1, LONGLONG naxis2, LONGLONG naxis3,
1309  unsigned char *array, int *anynul, int *status);
1310 int CFITS_API ffg3dsb(fitsfile *fptr, long group, signed char nulval, LONGLONG ncols,
1311  LONGLONG nrows, LONGLONG naxis1, LONGLONG naxis2, LONGLONG naxis3,
1312  signed char *array, int *anynul, int *status);
1313 int CFITS_API ffg3dui(fitsfile *fptr, long group, unsigned short nulval, LONGLONG ncols,
1314  LONGLONG nrows, LONGLONG naxis1, LONGLONG naxis2, LONGLONG naxis3,
1315  unsigned short *array, int *anynul, int *status);
1316 int CFITS_API ffg3di(fitsfile *fptr, long group, short nulval, LONGLONG ncols,
1317  LONGLONG nrows, LONGLONG naxis1, LONGLONG naxis2, LONGLONG naxis3,
1318  short *array, int *anynul, int *status);
1319 int CFITS_API ffg3duj(fitsfile *fptr, long group, unsigned long nulval, LONGLONG ncols,
1320  LONGLONG nrows, LONGLONG naxis1, LONGLONG naxis2, LONGLONG naxis3,
1321  unsigned long *array, int *anynul, int *status);
1322 int CFITS_API ffg3dj(fitsfile *fptr, long group, long nulval, LONGLONG ncols,
1323  LONGLONG nrows, LONGLONG naxis1, LONGLONG naxis2, LONGLONG naxis3,
1324  long *array, int *anynul, int *status);
1325 int CFITS_API ffg3dujj(fitsfile *fptr, long group, ULONGLONG nulval, LONGLONG ncols,
1326  LONGLONG nrows, LONGLONG naxis1, LONGLONG naxis2, LONGLONG naxis3,
1327  ULONGLONG *array, int *anynul, int *status);
1328 int CFITS_API ffg3djj(fitsfile *fptr, long group, LONGLONG nulval, LONGLONG ncols,
1329  LONGLONG nrows, LONGLONG naxis1, LONGLONG naxis2, LONGLONG naxis3,
1330  LONGLONG *array, int *anynul, int *status);
1331 int CFITS_API ffg3duk(fitsfile *fptr, long group, unsigned int nulval, LONGLONG ncols,
1332  LONGLONG nrows, LONGLONG naxis1, LONGLONG naxis2, LONGLONG naxis3,
1333  unsigned int *array, int *anynul, int *status);
1334 int CFITS_API ffg3dk(fitsfile *fptr, long group, int nulval, LONGLONG ncols,
1335  LONGLONG nrows, LONGLONG naxis1, LONGLONG naxis2, LONGLONG naxis3,
1336  int *array, int *anynul, int *status);
1337 int CFITS_API ffg3de(fitsfile *fptr, long group, float nulval, LONGLONG ncols,
1338  LONGLONG nrows, LONGLONG naxis1, LONGLONG naxis2, LONGLONG naxis3,
1339  float *array, int *anynul, int *status);
1340 int CFITS_API ffg3dd(fitsfile *fptr, long group, double nulval, LONGLONG ncols,
1341  LONGLONG nrows, LONGLONG naxis1, LONGLONG naxis2, LONGLONG naxis3,
1342  double *array, int *anynul, int *status);
1343 
1344 int CFITS_API ffgsvb(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1345  long *trc, long *inc, unsigned char nulval, unsigned char *array,
1346  int *anynul, int *status);
1347 int CFITS_API ffgsvsb(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1348  long *trc, long *inc, signed char nulval, signed char *array,
1349  int *anynul, int *status);
1350 int CFITS_API ffgsvui(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1351  long *trc, long *inc, unsigned short nulval, unsigned short *array,
1352  int *anynul, int *status);
1353 int CFITS_API ffgsvi(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1354  long *trc, long *inc, short nulval, short *array, int *anynul, int *status);
1355 int CFITS_API ffgsvuj(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1356  long *trc, long *inc, unsigned long nulval, unsigned long *array,
1357  int *anynul, int *status);
1358 int CFITS_API ffgsvj(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1359  long *trc, long *inc, long nulval, long *array, int *anynul, int *status);
1360 int CFITS_API ffgsvujj(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1361  long *trc, long *inc, ULONGLONG nulval, ULONGLONG *array, int *anynul,
1362  int *status);
1363 int CFITS_API ffgsvjj(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1364  long *trc, long *inc, LONGLONG nulval, LONGLONG *array, int *anynul,
1365  int *status);
1366 int CFITS_API ffgsvuk(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1367  long *trc, long *inc, unsigned int nulval, unsigned int *array,
1368  int *anynul, int *status);
1369 int CFITS_API ffgsvk(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1370  long *trc, long *inc, int nulval, int *array, int *anynul, int *status);
1371 int CFITS_API ffgsve(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1372  long *trc, long *inc, float nulval, float *array, int *anynul, int *status);
1373 int CFITS_API ffgsvd(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1374  long *trc, long *inc, double nulval, double *array, int *anynul,
1375  int *status);
1376 
1377 int CFITS_API ffgsfb(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1378  long *trc, long *inc, unsigned char *array, char *flagval,
1379  int *anynul, int *status);
1380 int CFITS_API ffgsfsb(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1381  long *trc, long *inc, signed char *array, char *flagval,
1382  int *anynul, int *status);
1383 int CFITS_API ffgsfui(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1384  long *trc, long *inc, unsigned short *array, char *flagval, int *anynul,
1385  int *status);
1386 int CFITS_API ffgsfi(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1387  long *trc, long *inc, short *array, char *flagval, int *anynul, int *status);
1388 int CFITS_API ffgsfuj(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1389  long *trc, long *inc, unsigned long *array, char *flagval, int *anynul,
1390  int *status);
1391 int CFITS_API ffgsfj(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1392  long *trc, long *inc, long *array, char *flagval, int *anynul, int *status);
1393 int CFITS_API ffgsfujj(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1394  long *trc, long *inc, ULONGLONG *array, char *flagval, int *anynul,
1395  int *status);
1396 int CFITS_API ffgsfjj(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1397  long *trc, long *inc, LONGLONG *array, char *flagval, int *anynul,
1398  int *status);
1399 int CFITS_API ffgsfuk(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1400  long *trc, long *inc, unsigned int *array, char *flagval, int *anynul,
1401  int *status);
1402 int CFITS_API ffgsfk(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1403  long *trc, long *inc, int *array, char *flagval, int *anynul, int *status);
1404 int CFITS_API ffgsfe(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1405  long *trc, long *inc, float *array, char *flagval, int *anynul, int *status);
1406 int CFITS_API ffgsfd(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1407  long *trc, long *inc, double *array, char *flagval, int *anynul,
1408  int *status);
1409 
1410 int CFITS_API ffggpb(fitsfile *fptr, long group, long firstelem, long nelem,
1411  unsigned char *array, int *status);
1412 int CFITS_API ffggpsb(fitsfile *fptr, long group, long firstelem, long nelem,
1413  signed char *array, int *status);
1414 int CFITS_API ffggpui(fitsfile *fptr, long group, long firstelem, long nelem,
1415  unsigned short *array, int *status);
1416 int CFITS_API ffggpi(fitsfile *fptr, long group, long firstelem, long nelem,
1417  short *array, int *status);
1418 int CFITS_API ffggpuj(fitsfile *fptr, long group, long firstelem, long nelem,
1419  unsigned long *array, int *status);
1420 int CFITS_API ffggpj(fitsfile *fptr, long group, long firstelem, long nelem,
1421  long *array, int *status);
1422 int CFITS_API ffggpujj(fitsfile *fptr, long group, long firstelem, long nelem,
1423  ULONGLONG *array, int *status);
1424 int CFITS_API ffggpjj(fitsfile *fptr, long group, long firstelem, long nelem,
1425  LONGLONG *array, int *status);
1426 int CFITS_API ffggpuk(fitsfile *fptr, long group, long firstelem, long nelem,
1427  unsigned int *array, int *status);
1428 int CFITS_API ffggpk(fitsfile *fptr, long group, long firstelem, long nelem,
1429  int *array, int *status);
1430 int CFITS_API ffggpe(fitsfile *fptr, long group, long firstelem, long nelem,
1431  float *array, int *status);
1432 int CFITS_API ffggpd(fitsfile *fptr, long group, long firstelem, long nelem,
1433  double *array, int *status);
1434 
1435 /*--------------------- read column elements -------------*/
1436 int CFITS_API ffgcv( fitsfile *fptr, int datatype, int colnum, LONGLONG firstrow,
1437  LONGLONG firstelem, LONGLONG nelem, void *nulval, void *array, int *anynul,
1438  int *status);
1439 int CFITS_API ffgcf( fitsfile *fptr, int datatype, int colnum, LONGLONG firstrow,
1440  LONGLONG firstelem, LONGLONG nelem, void *array, char *nullarray,
1441  int *anynul, int *status);
1442 int CFITS_API ffgcvs(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1443  LONGLONG nelem, char *nulval, char **array, int *anynul, int *status);
1444 int CFITS_API ffgcl (fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1445  LONGLONG nelem, char *array, int *status);
1446 int CFITS_API ffgcvl (fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1447  LONGLONG nelem, char nulval, char *array, int *anynul, int *status);
1448 int CFITS_API ffgcvb(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1449  LONGLONG nelem, unsigned char nulval, unsigned char *array,
1450  int *anynul, int *status);
1451 int CFITS_API ffgcvsb(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1452  LONGLONG nelem, signed char nulval, signed char *array,
1453  int *anynul, int *status);
1454 int CFITS_API ffgcvui(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1455  LONGLONG nelem, unsigned short nulval, unsigned short *array,
1456  int *anynul, int *status);
1457 int CFITS_API ffgcvi(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1458  LONGLONG nelem, short nulval, short *array, int *anynul, int *status);
1459 int CFITS_API ffgcvuj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1460  LONGLONG nelem, unsigned long nulval, unsigned long *array, int *anynul,
1461  int *status);
1462 int CFITS_API ffgcvj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1463  LONGLONG nelem, long nulval, long *array, int *anynul, int *status);
1464 int CFITS_API ffgcvujj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1465  LONGLONG nelem, ULONGLONG nulval, ULONGLONG *array, int *anynul,
1466  int *status);
1467 int CFITS_API ffgcvjj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1468  LONGLONG nelem, LONGLONG nulval, LONGLONG *array, int *anynul,
1469  int *status);
1470 int CFITS_API ffgcvuk(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1471  LONGLONG nelem, unsigned int nulval, unsigned int *array, int *anynul,
1472  int *status);
1473 int CFITS_API ffgcvk(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1474  LONGLONG nelem, int nulval, int *array, int *anynul, int *status);
1475 int CFITS_API ffgcve(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1476  LONGLONG nelem, float nulval, float *array, int *anynul, int *status);
1477 int CFITS_API ffgcvd(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1478  LONGLONG nelem, double nulval, double *array, int *anynul, int *status);
1479 int CFITS_API ffgcvc(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1480  LONGLONG nelem, float nulval, float *array, int *anynul, int *status);
1481 int CFITS_API ffgcvm(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1482  LONGLONG nelem, double nulval, double *array, int *anynul, int *status);
1483 
1484 int CFITS_API ffgcx(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstbit,
1485  LONGLONG nbits, char *larray, int *status);
1486 int CFITS_API ffgcxui(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG nrows,
1487  long firstbit, int nbits, unsigned short *array, int *status);
1488 int CFITS_API ffgcxuk(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG nrows,
1489  long firstbit, int nbits, unsigned int *array, int *status);
1490 
1491 int CFITS_API ffgcfs(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1492  LONGLONG nelem, char **array, char *nularray, int *anynul, int *status);
1493 int CFITS_API ffgcfl(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1494  LONGLONG nelem, char *array, char *nularray, int *anynul, int *status);
1495 int CFITS_API ffgcfb(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1496  LONGLONG nelem, unsigned char *array, char *nularray, int *anynul, int *status);
1497 int CFITS_API ffgcfsb(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1498  LONGLONG nelem, signed char *array, char *nularray, int *anynul, int *status);
1499 int CFITS_API ffgcfui(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1500  LONGLONG nelem, unsigned short *array, char *nularray, int *anynul,
1501  int *status);
1502 int CFITS_API ffgcfi(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1503  LONGLONG nelem, short *array, char *nularray, int *anynul, int *status);
1504 int CFITS_API ffgcfuj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1505  LONGLONG nelem, unsigned long *array, char *nularray, int *anynul,
1506  int *status);
1507 int CFITS_API ffgcfj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1508  LONGLONG nelem, long *array, char *nularray, int *anynul, int *status);
1509 int CFITS_API ffgcfujj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1510  LONGLONG nelem, ULONGLONG *array, char *nularray, int *anynul, int *status);
1511 int CFITS_API ffgcfjj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1512  LONGLONG nelem, LONGLONG *array, char *nularray, int *anynul, int *status);
1513 int CFITS_API ffgcfuk(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1514  LONGLONG nelem, unsigned int *array, char *nularray, int *anynul,
1515  int *status);
1516 int CFITS_API ffgcfk(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1517  LONGLONG nelem, int *array, char *nularray, int *anynul, int *status);
1518 int CFITS_API ffgcfe(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1519  LONGLONG nelem, float *array, char *nularray, int *anynul, int *status);
1520 int CFITS_API ffgcfd(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1521  LONGLONG nelem, double *array, char *nularray, int *anynul, int *status);
1522 int CFITS_API ffgcfc(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1523  LONGLONG nelem, float *array, char *nularray, int *anynul, int *status);
1524 int CFITS_API ffgcfm(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1525  LONGLONG nelem, double *array, char *nularray, int *anynul, int *status);
1526 
1527 int CFITS_API ffgdes(fitsfile *fptr, int colnum, LONGLONG rownum, long *length,
1528  long *heapaddr, int *status);
1529 int CFITS_API ffgdesll(fitsfile *fptr, int colnum, LONGLONG rownum, LONGLONG *length,
1530  LONGLONG *heapaddr, int *status);
1531 int CFITS_API ffgdess(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG nrows, long *length,
1532  long *heapaddr, int *status);
1533 int CFITS_API ffgdessll(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG nrows, LONGLONG *length,
1534  LONGLONG *heapaddr, int *status);
1535 int CFITS_API ffpdes(fitsfile *fptr, int colnum, LONGLONG rownum, LONGLONG length,
1536  LONGLONG heapaddr, int *status);
1537 int CFITS_API fftheap(fitsfile *fptr, LONGLONG *heapsize, LONGLONG *unused, LONGLONG *overlap,
1538  int *valid, int *status);
1539 int CFITS_API ffcmph(fitsfile *fptr, int *status);
1540 
1541 int CFITS_API ffgtbb(fitsfile *fptr, LONGLONG firstrow, LONGLONG firstchar, LONGLONG nchars,
1542  unsigned char *values, int *status);
1543 
1544 int CFITS_API ffgextn(fitsfile *fptr, LONGLONG offset, LONGLONG nelem, void *array, int *status);
1545 int CFITS_API ffpextn(fitsfile *fptr, LONGLONG offset, LONGLONG nelem, void *array, int *status);
1546 
1547 /*------------ write primary array or image elements -------------*/
1548 int CFITS_API ffppx(fitsfile *fptr, int datatype, long *firstpix, LONGLONG nelem,
1549  void *array, int *status);
1550 int CFITS_API ffppxll(fitsfile *fptr, int datatype, LONGLONG *firstpix, LONGLONG nelem,
1551  void *array, int *status);
1552 int CFITS_API ffppxn(fitsfile *fptr, int datatype, long *firstpix, LONGLONG nelem,
1553  void *array, void *nulval, int *status);
1554 int CFITS_API ffppxnll(fitsfile *fptr, int datatype, LONGLONG *firstpix, LONGLONG nelem,
1555  void *array, void *nulval, int *status);
1556 int CFITS_API ffppr(fitsfile *fptr, int datatype, LONGLONG firstelem,
1557  LONGLONG nelem, void *array, int *status);
1558 int CFITS_API ffpprb(fitsfile *fptr, long group, LONGLONG firstelem,
1559  LONGLONG nelem, unsigned char *array, int *status);
1560 int CFITS_API ffpprsb(fitsfile *fptr, long group, LONGLONG firstelem,
1561  LONGLONG nelem, signed char *array, int *status);
1562 int CFITS_API ffpprui(fitsfile *fptr, long group, LONGLONG firstelem,
1563  LONGLONG nelem, unsigned short *array, int *status);
1564 int CFITS_API ffppri(fitsfile *fptr, long group, LONGLONG firstelem,
1565  LONGLONG nelem, short *array, int *status);
1566 int CFITS_API ffppruj(fitsfile *fptr, long group, LONGLONG firstelem,
1567  LONGLONG nelem, unsigned long *array, int *status);
1568 int CFITS_API ffpprj(fitsfile *fptr, long group, LONGLONG firstelem,
1569  LONGLONG nelem, long *array, int *status);
1570 int CFITS_API ffppruk(fitsfile *fptr, long group, LONGLONG firstelem,
1571  LONGLONG nelem, unsigned int *array, int *status);
1572 int CFITS_API ffpprk(fitsfile *fptr, long group, LONGLONG firstelem,
1573  LONGLONG nelem, int *array, int *status);
1574 int CFITS_API ffppre(fitsfile *fptr, long group, LONGLONG firstelem,
1575  LONGLONG nelem, float *array, int *status);
1576 int CFITS_API ffpprd(fitsfile *fptr, long group, LONGLONG firstelem,
1577  LONGLONG nelem, double *array, int *status);
1578 int CFITS_API ffpprjj(fitsfile *fptr, long group, LONGLONG firstelem,
1579  LONGLONG nelem, LONGLONG *array, int *status);
1580 int CFITS_API ffpprujj(fitsfile *fptr, long group, LONGLONG firstelem,
1581  LONGLONG nelem, ULONGLONG *array, int *status);
1582 
1583 int CFITS_API ffppru(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1584  int *status);
1585 int CFITS_API ffpprn(fitsfile *fptr, LONGLONG firstelem, LONGLONG nelem, int *status);
1586 
1587 int CFITS_API ffppn(fitsfile *fptr, int datatype, LONGLONG firstelem, LONGLONG nelem,
1588  void *array, void *nulval, int *status);
1589 int CFITS_API ffppnb(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1590  unsigned char *array, unsigned char nulval, int *status);
1591 int CFITS_API ffppnsb(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1592  signed char *array, signed char nulval, int *status);
1593 int CFITS_API ffppnui(fitsfile *fptr, long group, LONGLONG firstelem,
1594  LONGLONG nelem, unsigned short *array, unsigned short nulval,
1595  int *status);
1596 int CFITS_API ffppni(fitsfile *fptr, long group, LONGLONG firstelem,
1597  LONGLONG nelem, short *array, short nulval, int *status);
1598 int CFITS_API ffppnj(fitsfile *fptr, long group, LONGLONG firstelem,
1599  LONGLONG nelem, long *array, long nulval, int *status);
1600 int CFITS_API ffppnuj(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1601  unsigned long *array, unsigned long nulval, int *status);
1602 int CFITS_API ffppnuk(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1603  unsigned int *array, unsigned int nulval, int *status);
1604 int CFITS_API ffppnk(fitsfile *fptr, long group, LONGLONG firstelem,
1605  LONGLONG nelem, int *array, int nulval, int *status);
1606 int CFITS_API ffppne(fitsfile *fptr, long group, LONGLONG firstelem,
1607  LONGLONG nelem, float *array, float nulval, int *status);
1608 int CFITS_API ffppnd(fitsfile *fptr, long group, LONGLONG firstelem,
1609  LONGLONG nelem, double *array, double nulval, int *status);
1610 int CFITS_API ffppnjj(fitsfile *fptr, long group, LONGLONG firstelem,
1611  LONGLONG nelem, LONGLONG *array, LONGLONG nulval, int *status);
1612 int CFITS_API ffppnujj(fitsfile *fptr, long group, LONGLONG firstelem,
1613  LONGLONG nelem, ULONGLONG *array, ULONGLONG nulval, int *status);
1614 
1615 int CFITS_API ffp2db(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG naxis1,
1616  LONGLONG naxis2, unsigned char *array, int *status);
1617 int CFITS_API ffp2dsb(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG naxis1,
1618  LONGLONG naxis2, signed char *array, int *status);
1619 int CFITS_API ffp2dui(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG naxis1,
1620  LONGLONG naxis2, unsigned short *array, int *status);
1621 int CFITS_API ffp2di(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG naxis1,
1622  LONGLONG naxis2, short *array, int *status);
1623 int CFITS_API ffp2duj(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG naxis1,
1624  LONGLONG naxis2, unsigned long *array, int *status);
1625 int CFITS_API ffp2dj(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG naxis1,
1626  LONGLONG naxis2, long *array, int *status);
1627 int CFITS_API ffp2duk(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG naxis1,
1628  LONGLONG naxis2, unsigned int *array, int *status);
1629 int CFITS_API ffp2dk(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG naxis1,
1630  LONGLONG naxis2, int *array, int *status);
1631 int CFITS_API ffp2de(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG naxis1,
1632  LONGLONG naxis2, float *array, int *status);
1633 int CFITS_API ffp2dd(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG naxis1,
1634  LONGLONG naxis2, double *array, int *status);
1635 int CFITS_API ffp2djj(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG naxis1,
1636  LONGLONG naxis2, LONGLONG *array, int *status);
1637 int CFITS_API ffp2dujj(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG naxis1,
1638  LONGLONG naxis2, ULONGLONG *array, int *status);
1639 
1640 int CFITS_API ffp3db(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG nrows, LONGLONG naxis1,
1641  LONGLONG naxis2, LONGLONG naxis3, unsigned char *array, int *status);
1642 int CFITS_API ffp3dsb(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG nrows, LONGLONG naxis1,
1643  LONGLONG naxis2, LONGLONG naxis3, signed char *array, int *status);
1644 int CFITS_API ffp3dui(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG nrows, LONGLONG naxis1,
1645  LONGLONG naxis2, LONGLONG naxis3, unsigned short *array, int *status);
1646 int CFITS_API ffp3di(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG nrows, LONGLONG naxis1,
1647  LONGLONG naxis2, LONGLONG naxis3, short *array, int *status);
1648 int CFITS_API ffp3duj(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG nrows, LONGLONG naxis1,
1649  LONGLONG naxis2, LONGLONG naxis3, unsigned long *array, int *status);
1650 int CFITS_API ffp3dj(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG nrows, LONGLONG naxis1,
1651  LONGLONG naxis2, LONGLONG naxis3, long *array, int *status);
1652 int CFITS_API ffp3duk(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG nrows, LONGLONG naxis1,
1653  LONGLONG naxis2, LONGLONG naxis3, unsigned int *array, int *status);
1654 int CFITS_API ffp3dk(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG nrows, LONGLONG naxis1,
1655  LONGLONG naxis2, LONGLONG naxis3, int *array, int *status);
1656 int CFITS_API ffp3de(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG nrows, LONGLONG naxis1,
1657  LONGLONG naxis2, LONGLONG naxis3, float *array, int *status);
1658 int CFITS_API ffp3dd(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG nrows, LONGLONG naxis1,
1659  LONGLONG naxis2, LONGLONG naxis3, double *array, int *status);
1660 int CFITS_API ffp3djj(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG nrows, LONGLONG naxis1,
1661  LONGLONG naxis2, LONGLONG naxis3, LONGLONG *array, int *status);
1662 int CFITS_API ffp3dujj(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG nrows, LONGLONG naxis1,
1663  LONGLONG naxis2, LONGLONG naxis3, ULONGLONG *array, int *status);
1664 
1665 int CFITS_API ffpss(fitsfile *fptr, int datatype,
1666  long *fpixel, long *lpixel, void *array, int *status);
1667 int CFITS_API ffpssb(fitsfile *fptr, long group, long naxis, long *naxes,
1668  long *fpixel, long *lpixel, unsigned char *array, int *status);
1669 int CFITS_API ffpsssb(fitsfile *fptr, long group, long naxis, long *naxes,
1670  long *fpixel, long *lpixel, signed char *array, int *status);
1671 int CFITS_API ffpssui(fitsfile *fptr, long group, long naxis, long *naxes,
1672  long *fpixel, long *lpixel, unsigned short *array, int *status);
1673 int CFITS_API ffpssi(fitsfile *fptr, long group, long naxis, long *naxes,
1674  long *fpixel, long *lpixel, short *array, int *status);
1675 int CFITS_API ffpssuj(fitsfile *fptr, long group, long naxis, long *naxes,
1676  long *fpixel, long *lpixel, unsigned long *array, int *status);
1677 int CFITS_API ffpssj(fitsfile *fptr, long group, long naxis, long *naxes,
1678  long *fpixel, long *lpixel, long *array, int *status);
1679 int CFITS_API ffpssuk(fitsfile *fptr, long group, long naxis, long *naxes,
1680  long *fpixel, long *lpixel, unsigned int *array, int *status);
1681 int CFITS_API ffpssk(fitsfile *fptr, long group, long naxis, long *naxes,
1682  long *fpixel, long *lpixel, int *array, int *status);
1683 int CFITS_API ffpsse(fitsfile *fptr, long group, long naxis, long *naxes,
1684  long *fpixel, long *lpixel, float *array, int *status);
1685 int CFITS_API ffpssd(fitsfile *fptr, long group, long naxis, long *naxes,
1686  long *fpixel, long *lpixel, double *array, int *status);
1687 int CFITS_API ffpssjj(fitsfile *fptr, long group, long naxis, long *naxes,
1688  long *fpixel, long *lpixel, LONGLONG *array, int *status);
1689 int CFITS_API ffpssujj(fitsfile *fptr, long group, long naxis, long *naxes,
1690  long *fpixel, long *lpixel, ULONGLONG *array, int *status);
1691 
1692 int CFITS_API ffpgpb(fitsfile *fptr, long group, long firstelem,
1693  long nelem, unsigned char *array, int *status);
1694 int CFITS_API ffpgpsb(fitsfile *fptr, long group, long firstelem,
1695  long nelem, signed char *array, int *status);
1696 int CFITS_API ffpgpui(fitsfile *fptr, long group, long firstelem,
1697  long nelem, unsigned short *array, int *status);
1698 int CFITS_API ffpgpi(fitsfile *fptr, long group, long firstelem,
1699  long nelem, short *array, int *status);
1700 int CFITS_API ffpgpuj(fitsfile *fptr, long group, long firstelem,
1701  long nelem, unsigned long *array, int *status);
1702 int CFITS_API ffpgpj(fitsfile *fptr, long group, long firstelem,
1703  long nelem, long *array, int *status);
1704 int CFITS_API ffpgpuk(fitsfile *fptr, long group, long firstelem,
1705  long nelem, unsigned int *array, int *status);
1706 int CFITS_API ffpgpk(fitsfile *fptr, long group, long firstelem,
1707  long nelem, int *array, int *status);
1708 int CFITS_API ffpgpe(fitsfile *fptr, long group, long firstelem,
1709  long nelem, float *array, int *status);
1710 int CFITS_API ffpgpd(fitsfile *fptr, long group, long firstelem,
1711  long nelem, double *array, int *status);
1712 int CFITS_API ffpgpjj(fitsfile *fptr, long group, long firstelem,
1713  long nelem, LONGLONG *array, int *status);
1714 int CFITS_API ffpgpujj(fitsfile *fptr, long group, long firstelem,
1715  long nelem, ULONGLONG *array, int *status);
1716 
1717 /*--------------------- iterator functions -------------*/
1718 int CFITS_API fits_iter_set_by_name(iteratorCol *col, fitsfile *fptr, char *colname,
1719  int datatype, int iotype);
1720 int CFITS_API fits_iter_set_by_num(iteratorCol *col, fitsfile *fptr, int colnum,
1721  int datatype, int iotype);
1722 int CFITS_API fits_iter_set_file(iteratorCol *col, fitsfile *fptr);
1723 int CFITS_API fits_iter_set_colname(iteratorCol *col, char *colname);
1724 int CFITS_API fits_iter_set_colnum(iteratorCol *col, int colnum);
1725 int CFITS_API fits_iter_set_datatype(iteratorCol *col, int datatype);
1726 int CFITS_API fits_iter_set_iotype(iteratorCol *col, int iotype);
1727 
1728 CFITS_API fitsfile * fits_iter_get_file(iteratorCol *col);
1729 char CFITS_API * fits_iter_get_colname(iteratorCol *col);
1730 int CFITS_API fits_iter_get_colnum(iteratorCol *col);
1731 int CFITS_API fits_iter_get_datatype(iteratorCol *col);
1732 int CFITS_API fits_iter_get_iotype(iteratorCol *col);
1733 void CFITS_API *fits_iter_get_array(iteratorCol *col);
1734 long CFITS_API fits_iter_get_tlmin(iteratorCol *col);
1735 long CFITS_API fits_iter_get_tlmax(iteratorCol *col);
1736 long CFITS_API fits_iter_get_repeat(iteratorCol *col);
1737 char CFITS_API *fits_iter_get_tunit(iteratorCol *col);
1738 char CFITS_API *fits_iter_get_tdisp(iteratorCol *col);
1739 
1740 int CFITS_API ffiter(int ncols, iteratorCol *data, long offset, long nPerLoop,
1741  int (*workFn)( long totaln, long offset, long firstn,
1742  long nvalues, int narrays, iteratorCol *data, void *userPointer),
1743  void *userPointer, int *status);
1744 
1745 /*--------------------- write column elements -------------*/
1746 int CFITS_API ffpcl(fitsfile *fptr, int datatype, int colnum, LONGLONG firstrow,
1747  LONGLONG firstelem, LONGLONG nelem, void *array, int *status);
1748 int CFITS_API ffpcls(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1749  LONGLONG nelem, char **array, int *status);
1750 int CFITS_API ffpcll(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1751  LONGLONG nelem, char *array, int *status);
1752 int CFITS_API ffpclb(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1753  LONGLONG nelem, unsigned char *array, int *status);
1754 int CFITS_API ffpclsb(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1755  LONGLONG nelem, signed char *array, int *status);
1756 int CFITS_API ffpclui(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1757  LONGLONG nelem, unsigned short *array, int *status);
1758 int CFITS_API ffpcli(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1759  LONGLONG nelem, short *array, int *status);
1760 int CFITS_API ffpcluj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1761  LONGLONG nelem, unsigned long *array, int *status);
1762 int CFITS_API ffpclj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1763  LONGLONG nelem, long *array, int *status);
1764 int CFITS_API ffpcluk(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1765  LONGLONG nelem, unsigned int *array, int *status);
1766 int CFITS_API ffpclk(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1767  LONGLONG nelem, int *array, int *status);
1768 int CFITS_API ffpcle(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1769  LONGLONG nelem, float *array, int *status);
1770 int CFITS_API ffpcld(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1771  LONGLONG nelem, double *array, int *status);
1772 int CFITS_API ffpclc(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1773  LONGLONG nelem, float *array, int *status);
1774 int CFITS_API ffpclm(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1775  LONGLONG nelem, double *array, int *status);
1776 int CFITS_API ffpclu(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1777  LONGLONG nelem, int *status);
1778 int CFITS_API ffprwu(fitsfile *fptr, LONGLONG firstrow, LONGLONG nrows, int *status);
1779 int CFITS_API ffpcljj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1780  LONGLONG nelem, LONGLONG *array, int *status);
1781 int CFITS_API ffpclujj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1782  LONGLONG nelem, ULONGLONG *array, int *status);
1783 int CFITS_API ffpclx(fitsfile *fptr, int colnum, LONGLONG frow, long fbit, long nbit,
1784  char *larray, int *status);
1785 
1786 int CFITS_API ffpcn(fitsfile *fptr, int datatype, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1787  LONGLONG nelem, void *array, void *nulval, int *status);
1788 int CFITS_API ffpcns( fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1789  LONGLONG nelem, char **array, char *nulvalue, int *status);
1790 int CFITS_API ffpcnl( fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1791  LONGLONG nelem, char *array, char nulvalue, int *status);
1792 int CFITS_API ffpcnb(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1793  LONGLONG nelem, unsigned char *array, unsigned char nulvalue,
1794  int *status);
1795 int CFITS_API ffpcnsb(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1796  LONGLONG nelem, signed char *array, signed char nulvalue,
1797  int *status);
1798 int CFITS_API ffpcnui(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1799  LONGLONG nelem, unsigned short *array, unsigned short nulvalue,
1800  int *status);
1801 int CFITS_API ffpcni(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1802  LONGLONG nelem, short *array, short nulvalue, int *status);
1803 int CFITS_API ffpcnuj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1804  LONGLONG nelem, unsigned long *array, unsigned long nulvalue,
1805  int *status);
1806 int CFITS_API ffpcnj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1807  LONGLONG nelem, long *array, long nulvalue, int *status);
1808 int CFITS_API ffpcnuk(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1809  LONGLONG nelem, unsigned int *array, unsigned int nulvalue,
1810  int *status);
1811 int CFITS_API ffpcnk(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1812  LONGLONG nelem, int *array, int nulvalue, int *status);
1813 int CFITS_API ffpcne(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1814  LONGLONG nelem, float *array, float nulvalue, int *status);
1815 int CFITS_API ffpcnd(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1816  LONGLONG nelem, double *array, double nulvalue, int *status);
1817 int CFITS_API ffpcnjj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1818  LONGLONG nelem, LONGLONG *array, LONGLONG nulvalue, int *status);
1819 int CFITS_API ffpcnujj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1820  LONGLONG nelem, ULONGLONG *array, ULONGLONG nulvalue, int *status);
1821 int CFITS_API ffptbb(fitsfile *fptr, LONGLONG firstrow, LONGLONG firstchar, LONGLONG nchars,
1822  unsigned char *values, int *status);
1823 
1824 int CFITS_API ffirow(fitsfile *fptr, LONGLONG firstrow, LONGLONG nrows, int *status);
1825 int CFITS_API ffdrow(fitsfile *fptr, LONGLONG firstrow, LONGLONG nrows, int *status);
1826 int CFITS_API ffdrrg(fitsfile *fptr, char *ranges, int *status);
1827 int CFITS_API ffdrws(fitsfile *fptr, long *rownum, long nrows, int *status);
1828 int CFITS_API ffdrwsll(fitsfile *fptr, LONGLONG *rownum, LONGLONG nrows, int *status);
1829 int CFITS_API fficol(fitsfile *fptr, int numcol, char *ttype, char *tform, int *status);
1830 int CFITS_API fficls(fitsfile *fptr, int firstcol, int ncols, char **ttype,
1831  char **tform, int *status);
1832 int CFITS_API ffmvec(fitsfile *fptr, int colnum, LONGLONG newveclen, int *status);
1833 int CFITS_API ffdcol(fitsfile *fptr, int numcol, int *status);
1834 int CFITS_API ffcpcl(fitsfile *infptr, fitsfile *outfptr, int incol, int outcol,
1835  int create_col, int *status);
1836 int CFITS_API ffccls(fitsfile *infptr, fitsfile *outfptr, int incol, int outcol,
1837  int ncols, int create_col, int *status);
1838 int CFITS_API ffcprw(fitsfile *infptr, fitsfile *outfptr, LONGLONG firstrow,
1839  LONGLONG nrows, int *status);
1840 
1841 /*--------------------- WCS Utilities ------------------*/
1842 int CFITS_API ffgics(fitsfile *fptr, double *xrval, double *yrval, double *xrpix,
1843  double *yrpix, double *xinc, double *yinc, double *rot,
1844  char *type, int *status);
1845 int CFITS_API ffgicsa(fitsfile *fptr, char version, double *xrval, double *yrval, double *xrpix,
1846  double *yrpix, double *xinc, double *yinc, double *rot,
1847  char *type, int *status);
1848 int CFITS_API ffgtcs(fitsfile *fptr, int xcol, int ycol, double *xrval,
1849  double *yrval, double *xrpix, double *yrpix, double *xinc,
1850  double *yinc, double *rot, char *type, int *status);
1851 int CFITS_API ffwldp(double xpix, double ypix, double xref, double yref,
1852  double xrefpix, double yrefpix, double xinc, double yinc,
1853  double rot, char *type, double *xpos, double *ypos, int *status);
1854 int CFITS_API ffxypx(double xpos, double ypos, double xref, double yref,
1855  double xrefpix, double yrefpix, double xinc, double yinc,
1856  double rot, char *type, double *xpix, double *ypix, int *status);
1857 
1858 /* WCS support routines (provide interface to Doug Mink's WCS library */
1859 int CFITS_API ffgiwcs(fitsfile *fptr, char **header, int *status);
1860 int CFITS_API ffgtwcs(fitsfile *fptr, int xcol, int ycol, char **header, int *status);
1861 
1862 /*--------------------- lexical parsing routines ------------------*/
1863 int CFITS_API fftexp( fitsfile *fptr, char *expr, int maxdim,
1864  int *datatype, long *nelem, int *naxis,
1865  long *naxes, int *status );
1866 
1867 int CFITS_API fffrow( fitsfile *infptr, char *expr,
1868  long firstrow, long nrows,
1869  long *n_good_rows, char *row_status, int *status);
1870 
1871 int CFITS_API ffffrw( fitsfile *fptr, char *expr, long *rownum, int *status);
1872 
1873 int CFITS_API fffrwc( fitsfile *fptr, char *expr, char *timeCol,
1874  char *parCol, char *valCol, long ntimes,
1875  double *times, char *time_status, int *status );
1876 
1877 int CFITS_API ffsrow( fitsfile *infptr, fitsfile *outfptr, char *expr,
1878  int *status);
1879 
1880 int CFITS_API ffcrow( fitsfile *fptr, int datatype, char *expr,
1881  long firstrow, long nelements, void *nulval,
1882  void *array, int *anynul, int *status );
1883 
1884 int CFITS_API ffcalc_rng( fitsfile *infptr, char *expr, fitsfile *outfptr,
1885  char *parName, char *parInfo, int nRngs,
1886  long *start, long *end, int *status );
1887 
1888 int CFITS_API ffcalc( fitsfile *infptr, char *expr, fitsfile *outfptr,
1889  char *parName, char *parInfo, int *status );
1890 
1891  /* ffhist is not really intended as a user-callable routine */
1892  /* but it may be useful for some specialized applications */
1893  /* ffhist2 is a newer version which is strongly recommended instead of ffhist */
1894 
1895 int CFITS_API ffhist(fitsfile **fptr, char *outfile, int imagetype, int naxis,
1896  char colname[4][FLEN_VALUE],
1897  double *minin, double *maxin, double *binsizein,
1898  char minname[4][FLEN_VALUE], char maxname[4][FLEN_VALUE],
1899  char binname[4][FLEN_VALUE],
1900  double weightin, char wtcol[FLEN_VALUE],
1901  int recip, char *rowselect, int *status);
1902 int CFITS_API ffhist2(fitsfile **fptr, char *outfile, int imagetype, int naxis,
1903  char colname[4][FLEN_VALUE],
1904  double *minin, double *maxin, double *binsizein,
1905  char minname[4][FLEN_VALUE], char maxname[4][FLEN_VALUE],
1906  char binname[4][FLEN_VALUE],
1907  double weightin, char wtcol[FLEN_VALUE],
1908  int recip, char *rowselect, int *status);
1909 CFITS_API fitsfile *ffhist3(fitsfile *fptr,
1910  char *outfile, int imagetype, int naxis,
1911  char colname[4][FLEN_VALUE],
1912  double *minin,
1913  double *maxin,
1914  double *binsizein,
1915  char minname[4][FLEN_VALUE],
1916  char maxname[4][FLEN_VALUE],
1917  char binname[4][FLEN_VALUE],
1918  double weightin,
1919  char wtcol[FLEN_VALUE],
1920  int recip,
1921  char *selectrow,
1922  int *status);
1923 int CFITS_API fits_select_image_section(fitsfile **fptr, char *outfile,
1924  char *imagesection, int *status);
1925 int CFITS_API fits_copy_image_section(fitsfile *infptr, fitsfile *outfile,
1926  char *imagesection, int *status);
1927 
1928 int CFITS_API fits_calc_binning(fitsfile *fptr, int naxis, char colname[4][FLEN_VALUE],
1929  double *minin, double *maxin, double *binsizein,
1930  char minname[4][FLEN_VALUE], char maxname[4][FLEN_VALUE],
1931  char binname[4][FLEN_VALUE], int *colnum, long *haxes,
1932  float *amin, float *amax, float *binsize, int *status);
1933 int CFITS_API fits_calc_binningd(fitsfile *fptr, int naxis, char colname[4][FLEN_VALUE],
1934  double *minin, double *maxin, double *binsizein,
1935  char minname[4][FLEN_VALUE], char maxname[4][FLEN_VALUE],
1936  char binname[4][FLEN_VALUE], int *colnum, long *haxes,
1937  double *amin, double *amax, double *binsize, int *status);
1938 
1939 int CFITS_API fits_write_keys_histo(fitsfile *fptr, fitsfile *histptr,
1940  int naxis, int *colnum, int *status);
1941 int CFITS_API fits_rebin_wcs( fitsfile *fptr, int naxis, float *amin, float *binsize,
1942  int *status);
1943 int CFITS_API fits_rebin_wcsd( fitsfile *fptr, int naxis, double *amin, double *binsize,
1944  int *status);
1945 int CFITS_API fits_make_hist(fitsfile *fptr, fitsfile *histptr, int bitpix,int naxis,
1946  long *naxes, int *colnum, float *amin, float *amax, float *binsize,
1947  float weight, int wtcolnum, int recip, char *selectrow, int *status);
1948 int CFITS_API fits_make_histd(fitsfile *fptr, fitsfile *histptr, int bitpix,int naxis,
1949  long *naxes, int *colnum, double *amin, double *amax, double *binsize,
1950  double weight, int wtcolnum, int recip, char *selectrow, int *status);
1951 
1952 typedef struct
1953 {
1954  /* input(s) */
1955  int count;
1956  char ** path;
1957  char ** tag;
1958  fitsfile ** ifptr;
1959 
1960  char * expression;
1961 
1962  /* output control */
1963  int bitpix;
1964  long blank;
1965  fitsfile * ofptr;
1966  char keyword[FLEN_KEYWORD];
1967  char comment[FLEN_COMMENT];
1968 } PixelFilter;
1969 
1970 
1971 int CFITS_API fits_pixel_filter (PixelFilter * filter, int * status);
1972 
1973 
1974 /*--------------------- grouping routines ------------------*/
1975 
1976 int CFITS_API ffgtcr(fitsfile *fptr, char *grpname, int grouptype, int *status);
1977 int CFITS_API ffgtis(fitsfile *fptr, char *grpname, int grouptype, int *status);
1978 int CFITS_API ffgtch(fitsfile *gfptr, int grouptype, int *status);
1979 int CFITS_API ffgtrm(fitsfile *gfptr, int rmopt, int *status);
1980 int CFITS_API ffgtcp(fitsfile *infptr, fitsfile *outfptr, int cpopt, int *status);
1981 int CFITS_API ffgtmg(fitsfile *infptr, fitsfile *outfptr, int mgopt, int *status);
1982 int CFITS_API ffgtcm(fitsfile *gfptr, int cmopt, int *status);
1983 int CFITS_API ffgtvf(fitsfile *gfptr, long *firstfailed, int *status);
1984 int CFITS_API ffgtop(fitsfile *mfptr,int group,fitsfile **gfptr,int *status);
1985 int CFITS_API ffgtam(fitsfile *gfptr, fitsfile *mfptr, int hdupos, int *status);
1986 int CFITS_API ffgtnm(fitsfile *gfptr, long *nmembers, int *status);
1987 int CFITS_API ffgmng(fitsfile *mfptr, long *nmembers, int *status);
1988 int CFITS_API ffgmop(fitsfile *gfptr, long member, fitsfile **mfptr, int *status);
1989 int CFITS_API ffgmcp(fitsfile *gfptr, fitsfile *mfptr, long member, int cpopt,
1990  int *status);
1991 int CFITS_API ffgmtf(fitsfile *infptr, fitsfile *outfptr, long member, int tfopt,
1992  int *status);
1993 int CFITS_API ffgmrm(fitsfile *fptr, long member, int rmopt, int *status);
1994 
1995 /*--------------------- group template parser routines ------------------*/
1996 
1997 int CFITS_API fits_execute_template(fitsfile *ff, char *ngp_template, int *status);
1998 
1999 int CFITS_API fits_img_stats_short(short *array,long nx, long ny, int nullcheck,
2000  short nullvalue,long *ngoodpix, short *minvalue, short *maxvalue, double *mean,
2001  double *sigma, double *noise1, double *noise2, double *noise3, double *noise5, int *status);
2002 int CFITS_API fits_img_stats_int(int *array,long nx, long ny, int nullcheck,
2003  int nullvalue,long *ngoodpix, int *minvalue, int *maxvalue, double *mean,
2004  double *sigma, double *noise1, double *noise2, double *noise3, double *noise5, int *status);
2005 int CFITS_API fits_img_stats_float(float *array, long nx, long ny, int nullcheck,
2006  float nullvalue,long *ngoodpix, float *minvalue, float *maxvalue, double *mean,
2007  double *sigma, double *noise1, double *noise2, double *noise3, double *noise5, int *status);
2008 
2009 /*--------------------- image compression routines ------------------*/
2010 
2011 int CFITS_API fits_set_compression_type(fitsfile *fptr, int ctype, int *status);
2012 int CFITS_API fits_set_tile_dim(fitsfile *fptr, int ndim, long *dims, int *status);
2013 int CFITS_API fits_set_noise_bits(fitsfile *fptr, int noisebits, int *status);
2014 int CFITS_API fits_set_quantize_level(fitsfile *fptr, float qlevel, int *status);
2015 int CFITS_API fits_set_hcomp_scale(fitsfile *fptr, float scale, int *status);
2016 int CFITS_API fits_set_hcomp_smooth(fitsfile *fptr, int smooth, int *status);
2017 int CFITS_API fits_set_quantize_method(fitsfile *fptr, int method, int *status);
2018 int CFITS_API fits_set_quantize_dither(fitsfile *fptr, int dither, int *status);
2019 int CFITS_API fits_set_dither_seed(fitsfile *fptr, int seed, int *status);
2020 int CFITS_API fits_set_dither_offset(fitsfile *fptr, int offset, int *status);
2021 int CFITS_API fits_set_lossy_int(fitsfile *fptr, int lossy_int, int *status);
2022 int CFITS_API fits_set_huge_hdu(fitsfile *fptr, int huge, int *status);
2023 int CFITS_API fits_set_compression_pref(fitsfile *infptr, fitsfile *outfptr, int *status);
2024 
2025 int CFITS_API fits_get_compression_type(fitsfile *fptr, int *ctype, int *status);
2026 int CFITS_API fits_get_tile_dim(fitsfile *fptr, int ndim, long *dims, int *status);
2027 int CFITS_API fits_get_quantize_level(fitsfile *fptr, float *qlevel, int *status);
2028 int CFITS_API fits_get_noise_bits(fitsfile *fptr, int *noisebits, int *status);
2029 int CFITS_API fits_get_hcomp_scale(fitsfile *fptr, float *scale, int *status);
2030 int CFITS_API fits_get_hcomp_smooth(fitsfile *fptr, int *smooth, int *status);
2031 int CFITS_API fits_get_dither_seed(fitsfile *fptr, int *seed, int *status);
2032 
2033 int CFITS_API fits_img_compress(fitsfile *infptr, fitsfile *outfptr, int *status);
2034 int CFITS_API fits_compress_img(fitsfile *infptr, fitsfile *outfptr, int compress_type,
2035  long *tilesize, int parm1, int parm2, int *status);
2036 int CFITS_API fits_is_compressed_image(fitsfile *fptr, int *status);
2037 int CFITS_API fits_is_reentrant(void);
2038 int CFITS_API fits_decompress_img (fitsfile *infptr, fitsfile *outfptr, int *status);
2039 int CFITS_API fits_img_decompress_header(fitsfile *infptr, fitsfile *outfptr, int *status);
2040 int CFITS_API fits_img_decompress (fitsfile *infptr, fitsfile *outfptr, int *status);
2041 
2042 /* H-compress routines */
2043 int CFITS_API fits_hcompress(int *a, int nx, int ny, int scale, char *output,
2044  long *nbytes, int *status);
2045 int CFITS_API fits_hcompress64(LONGLONG *a, int nx, int ny, int scale, char *output,
2046  long *nbytes, int *status);
2047 int CFITS_API fits_hdecompress(unsigned char *input, int smooth, int *a, int *nx,
2048  int *ny, int *scale, int *status);
2049 int CFITS_API fits_hdecompress64(unsigned char *input, int smooth, LONGLONG *a, int *nx,
2050  int *ny, int *scale, int *status);
2051 
2052 int CFITS_API fits_compress_table (fitsfile *infptr, fitsfile *outfptr, int *status);
2053 int CFITS_API fits_uncompress_table(fitsfile *infptr, fitsfile *outfptr, int *status);
2054 
2055 /* curl library wrapper routines (for https access) */
2056 int CFITS_API fits_init_https(void);
2057 int CFITS_API fits_cleanup_https(void);
2058 void CFITS_API fits_verbose_https(int flag);
2059 
2060 void CFITS_API ffshdwn(int flag);
2061 int CFITS_API ffgtmo(void);
2062 int CFITS_API ffstmo(int sec, int *status);
2063 
2064 /* The following exclusion if __CINT__ is defined is needed for ROOT */
2065 #ifndef __CINT__
2066 #ifdef __cplusplus
2067 }
2068 #endif
2069 #endif
2070 
2071 #endif
2072 
Definition: fitsio.h:340
Definition: fitsio.h:356
Definition: fitsio.h:519
Definition: fitsio.h:452
Definition: fitsio.h:458
Definition: fitsio.h:1952