Developer Application Interface (ARC API) v3.6.2
ARC, Inc. GenII/III Application Interface
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
6Copyright (Unpublished--all rights reserved under the copyright laws of
7the United States), U.S. Government as represented by the Administrator
8of the National Aeronautics and Space Administration. No copyright is
9claimed in the United States under Title 17, U.S. Code.
10
11Permission to freely use, copy, modify, and distribute this software
12and its documentation without fee is hereby granted, provided that this
13copyright notice and disclaimer of warranty appears in all copies.
14
15DISCLAIMER:
16
17THE SOFTWARE IS PROVIDED 'AS IS' WITHOUT ANY WARRANTY OF ANY KIND,
18EITHER EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO,
19ANY WARRANTY THAT THE SOFTWARE WILL CONFORM TO SPECIFICATIONS, ANY
20IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
21PURPOSE, AND FREEDOM FROM INFRINGEMENT, AND ANY WARRANTY THAT THE
22DOCUMENTATION WILL CONFORM TO THE SOFTWARE, OR ANY WARRANTY THAT THE
23SOFTWARE WILL BE ERROR FREE. IN NO EVENT SHALL NASA BE LIABLE FOR ANY
24DAMAGES, INCLUDING, BUT NOT LIMITED TO, DIRECT, INDIRECT, SPECIAL OR
25CONSEQUENTIAL DAMAGES, ARISING OUT OF, RESULTING FROM, OR IN ANY WAY
26CONNECTED WITH THIS SOFTWARE, WHETHER OR NOT BASED UPON WARRANTY,
27CONTRACT, TORT , OR OTHERWISE, WHETHER OR NOT INJURY WAS SUSTAINED BY
28PERSONS OR PROPERTY OR OTHERWISE, AND WHETHER OR NOT LOSS WAS SUSTAINED
29FROM, OR AROSE OUT OF THE RESULTS OF, OR USE OF, THE SOFTWARE OR
30SERVICES PROVIDED HEREUNDER."
31
32*/
33
34#ifndef _FITSIO_H
35#define _FITSIO_H
36
37#define CFITSIO_VERSION 3.45
38#define CFITSIO_MINOR 45
39#define CFITSIO_MAJOR 3
40#define CFITSIO_SONAME 7
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
340typedef 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
356typedef 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
452typedef 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
458typedef 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
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
519typedef 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
538extern "C" {
539#endif
540#endif
541
542int 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
578#define BAD_URL_PREFIX 121 /* invalid URL prefix on file name */
579#define TOO_MANY_DRIVERS 122 /* tried to register too many IO drivers */
580#define DRIVER_INIT_FAILED 123 /* driver initialization failed */
581#define NO_MATCHING_DRIVER 124 /* matching driver is not registered */
582#define URL_PARSE_ERROR 125 /* failed to parse input file URL */
583#define RANGE_PARSE_ERROR 126 /* failed to parse input file URL */
584
585#define SHARED_ERRBASE (150)
586#define SHARED_BADARG (SHARED_ERRBASE + 1)
587#define SHARED_NULPTR (SHARED_ERRBASE + 2)
588#define SHARED_TABFULL (SHARED_ERRBASE + 3)
589#define SHARED_NOTINIT (SHARED_ERRBASE + 4)
590#define SHARED_IPCERR (SHARED_ERRBASE + 5)
591#define SHARED_NOMEM (SHARED_ERRBASE + 6)
592#define SHARED_AGAIN (SHARED_ERRBASE + 7)
593#define SHARED_NOFILE (SHARED_ERRBASE + 8)
594#define SHARED_NORESIZE (SHARED_ERRBASE + 9)
595
596#define HEADER_NOT_EMPTY 201 /* header already contains keywords */
597#define KEY_NO_EXIST 202 /* keyword not found in header */
598#define KEY_OUT_BOUNDS 203 /* keyword record number is out of bounds */
599#define VALUE_UNDEFINED 204 /* keyword value field is blank */
600#define NO_QUOTE 205 /* string is missing the closing quote */
601#define BAD_INDEX_KEY 206 /* illegal indexed keyword name */
602#define BAD_KEYCHAR 207 /* illegal character in keyword name or card */
603#define BAD_ORDER 208 /* required keywords out of order */
604#define NOT_POS_INT 209 /* keyword value is not a positive integer */
605#define NO_END 210 /* couldn't find END keyword */
606#define BAD_BITPIX 211 /* illegal BITPIX keyword value*/
607#define BAD_NAXIS 212 /* illegal NAXIS keyword value */
608#define BAD_NAXES 213 /* illegal NAXISn keyword value */
609#define BAD_PCOUNT 214 /* illegal PCOUNT keyword value */
610#define BAD_GCOUNT 215 /* illegal GCOUNT keyword value */
611#define BAD_TFIELDS 216 /* illegal TFIELDS keyword value */
612#define NEG_WIDTH 217 /* negative table row size */
613#define NEG_ROWS 218 /* negative number of rows in table */
614#define COL_NOT_FOUND 219 /* column with this name not found in table */
615#define BAD_SIMPLE 220 /* illegal value of SIMPLE keyword */
616#define NO_SIMPLE 221 /* Primary array doesn't start with SIMPLE */
617#define NO_BITPIX 222 /* Second keyword not BITPIX */
618#define NO_NAXIS 223 /* Third keyword not NAXIS */
619#define NO_NAXES 224 /* Couldn't find all the NAXISn keywords */
620#define NO_XTENSION 225 /* HDU doesn't start with XTENSION keyword */
621#define NOT_ATABLE 226 /* the CHDU is not an ASCII table extension */
622#define NOT_BTABLE 227 /* the CHDU is not a binary table extension */
623#define NO_PCOUNT 228 /* couldn't find PCOUNT keyword */
624#define NO_GCOUNT 229 /* couldn't find GCOUNT keyword */
625#define NO_TFIELDS 230 /* couldn't find TFIELDS keyword */
626#define NO_TBCOL 231 /* couldn't find TBCOLn keyword */
627#define NO_TFORM 232 /* couldn't find TFORMn keyword */
628#define NOT_IMAGE 233 /* the CHDU is not an IMAGE extension */
629#define BAD_TBCOL 234 /* TBCOLn keyword value < 0 or > rowlength */
630#define NOT_TABLE 235 /* the CHDU is not a table */
631#define COL_TOO_WIDE 236 /* column is too wide to fit in table */
632#define COL_NOT_UNIQUE 237 /* more than 1 column name matches template */
633#define BAD_ROW_WIDTH 241 /* sum of column widths not = NAXIS1 */
634#define UNKNOWN_EXT 251 /* unrecognizable FITS extension type */
635#define UNKNOWN_REC 252 /* unrecognizable FITS record */
636#define END_JUNK 253 /* END keyword is not blank */
637#define BAD_HEADER_FILL 254 /* Header fill area not blank */
638#define BAD_DATA_FILL 255 /* Data fill area not blank or zero */
639#define BAD_TFORM 261 /* illegal TFORM format code */
640#define BAD_TFORM_DTYPE 262 /* unrecognizable TFORM datatype code */
641#define BAD_TDIM 263 /* illegal TDIMn keyword value */
642#define BAD_HEAP_PTR 264 /* invalid BINTABLE heap address */
643
644#define BAD_HDU_NUM 301 /* HDU number < 1 or > MAXHDU */
645#define BAD_COL_NUM 302 /* column number < 1 or > tfields */
646#define NEG_FILE_POS 304 /* tried to move before beginning of file */
647#define NEG_BYTES 306 /* tried to read or write negative bytes */
648#define BAD_ROW_NUM 307 /* illegal starting row number in table */
649#define BAD_ELEM_NUM 308 /* illegal starting element number in vector */
650#define NOT_ASCII_COL 309 /* this is not an ASCII string column */
651#define NOT_LOGICAL_COL 310 /* this is not a logical datatype column */
652#define BAD_ATABLE_FORMAT 311 /* ASCII table column has wrong format */
653#define BAD_BTABLE_FORMAT 312 /* Binary table column has wrong format */
654#define NO_NULL 314 /* null value has not been defined */
655#define NOT_VARI_LEN 317 /* this is not a variable length column */
656#define BAD_DIMEN 320 /* illegal number of dimensions in array */
657#define BAD_PIX_NUM 321 /* first pixel number greater than last pixel */
658#define ZERO_SCALE 322 /* illegal BSCALE or TSCALn keyword = 0 */
659#define NEG_AXIS 323 /* illegal axis length < 1 */
660
661#define NOT_GROUP_TABLE 340
662#define HDU_ALREADY_MEMBER 341
663#define MEMBER_NOT_FOUND 342
664#define GROUP_NOT_FOUND 343
665#define BAD_GROUP_ID 344
666#define TOO_MANY_HDUS_TRACKED 345
667#define HDU_ALREADY_TRACKED 346
668#define BAD_OPTION 347
669#define IDENTICAL_POINTERS 348
670#define BAD_GROUP_ATTACH 349
671#define BAD_GROUP_DETACH 350
672
673#define BAD_I2C 401 /* bad int to formatted string conversion */
674#define BAD_F2C 402 /* bad float to formatted string conversion */
675#define BAD_INTKEY 403 /* can't interprete keyword value as integer */
676#define BAD_LOGICALKEY 404 /* can't interprete keyword value as logical */
677#define BAD_FLOATKEY 405 /* can't interprete keyword value as float */
678#define BAD_DOUBLEKEY 406 /* can't interprete keyword value as double */
679#define BAD_C2I 407 /* bad formatted string to int conversion */
680#define BAD_C2F 408 /* bad formatted string to float conversion */
681#define BAD_C2D 409 /* bad formatted string to double conversion */
682#define BAD_DATATYPE 410 /* bad keyword datatype code */
683#define BAD_DECIM 411 /* bad number of decimal places specified */
684#define NUM_OVERFLOW 412 /* overflow during datatype conversion */
685
686# define DATA_COMPRESSION_ERR 413 /* error in imcompress routines */
687# define DATA_DECOMPRESSION_ERR 414 /* error in imcompress routines */
688# define NO_COMPRESSED_TILE 415 /* compressed tile doesn't exist */
689
690#define BAD_DATE 420 /* error in date or time conversion */
691
692#define PARSE_SYNTAX_ERR 431 /* syntax error in parser expression */
693#define PARSE_BAD_TYPE 432 /* expression did not evaluate to desired type */
694#define PARSE_LRG_VECTOR 433 /* vector result too large to return in array */
695#define PARSE_NO_OUTPUT 434 /* data parser failed not sent an out column */
696#define PARSE_BAD_COL 435 /* bad data encounter while parsing column */
697#define PARSE_BAD_OUTPUT 436 /* Output file not of proper type */
698
699#define ANGLE_TOO_BIG 501 /* celestial angle too large for projection */
700#define BAD_WCS_VAL 502 /* bad celestial coordinate or pixel value */
701#define WCS_ERROR 503 /* error in celestial coordinate calculation */
702#define BAD_WCS_PROJ 504 /* unsupported type of celestial projection */
703#define NO_WCS_KEY 505 /* celestial coordinate keywords not found */
704#define APPROX_WCS_KEY 506 /* approximate WCS keywords were calculated */
705
706#define NO_CLOSE_ERROR 999 /* special value used internally to switch off */
707 /* the error message from ffclos and ffchdu */
708
709/*------- following error codes are used in the grparser.c file -----------*/
710#define NGP_ERRBASE (360) /* base chosen so not to interfere with CFITSIO */
711#define NGP_OK (0)
712#define NGP_NO_MEMORY (NGP_ERRBASE + 0) /* malloc failed */
713#define NGP_READ_ERR (NGP_ERRBASE + 1) /* read error from file */
714#define NGP_NUL_PTR (NGP_ERRBASE + 2) /* null pointer passed as argument */
715#define NGP_EMPTY_CURLINE (NGP_ERRBASE + 3) /* line read seems to be empty */
716#define NGP_UNREAD_QUEUE_FULL (NGP_ERRBASE + 4) /* cannot unread more then 1 line (or single line twice) */
717#define NGP_INC_NESTING (NGP_ERRBASE + 5) /* too deep include file nesting (inf. loop ?) */
718#define NGP_ERR_FOPEN (NGP_ERRBASE + 6) /* fopen() failed, cannot open file */
719#define NGP_EOF (NGP_ERRBASE + 7) /* end of file encountered */
720#define NGP_BAD_ARG (NGP_ERRBASE + 8) /* bad arguments passed */
721#define NGP_TOKEN_NOT_EXPECT (NGP_ERRBASE + 9) /* token not expected here */
722
723/* The following exclusion if __CINT__ is defined is needed for ROOT */
724#ifndef __CINT__
725/* the following 3 lines are needed to support C++ compilers */
726#ifdef __cplusplus
727extern "C" {
728#endif
729#endif
730
731int CFITS2Unit( fitsfile *fptr );
732CFITS_API fitsfile* CUnit2FITS(int unit);
733
734/*---------------- FITS file URL parsing routines -------------*/
735int CFITS_API fits_get_token (char **ptr, char *delimiter, char *token, int *isanumber);
736int CFITS_API fits_get_token2(char **ptr, char *delimiter, char **token, int *isanumber, int *status);
737char CFITS_API *fits_split_names(char *list);
738int CFITS_API ffiurl( char *url, char *urltype, char *infile,
739 char *outfile, char *extspec, char *rowfilter,
740 char *binspec, char *colspec, int *status);
741int CFITS_API ffifile (char *url, char *urltype, char *infile,
742 char *outfile, char *extspec, char *rowfilter,
743 char *binspec, char *colspec, char *pixfilter, int *status);
744int CFITS_API ffifile2 (char *url, char *urltype, char *infile,
745 char *outfile, char *extspec, char *rowfilter,
746 char *binspec, char *colspec, char *pixfilter, char *compspec, int *status);
747int CFITS_API ffrtnm(char *url, char *rootname, int *status);
748int CFITS_API ffexist(const char *infile, int *exists, int *status);
749int CFITS_API ffexts(char *extspec, int *extnum, char *extname, int *extvers,
750 int *hdutype, char *colname, char *rowexpress, int *status);
751int CFITS_API ffextn(char *url, int *extension_num, int *status);
752int CFITS_API ffurlt(fitsfile *fptr, char *urlType, int *status);
753int CFITS_API ffbins(char *binspec, int *imagetype, int *haxis,
754 char colname[4][FLEN_VALUE], double *minin,
755 double *maxin, double *binsizein,
756 char minname[4][FLEN_VALUE], char maxname[4][FLEN_VALUE],
757 char binname[4][FLEN_VALUE], double *weight, char *wtname,
758 int *recip, int *status);
759int CFITS_API ffbinr(char **binspec, char *colname, double *minin,
760 double *maxin, double *binsizein, char *minname,
761 char *maxname, char *binname, int *status);
762int CFITS_API fits_copy_cell2image(fitsfile *fptr, fitsfile *newptr, char *colname,
763 long rownum, int *status);
764int CFITS_API fits_copy_image2cell(fitsfile *fptr, fitsfile *newptr, char *colname,
765 long rownum, int copykeyflag, int *status);
766int CFITS_API fits_copy_pixlist2image(fitsfile *infptr, fitsfile *outfptr, int firstkey, /* I - first HDU record number to start with */
767 int naxis, int *colnum, int *status);
768int CFITS_API ffimport_file( char *filename, char **contents, int *status );
769int CFITS_API ffrwrg( char *rowlist, LONGLONG maxrows, int maxranges, int *numranges,
770 long *minrow, long *maxrow, int *status);
771int CFITS_API ffrwrgll( char *rowlist, LONGLONG maxrows, int maxranges, int *numranges,
772 LONGLONG *minrow, LONGLONG *maxrow, int *status);
773/*---------------- FITS file I/O routines -------------*/
774int CFITS_API fits_init_cfitsio(void);
775int CFITS_API ffomem(fitsfile **fptr, const char *name, int mode, void **buffptr,
776 size_t *buffsize, size_t deltasize,
777 void *(*mem_realloc)(void *p, size_t newsize),
778 int *status);
779int CFITS_API ffopen(fitsfile **fptr, const char *filename, int iomode, int *status);
780int CFITS_API ffopentest(int soname, fitsfile **fptr, const char *filename, int iomode, int *status);
781
782int CFITS_API ffdopn(fitsfile **fptr, const char *filename, int iomode, int *status);
783int CFITS_API ffeopn(fitsfile **fptr, const char *filename, int iomode,
784 char *extlist, int *hdutype, int *status);
785int CFITS_API fftopn(fitsfile **fptr, const char *filename, int iomode, int *status);
786int CFITS_API ffiopn(fitsfile **fptr, const char *filename, int iomode, int *status);
787int CFITS_API ffdkopn(fitsfile **fptr, const char *filename, int iomode, int *status);
788int CFITS_API ffreopen(fitsfile *openfptr, fitsfile **newfptr, int *status);
789int CFITS_API ffinit( fitsfile **fptr, const char *filename, int *status);
790int CFITS_API ffdkinit(fitsfile **fptr, const char *filename, int *status);
791int CFITS_API ffimem(fitsfile **fptr, void **buffptr,
792 size_t *buffsize, size_t deltasize,
793 void *(*mem_realloc)(void *p, size_t newsize),
794 int *status);
795int CFITS_API fftplt(fitsfile **fptr, const char *filename, const char *tempname,
796 int *status);
797int CFITS_API ffflus(fitsfile *fptr, int *status);
798int CFITS_API ffflsh(fitsfile *fptr, int clearbuf, int *status);
799int CFITS_API ffclos(fitsfile *fptr, int *status);
800int CFITS_API ffdelt(fitsfile *fptr, int *status);
801int CFITS_API ffflnm(fitsfile *fptr, char *filename, int *status);
802int CFITS_API ffflmd(fitsfile *fptr, int *filemode, int *status);
803int CFITS_API fits_delete_iraf_file(const char *filename, int *status);
804
805/*---------------- utility routines -------------*/
806
807float CFITS_API ffvers(float *version);
808void CFITS_API ffupch(char *string);
809void CFITS_API ffgerr(int status, char *errtext);
810void CFITS_API ffpmsg(const char *err_message);
811void CFITS_API ffpmrk(void);
812int CFITS_API ffgmsg(char *err_message);
813void CFITS_API ffcmsg(void);
814void CFITS_API ffcmrk(void);
815void CFITS_API ffrprt(FILE *stream, int status);
816void CFITS_API ffcmps(char *templt, char *colname, int casesen, int *match,
817 int *exact);
818int CFITS_API fftkey(const char *keyword, int *status);
819int CFITS_API fftrec(char *card, int *status);
820int CFITS_API ffnchk(fitsfile *fptr, int *status);
821int CFITS_API ffkeyn(const char *keyroot, int value, char *keyname, int *status);
822int CFITS_API ffnkey(int value, const char *keyroot, char *keyname, int *status);
823int CFITS_API ffgkcl(char *card);
824int CFITS_API ffdtyp(const char *cval, char *dtype, int *status);
825int CFITS_API ffinttyp(char *cval, int *datatype, int *negative, int *status);
826int CFITS_API ffpsvc(char *card, char *value, char *comm, int *status);
827int CFITS_API ffgknm(char *card, char *name, int *length, int *status);
828int CFITS_API ffgthd(char *tmplt, char *card, int *hdtype, int *status);
829int CFITS_API ffmkky(const char *keyname, char *keyval, const char *comm, char *card, int *status);
830int CFITS_API fits_translate_keyword(char *inrec, char *outrec, char *patterns[][2],
831 int npat, int n_value, int n_offset, int n_range, int *pat_num,
832 int *i, int *j, int *m, int *n, int *status);
833int CFITS_API fits_translate_keywords(fitsfile *infptr, fitsfile *outfptr,
834 int firstkey, char *patterns[][2],
835 int npat, int n_value, int n_offset, int n_range, int *status);
836int CFITS_API ffasfm(char *tform, int *datacode, long *width, int *decim, int *status);
837int CFITS_API ffbnfm(char *tform, int *datacode, long *repeat, long *width, int *status);
838int CFITS_API ffbnfmll(char *tform, int *datacode, LONGLONG *repeat, long *width, int *status);
839int CFITS_API ffgabc(int tfields, char **tform, int space, long *rowlen, long *tbcol,
840 int *status);
841int CFITS_API fits_get_section_range(char **ptr,long *secmin,long *secmax,long *incre,
842 int *status);
843/* ffmbyt should not normally be used in application programs, but it is
844 defined here as a publicly available routine because there are a few
845 rare cases where it is needed
846*/
847int CFITS_API ffmbyt(fitsfile *fptr, LONGLONG bytpos, int ignore_err, int *status);
848/*----------------- write single keywords --------------*/
849int CFITS_API ffpky(fitsfile *fptr, int datatype, const char *keyname, void *value,
850 const char *comm, int *status);
851int CFITS_API ffprec(fitsfile *fptr, const char *card, int *status);
852int CFITS_API ffpcom(fitsfile *fptr, const char *comm, int *status);
853int CFITS_API ffpunt(fitsfile *fptr, const char *keyname, const char *unit, int *status);
854int CFITS_API ffphis(fitsfile *fptr, const char *history, int *status);
855int CFITS_API ffpdat(fitsfile *fptr, int *status);
856int CFITS_API ffverifydate(int year, int month, int day, int *status);
857int CFITS_API ffgstm(char *timestr, int *timeref, int *status);
858int CFITS_API ffgsdt(int *day, int *month, int *year, int *status);
859int CFITS_API ffdt2s(int year, int month, int day, char *datestr, int *status);
860int CFITS_API fftm2s(int year, int month, int day, int hour, int minute, double second,
861 int decimals, char *datestr, int *status);
862int CFITS_API ffs2dt(char *datestr, int *year, int *month, int *day, int *status);
863int CFITS_API ffs2tm(char *datestr, int *year, int *month, int *day, int *hour,
864 int *minute, double *second, int *status);
865int CFITS_API ffpkyu(fitsfile *fptr, const char *keyname, const char *comm, int *status);
866int CFITS_API ffpkys(fitsfile *fptr, const char *keyname, const char *value, const char *comm,int *status);
867int CFITS_API ffpkls(fitsfile *fptr, const char *keyname, const char *value, const char *comm,int *status);
868int CFITS_API ffplsw(fitsfile *fptr, int *status);
869int CFITS_API ffpkyl(fitsfile *fptr, const char *keyname, int value, const char *comm, int *status);
870int CFITS_API ffpkyj(fitsfile *fptr, const char *keyname, LONGLONG value, const char *comm, int *status);
871int CFITS_API ffpkyuj(fitsfile *fptr, const char *keyname, ULONGLONG value, const char *comm, int *status);
872int CFITS_API ffpkyf(fitsfile *fptr, const char *keyname, float value, int decim, const char *comm,
873 int *status);
874int CFITS_API ffpkye(fitsfile *fptr, const char *keyname, float value, int decim, const char *comm,
875 int *status);
876int CFITS_API ffpkyg(fitsfile *fptr, const char *keyname, double value, int decim, const char *comm,
877 int *status);
878int CFITS_API ffpkyd(fitsfile *fptr, const char *keyname, double value, int decim, const char *comm,
879 int *status);
880int CFITS_API ffpkyc(fitsfile *fptr, const char *keyname, float *value, int decim, const char *comm,
881 int *status);
882int CFITS_API ffpkym(fitsfile *fptr, const char *keyname, double *value, int decim, const char *comm,
883 int *status);
884int CFITS_API ffpkfc(fitsfile *fptr, const char *keyname, float *value, int decim, const char *comm,
885 int *status);
886int CFITS_API ffpkfm(fitsfile *fptr, const char *keyname, double *value, int decim, const char *comm,
887 int *status);
888int CFITS_API ffpkyt(fitsfile *fptr, const char *keyname, long intval, double frac, const char *comm,
889 int *status);
890int CFITS_API ffptdm( fitsfile *fptr, int colnum, int naxis, long naxes[], int *status);
891int CFITS_API ffptdmll( fitsfile *fptr, int colnum, int naxis, LONGLONG naxes[], int *status);
892
893/*----------------- write array of keywords --------------*/
894int CFITS_API ffpkns(fitsfile *fptr, const char *keyroot, int nstart, int nkey, char *value[],
895 char *comm[], int *status);
896int CFITS_API ffpknl(fitsfile *fptr, const char *keyroot, int nstart, int nkey, int *value,
897 char *comm[], int *status);
898int CFITS_API ffpknj(fitsfile *fptr, const char *keyroot, int nstart, int nkey, long *value,
899 char *comm[], int *status);
900int CFITS_API ffpknjj(fitsfile *fptr, const char *keyroot, int nstart, int nkey, LONGLONG *value,
901 char *comm[], int *status);
902int CFITS_API ffpknf(fitsfile *fptr, const char *keyroot, int nstart, int nkey, float *value,
903 int decim, char *comm[], int *status);
904int CFITS_API ffpkne(fitsfile *fptr, const char *keyroot, int nstart, int nkey, float *value,
905 int decim, char *comm[], int *status);
906int CFITS_API ffpkng(fitsfile *fptr, const char *keyroot, int nstart, int nkey, double *value,
907 int decim, char *comm[], int *status);
908int CFITS_API ffpknd(fitsfile *fptr, const char *keyroot, int nstart, int nkey, double *value,
909 int decim, char *comm[], int *status);
910int CFITS_API ffcpky(fitsfile *infptr,fitsfile *outfptr,int incol,int outcol,
911 char *rootname, int *status);
912
913/*----------------- write required header keywords --------------*/
914int CFITS_API ffphps( fitsfile *fptr, int bitpix, int naxis, long naxes[], int *status);
915int CFITS_API ffphpsll( fitsfile *fptr, int bitpix, int naxis, LONGLONG naxes[], int *status);
916int CFITS_API ffphpr( fitsfile *fptr, int simple, int bitpix, int naxis, long naxes[],
917 LONGLONG pcount, LONGLONG gcount, int extend, int *status);
918int CFITS_API ffphprll( fitsfile *fptr, int simple, int bitpix, int naxis, LONGLONG naxes[],
919 LONGLONG pcount, LONGLONG gcount, int extend, int *status);
920int CFITS_API ffphtb(fitsfile *fptr, LONGLONG naxis1, LONGLONG naxis2, int tfields, char **ttype,
921 long *tbcol, char **tform, char **tunit, const char *extname, int *status);
922int CFITS_API ffphbn(fitsfile *fptr, LONGLONG naxis2, int tfields, char **ttype,
923 char **tform, char **tunit, const char *extname, LONGLONG pcount, int *status);
924int CFITS_API ffphext( fitsfile *fptr, const char *xtension, int bitpix, int naxis, long naxes[],
925 LONGLONG pcount, LONGLONG gcount, int *status);
926/*----------------- write template keywords --------------*/
927int CFITS_API ffpktp(fitsfile *fptr, const char *filename, int *status);
928
929/*------------------ get header information --------------*/
930int CFITS_API ffghsp(fitsfile *fptr, int *nexist, int *nmore, int *status);
931int CFITS_API ffghps(fitsfile *fptr, int *nexist, int *position, int *status);
932
933/*------------------ move position in header -------------*/
934int CFITS_API ffmaky(fitsfile *fptr, int nrec, int *status);
935int CFITS_API ffmrky(fitsfile *fptr, int nrec, int *status);
936
937/*------------------ read single keywords -----------------*/
938int CFITS_API ffgnxk(fitsfile *fptr, char **inclist, int ninc, char **exclist,
939 int nexc, char *card, int *status);
940int CFITS_API ffgrec(fitsfile *fptr, int nrec, char *card, int *status);
941int CFITS_API ffgcrd(fitsfile *fptr, const char *keyname, char *card, int *status);
942int CFITS_API ffgstr(fitsfile *fptr, const char *string, char *card, int *status);
943int CFITS_API ffgunt(fitsfile *fptr, const char *keyname, char *unit, int *status);
944int CFITS_API ffgkyn(fitsfile *fptr, int nkey, char *keyname, char *keyval, char *comm,
945 int *status);
946int CFITS_API ffgkey(fitsfile *fptr, const char *keyname, char *keyval, char *comm,
947 int *status);
948
949int CFITS_API ffgky( fitsfile *fptr, int datatype, const char *keyname, void *value,
950 char *comm, int *status);
951int CFITS_API ffgkys(fitsfile *fptr, const char *keyname, char *value, char *comm, int *status);
952int CFITS_API ffgksl(fitsfile *fptr, const char *keyname, int *length, int *status);
953int CFITS_API ffgkls(fitsfile *fptr, const char *keyname, char **value, char *comm, int *status);
954int CFITS_API ffgsky(fitsfile *fptr, const char *keyname, int firstchar, int maxchar,
955 char *value, int *valuelen, char *comm, int *status);
956int CFITS_API fffree(void *value, int *status);
957int CFITS_API fffkls(char *value, int *status);
958int CFITS_API ffgkyl(fitsfile *fptr, const char *keyname, int *value, char *comm, int *status);
959int CFITS_API ffgkyj(fitsfile *fptr, const char *keyname, long *value, char *comm, int *status);
960int CFITS_API ffgkyjj(fitsfile *fptr, const char *keyname, LONGLONG *value, char *comm, int *status);
961int CFITS_API ffgkyujj(fitsfile *fptr, const char *keyname, ULONGLONG *value, char *comm, int *status);
962int CFITS_API ffgkye(fitsfile *fptr, const char *keyname, float *value, char *comm,int *status);
963int CFITS_API ffgkyd(fitsfile *fptr, const char *keyname, double *value,char *comm,int *status);
964int CFITS_API ffgkyc(fitsfile *fptr, const char *keyname, float *value, char *comm,int *status);
965int CFITS_API ffgkym(fitsfile *fptr, const char *keyname, double *value,char *comm,int *status);
966int CFITS_API ffgkyt(fitsfile *fptr, const char *keyname, long *ivalue, double *dvalue,
967 char *comm, int *status);
968int CFITS_API ffgtdm(fitsfile *fptr, int colnum, int maxdim, int *naxis, long naxes[],
969 int *status);
970int CFITS_API ffgtdmll(fitsfile *fptr, int colnum, int maxdim, int *naxis, LONGLONG naxes[],
971 int *status);
972int CFITS_API ffdtdm(fitsfile *fptr, char *tdimstr, int colnum, int maxdim,
973 int *naxis, long naxes[], int *status);
974int CFITS_API ffdtdmll(fitsfile *fptr, char *tdimstr, int colnum, int maxdim,
975 int *naxis, LONGLONG naxes[], int *status);
976
977/*------------------ read array of keywords -----------------*/
978int CFITS_API ffgkns(fitsfile *fptr, const char *keyname, int nstart, int nmax, char *value[],
979 int *nfound, int *status);
980int CFITS_API ffgknl(fitsfile *fptr, const char *keyname, int nstart, int nmax, int *value,
981 int *nfound, int *status);
982int CFITS_API ffgknj(fitsfile *fptr, const char *keyname, int nstart, int nmax, long *value,
983 int *nfound, int *status);
984int CFITS_API ffgknjj(fitsfile *fptr, const char *keyname, int nstart, int nmax, LONGLONG *value,
985 int *nfound, int *status);
986int CFITS_API ffgkne(fitsfile *fptr, const char *keyname, int nstart, int nmax, float *value,
987 int *nfound, int *status);
988int CFITS_API ffgknd(fitsfile *fptr, const char *keyname, int nstart, int nmax, double *value,
989 int *nfound, int *status);
990int CFITS_API ffh2st(fitsfile *fptr, char **header, int *status);
991int CFITS_API ffhdr2str( fitsfile *fptr, int exclude_comm, char **exclist,
992 int nexc, char **header, int *nkeys, int *status);
993int CFITS_API ffcnvthdr2str( fitsfile *fptr, int exclude_comm, char **exclist,
994 int nexc, char **header, int *nkeys, int *status);
995
996/*----------------- read required header keywords --------------*/
997int CFITS_API ffghpr(fitsfile *fptr, int maxdim, int *simple, int *bitpix, int *naxis,
998 long naxes[], long *pcount, long *gcount, int *extend, int *status);
999
1000int CFITS_API ffghprll(fitsfile *fptr, int maxdim, int *simple, int *bitpix, int *naxis,
1001 LONGLONG naxes[], long *pcount, long *gcount, int *extend, int *status);
1002
1003int CFITS_API ffghtb(fitsfile *fptr,int maxfield, long *naxis1, long *naxis2,
1004 int *tfields, char **ttype, long *tbcol, char **tform, char **tunit,
1005 char *extname, int *status);
1006
1007int CFITS_API ffghtbll(fitsfile *fptr,int maxfield, LONGLONG *naxis1, LONGLONG *naxis2,
1008 int *tfields, char **ttype, LONGLONG *tbcol, char **tform, char **tunit,
1009 char *extname, int *status);
1010
1011
1012int CFITS_API ffghbn(fitsfile *fptr, int maxfield, long *naxis2, int *tfields,
1013 char **ttype, char **tform, char **tunit, char *extname,
1014 long *pcount, int *status);
1015
1016int CFITS_API ffghbnll(fitsfile *fptr, int maxfield, LONGLONG *naxis2, int *tfields,
1017 char **ttype, char **tform, char **tunit, char *extname,
1018 LONGLONG *pcount, int *status);
1019
1020/*--------------------- update keywords ---------------*/
1021int CFITS_API ffuky(fitsfile *fptr, int datatype, const char *keyname, void *value,
1022 const char *comm, int *status);
1023int CFITS_API ffucrd(fitsfile *fptr, const char *keyname, const char *card, int *status);
1024int CFITS_API ffukyu(fitsfile *fptr, const char *keyname, const char *comm, int *status);
1025int CFITS_API ffukys(fitsfile *fptr, const char *keyname, const char *value, const char *comm, int *status);
1026int CFITS_API ffukls(fitsfile *fptr, const char *keyname, const char *value, const char *comm, int *status);
1027int CFITS_API ffukyl(fitsfile *fptr, const char *keyname, int value, const char *comm, int *status);
1028int CFITS_API ffukyj(fitsfile *fptr, const char *keyname, LONGLONG value, const char *comm, int *status);
1029int CFITS_API ffukyf(fitsfile *fptr, const char *keyname, float value, int decim, const char *comm,
1030 int *status);
1031int CFITS_API ffukye(fitsfile *fptr, const char *keyname, float value, int decim, const char *comm,
1032 int *status);
1033int CFITS_API ffukyg(fitsfile *fptr, const char *keyname, double value, int decim, const char *comm,
1034 int *status);
1035int CFITS_API ffukyd(fitsfile *fptr, const char *keyname, double value, int decim, const char *comm,
1036 int *status);
1037int CFITS_API ffukyc(fitsfile *fptr, const char *keyname, float *value, int decim, const char *comm,
1038 int *status);
1039int CFITS_API ffukym(fitsfile *fptr, const char *keyname, double *value, int decim, const char *comm,
1040 int *status);
1041int CFITS_API ffukfc(fitsfile *fptr, const char *keyname, float *value, int decim, const char *comm,
1042 int *status);
1043int CFITS_API ffukfm(fitsfile *fptr, const char *keyname, double *value, int decim, const char *comm,
1044 int *status);
1045
1046/*--------------------- modify keywords ---------------*/
1047int CFITS_API ffmrec(fitsfile *fptr, int nkey, const char *card, int *status);
1048int CFITS_API ffmcrd(fitsfile *fptr, const char *keyname, const char *card, int *status);
1049int CFITS_API ffmnam(fitsfile *fptr, const char *oldname, const char *newname, int *status);
1050int CFITS_API ffmcom(fitsfile *fptr, const char *keyname, const char *comm, int *status);
1051int CFITS_API ffmkyu(fitsfile *fptr, const char *keyname, const char *comm, int *status);
1052int CFITS_API ffmkys(fitsfile *fptr, const char *keyname, const char *value, const char *comm,int *status);
1053int CFITS_API ffmkls(fitsfile *fptr, const char *keyname, const char *value, const char *comm,int *status);
1054int CFITS_API ffmkyl(fitsfile *fptr, const char *keyname, int value, const char *comm, int *status);
1055int CFITS_API ffmkyj(fitsfile *fptr, const char *keyname, LONGLONG value, const char *comm, int *status);
1056int CFITS_API ffmkyf(fitsfile *fptr, const char *keyname, float value, int decim, const char *comm,
1057 int *status);
1058int CFITS_API ffmkye(fitsfile *fptr, const char *keyname, float value, int decim, const char *comm,
1059 int *status);
1060int CFITS_API ffmkyg(fitsfile *fptr, const char *keyname, double value, int decim, const char *comm,
1061 int *status);
1062int CFITS_API ffmkyd(fitsfile *fptr, const char *keyname, double value, int decim, const char *comm,
1063 int *status);
1064int CFITS_API ffmkyc(fitsfile *fptr, const char *keyname, float *value, int decim, const char *comm,
1065 int *status);
1066int CFITS_API ffmkym(fitsfile *fptr, const char *keyname, double *value, int decim, const char *comm,
1067 int *status);
1068int CFITS_API ffmkfc(fitsfile *fptr, const char *keyname, float *value, int decim, const char *comm,
1069 int *status);
1070int CFITS_API ffmkfm(fitsfile *fptr, const char *keyname, double *value, int decim, const char *comm,
1071 int *status);
1072
1073/*--------------------- insert keywords ---------------*/
1074int CFITS_API ffirec(fitsfile *fptr, int nkey, const char *card, int *status);
1075int CFITS_API ffikey(fitsfile *fptr, const char *card, int *status);
1076int CFITS_API ffikyu(fitsfile *fptr, const char *keyname, const char *comm, int *status);
1077int CFITS_API ffikys(fitsfile *fptr, const char *keyname, const char *value, const char *comm,int *status);
1078int CFITS_API ffikls(fitsfile *fptr, const char *keyname, const char *value, const char *comm,int *status);
1079int CFITS_API ffikyl(fitsfile *fptr, const char *keyname, int value, const char *comm, int *status);
1080int CFITS_API ffikyj(fitsfile *fptr, const char *keyname, LONGLONG value, const char *comm, int *status);
1081int CFITS_API ffikyf(fitsfile *fptr, const char *keyname, float value, int decim, const char *comm,
1082 int *status);
1083int CFITS_API ffikye(fitsfile *fptr, const char *keyname, float value, int decim, const char *comm,
1084 int *status);
1085int CFITS_API ffikyg(fitsfile *fptr, const char *keyname, double value, int decim, const char *comm,
1086 int *status);
1087int CFITS_API ffikyd(fitsfile *fptr, const char *keyname, double value, int decim, const char *comm,
1088 int *status);
1089int CFITS_API ffikyc(fitsfile *fptr, const char *keyname, float *value, int decim, const char *comm,
1090 int *status);
1091int CFITS_API ffikym(fitsfile *fptr, const char *keyname, double *value, int decim, const char *comm,
1092 int *status);
1093int CFITS_API ffikfc(fitsfile *fptr, const char *keyname, float *value, int decim, const char *comm,
1094 int *status);
1095int CFITS_API ffikfm(fitsfile *fptr, const char *keyname, double *value, int decim, const char *comm,
1096 int *status);
1097
1098/*--------------------- delete keywords ---------------*/
1099int CFITS_API ffdkey(fitsfile *fptr, const char *keyname, int *status);
1100int CFITS_API ffdstr(fitsfile *fptr, const char *string, int *status);
1101int CFITS_API ffdrec(fitsfile *fptr, int keypos, int *status);
1102
1103/*--------------------- get HDU information -------------*/
1104int CFITS_API ffghdn(fitsfile *fptr, int *chdunum);
1105int CFITS_API ffghdt(fitsfile *fptr, int *exttype, int *status);
1106int CFITS_API ffghad(fitsfile *fptr, long *headstart, long *datastart, long *dataend,
1107 int *status);
1108int CFITS_API ffghadll(fitsfile *fptr, LONGLONG *headstart, LONGLONG *datastart,
1109 LONGLONG *dataend, int *status);
1110int CFITS_API ffghof(fitsfile *fptr, OFF_T *headstart, OFF_T *datastart, OFF_T *dataend,
1111 int *status);
1112int CFITS_API ffgipr(fitsfile *fptr, int maxaxis, int *imgtype, int *naxis,
1113 long *naxes, int *status);
1114int CFITS_API ffgiprll(fitsfile *fptr, int maxaxis, int *imgtype, int *naxis,
1115 LONGLONG *naxes, int *status);
1116int CFITS_API ffgidt(fitsfile *fptr, int *imgtype, int *status);
1117int CFITS_API ffgiet(fitsfile *fptr, int *imgtype, int *status);
1118int CFITS_API ffgidm(fitsfile *fptr, int *naxis, int *status);
1119int CFITS_API ffgisz(fitsfile *fptr, int nlen, long *naxes, int *status);
1120int CFITS_API ffgiszll(fitsfile *fptr, int nlen, LONGLONG *naxes, int *status);
1121
1122/*--------------------- HDU operations -------------*/
1123int CFITS_API ffmahd(fitsfile *fptr, int hdunum, int *exttype, int *status);
1124int CFITS_API ffmrhd(fitsfile *fptr, int hdumov, int *exttype, int *status);
1125int CFITS_API ffmnhd(fitsfile *fptr, int exttype, char *hduname, int hduvers,
1126 int *status);
1127int CFITS_API ffthdu(fitsfile *fptr, int *nhdu, int *status);
1128int CFITS_API ffcrhd(fitsfile *fptr, int *status);
1129int CFITS_API ffcrim(fitsfile *fptr, int bitpix, int naxis, long *naxes, int *status);
1130int CFITS_API ffcrimll(fitsfile *fptr, int bitpix, int naxis, LONGLONG *naxes, int *status);
1131int CFITS_API ffcrtb(fitsfile *fptr, int tbltype, LONGLONG naxis2, int tfields, char **ttype,
1132 char **tform, char **tunit, const char *extname, int *status);
1133int CFITS_API ffiimg(fitsfile *fptr, int bitpix, int naxis, long *naxes, int *status);
1134int CFITS_API ffiimgll(fitsfile *fptr, int bitpix, int naxis, LONGLONG *naxes, int *status);
1135int CFITS_API ffitab(fitsfile *fptr, LONGLONG naxis1, LONGLONG naxis2, int tfields, char **ttype,
1136 long *tbcol, char **tform, char **tunit, const char *extname, int *status);
1137int CFITS_API ffibin(fitsfile *fptr, LONGLONG naxis2, int tfields, char **ttype, char **tform,
1138 char **tunit, const char *extname, LONGLONG pcount, int *status);
1139int CFITS_API ffrsim(fitsfile *fptr, int bitpix, int naxis, long *naxes, int *status);
1140int CFITS_API ffrsimll(fitsfile *fptr, int bitpix, int naxis, LONGLONG *naxes, int *status);
1141int CFITS_API ffdhdu(fitsfile *fptr, int *hdutype, int *status);
1142int CFITS_API ffcopy(fitsfile *infptr, fitsfile *outfptr, int morekeys, int *status);
1143int CFITS_API ffcpfl(fitsfile *infptr, fitsfile *outfptr, int prev, int cur, int follow,
1144 int *status);
1145int CFITS_API ffcphd(fitsfile *infptr, fitsfile *outfptr, int *status);
1146int CFITS_API ffcpdt(fitsfile *infptr, fitsfile *outfptr, int *status);
1147int CFITS_API ffchfl(fitsfile *fptr, int *status);
1148int CFITS_API ffcdfl(fitsfile *fptr, int *status);
1149int CFITS_API ffwrhdu(fitsfile *fptr, FILE *outstream, int *status);
1150
1151int CFITS_API ffrdef(fitsfile *fptr, int *status);
1152int CFITS_API ffrhdu(fitsfile *fptr, int *hdutype, int *status);
1153int CFITS_API ffhdef(fitsfile *fptr, int morekeys, int *status);
1154int CFITS_API ffpthp(fitsfile *fptr, long theap, int *status);
1155
1156int CFITS_API ffcsum(fitsfile *fptr, long nrec, unsigned long *sum, int *status);
1157void CFITS_API ffesum(unsigned long sum, int complm, char *ascii);
1158unsigned long CFITS_API ffdsum(char *ascii, int complm, unsigned long *sum);
1159int CFITS_API ffpcks(fitsfile *fptr, int *status);
1160int CFITS_API ffupck(fitsfile *fptr, int *status);
1161int CFITS_API ffvcks(fitsfile *fptr, int *datastatus, int *hdustatus, int *status);
1162int CFITS_API ffgcks(fitsfile *fptr, unsigned long *datasum, unsigned long *hdusum,
1163 int *status);
1164
1165/*--------------------- define scaling or null values -------------*/
1166int CFITS_API ffpscl(fitsfile *fptr, double scale, double zeroval, int *status);
1167int CFITS_API ffpnul(fitsfile *fptr, LONGLONG nulvalue, int *status);
1168int CFITS_API fftscl(fitsfile *fptr, int colnum, double scale, double zeroval, int *status);
1169int CFITS_API fftnul(fitsfile *fptr, int colnum, LONGLONG nulvalue, int *status);
1170int CFITS_API ffsnul(fitsfile *fptr, int colnum, char *nulstring, int *status);
1171
1172/*--------------------- get column information -------------*/
1173int CFITS_API ffgcno(fitsfile *fptr, int casesen, char *templt, int *colnum,
1174 int *status);
1175int CFITS_API ffgcnn(fitsfile *fptr, int casesen, char *templt, char *colname,
1176 int *colnum, int *status);
1177
1178int CFITS_API ffgtcl(fitsfile *fptr, int colnum, int *typecode, long *repeat,
1179 long *width, int *status);
1180int CFITS_API ffgtclll(fitsfile *fptr, int colnum, int *typecode, LONGLONG *repeat,
1181 LONGLONG *width, int *status);
1182int CFITS_API ffeqty(fitsfile *fptr, int colnum, int *typecode, long *repeat,
1183 long *width, int *status);
1184int CFITS_API ffeqtyll(fitsfile *fptr, int colnum, int *typecode, LONGLONG *repeat,
1185 LONGLONG *width, int *status);
1186int CFITS_API ffgncl(fitsfile *fptr, int *ncols, int *status);
1187int CFITS_API ffgnrw(fitsfile *fptr, long *nrows, int *status);
1188int CFITS_API ffgnrwll(fitsfile *fptr, LONGLONG *nrows, int *status);
1189int CFITS_API ffgacl(fitsfile *fptr, int colnum, char *ttype, long *tbcol,
1190 char *tunit, char *tform, double *tscal, double *tzero,
1191 char *tnull, char *tdisp, int *status);
1192int CFITS_API ffgbcl(fitsfile *fptr, int colnum, char *ttype, char *tunit,
1193 char *dtype, long *repeat, double *tscal, double *tzero,
1194 long *tnull, char *tdisp, int *status);
1195int CFITS_API ffgbclll(fitsfile *fptr, int colnum, char *ttype, char *tunit,
1196 char *dtype, LONGLONG *repeat, double *tscal, double *tzero,
1197 LONGLONG *tnull, char *tdisp, int *status);
1198int CFITS_API ffgrsz(fitsfile *fptr, long *nrows, int *status);
1199int CFITS_API ffgcdw(fitsfile *fptr, int colnum, int *width, int *status);
1200
1201/*--------------------- read primary array or image elements -------------*/
1202int CFITS_API ffgpxv(fitsfile *fptr, int datatype, long *firstpix, LONGLONG nelem,
1203 void *nulval, void *array, int *anynul, int *status);
1204int CFITS_API ffgpxvll(fitsfile *fptr, int datatype, LONGLONG *firstpix, LONGLONG nelem,
1205 void *nulval, void *array, int *anynul, int *status);
1206int CFITS_API ffgpxf(fitsfile *fptr, int datatype, long *firstpix, LONGLONG nelem,
1207 void *array, char *nullarray, int *anynul, int *status);
1208int CFITS_API ffgpxfll(fitsfile *fptr, int datatype, LONGLONG *firstpix, LONGLONG nelem,
1209 void *array, char *nullarray, int *anynul, int *status);
1210int CFITS_API ffgsv(fitsfile *fptr, int datatype, long *blc, long *trc, long *inc,
1211 void *nulval, void *array, int *anynul, int *status);
1212
1213int CFITS_API ffgpv(fitsfile *fptr, int datatype, LONGLONG firstelem, LONGLONG nelem,
1214 void *nulval, void *array, int *anynul, int *status);
1215int CFITS_API ffgpf(fitsfile *fptr, int datatype, LONGLONG firstelem, LONGLONG nelem,
1216 void *array, char *nullarray, int *anynul, int *status);
1217int CFITS_API ffgpvb(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem, unsigned
1218 char nulval, unsigned char *array, int *anynul, int *status);
1219int CFITS_API ffgpvsb(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem, signed
1220 char nulval, signed char *array, int *anynul, int *status);
1221int CFITS_API ffgpvui(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1222 unsigned short nulval, unsigned short *array, int *anynul,
1223 int *status);
1224int CFITS_API ffgpvi(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1225 short nulval, short *array, int *anynul, int *status);
1226int CFITS_API ffgpvuj(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1227 unsigned long nulval, unsigned long *array, int *anynul,
1228 int *status);
1229int CFITS_API ffgpvj(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1230 long nulval, long *array, int *anynul, int *status);
1231int CFITS_API ffgpvujj(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1232 ULONGLONG nulval, ULONGLONG *array, int *anynul, int *status);
1233int CFITS_API ffgpvjj(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1234 LONGLONG nulval, LONGLONG *array, int *anynul, int *status);
1235int CFITS_API ffgpvuk(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1236 unsigned int nulval, unsigned int *array, int *anynul, int *status);
1237int CFITS_API ffgpvk(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1238 int nulval, int *array, int *anynul, int *status);
1239int CFITS_API ffgpve(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1240 float nulval, float *array, int *anynul, int *status);
1241int CFITS_API ffgpvd(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1242 double nulval, double *array, int *anynul, int *status);
1243
1244int CFITS_API ffgpfb(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1245 unsigned char *array, char *nularray, int *anynul, int *status);
1246int CFITS_API ffgpfsb(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1247 signed char *array, char *nularray, int *anynul, int *status);
1248int CFITS_API ffgpfui(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1249 unsigned short *array, char *nularray, int *anynul, int *status);
1250int CFITS_API ffgpfi(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1251 short *array, char *nularray, int *anynul, int *status);
1252int CFITS_API ffgpfuj(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1253 unsigned long *array, char *nularray, int *anynul, int *status);
1254int CFITS_API ffgpfj(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1255 long *array, char *nularray, int *anynul, int *status);
1256int CFITS_API ffgpfujj(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1257 ULONGLONG *array, char *nularray, int *anynul, int *status);
1258int CFITS_API ffgpfjj(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1259 LONGLONG *array, char *nularray, int *anynul, int *status);
1260int CFITS_API ffgpfuk(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1261 unsigned int *array, char *nularray, int *anynul, int *status);
1262int CFITS_API ffgpfk(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1263 int *array, char *nularray, int *anynul, int *status);
1264int CFITS_API ffgpfe(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1265 float *array, char *nularray, int *anynul, int *status);
1266int CFITS_API ffgpfd(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1267 double *array, char *nularray, int *anynul, int *status);
1268
1269int CFITS_API ffg2db(fitsfile *fptr, long group, unsigned char nulval, LONGLONG ncols,
1270 LONGLONG naxis1, LONGLONG naxis2, unsigned char *array,
1271 int *anynul, int *status);
1272int CFITS_API ffg2dsb(fitsfile *fptr, long group, signed char nulval, LONGLONG ncols,
1273 LONGLONG naxis1, LONGLONG naxis2, signed char *array,
1274 int *anynul, int *status);
1275int CFITS_API ffg2dui(fitsfile *fptr, long group, unsigned short nulval, LONGLONG ncols,
1276 LONGLONG naxis1, LONGLONG naxis2, unsigned short *array,
1277 int *anynul, int *status);
1278int CFITS_API ffg2di(fitsfile *fptr, long group, short nulval, LONGLONG ncols,
1279 LONGLONG naxis1, LONGLONG naxis2, short *array,
1280 int *anynul, int *status);
1281int CFITS_API ffg2duj(fitsfile *fptr, long group, unsigned long nulval, LONGLONG ncols,
1282 LONGLONG naxis1, LONGLONG naxis2, unsigned long *array,
1283 int *anynul, int *status);
1284int CFITS_API ffg2dj(fitsfile *fptr, long group, long nulval, LONGLONG ncols,
1285 LONGLONG naxis1, LONGLONG naxis2, long *array,
1286 int *anynul, int *status);
1287int CFITS_API ffg2dujj(fitsfile *fptr, long group, ULONGLONG nulval, LONGLONG ncols,
1288 LONGLONG naxis1, LONGLONG naxis2, ULONGLONG *array,
1289 int *anynul, int *status);
1290int CFITS_API ffg2djj(fitsfile *fptr, long group, LONGLONG nulval, LONGLONG ncols,
1291 LONGLONG naxis1, LONGLONG naxis2, LONGLONG *array,
1292 int *anynul, int *status);
1293int CFITS_API ffg2duk(fitsfile *fptr, long group, unsigned int nulval, LONGLONG ncols,
1294 LONGLONG naxis1, LONGLONG naxis2, unsigned int *array,
1295 int *anynul, int *status);
1296int CFITS_API ffg2dk(fitsfile *fptr, long group, int nulval, LONGLONG ncols,
1297 LONGLONG naxis1, LONGLONG naxis2, int *array,
1298 int *anynul, int *status);
1299int CFITS_API ffg2de(fitsfile *fptr, long group, float nulval, LONGLONG ncols,
1300 LONGLONG naxis1, LONGLONG naxis2, float *array,
1301 int *anynul, int *status);
1302int CFITS_API ffg2dd(fitsfile *fptr, long group, double nulval, LONGLONG ncols,
1303 LONGLONG naxis1, LONGLONG naxis2, double *array,
1304 int *anynul, int *status);
1305
1306int CFITS_API ffg3db(fitsfile *fptr, long group, unsigned char nulval, LONGLONG ncols,
1307 LONGLONG nrows, LONGLONG naxis1, LONGLONG naxis2, LONGLONG naxis3,
1308 unsigned char *array, int *anynul, int *status);
1309int CFITS_API ffg3dsb(fitsfile *fptr, long group, signed char nulval, LONGLONG ncols,
1310 LONGLONG nrows, LONGLONG naxis1, LONGLONG naxis2, LONGLONG naxis3,
1311 signed char *array, int *anynul, int *status);
1312int CFITS_API ffg3dui(fitsfile *fptr, long group, unsigned short nulval, LONGLONG ncols,
1313 LONGLONG nrows, LONGLONG naxis1, LONGLONG naxis2, LONGLONG naxis3,
1314 unsigned short *array, int *anynul, int *status);
1315int CFITS_API ffg3di(fitsfile *fptr, long group, short nulval, LONGLONG ncols,
1316 LONGLONG nrows, LONGLONG naxis1, LONGLONG naxis2, LONGLONG naxis3,
1317 short *array, int *anynul, int *status);
1318int CFITS_API ffg3duj(fitsfile *fptr, long group, unsigned long nulval, LONGLONG ncols,
1319 LONGLONG nrows, LONGLONG naxis1, LONGLONG naxis2, LONGLONG naxis3,
1320 unsigned long *array, int *anynul, int *status);
1321int CFITS_API ffg3dj(fitsfile *fptr, long group, long nulval, LONGLONG ncols,
1322 LONGLONG nrows, LONGLONG naxis1, LONGLONG naxis2, LONGLONG naxis3,
1323 long *array, int *anynul, int *status);
1324int CFITS_API ffg3dujj(fitsfile *fptr, long group, ULONGLONG nulval, LONGLONG ncols,
1325 LONGLONG nrows, LONGLONG naxis1, LONGLONG naxis2, LONGLONG naxis3,
1326 ULONGLONG *array, int *anynul, int *status);
1327int CFITS_API ffg3djj(fitsfile *fptr, long group, LONGLONG nulval, LONGLONG ncols,
1328 LONGLONG nrows, LONGLONG naxis1, LONGLONG naxis2, LONGLONG naxis3,
1329 LONGLONG *array, int *anynul, int *status);
1330int CFITS_API ffg3duk(fitsfile *fptr, long group, unsigned int nulval, LONGLONG ncols,
1331 LONGLONG nrows, LONGLONG naxis1, LONGLONG naxis2, LONGLONG naxis3,
1332 unsigned int *array, int *anynul, int *status);
1333int CFITS_API ffg3dk(fitsfile *fptr, long group, int nulval, LONGLONG ncols,
1334 LONGLONG nrows, LONGLONG naxis1, LONGLONG naxis2, LONGLONG naxis3,
1335 int *array, int *anynul, int *status);
1336int CFITS_API ffg3de(fitsfile *fptr, long group, float nulval, LONGLONG ncols,
1337 LONGLONG nrows, LONGLONG naxis1, LONGLONG naxis2, LONGLONG naxis3,
1338 float *array, int *anynul, int *status);
1339int CFITS_API ffg3dd(fitsfile *fptr, long group, double nulval, LONGLONG ncols,
1340 LONGLONG nrows, LONGLONG naxis1, LONGLONG naxis2, LONGLONG naxis3,
1341 double *array, int *anynul, int *status);
1342
1343int CFITS_API ffgsvb(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1344 long *trc, long *inc, unsigned char nulval, unsigned char *array,
1345 int *anynul, int *status);
1346int CFITS_API ffgsvsb(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1347 long *trc, long *inc, signed char nulval, signed char *array,
1348 int *anynul, int *status);
1349int CFITS_API ffgsvui(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1350 long *trc, long *inc, unsigned short nulval, unsigned short *array,
1351 int *anynul, int *status);
1352int CFITS_API ffgsvi(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1353 long *trc, long *inc, short nulval, short *array, int *anynul, int *status);
1354int CFITS_API ffgsvuj(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1355 long *trc, long *inc, unsigned long nulval, unsigned long *array,
1356 int *anynul, int *status);
1357int CFITS_API ffgsvj(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1358 long *trc, long *inc, long nulval, long *array, int *anynul, int *status);
1359int CFITS_API ffgsvujj(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1360 long *trc, long *inc, ULONGLONG nulval, ULONGLONG *array, int *anynul,
1361 int *status);
1362int CFITS_API ffgsvjj(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1363 long *trc, long *inc, LONGLONG nulval, LONGLONG *array, int *anynul,
1364 int *status);
1365int CFITS_API ffgsvuk(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1366 long *trc, long *inc, unsigned int nulval, unsigned int *array,
1367 int *anynul, int *status);
1368int CFITS_API ffgsvk(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1369 long *trc, long *inc, int nulval, int *array, int *anynul, int *status);
1370int CFITS_API ffgsve(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1371 long *trc, long *inc, float nulval, float *array, int *anynul, int *status);
1372int CFITS_API ffgsvd(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1373 long *trc, long *inc, double nulval, double *array, int *anynul,
1374 int *status);
1375
1376int CFITS_API ffgsfb(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1377 long *trc, long *inc, unsigned char *array, char *flagval,
1378 int *anynul, int *status);
1379int CFITS_API ffgsfsb(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1380 long *trc, long *inc, signed char *array, char *flagval,
1381 int *anynul, int *status);
1382int CFITS_API ffgsfui(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1383 long *trc, long *inc, unsigned short *array, char *flagval, int *anynul,
1384 int *status);
1385int CFITS_API ffgsfi(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1386 long *trc, long *inc, short *array, char *flagval, int *anynul, int *status);
1387int CFITS_API ffgsfuj(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1388 long *trc, long *inc, unsigned long *array, char *flagval, int *anynul,
1389 int *status);
1390int CFITS_API ffgsfj(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1391 long *trc, long *inc, long *array, char *flagval, int *anynul, int *status);
1392int CFITS_API ffgsfujj(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1393 long *trc, long *inc, ULONGLONG *array, char *flagval, int *anynul,
1394 int *status);
1395int CFITS_API ffgsfjj(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1396 long *trc, long *inc, LONGLONG *array, char *flagval, int *anynul,
1397 int *status);
1398int CFITS_API ffgsfuk(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1399 long *trc, long *inc, unsigned int *array, char *flagval, int *anynul,
1400 int *status);
1401int CFITS_API ffgsfk(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1402 long *trc, long *inc, int *array, char *flagval, int *anynul, int *status);
1403int CFITS_API ffgsfe(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1404 long *trc, long *inc, float *array, char *flagval, int *anynul, int *status);
1405int CFITS_API ffgsfd(fitsfile *fptr, int colnum, int naxis, long *naxes, long *blc,
1406 long *trc, long *inc, double *array, char *flagval, int *anynul,
1407 int *status);
1408
1409int CFITS_API ffggpb(fitsfile *fptr, long group, long firstelem, long nelem,
1410 unsigned char *array, int *status);
1411int CFITS_API ffggpsb(fitsfile *fptr, long group, long firstelem, long nelem,
1412 signed char *array, int *status);
1413int CFITS_API ffggpui(fitsfile *fptr, long group, long firstelem, long nelem,
1414 unsigned short *array, int *status);
1415int CFITS_API ffggpi(fitsfile *fptr, long group, long firstelem, long nelem,
1416 short *array, int *status);
1417int CFITS_API ffggpuj(fitsfile *fptr, long group, long firstelem, long nelem,
1418 unsigned long *array, int *status);
1419int CFITS_API ffggpj(fitsfile *fptr, long group, long firstelem, long nelem,
1420 long *array, int *status);
1421int CFITS_API ffggpujj(fitsfile *fptr, long group, long firstelem, long nelem,
1422 ULONGLONG *array, int *status);
1423int CFITS_API ffggpjj(fitsfile *fptr, long group, long firstelem, long nelem,
1424 LONGLONG *array, int *status);
1425int CFITS_API ffggpuk(fitsfile *fptr, long group, long firstelem, long nelem,
1426 unsigned int *array, int *status);
1427int CFITS_API ffggpk(fitsfile *fptr, long group, long firstelem, long nelem,
1428 int *array, int *status);
1429int CFITS_API ffggpe(fitsfile *fptr, long group, long firstelem, long nelem,
1430 float *array, int *status);
1431int CFITS_API ffggpd(fitsfile *fptr, long group, long firstelem, long nelem,
1432 double *array, int *status);
1433
1434/*--------------------- read column elements -------------*/
1435int CFITS_API ffgcv( fitsfile *fptr, int datatype, int colnum, LONGLONG firstrow,
1436 LONGLONG firstelem, LONGLONG nelem, void *nulval, void *array, int *anynul,
1437 int *status);
1438int CFITS_API ffgcf( fitsfile *fptr, int datatype, int colnum, LONGLONG firstrow,
1439 LONGLONG firstelem, LONGLONG nelem, void *array, char *nullarray,
1440 int *anynul, int *status);
1441int CFITS_API ffgcvs(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1442 LONGLONG nelem, char *nulval, char **array, int *anynul, int *status);
1443int CFITS_API ffgcl (fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1444 LONGLONG nelem, char *array, int *status);
1445int CFITS_API ffgcvl (fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1446 LONGLONG nelem, char nulval, char *array, int *anynul, int *status);
1447int CFITS_API ffgcvb(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1448 LONGLONG nelem, unsigned char nulval, unsigned char *array,
1449 int *anynul, int *status);
1450int CFITS_API ffgcvsb(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1451 LONGLONG nelem, signed char nulval, signed char *array,
1452 int *anynul, int *status);
1453int CFITS_API ffgcvui(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1454 LONGLONG nelem, unsigned short nulval, unsigned short *array,
1455 int *anynul, int *status);
1456int CFITS_API ffgcvi(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1457 LONGLONG nelem, short nulval, short *array, int *anynul, int *status);
1458int CFITS_API ffgcvuj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1459 LONGLONG nelem, unsigned long nulval, unsigned long *array, int *anynul,
1460 int *status);
1461int CFITS_API ffgcvj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1462 LONGLONG nelem, long nulval, long *array, int *anynul, int *status);
1463int CFITS_API ffgcvujj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1464 LONGLONG nelem, ULONGLONG nulval, ULONGLONG *array, int *anynul,
1465 int *status);
1466int CFITS_API ffgcvjj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1467 LONGLONG nelem, LONGLONG nulval, LONGLONG *array, int *anynul,
1468 int *status);
1469int CFITS_API ffgcvuk(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1470 LONGLONG nelem, unsigned int nulval, unsigned int *array, int *anynul,
1471 int *status);
1472int CFITS_API ffgcvk(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1473 LONGLONG nelem, int nulval, int *array, int *anynul, int *status);
1474int CFITS_API ffgcve(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1475 LONGLONG nelem, float nulval, float *array, int *anynul, int *status);
1476int CFITS_API ffgcvd(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1477 LONGLONG nelem, double nulval, double *array, int *anynul, int *status);
1478int CFITS_API ffgcvc(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1479 LONGLONG nelem, float nulval, float *array, int *anynul, int *status);
1480int CFITS_API ffgcvm(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1481 LONGLONG nelem, double nulval, double *array, int *anynul, int *status);
1482
1483int CFITS_API ffgcx(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstbit,
1484 LONGLONG nbits, char *larray, int *status);
1485int CFITS_API ffgcxui(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG nrows,
1486 long firstbit, int nbits, unsigned short *array, int *status);
1487int CFITS_API ffgcxuk(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG nrows,
1488 long firstbit, int nbits, unsigned int *array, int *status);
1489
1490int CFITS_API ffgcfs(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1491 LONGLONG nelem, char **array, char *nularray, int *anynul, int *status);
1492int CFITS_API ffgcfl(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1493 LONGLONG nelem, char *array, char *nularray, int *anynul, int *status);
1494int CFITS_API ffgcfb(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1495 LONGLONG nelem, unsigned char *array, char *nularray, int *anynul, int *status);
1496int CFITS_API ffgcfsb(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1497 LONGLONG nelem, signed char *array, char *nularray, int *anynul, int *status);
1498int CFITS_API ffgcfui(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1499 LONGLONG nelem, unsigned short *array, char *nularray, int *anynul,
1500 int *status);
1501int CFITS_API ffgcfi(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1502 LONGLONG nelem, short *array, char *nularray, int *anynul, int *status);
1503int CFITS_API ffgcfuj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1504 LONGLONG nelem, unsigned long *array, char *nularray, int *anynul,
1505 int *status);
1506int CFITS_API ffgcfj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1507 LONGLONG nelem, long *array, char *nularray, int *anynul, int *status);
1508int CFITS_API ffgcfujj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1509 LONGLONG nelem, ULONGLONG *array, char *nularray, int *anynul, int *status);
1510int CFITS_API ffgcfjj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1511 LONGLONG nelem, LONGLONG *array, char *nularray, int *anynul, int *status);
1512int CFITS_API ffgcfuk(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1513 LONGLONG nelem, unsigned int *array, char *nularray, int *anynul,
1514 int *status);
1515int CFITS_API ffgcfk(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1516 LONGLONG nelem, int *array, char *nularray, int *anynul, int *status);
1517int CFITS_API ffgcfe(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1518 LONGLONG nelem, float *array, char *nularray, int *anynul, int *status);
1519int CFITS_API ffgcfd(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1520 LONGLONG nelem, double *array, char *nularray, int *anynul, int *status);
1521int CFITS_API ffgcfc(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1522 LONGLONG nelem, float *array, char *nularray, int *anynul, int *status);
1523int CFITS_API ffgcfm(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1524 LONGLONG nelem, double *array, char *nularray, int *anynul, int *status);
1525
1526int CFITS_API ffgdes(fitsfile *fptr, int colnum, LONGLONG rownum, long *length,
1527 long *heapaddr, int *status);
1528int CFITS_API ffgdesll(fitsfile *fptr, int colnum, LONGLONG rownum, LONGLONG *length,
1529 LONGLONG *heapaddr, int *status);
1530int CFITS_API ffgdess(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG nrows, long *length,
1531 long *heapaddr, int *status);
1532int CFITS_API ffgdessll(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG nrows, LONGLONG *length,
1533 LONGLONG *heapaddr, int *status);
1534int CFITS_API ffpdes(fitsfile *fptr, int colnum, LONGLONG rownum, LONGLONG length,
1535 LONGLONG heapaddr, int *status);
1536int CFITS_API fftheap(fitsfile *fptr, LONGLONG *heapsize, LONGLONG *unused, LONGLONG *overlap,
1537 int *valid, int *status);
1538int CFITS_API ffcmph(fitsfile *fptr, int *status);
1539
1540int CFITS_API ffgtbb(fitsfile *fptr, LONGLONG firstrow, LONGLONG firstchar, LONGLONG nchars,
1541 unsigned char *values, int *status);
1542
1543int CFITS_API ffgextn(fitsfile *fptr, LONGLONG offset, LONGLONG nelem, void *array, int *status);
1544int CFITS_API ffpextn(fitsfile *fptr, LONGLONG offset, LONGLONG nelem, void *array, int *status);
1545
1546/*------------ write primary array or image elements -------------*/
1547int CFITS_API ffppx(fitsfile *fptr, int datatype, long *firstpix, LONGLONG nelem,
1548 void *array, int *status);
1549int CFITS_API ffppxll(fitsfile *fptr, int datatype, LONGLONG *firstpix, LONGLONG nelem,
1550 void *array, int *status);
1551int CFITS_API ffppxn(fitsfile *fptr, int datatype, long *firstpix, LONGLONG nelem,
1552 void *array, void *nulval, int *status);
1553int CFITS_API ffppxnll(fitsfile *fptr, int datatype, LONGLONG *firstpix, LONGLONG nelem,
1554 void *array, void *nulval, int *status);
1555int CFITS_API ffppr(fitsfile *fptr, int datatype, LONGLONG firstelem,
1556 LONGLONG nelem, void *array, int *status);
1557int CFITS_API ffpprb(fitsfile *fptr, long group, LONGLONG firstelem,
1558 LONGLONG nelem, unsigned char *array, int *status);
1559int CFITS_API ffpprsb(fitsfile *fptr, long group, LONGLONG firstelem,
1560 LONGLONG nelem, signed char *array, int *status);
1561int CFITS_API ffpprui(fitsfile *fptr, long group, LONGLONG firstelem,
1562 LONGLONG nelem, unsigned short *array, int *status);
1563int CFITS_API ffppri(fitsfile *fptr, long group, LONGLONG firstelem,
1564 LONGLONG nelem, short *array, int *status);
1565int CFITS_API ffppruj(fitsfile *fptr, long group, LONGLONG firstelem,
1566 LONGLONG nelem, unsigned long *array, int *status);
1567int CFITS_API ffpprj(fitsfile *fptr, long group, LONGLONG firstelem,
1568 LONGLONG nelem, long *array, int *status);
1569int CFITS_API ffppruk(fitsfile *fptr, long group, LONGLONG firstelem,
1570 LONGLONG nelem, unsigned int *array, int *status);
1571int CFITS_API ffpprk(fitsfile *fptr, long group, LONGLONG firstelem,
1572 LONGLONG nelem, int *array, int *status);
1573int CFITS_API ffppre(fitsfile *fptr, long group, LONGLONG firstelem,
1574 LONGLONG nelem, float *array, int *status);
1575int CFITS_API ffpprd(fitsfile *fptr, long group, LONGLONG firstelem,
1576 LONGLONG nelem, double *array, int *status);
1577int CFITS_API ffpprjj(fitsfile *fptr, long group, LONGLONG firstelem,
1578 LONGLONG nelem, LONGLONG *array, int *status);
1579int CFITS_API ffpprujj(fitsfile *fptr, long group, LONGLONG firstelem,
1580 LONGLONG nelem, ULONGLONG *array, int *status);
1581
1582int CFITS_API ffppru(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1583 int *status);
1584int CFITS_API ffpprn(fitsfile *fptr, LONGLONG firstelem, LONGLONG nelem, int *status);
1585
1586int CFITS_API ffppn(fitsfile *fptr, int datatype, LONGLONG firstelem, LONGLONG nelem,
1587 void *array, void *nulval, int *status);
1588int CFITS_API ffppnb(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1589 unsigned char *array, unsigned char nulval, int *status);
1590int CFITS_API ffppnsb(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1591 signed char *array, signed char nulval, int *status);
1592int CFITS_API ffppnui(fitsfile *fptr, long group, LONGLONG firstelem,
1593 LONGLONG nelem, unsigned short *array, unsigned short nulval,
1594 int *status);
1595int CFITS_API ffppni(fitsfile *fptr, long group, LONGLONG firstelem,
1596 LONGLONG nelem, short *array, short nulval, int *status);
1597int CFITS_API ffppnj(fitsfile *fptr, long group, LONGLONG firstelem,
1598 LONGLONG nelem, long *array, long nulval, int *status);
1599int CFITS_API ffppnuj(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1600 unsigned long *array, unsigned long nulval, int *status);
1601int CFITS_API ffppnuk(fitsfile *fptr, long group, LONGLONG firstelem, LONGLONG nelem,
1602 unsigned int *array, unsigned int nulval, int *status);
1603int CFITS_API ffppnk(fitsfile *fptr, long group, LONGLONG firstelem,
1604 LONGLONG nelem, int *array, int nulval, int *status);
1605int CFITS_API ffppne(fitsfile *fptr, long group, LONGLONG firstelem,
1606 LONGLONG nelem, float *array, float nulval, int *status);
1607int CFITS_API ffppnd(fitsfile *fptr, long group, LONGLONG firstelem,
1608 LONGLONG nelem, double *array, double nulval, int *status);
1609int CFITS_API ffppnjj(fitsfile *fptr, long group, LONGLONG firstelem,
1610 LONGLONG nelem, LONGLONG *array, LONGLONG nulval, int *status);
1611int CFITS_API ffppnujj(fitsfile *fptr, long group, LONGLONG firstelem,
1612 LONGLONG nelem, ULONGLONG *array, ULONGLONG nulval, int *status);
1613
1614int CFITS_API ffp2db(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG naxis1,
1615 LONGLONG naxis2, unsigned char *array, int *status);
1616int CFITS_API ffp2dsb(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG naxis1,
1617 LONGLONG naxis2, signed char *array, int *status);
1618int CFITS_API ffp2dui(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG naxis1,
1619 LONGLONG naxis2, unsigned short *array, int *status);
1620int CFITS_API ffp2di(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG naxis1,
1621 LONGLONG naxis2, short *array, int *status);
1622int CFITS_API ffp2duj(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG naxis1,
1623 LONGLONG naxis2, unsigned long *array, int *status);
1624int CFITS_API ffp2dj(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG naxis1,
1625 LONGLONG naxis2, long *array, int *status);
1626int CFITS_API ffp2duk(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG naxis1,
1627 LONGLONG naxis2, unsigned int *array, int *status);
1628int CFITS_API ffp2dk(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG naxis1,
1629 LONGLONG naxis2, int *array, int *status);
1630int CFITS_API ffp2de(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG naxis1,
1631 LONGLONG naxis2, float *array, int *status);
1632int CFITS_API ffp2dd(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG naxis1,
1633 LONGLONG naxis2, double *array, int *status);
1634int CFITS_API ffp2djj(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG naxis1,
1635 LONGLONG naxis2, LONGLONG *array, int *status);
1636int CFITS_API ffp2dujj(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG naxis1,
1637 LONGLONG naxis2, ULONGLONG *array, int *status);
1638
1639int CFITS_API ffp3db(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG nrows, LONGLONG naxis1,
1640 LONGLONG naxis2, LONGLONG naxis3, unsigned char *array, int *status);
1641int CFITS_API ffp3dsb(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG nrows, LONGLONG naxis1,
1642 LONGLONG naxis2, LONGLONG naxis3, signed char *array, int *status);
1643int CFITS_API ffp3dui(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG nrows, LONGLONG naxis1,
1644 LONGLONG naxis2, LONGLONG naxis3, unsigned short *array, int *status);
1645int CFITS_API ffp3di(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG nrows, LONGLONG naxis1,
1646 LONGLONG naxis2, LONGLONG naxis3, short *array, int *status);
1647int CFITS_API ffp3duj(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG nrows, LONGLONG naxis1,
1648 LONGLONG naxis2, LONGLONG naxis3, unsigned long *array, int *status);
1649int CFITS_API ffp3dj(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG nrows, LONGLONG naxis1,
1650 LONGLONG naxis2, LONGLONG naxis3, long *array, int *status);
1651int CFITS_API ffp3duk(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG nrows, LONGLONG naxis1,
1652 LONGLONG naxis2, LONGLONG naxis3, unsigned int *array, int *status);
1653int CFITS_API ffp3dk(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG nrows, LONGLONG naxis1,
1654 LONGLONG naxis2, LONGLONG naxis3, int *array, int *status);
1655int CFITS_API ffp3de(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG nrows, LONGLONG naxis1,
1656 LONGLONG naxis2, LONGLONG naxis3, float *array, int *status);
1657int CFITS_API ffp3dd(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG nrows, LONGLONG naxis1,
1658 LONGLONG naxis2, LONGLONG naxis3, double *array, int *status);
1659int CFITS_API ffp3djj(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG nrows, LONGLONG naxis1,
1660 LONGLONG naxis2, LONGLONG naxis3, LONGLONG *array, int *status);
1661int CFITS_API ffp3dujj(fitsfile *fptr, long group, LONGLONG ncols, LONGLONG nrows, LONGLONG naxis1,
1662 LONGLONG naxis2, LONGLONG naxis3, ULONGLONG *array, int *status);
1663
1664int CFITS_API ffpss(fitsfile *fptr, int datatype,
1665 long *fpixel, long *lpixel, void *array, int *status);
1666int CFITS_API ffpssb(fitsfile *fptr, long group, long naxis, long *naxes,
1667 long *fpixel, long *lpixel, unsigned char *array, int *status);
1668int CFITS_API ffpsssb(fitsfile *fptr, long group, long naxis, long *naxes,
1669 long *fpixel, long *lpixel, signed char *array, int *status);
1670int CFITS_API ffpssui(fitsfile *fptr, long group, long naxis, long *naxes,
1671 long *fpixel, long *lpixel, unsigned short *array, int *status);
1672int CFITS_API ffpssi(fitsfile *fptr, long group, long naxis, long *naxes,
1673 long *fpixel, long *lpixel, short *array, int *status);
1674int CFITS_API ffpssuj(fitsfile *fptr, long group, long naxis, long *naxes,
1675 long *fpixel, long *lpixel, unsigned long *array, int *status);
1676int CFITS_API ffpssj(fitsfile *fptr, long group, long naxis, long *naxes,
1677 long *fpixel, long *lpixel, long *array, int *status);
1678int CFITS_API ffpssuk(fitsfile *fptr, long group, long naxis, long *naxes,
1679 long *fpixel, long *lpixel, unsigned int *array, int *status);
1680int CFITS_API ffpssk(fitsfile *fptr, long group, long naxis, long *naxes,
1681 long *fpixel, long *lpixel, int *array, int *status);
1682int CFITS_API ffpsse(fitsfile *fptr, long group, long naxis, long *naxes,
1683 long *fpixel, long *lpixel, float *array, int *status);
1684int CFITS_API ffpssd(fitsfile *fptr, long group, long naxis, long *naxes,
1685 long *fpixel, long *lpixel, double *array, int *status);
1686int CFITS_API ffpssjj(fitsfile *fptr, long group, long naxis, long *naxes,
1687 long *fpixel, long *lpixel, LONGLONG *array, int *status);
1688int CFITS_API ffpssujj(fitsfile *fptr, long group, long naxis, long *naxes,
1689 long *fpixel, long *lpixel, ULONGLONG *array, int *status);
1690
1691int CFITS_API ffpgpb(fitsfile *fptr, long group, long firstelem,
1692 long nelem, unsigned char *array, int *status);
1693int CFITS_API ffpgpsb(fitsfile *fptr, long group, long firstelem,
1694 long nelem, signed char *array, int *status);
1695int CFITS_API ffpgpui(fitsfile *fptr, long group, long firstelem,
1696 long nelem, unsigned short *array, int *status);
1697int CFITS_API ffpgpi(fitsfile *fptr, long group, long firstelem,
1698 long nelem, short *array, int *status);
1699int CFITS_API ffpgpuj(fitsfile *fptr, long group, long firstelem,
1700 long nelem, unsigned long *array, int *status);
1701int CFITS_API ffpgpj(fitsfile *fptr, long group, long firstelem,
1702 long nelem, long *array, int *status);
1703int CFITS_API ffpgpuk(fitsfile *fptr, long group, long firstelem,
1704 long nelem, unsigned int *array, int *status);
1705int CFITS_API ffpgpk(fitsfile *fptr, long group, long firstelem,
1706 long nelem, int *array, int *status);
1707int CFITS_API ffpgpe(fitsfile *fptr, long group, long firstelem,
1708 long nelem, float *array, int *status);
1709int CFITS_API ffpgpd(fitsfile *fptr, long group, long firstelem,
1710 long nelem, double *array, int *status);
1711int CFITS_API ffpgpjj(fitsfile *fptr, long group, long firstelem,
1712 long nelem, LONGLONG *array, int *status);
1713int CFITS_API ffpgpujj(fitsfile *fptr, long group, long firstelem,
1714 long nelem, ULONGLONG *array, int *status);
1715
1716/*--------------------- iterator functions -------------*/
1717int CFITS_API fits_iter_set_by_name(iteratorCol *col, fitsfile *fptr, char *colname,
1718 int datatype, int iotype);
1719int CFITS_API fits_iter_set_by_num(iteratorCol *col, fitsfile *fptr, int colnum,
1720 int datatype, int iotype);
1721int CFITS_API fits_iter_set_file(iteratorCol *col, fitsfile *fptr);
1722int CFITS_API fits_iter_set_colname(iteratorCol *col, char *colname);
1723int CFITS_API fits_iter_set_colnum(iteratorCol *col, int colnum);
1724int CFITS_API fits_iter_set_datatype(iteratorCol *col, int datatype);
1725int CFITS_API fits_iter_set_iotype(iteratorCol *col, int iotype);
1726
1727CFITS_API fitsfile * fits_iter_get_file(iteratorCol *col);
1728char CFITS_API * fits_iter_get_colname(iteratorCol *col);
1729int CFITS_API fits_iter_get_colnum(iteratorCol *col);
1730int CFITS_API fits_iter_get_datatype(iteratorCol *col);
1731int CFITS_API fits_iter_get_iotype(iteratorCol *col);
1732void CFITS_API *fits_iter_get_array(iteratorCol *col);
1733long CFITS_API fits_iter_get_tlmin(iteratorCol *col);
1734long CFITS_API fits_iter_get_tlmax(iteratorCol *col);
1735long CFITS_API fits_iter_get_repeat(iteratorCol *col);
1736char CFITS_API *fits_iter_get_tunit(iteratorCol *col);
1737char CFITS_API *fits_iter_get_tdisp(iteratorCol *col);
1738
1739int CFITS_API ffiter(int ncols, iteratorCol *data, long offset, long nPerLoop,
1740 int (*workFn)( long totaln, long offset, long firstn,
1741 long nvalues, int narrays, iteratorCol *data, void *userPointer),
1742 void *userPointer, int *status);
1743
1744/*--------------------- write column elements -------------*/
1745int CFITS_API ffpcl(fitsfile *fptr, int datatype, int colnum, LONGLONG firstrow,
1746 LONGLONG firstelem, LONGLONG nelem, void *array, int *status);
1747int CFITS_API ffpcls(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1748 LONGLONG nelem, char **array, int *status);
1749int CFITS_API ffpcll(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1750 LONGLONG nelem, char *array, int *status);
1751int CFITS_API ffpclb(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1752 LONGLONG nelem, unsigned char *array, int *status);
1753int CFITS_API ffpclsb(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1754 LONGLONG nelem, signed char *array, int *status);
1755int CFITS_API ffpclui(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1756 LONGLONG nelem, unsigned short *array, int *status);
1757int CFITS_API ffpcli(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1758 LONGLONG nelem, short *array, int *status);
1759int CFITS_API ffpcluj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1760 LONGLONG nelem, unsigned long *array, int *status);
1761int CFITS_API ffpclj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1762 LONGLONG nelem, long *array, int *status);
1763int CFITS_API ffpcluk(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1764 LONGLONG nelem, unsigned int *array, int *status);
1765int CFITS_API ffpclk(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1766 LONGLONG nelem, int *array, int *status);
1767int CFITS_API ffpcle(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1768 LONGLONG nelem, float *array, int *status);
1769int CFITS_API ffpcld(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1770 LONGLONG nelem, double *array, int *status);
1771int CFITS_API ffpclc(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1772 LONGLONG nelem, float *array, int *status);
1773int CFITS_API ffpclm(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1774 LONGLONG nelem, double *array, int *status);
1775int CFITS_API ffpclu(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1776 LONGLONG nelem, int *status);
1777int CFITS_API ffprwu(fitsfile *fptr, LONGLONG firstrow, LONGLONG nrows, int *status);
1778int CFITS_API ffpcljj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1779 LONGLONG nelem, LONGLONG *array, int *status);
1780int CFITS_API ffpclujj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1781 LONGLONG nelem, ULONGLONG *array, int *status);
1782int CFITS_API ffpclx(fitsfile *fptr, int colnum, LONGLONG frow, long fbit, long nbit,
1783 char *larray, int *status);
1784
1785int CFITS_API ffpcn(fitsfile *fptr, int datatype, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1786 LONGLONG nelem, void *array, void *nulval, int *status);
1787int CFITS_API ffpcns( fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1788 LONGLONG nelem, char **array, char *nulvalue, int *status);
1789int CFITS_API ffpcnl( fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1790 LONGLONG nelem, char *array, char nulvalue, int *status);
1791int CFITS_API ffpcnb(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1792 LONGLONG nelem, unsigned char *array, unsigned char nulvalue,
1793 int *status);
1794int CFITS_API ffpcnsb(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1795 LONGLONG nelem, signed char *array, signed char nulvalue,
1796 int *status);
1797int CFITS_API ffpcnui(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1798 LONGLONG nelem, unsigned short *array, unsigned short nulvalue,
1799 int *status);
1800int CFITS_API ffpcni(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1801 LONGLONG nelem, short *array, short nulvalue, int *status);
1802int CFITS_API ffpcnuj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1803 LONGLONG nelem, unsigned long *array, unsigned long nulvalue,
1804 int *status);
1805int CFITS_API ffpcnj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1806 LONGLONG nelem, long *array, long nulvalue, int *status);
1807int CFITS_API ffpcnuk(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1808 LONGLONG nelem, unsigned int *array, unsigned int nulvalue,
1809 int *status);
1810int CFITS_API ffpcnk(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1811 LONGLONG nelem, int *array, int nulvalue, int *status);
1812int CFITS_API ffpcne(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1813 LONGLONG nelem, float *array, float nulvalue, int *status);
1814int CFITS_API ffpcnd(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1815 LONGLONG nelem, double *array, double nulvalue, int *status);
1816int CFITS_API ffpcnjj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1817 LONGLONG nelem, LONGLONG *array, LONGLONG nulvalue, int *status);
1818int CFITS_API ffpcnujj(fitsfile *fptr, int colnum, LONGLONG firstrow, LONGLONG firstelem,
1819 LONGLONG nelem, ULONGLONG *array, ULONGLONG nulvalue, int *status);
1820int CFITS_API ffptbb(fitsfile *fptr, LONGLONG firstrow, LONGLONG firstchar, LONGLONG nchars,
1821 unsigned char *values, int *status);
1822
1823int CFITS_API ffirow(fitsfile *fptr, LONGLONG firstrow, LONGLONG nrows, int *status);
1824int CFITS_API ffdrow(fitsfile *fptr, LONGLONG firstrow, LONGLONG nrows, int *status);
1825int CFITS_API ffdrrg(fitsfile *fptr, char *ranges, int *status);
1826int CFITS_API ffdrws(fitsfile *fptr, long *rownum, long nrows, int *status);
1827int CFITS_API ffdrwsll(fitsfile *fptr, LONGLONG *rownum, LONGLONG nrows, int *status);
1828int CFITS_API fficol(fitsfile *fptr, int numcol, char *ttype, char *tform, int *status);
1829int CFITS_API fficls(fitsfile *fptr, int firstcol, int ncols, char **ttype,
1830 char **tform, int *status);
1831int CFITS_API ffmvec(fitsfile *fptr, int colnum, LONGLONG newveclen, int *status);
1832int CFITS_API ffdcol(fitsfile *fptr, int numcol, int *status);
1833int CFITS_API ffcpcl(fitsfile *infptr, fitsfile *outfptr, int incol, int outcol,
1834 int create_col, int *status);
1835int CFITS_API ffccls(fitsfile *infptr, fitsfile *outfptr, int incol, int outcol,
1836 int ncols, int create_col, int *status);
1837int CFITS_API ffcprw(fitsfile *infptr, fitsfile *outfptr, LONGLONG firstrow,
1838 LONGLONG nrows, int *status);
1839
1840/*--------------------- WCS Utilities ------------------*/
1841int CFITS_API ffgics(fitsfile *fptr, double *xrval, double *yrval, double *xrpix,
1842 double *yrpix, double *xinc, double *yinc, double *rot,
1843 char *type, int *status);
1844int CFITS_API ffgicsa(fitsfile *fptr, char version, double *xrval, double *yrval, double *xrpix,
1845 double *yrpix, double *xinc, double *yinc, double *rot,
1846 char *type, int *status);
1847int CFITS_API ffgtcs(fitsfile *fptr, int xcol, int ycol, double *xrval,
1848 double *yrval, double *xrpix, double *yrpix, double *xinc,
1849 double *yinc, double *rot, char *type, int *status);
1850int CFITS_API ffwldp(double xpix, double ypix, double xref, double yref,
1851 double xrefpix, double yrefpix, double xinc, double yinc,
1852 double rot, char *type, double *xpos, double *ypos, int *status);
1853int CFITS_API ffxypx(double xpos, double ypos, double xref, double yref,
1854 double xrefpix, double yrefpix, double xinc, double yinc,
1855 double rot, char *type, double *xpix, double *ypix, int *status);
1856
1857/* WCS support routines (provide interface to Doug Mink's WCS library */
1858int CFITS_API ffgiwcs(fitsfile *fptr, char **header, int *status);
1859int CFITS_API ffgtwcs(fitsfile *fptr, int xcol, int ycol, char **header, int *status);
1860
1861/*--------------------- lexical parsing routines ------------------*/
1862int CFITS_API fftexp( fitsfile *fptr, char *expr, int maxdim,
1863 int *datatype, long *nelem, int *naxis,
1864 long *naxes, int *status );
1865
1866int CFITS_API fffrow( fitsfile *infptr, char *expr,
1867 long firstrow, long nrows,
1868 long *n_good_rows, char *row_status, int *status);
1869
1870int CFITS_API ffffrw( fitsfile *fptr, char *expr, long *rownum, int *status);
1871
1872int CFITS_API fffrwc( fitsfile *fptr, char *expr, char *timeCol,
1873 char *parCol, char *valCol, long ntimes,
1874 double *times, char *time_status, int *status );
1875
1876int CFITS_API ffsrow( fitsfile *infptr, fitsfile *outfptr, char *expr,
1877 int *status);
1878
1879int CFITS_API ffcrow( fitsfile *fptr, int datatype, char *expr,
1880 long firstrow, long nelements, void *nulval,
1881 void *array, int *anynul, int *status );
1882
1883int CFITS_API ffcalc_rng( fitsfile *infptr, char *expr, fitsfile *outfptr,
1884 char *parName, char *parInfo, int nRngs,
1885 long *start, long *end, int *status );
1886
1887int CFITS_API ffcalc( fitsfile *infptr, char *expr, fitsfile *outfptr,
1888 char *parName, char *parInfo, int *status );
1889
1890 /* ffhist is not really intended as a user-callable routine */
1891 /* but it may be useful for some specialized applications */
1892 /* ffhist2 is a newer version which is strongly recommended instead of ffhist */
1893
1894int CFITS_API ffhist(fitsfile **fptr, char *outfile, int imagetype, int naxis,
1895 char colname[4][FLEN_VALUE],
1896 double *minin, double *maxin, double *binsizein,
1897 char minname[4][FLEN_VALUE], char maxname[4][FLEN_VALUE],
1898 char binname[4][FLEN_VALUE],
1899 double weightin, char wtcol[FLEN_VALUE],
1900 int recip, char *rowselect, int *status);
1901int CFITS_API ffhist2(fitsfile **fptr, char *outfile, int imagetype, int naxis,
1902 char colname[4][FLEN_VALUE],
1903 double *minin, double *maxin, double *binsizein,
1904 char minname[4][FLEN_VALUE], char maxname[4][FLEN_VALUE],
1905 char binname[4][FLEN_VALUE],
1906 double weightin, char wtcol[FLEN_VALUE],
1907 int recip, char *rowselect, int *status);
1908CFITS_API fitsfile *ffhist3(fitsfile *fptr,
1909 char *outfile, int imagetype, int naxis,
1910 char colname[4][FLEN_VALUE],
1911 double *minin,
1912 double *maxin,
1913 double *binsizein,
1914 char minname[4][FLEN_VALUE],
1915 char maxname[4][FLEN_VALUE],
1916 char binname[4][FLEN_VALUE],
1917 double weightin,
1918 char wtcol[FLEN_VALUE],
1919 int recip,
1920 char *selectrow,
1921 int *status);
1922int CFITS_API fits_select_image_section(fitsfile **fptr, char *outfile,
1923 char *imagesection, int *status);
1924int CFITS_API fits_copy_image_section(fitsfile *infptr, fitsfile *outfile,
1925 char *imagesection, int *status);
1926
1927int CFITS_API fits_calc_binning(fitsfile *fptr, int naxis, char colname[4][FLEN_VALUE],
1928 double *minin, double *maxin, double *binsizein,
1929 char minname[4][FLEN_VALUE], char maxname[4][FLEN_VALUE],
1930 char binname[4][FLEN_VALUE], int *colnum, long *haxes,
1931 float *amin, float *amax, float *binsize, int *status);
1932int CFITS_API fits_calc_binningd(fitsfile *fptr, int naxis, char colname[4][FLEN_VALUE],
1933 double *minin, double *maxin, double *binsizein,
1934 char minname[4][FLEN_VALUE], char maxname[4][FLEN_VALUE],
1935 char binname[4][FLEN_VALUE], int *colnum, long *haxes,
1936 double *amin, double *amax, double *binsize, int *status);
1937
1938int CFITS_API fits_write_keys_histo(fitsfile *fptr, fitsfile *histptr,
1939 int naxis, int *colnum, int *status);
1940int CFITS_API fits_rebin_wcs( fitsfile *fptr, int naxis, float *amin, float *binsize,
1941 int *status);
1942int CFITS_API fits_rebin_wcsd( fitsfile *fptr, int naxis, double *amin, double *binsize,
1943 int *status);
1944int CFITS_API fits_make_hist(fitsfile *fptr, fitsfile *histptr, int bitpix,int naxis,
1945 long *naxes, int *colnum, float *amin, float *amax, float *binsize,
1946 float weight, int wtcolnum, int recip, char *selectrow, int *status);
1947int CFITS_API fits_make_histd(fitsfile *fptr, fitsfile *histptr, int bitpix,int naxis,
1948 long *naxes, int *colnum, double *amin, double *amax, double *binsize,
1949 double weight, int wtcolnum, int recip, char *selectrow, int *status);
1950
1951typedef struct
1952{
1953 /* input(s) */
1954 int count;
1955 char ** path;
1956 char ** tag;
1957 fitsfile ** ifptr;
1958
1959 char * expression;
1960
1961 /* output control */
1962 int bitpix;
1963 long blank;
1964 fitsfile * ofptr;
1965 char keyword[FLEN_KEYWORD];
1966 char comment[FLEN_COMMENT];
1967} PixelFilter;
1968
1969
1970int CFITS_API fits_pixel_filter (PixelFilter * filter, int * status);
1971
1972
1973/*--------------------- grouping routines ------------------*/
1974
1975int CFITS_API ffgtcr(fitsfile *fptr, char *grpname, int grouptype, int *status);
1976int CFITS_API ffgtis(fitsfile *fptr, char *grpname, int grouptype, int *status);
1977int CFITS_API ffgtch(fitsfile *gfptr, int grouptype, int *status);
1978int CFITS_API ffgtrm(fitsfile *gfptr, int rmopt, int *status);
1979int CFITS_API ffgtcp(fitsfile *infptr, fitsfile *outfptr, int cpopt, int *status);
1980int CFITS_API ffgtmg(fitsfile *infptr, fitsfile *outfptr, int mgopt, int *status);
1981int CFITS_API ffgtcm(fitsfile *gfptr, int cmopt, int *status);
1982int CFITS_API ffgtvf(fitsfile *gfptr, long *firstfailed, int *status);
1983int CFITS_API ffgtop(fitsfile *mfptr,int group,fitsfile **gfptr,int *status);
1984int CFITS_API ffgtam(fitsfile *gfptr, fitsfile *mfptr, int hdupos, int *status);
1985int CFITS_API ffgtnm(fitsfile *gfptr, long *nmembers, int *status);
1986int CFITS_API ffgmng(fitsfile *mfptr, long *nmembers, int *status);
1987int CFITS_API ffgmop(fitsfile *gfptr, long member, fitsfile **mfptr, int *status);
1988int CFITS_API ffgmcp(fitsfile *gfptr, fitsfile *mfptr, long member, int cpopt,
1989 int *status);
1990int CFITS_API ffgmtf(fitsfile *infptr, fitsfile *outfptr, long member, int tfopt,
1991 int *status);
1992int CFITS_API ffgmrm(fitsfile *fptr, long member, int rmopt, int *status);
1993
1994/*--------------------- group template parser routines ------------------*/
1995
1996int CFITS_API fits_execute_template(fitsfile *ff, char *ngp_template, int *status);
1997
1998int CFITS_API fits_img_stats_short(short *array,long nx, long ny, int nullcheck,
1999 short nullvalue,long *ngoodpix, short *minvalue, short *maxvalue, double *mean,
2000 double *sigma, double *noise1, double *noise2, double *noise3, double *noise5, int *status);
2001int CFITS_API fits_img_stats_int(int *array,long nx, long ny, int nullcheck,
2002 int nullvalue,long *ngoodpix, int *minvalue, int *maxvalue, double *mean,
2003 double *sigma, double *noise1, double *noise2, double *noise3, double *noise5, int *status);
2004int CFITS_API fits_img_stats_float(float *array, long nx, long ny, int nullcheck,
2005 float nullvalue,long *ngoodpix, float *minvalue, float *maxvalue, double *mean,
2006 double *sigma, double *noise1, double *noise2, double *noise3, double *noise5, int *status);
2007
2008/*--------------------- image compression routines ------------------*/
2009
2010int CFITS_API fits_set_compression_type(fitsfile *fptr, int ctype, int *status);
2011int CFITS_API fits_set_tile_dim(fitsfile *fptr, int ndim, long *dims, int *status);
2012int CFITS_API fits_set_noise_bits(fitsfile *fptr, int noisebits, int *status);
2013int CFITS_API fits_set_quantize_level(fitsfile *fptr, float qlevel, int *status);
2014int CFITS_API fits_set_hcomp_scale(fitsfile *fptr, float scale, int *status);
2015int CFITS_API fits_set_hcomp_smooth(fitsfile *fptr, int smooth, int *status);
2016int CFITS_API fits_set_quantize_method(fitsfile *fptr, int method, int *status);
2017int CFITS_API fits_set_quantize_dither(fitsfile *fptr, int dither, int *status);
2018int CFITS_API fits_set_dither_seed(fitsfile *fptr, int seed, int *status);
2019int CFITS_API fits_set_dither_offset(fitsfile *fptr, int offset, int *status);
2020int CFITS_API fits_set_lossy_int(fitsfile *fptr, int lossy_int, int *status);
2021int CFITS_API fits_set_huge_hdu(fitsfile *fptr, int huge, int *status);
2022int CFITS_API fits_set_compression_pref(fitsfile *infptr, fitsfile *outfptr, int *status);
2023
2024int CFITS_API fits_get_compression_type(fitsfile *fptr, int *ctype, int *status);
2025int CFITS_API fits_get_tile_dim(fitsfile *fptr, int ndim, long *dims, int *status);
2026int CFITS_API fits_get_quantize_level(fitsfile *fptr, float *qlevel, int *status);
2027int CFITS_API fits_get_noise_bits(fitsfile *fptr, int *noisebits, int *status);
2028int CFITS_API fits_get_hcomp_scale(fitsfile *fptr, float *scale, int *status);
2029int CFITS_API fits_get_hcomp_smooth(fitsfile *fptr, int *smooth, int *status);
2030int CFITS_API fits_get_dither_seed(fitsfile *fptr, int *seed, int *status);
2031
2032int CFITS_API fits_img_compress(fitsfile *infptr, fitsfile *outfptr, int *status);
2033int CFITS_API fits_compress_img(fitsfile *infptr, fitsfile *outfptr, int compress_type,
2034 long *tilesize, int parm1, int parm2, int *status);
2035int CFITS_API fits_is_compressed_image(fitsfile *fptr, int *status);
2036int CFITS_API fits_is_reentrant(void);
2037int CFITS_API fits_decompress_img (fitsfile *infptr, fitsfile *outfptr, int *status);
2038int CFITS_API fits_img_decompress_header(fitsfile *infptr, fitsfile *outfptr, int *status);
2039int CFITS_API fits_img_decompress (fitsfile *infptr, fitsfile *outfptr, int *status);
2040
2041/* H-compress routines */
2042int CFITS_API fits_hcompress(int *a, int nx, int ny, int scale, char *output,
2043 long *nbytes, int *status);
2044int CFITS_API fits_hcompress64(LONGLONG *a, int nx, int ny, int scale, char *output,
2045 long *nbytes, int *status);
2046int CFITS_API fits_hdecompress(unsigned char *input, int smooth, int *a, int *nx,
2047 int *ny, int *scale, int *status);
2048int CFITS_API fits_hdecompress64(unsigned char *input, int smooth, LONGLONG *a, int *nx,
2049 int *ny, int *scale, int *status);
2050
2051int CFITS_API fits_compress_table (fitsfile *infptr, fitsfile *outfptr, int *status);
2052int CFITS_API fits_uncompress_table(fitsfile *infptr, fitsfile *outfptr, int *status);
2053
2054/* curl library wrapper routines (for https access) */
2055int CFITS_API fits_init_https(void);
2056int CFITS_API fits_cleanup_https(void);
2057void CFITS_API fits_verbose_https(int flag);
2058
2059/* The following exclusion if __CINT__ is defined is needed for ROOT */
2060#ifndef __CINT__
2061#ifdef __cplusplus
2062}
2063#endif
2064#endif
2065
2066#endif
2067
Definition: fitsio.h:357
Definition: fitsio.h:1952
Definition: fitsio.h:453
Definition: fitsio.h:459
Definition: fitsio.h:341
Definition: fitsio.h:519