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