#include <stdlib.h>
#include "fitsio2.h"
int ffgpxv( fitsfile *fptr,
int datatype,
long *firstpix,
LONGLONG nelem,
void *nulval,
void *array,
int *anynul,
int *status)
{
LONGLONG tfirstpix[99];
int naxis, ii;
if (*status > 0 || nelem == 0)
return(*status);
ffgidm(fptr, &naxis, status);
for (ii=0; ii < naxis; ii++)
tfirstpix[ii] = firstpix[ii];
ffgpxvll(fptr, datatype, tfirstpix, nelem, nulval, array, anynul, status);
return(*status);
}
int ffgpxvll( fitsfile *fptr,
int datatype,
LONGLONG *firstpix,
LONGLONG nelem,
void *nulval,
void *array,
int *anynul,
int *status)
{
int naxis, ii;
char cdummy;
int nullcheck = 1;
LONGLONG naxes[9], trc[9]= {1,1,1,1,1,1,1,1,1};
long inc[9]= {1,1,1,1,1,1,1,1,1};
LONGLONG dimsize = 1, firstelem;
if (*status > 0 || nelem == 0)
return(*status);
ffgidm(fptr, &naxis, status);
ffgiszll(fptr, 9, naxes, status);
if (naxis == 0 || naxes[0] == 0) {
*status = BAD_DIMEN;
return(*status);
}
firstelem = 0;
for (ii=0; ii < naxis; ii++)
{
firstelem += ((firstpix[ii] - 1) * dimsize);
dimsize *= naxes[ii];
trc[ii] = firstpix[ii];
}
firstelem++;
if (fits_is_compressed_image(fptr, status))
{
if (naxis > 1 && naxis < 4 && firstpix[0] == 1 &&
(nelem / naxes[0]) * naxes[0] == nelem) {
trc[0] = naxes[0];
trc[1] = firstpix[1] + (nelem / naxes[0] - 1);
while (trc[1] > naxes[1]) {
trc[1] = trc[1] - naxes[1];
trc[2] = trc[2] + 1;
}
fits_read_compressed_img(fptr, datatype, firstpix, trc, inc,
1, nulval, array, NULL, anynul, status);
} else {
fits_read_compressed_pixels(fptr, datatype, firstelem,
nelem, nullcheck, nulval, array, NULL, anynul, status);
}
return(*status);
}
if (datatype == TBYTE)
{
if (nulval == 0)
ffgclb(fptr, 2, 1, firstelem, nelem, 1, 1, 0,
(unsigned char *) array, &cdummy, anynul, status);
else
ffgclb(fptr, 2, 1, firstelem, nelem, 1, 1, *(unsigned char *) nulval,
(unsigned char *) array, &cdummy, anynul, status);
}
else if (datatype == TSBYTE)
{
if (nulval == 0)
ffgclsb(fptr, 2, 1, firstelem, nelem, 1, 1, 0,
(signed char *) array, &cdummy, anynul, status);
else
ffgclsb(fptr, 2, 1, firstelem, nelem, 1, 1, *(signed char *) nulval,
(signed char *) array, &cdummy, anynul, status);
}
else if (datatype == TUSHORT)
{
if (nulval == 0)
ffgclui(fptr, 2, 1, firstelem, nelem, 1, 1, 0,
(unsigned short *) array, &cdummy, anynul, status);
else
ffgclui(fptr, 2, 1, firstelem, nelem, 1, 1, *(unsigned short *) nulval,
(unsigned short *) array, &cdummy, anynul, status);
}
else if (datatype == TSHORT)
{
if (nulval == 0)
ffgcli(fptr, 2, 1, firstelem, nelem, 1, 1, 0,
(short *) array, &cdummy, anynul, status);
else
ffgcli(fptr, 2, 1, firstelem, nelem, 1, 1, *(short *) nulval,
(short *) array, &cdummy, anynul, status);
}
else if (datatype == TUINT)
{
if (nulval == 0)
ffgcluk(fptr, 2, 1, firstelem, nelem, 1, 1, 0,
(unsigned int *) array, &cdummy, anynul, status);
else
ffgcluk(fptr, 2, 1, firstelem, nelem, 1, 1, *(unsigned int *) nulval,
(unsigned int *) array, &cdummy, anynul, status);
}
else if (datatype == TINT)
{
if (nulval == 0)
ffgclk(fptr, 2, 1, firstelem, nelem, 1, 1, 0,
(int *) array, &cdummy, anynul, status);
else
ffgclk(fptr, 2, 1, firstelem, nelem, 1, 1, *(int *) nulval,
(int *) array, &cdummy, anynul, status);
}
else if (datatype == TULONG)
{
if (nulval == 0)
ffgcluj(fptr, 2, 1, firstelem, nelem, 1, 1, 0,
(unsigned long *) array, &cdummy, anynul, status);
else
ffgcluj(fptr, 2, 1, firstelem, nelem, 1, 1, *(unsigned long *) nulval,
(unsigned long *) array, &cdummy, anynul, status);
}
else if (datatype == TLONG)
{
if (nulval == 0)
ffgclj(fptr, 2, 1, firstelem, nelem, 1, 1, 0,
(long *) array, &cdummy, anynul, status);
else
ffgclj(fptr, 2, 1, firstelem, nelem, 1, 1, *(long *) nulval,
(long *) array, &cdummy, anynul, status);
}
else if (datatype == TULONGLONG)
{
if (nulval == 0)
ffgclujj(fptr, 2, 1, firstelem, nelem, 1, 1, 0,
(ULONGLONG *) array, &cdummy, anynul, status);
else
ffgclujj(fptr, 2, 1, firstelem, nelem, 1, 1, *(ULONGLONG *) nulval,
(ULONGLONG *) array, &cdummy, anynul, status);
}
else if (datatype == TLONGLONG)
{
if (nulval == 0)
ffgcljj(fptr, 2, 1, firstelem, nelem, 1, 1, 0,
(LONGLONG *) array, &cdummy, anynul, status);
else
ffgcljj(fptr, 2, 1, firstelem, nelem, 1, 1, *(LONGLONG *) nulval,
(LONGLONG *) array, &cdummy, anynul, status);
}
else if (datatype == TFLOAT)
{
if (nulval == 0)
ffgcle(fptr, 2, 1, firstelem, nelem, 1, 1, 0,
(float *) array, &cdummy, anynul, status);
else
ffgcle(fptr, 2, 1, firstelem, nelem, 1, 1, *(float *) nulval,
(float *) array, &cdummy, anynul, status);
}
else if (datatype == TDOUBLE)
{
if (nulval == 0)
ffgcld(fptr, 2, 1, firstelem, nelem, 1, 1, 0,
(double *) array, &cdummy, anynul, status);
else
ffgcld(fptr, 2, 1, firstelem, nelem, 1, 1, *(double *) nulval,
(double *) array, &cdummy, anynul, status);
}
else
*status = BAD_DATATYPE;
return(*status);
}
int ffgpxf( fitsfile *fptr,
int datatype,
long *firstpix,
LONGLONG nelem,
void *array,
char *nullarray,
int *anynul,
int *status)
{
LONGLONG tfirstpix[99];
int naxis, ii;
if (*status > 0 || nelem == 0)
return(*status);
ffgidm(fptr, &naxis, status);
for (ii=0; ii < naxis; ii++)
tfirstpix[ii] = firstpix[ii];
ffgpxfll(fptr, datatype, tfirstpix, nelem, array, nullarray, anynul, status);
return(*status);
}
int ffgpxfll( fitsfile *fptr,
int datatype,
LONGLONG *firstpix,
LONGLONG nelem,
void *array,
char *nullarray,
int *anynul,
int *status)
{
int naxis, ii;
int nullcheck = 2;
LONGLONG naxes[9];
LONGLONG dimsize = 1, firstelem;
if (*status > 0 || nelem == 0)
return(*status);
ffgidm(fptr, &naxis, status);
ffgiszll(fptr, 9, naxes, status);
firstelem = 0;
for (ii=0; ii < naxis; ii++)
{
firstelem += ((firstpix[ii] - 1) * dimsize);
dimsize *= naxes[ii];
}
firstelem++;
if (fits_is_compressed_image(fptr, status))
{
fits_read_compressed_pixels(fptr, datatype, firstelem, nelem,
nullcheck, NULL, array, nullarray, anynul, status);
return(*status);
}
if (datatype == TBYTE)
{
ffgclb(fptr, 2, 1, firstelem, nelem, 1, 2, 0,
(unsigned char *) array, nullarray, anynul, status);
}
else if (datatype == TSBYTE)
{
ffgclsb(fptr, 2, 1, firstelem, nelem, 1, 2, 0,
(signed char *) array, nullarray, anynul, status);
}
else if (datatype == TUSHORT)
{
ffgclui(fptr, 2, 1, firstelem, nelem, 1, 2, 0,
(unsigned short *) array, nullarray, anynul, status);
}
else if (datatype == TSHORT)
{
ffgcli(fptr, 2, 1, firstelem, nelem, 1, 2, 0,
(short *) array, nullarray, anynul, status);
}
else if (datatype == TUINT)
{
ffgcluk(fptr, 2, 1, firstelem, nelem, 1, 2, 0,
(unsigned int *) array, nullarray, anynul, status);
}
else if (datatype == TINT)
{
ffgclk(fptr, 2, 1, firstelem, nelem, 1, 2, 0,
(int *) array, nullarray, anynul, status);
}
else if (datatype == TULONG)
{
ffgcluj(fptr, 2, 1, firstelem, nelem, 1, 2, 0,
(unsigned long *) array, nullarray, anynul, status);
}
else if (datatype == TLONG)
{
ffgclj(fptr, 2, 1, firstelem, nelem, 1, 2, 0,
(long *) array, nullarray, anynul, status);
}
else if (datatype == TULONGLONG)
{
ffgclujj(fptr, 2, 1, firstelem, nelem, 1, 2, 0,
(ULONGLONG *) array, nullarray, anynul, status);
}
else if (datatype == TLONGLONG)
{
ffgcljj(fptr, 2, 1, firstelem, nelem, 1, 2, 0,
(LONGLONG *) array, nullarray, anynul, status);
}
else if (datatype == TFLOAT)
{
ffgcle(fptr, 2, 1, firstelem, nelem, 1, 2, 0,
(float *) array, nullarray, anynul, status);
}
else if (datatype == TDOUBLE)
{
ffgcld(fptr, 2, 1, firstelem, nelem, 1, 2, 0,
(double *) array, nullarray, anynul, status);
}
else
*status = BAD_DATATYPE;
return(*status);
}
int ffgsv( fitsfile *fptr,
int datatype,
long *blc,
long *trc ,
long *inc,
void *nulval,
void *array,
int *anynul,
int *status)
{
int naxis, ii;
long naxes[9];
LONGLONG nelem = 1;
if (*status > 0)
return(*status);
ffgidm(fptr, &naxis, status);
ffgisz(fptr, 9, naxes, status);
if (!fits_is_compressed_image(fptr, status)) {
for (ii = 0; ii < naxis; ii++) {
if (inc[ii] != 1 || blc[ii] !=1 || trc[ii] != naxes[ii])
break;
nelem = nelem * naxes[ii];
}
if (ii == naxis) {
ffgpxv(fptr, datatype, blc, nelem, nulval, array, anynul, status);
return(*status);
}
}
if (datatype == TBYTE)
{
if (nulval == 0)
ffgsvb(fptr, 1, naxis, naxes, blc, trc, inc, 0,
(unsigned char *) array, anynul, status);
else
ffgsvb(fptr, 1, naxis, naxes, blc, trc, inc, *(unsigned char *) nulval,
(unsigned char *) array, anynul, status);
}
else if (datatype == TSBYTE)
{
if (nulval == 0)
ffgsvsb(fptr, 1, naxis, naxes, blc, trc, inc, 0,
(signed char *) array, anynul, status);
else
ffgsvsb(fptr, 1, naxis, naxes, blc, trc, inc, *(signed char *) nulval,
(signed char *) array, anynul, status);
}
else if (datatype == TUSHORT)
{
if (nulval == 0)
ffgsvui(fptr, 1, naxis, naxes, blc, trc, inc, 0,
(unsigned short *) array, anynul, status);
else
ffgsvui(fptr, 1, naxis, naxes,blc, trc, inc, *(unsigned short *) nulval,
(unsigned short *) array, anynul, status);
}
else if (datatype == TSHORT)
{
if (nulval == 0)
ffgsvi(fptr, 1, naxis, naxes, blc, trc, inc, 0,
(short *) array, anynul, status);
else
ffgsvi(fptr, 1, naxis, naxes, blc, trc, inc, *(short *) nulval,
(short *) array, anynul, status);
}
else if (datatype == TUINT)
{
if (nulval == 0)
ffgsvuk(fptr, 1, naxis, naxes, blc, trc, inc, 0,
(unsigned int *) array, anynul, status);
else
ffgsvuk(fptr, 1, naxis, naxes, blc, trc, inc, *(unsigned int *) nulval,
(unsigned int *) array, anynul, status);
}
else if (datatype == TINT)
{
if (nulval == 0)
ffgsvk(fptr, 1, naxis, naxes, blc, trc, inc, 0,
(int *) array, anynul, status);
else
ffgsvk(fptr, 1, naxis, naxes, blc, trc, inc, *(int *) nulval,
(int *) array, anynul, status);
}
else if (datatype == TULONG)
{
if (nulval == 0)
ffgsvuj(fptr, 1, naxis, naxes, blc, trc, inc, 0,
(unsigned long *) array, anynul, status);
else
ffgsvuj(fptr, 1, naxis, naxes, blc, trc, inc, *(unsigned long *) nulval,
(unsigned long *) array, anynul, status);
}
else if (datatype == TLONG)
{
if (nulval == 0)
ffgsvj(fptr, 1, naxis, naxes, blc, trc, inc, 0,
(long *) array, anynul, status);
else
ffgsvj(fptr, 1, naxis, naxes, blc, trc, inc, *(long *) nulval,
(long *) array, anynul, status);
}
else if (datatype == TULONGLONG)
{
if (nulval == 0)
ffgsvujj(fptr, 1, naxis, naxes, blc, trc, inc, 0,
(ULONGLONG *) array, anynul, status);
else
ffgsvujj(fptr, 1, naxis, naxes, blc, trc, inc, *(ULONGLONG *) nulval,
(ULONGLONG *) array, anynul, status);
}
else if (datatype == TLONGLONG)
{
if (nulval == 0)
ffgsvjj(fptr, 1, naxis, naxes, blc, trc, inc, 0,
(LONGLONG *) array, anynul, status);
else
ffgsvjj(fptr, 1, naxis, naxes, blc, trc, inc, *(LONGLONG *) nulval,
(LONGLONG *) array, anynul, status);
}
else if (datatype == TFLOAT)
{
if (nulval == 0)
ffgsve(fptr, 1, naxis, naxes, blc, trc, inc, 0,
(float *) array, anynul, status);
else
ffgsve(fptr, 1, naxis, naxes, blc, trc, inc, *(float *) nulval,
(float *) array, anynul, status);
}
else if (datatype == TDOUBLE)
{
if (nulval == 0)
ffgsvd(fptr, 1, naxis, naxes, blc, trc, inc, 0,
(double *) array, anynul, status);
else
ffgsvd(fptr, 1, naxis, naxes, blc, trc, inc, *(double *) nulval,
(double *) array, anynul, status);
}
else
*status = BAD_DATATYPE;
return(*status);
}
int ffgpv( fitsfile *fptr,
int datatype,
LONGLONG firstelem,
LONGLONG nelem,
void *nulval,
void *array,
int *anynul,
int *status)
{
if (*status > 0 || nelem == 0)
return(*status);
if (datatype == TBYTE)
{
if (nulval == 0)
ffgpvb(fptr, 1, firstelem, nelem, 0,
(unsigned char *) array, anynul, status);
else
ffgpvb(fptr, 1, firstelem, nelem, *(unsigned char *) nulval,
(unsigned char *) array, anynul, status);
}
else if (datatype == TSBYTE)
{
if (nulval == 0)
ffgpvsb(fptr, 1, firstelem, nelem, 0,
(signed char *) array, anynul, status);
else
ffgpvsb(fptr, 1, firstelem, nelem, *(signed char *) nulval,
(signed char *) array, anynul, status);
}
else if (datatype == TUSHORT)
{
if (nulval == 0)
ffgpvui(fptr, 1, firstelem, nelem, 0,
(unsigned short *) array, anynul, status);
else
ffgpvui(fptr, 1, firstelem, nelem, *(unsigned short *) nulval,
(unsigned short *) array, anynul, status);
}
else if (datatype == TSHORT)
{
if (nulval == 0)
ffgpvi(fptr, 1, firstelem, nelem, 0,
(short *) array, anynul, status);
else
ffgpvi(fptr, 1, firstelem, nelem, *(short *) nulval,
(short *) array, anynul, status);
}
else if (datatype == TUINT)
{
if (nulval == 0)
ffgpvuk(fptr, 1, firstelem, nelem, 0,
(unsigned int *) array, anynul, status);
else
ffgpvuk(fptr, 1, firstelem, nelem, *(unsigned int *) nulval,
(unsigned int *) array, anynul, status);
}
else if (datatype == TINT)
{
if (nulval == 0)
ffgpvk(fptr, 1, firstelem, nelem, 0,
(int *) array, anynul, status);
else
ffgpvk(fptr, 1, firstelem, nelem, *(int *) nulval,
(int *) array, anynul, status);
}
else if (datatype == TULONG)
{
if (nulval == 0)
ffgpvuj(fptr, 1, firstelem, nelem, 0,
(unsigned long *) array, anynul, status);
else
ffgpvuj(fptr, 1, firstelem, nelem, *(unsigned long *) nulval,
(unsigned long *) array, anynul, status);
}
else if (datatype == TLONG)
{
if (nulval == 0)
ffgpvj(fptr, 1, firstelem, nelem, 0,
(long *) array, anynul, status);
else
ffgpvj(fptr, 1, firstelem, nelem, *(long *) nulval,
(long *) array, anynul, status);
}
else if (datatype == TULONGLONG)
{
if (nulval == 0)
ffgpvujj(fptr, 1, firstelem, nelem, 0,
(ULONGLONG *) array, anynul, status);
else
ffgpvujj(fptr, 1, firstelem, nelem, *(ULONGLONG *) nulval,
(ULONGLONG *) array, anynul, status);
}
else if (datatype == TLONGLONG)
{
if (nulval == 0)
ffgpvjj(fptr, 1, firstelem, nelem, 0,
(LONGLONG *) array, anynul, status);
else
ffgpvjj(fptr, 1, firstelem, nelem, *(LONGLONG *) nulval,
(LONGLONG *) array, anynul, status);
}
else if (datatype == TFLOAT)
{
if (nulval == 0)
ffgpve(fptr, 1, firstelem, nelem, 0,
(float *) array, anynul, status);
else
ffgpve(fptr, 1, firstelem, nelem, *(float *) nulval,
(float *) array, anynul, status);
}
else if (datatype == TDOUBLE)
{
if (nulval == 0)
ffgpvd(fptr, 1, firstelem, nelem, 0,
(double *) array, anynul, status);
else
{
ffgpvd(fptr, 1, firstelem, nelem, *(double *) nulval,
(double *) array, anynul, status);
}
}
else
*status = BAD_DATATYPE;
return(*status);
}
int ffgpf( fitsfile *fptr,
int datatype,
LONGLONG firstelem,
LONGLONG nelem,
void *array,
char *nullarray,
int *anynul,
int *status)
{
if (*status > 0 || nelem == 0)
return(*status);
if (datatype == TBYTE)
{
ffgpfb(fptr, 1, firstelem, nelem,
(unsigned char *) array, nullarray, anynul, status);
}
else if (datatype == TSBYTE)
{
ffgpfsb(fptr, 1, firstelem, nelem,
(signed char *) array, nullarray, anynul, status);
}
else if (datatype == TUSHORT)
{
ffgpfui(fptr, 1, firstelem, nelem,
(unsigned short *) array, nullarray, anynul, status);
}
else if (datatype == TSHORT)
{
ffgpfi(fptr, 1, firstelem, nelem,
(short *) array, nullarray, anynul, status);
}
else if (datatype == TUINT)
{
ffgpfuk(fptr, 1, firstelem, nelem,
(unsigned int *) array, nullarray, anynul, status);
}
else if (datatype == TINT)
{
ffgpfk(fptr, 1, firstelem, nelem,
(int *) array, nullarray, anynul, status);
}
else if (datatype == TULONG)
{
ffgpfuj(fptr, 1, firstelem, nelem,
(unsigned long *) array, nullarray, anynul, status);
}
else if (datatype == TLONG)
{
ffgpfj(fptr, 1, firstelem, nelem,
(long *) array, nullarray, anynul, status);
}
else if (datatype == TULONGLONG)
{
ffgpfujj(fptr, 1, firstelem, nelem,
(ULONGLONG *) array, nullarray, anynul, status);
}
else if (datatype == TLONGLONG)
{
ffgpfjj(fptr, 1, firstelem, nelem,
(LONGLONG *) array, nullarray, anynul, status);
}
else if (datatype == TFLOAT)
{
ffgpfe(fptr, 1, firstelem, nelem,
(float *) array, nullarray, anynul, status);
}
else if (datatype == TDOUBLE)
{
ffgpfd(fptr, 1, firstelem, nelem,
(double *) array, nullarray, anynul, status);
}
else
*status = BAD_DATATYPE;
return(*status);
}
int ffgcv( fitsfile *fptr,
int datatype,
int colnum,
LONGLONG firstrow,
LONGLONG firstelem,
LONGLONG nelem,
void *nulval,
void *array,
int *anynul,
int *status)
{
char cdummy[2];
if (*status > 0)
return(*status);
if (datatype == TBIT)
{
ffgcx(fptr, colnum, firstrow, firstelem, nelem, (char *) array, status);
}
else if (datatype == TBYTE)
{
if (nulval == 0)
ffgclb(fptr, colnum, firstrow, firstelem, nelem, 1, 1, 0,
(unsigned char *) array, cdummy, anynul, status);
else
ffgclb(fptr, colnum, firstrow, firstelem, nelem, 1, 1, *(unsigned char *)
nulval, (unsigned char *) array, cdummy, anynul, status);
}
else if (datatype == TSBYTE)
{
if (nulval == 0)
ffgclsb(fptr, colnum, firstrow, firstelem, nelem, 1, 1, 0,
(signed char *) array, cdummy, anynul, status);
else
ffgclsb(fptr, colnum, firstrow, firstelem, nelem, 1, 1, *(signed char *)
nulval, (signed char *) array, cdummy, anynul, status);
}
else if (datatype == TUSHORT)
{
if (nulval == 0)
ffgclui(fptr, colnum, firstrow, firstelem, nelem, 1, 1, 0,
(unsigned short *) array, cdummy, anynul, status);
else
ffgclui(fptr, colnum, firstrow, firstelem, nelem, 1, 1,
*(unsigned short *) nulval,
(unsigned short *) array, cdummy, anynul, status);
}
else if (datatype == TSHORT)
{
if (nulval == 0)
ffgcli(fptr, colnum, firstrow, firstelem, nelem, 1, 1, 0,
(short *) array, cdummy, anynul, status);
else
ffgcli(fptr, colnum, firstrow, firstelem, nelem, 1, 1, *(short *)
nulval, (short *) array, cdummy, anynul, status);
}
else if (datatype == TUINT)
{
if (nulval == 0)
ffgcluk(fptr, colnum, firstrow, firstelem, nelem, 1, 1, 0,
(unsigned int *) array, cdummy, anynul, status);
else
ffgcluk(fptr, colnum, firstrow, firstelem, nelem, 1, 1,
*(unsigned int *) nulval, (unsigned int *) array, cdummy, anynul,
status);
}
else if (datatype == TINT)
{
if (nulval == 0)
ffgclk(fptr, colnum, firstrow, firstelem, nelem, 1, 1, 0,
(int *) array, cdummy, anynul, status);
else
ffgclk(fptr, colnum, firstrow, firstelem, nelem, 1, 1, *(int *)
nulval, (int *) array, cdummy, anynul, status);
}
else if (datatype == TULONG)
{
if (nulval == 0)
ffgcluj(fptr, colnum, firstrow, firstelem, nelem, 1, 1, 0,
(unsigned long *) array, cdummy, anynul, status);
else
ffgcluj(fptr, colnum, firstrow, firstelem, nelem, 1, 1,
*(unsigned long *) nulval,
(unsigned long *) array, cdummy, anynul, status);
}
else if (datatype == TLONG)
{
if (nulval == 0)
ffgclj(fptr, colnum, firstrow, firstelem, nelem, 1, 1, 0,
(long *) array, cdummy, anynul, status);
else
ffgclj(fptr, colnum, firstrow, firstelem, nelem, 1, 1, *(long *)
nulval, (long *) array, cdummy, anynul, status);
}
else if (datatype == TULONGLONG)
{
if (nulval == 0)
ffgclujj(fptr, colnum, firstrow, firstelem, nelem, 1, 1, 0,
(ULONGLONG *) array, cdummy, anynul, status);
else
ffgclujj(fptr, colnum, firstrow, firstelem, nelem, 1, 1, *(ULONGLONG *)
nulval, (ULONGLONG *) array, cdummy, anynul, status);
}
else if (datatype == TLONGLONG)
{
if (nulval == 0)
ffgcljj(fptr, colnum, firstrow, firstelem, nelem, 1, 1, 0,
(LONGLONG *) array, cdummy, anynul, status);
else
ffgcljj(fptr, colnum, firstrow, firstelem, nelem, 1, 1, *(LONGLONG *)
nulval, (LONGLONG *) array, cdummy, anynul, status);
}
else if (datatype == TFLOAT)
{
if (nulval == 0)
ffgcle(fptr, colnum, firstrow, firstelem, nelem, 1, 1, 0.,
(float *) array, cdummy, anynul, status);
else
ffgcle(fptr, colnum, firstrow, firstelem, nelem, 1, 1, *(float *)
nulval,(float *) array, cdummy, anynul, status);
}
else if (datatype == TDOUBLE)
{
if (nulval == 0)
ffgcld(fptr, colnum, firstrow, firstelem, nelem, 1, 1, 0.,
(double *) array, cdummy, anynul, status);
else
ffgcld(fptr, colnum, firstrow, firstelem, nelem, 1, 1, *(double *)
nulval, (double *) array, cdummy, anynul, status);
}
else if (datatype == TCOMPLEX)
{
if (nulval == 0)
ffgcle(fptr, colnum, firstrow, (firstelem - 1) * 2 + 1, nelem * 2,
1, 1, 0., (float *) array, cdummy, anynul, status);
else
ffgcle(fptr, colnum, firstrow, (firstelem - 1) * 2 + 1, nelem * 2,
1, 1, *(float *) nulval, (float *) array, cdummy, anynul, status);
}
else if (datatype == TDBLCOMPLEX)
{
if (nulval == 0)
ffgcld(fptr, colnum, firstrow, (firstelem - 1) * 2 + 1, nelem * 2,
1, 1, 0., (double *) array, cdummy, anynul, status);
else
ffgcld(fptr, colnum, firstrow, (firstelem - 1) * 2 + 1, nelem * 2,
1, 1, *(double *) nulval, (double *) array, cdummy, anynul, status);
}
else if (datatype == TLOGICAL)
{
if (nulval == 0)
ffgcll(fptr, colnum, firstrow, firstelem, nelem, 1, 0,
(char *) array, cdummy, anynul, status);
else
ffgcll(fptr, colnum, firstrow, firstelem, nelem, 1, *(char *) nulval,
(char *) array, cdummy, anynul, status);
}
else if (datatype == TSTRING)
{
if (nulval == 0)
{
cdummy[0] = '\0';
ffgcls(fptr, colnum, firstrow, firstelem, nelem, 1,
cdummy, (char **) array, cdummy, anynul, status);
}
else
ffgcls(fptr, colnum, firstrow, firstelem, nelem, 1, (char *)
nulval, (char **) array, cdummy, anynul, status);
}
else
*status = BAD_DATATYPE;
return(*status);
}
int ffgcf( fitsfile *fptr,
int datatype,
int colnum,
LONGLONG firstrow,
LONGLONG firstelem,
LONGLONG nelem,
void *array,
char *nullarray,
int *anynul,
int *status)
{
double nulval = 0.;
char cnulval[2];
if (*status > 0)
return(*status);
if (datatype == TBIT)
{
ffgcx(fptr, colnum, firstrow, firstelem, nelem, (char *) array, status);
}
else if (datatype == TBYTE)
{
ffgclb(fptr, colnum, firstrow, firstelem, nelem, 1, 2, (unsigned char )
nulval, (unsigned char *) array, nullarray, anynul, status);
}
else if (datatype == TSBYTE)
{
ffgclsb(fptr, colnum, firstrow, firstelem, nelem, 1, 2, (signed char )
nulval, (signed char *) array, nullarray, anynul, status);
}
else if (datatype == TUSHORT)
{
ffgclui(fptr, colnum, firstrow, firstelem, nelem, 1, 2,
(unsigned short ) nulval,
(unsigned short *) array, nullarray, anynul, status);
}
else if (datatype == TSHORT)
{
ffgcli(fptr, colnum, firstrow, firstelem, nelem, 1, 2, (short )
nulval, (short *) array, nullarray, anynul, status);
}
else if (datatype == TUINT)
{
ffgcluk(fptr, colnum, firstrow, firstelem, nelem, 1, 2,
(unsigned int ) nulval, (unsigned int *) array, nullarray, anynul,
status);
}
else if (datatype == TINT)
{
ffgclk(fptr, colnum, firstrow, firstelem, nelem, 1, 2, (int )
nulval, (int *) array, nullarray, anynul, status);
}
else if (datatype == TULONG)
{
ffgcluj(fptr, colnum, firstrow, firstelem, nelem, 1, 2,
(unsigned long ) nulval,
(unsigned long *) array, nullarray, anynul, status);
}
else if (datatype == TLONG)
{
ffgclj(fptr, colnum, firstrow, firstelem, nelem, 1, 2, (long )
nulval, (long *) array, nullarray, anynul, status);
}
else if (datatype == TULONGLONG)
{
ffgclujj(fptr, colnum, firstrow, firstelem, nelem, 1, 2, (ULONGLONG )
nulval, (ULONGLONG *) array, nullarray, anynul, status);
}
else if (datatype == TLONGLONG)
{
ffgcljj(fptr, colnum, firstrow, firstelem, nelem, 1, 2, (LONGLONG )
nulval, (LONGLONG *) array, nullarray, anynul, status);
}
else if (datatype == TFLOAT)
{
ffgcle(fptr, colnum, firstrow, firstelem, nelem, 1, 2, (float )
nulval,(float *) array, nullarray, anynul, status);
}
else if (datatype == TDOUBLE)
{
ffgcld(fptr, colnum, firstrow, firstelem, nelem, 1, 2,
nulval, (double *) array, nullarray, anynul, status);
}
else if (datatype == TCOMPLEX)
{
ffgcfc(fptr, colnum, firstrow, firstelem, nelem,
(float *) array, nullarray, anynul, status);
}
else if (datatype == TDBLCOMPLEX)
{
ffgcfm(fptr, colnum, firstrow, firstelem, nelem,
(double *) array, nullarray, anynul, status);
}
else if (datatype == TLOGICAL)
{
ffgcll(fptr, colnum, firstrow, firstelem, nelem, 2, (char ) nulval,
(char *) array, nullarray, anynul, status);
}
else if (datatype == TSTRING)
{
ffgcls(fptr, colnum, firstrow, firstelem, nelem, 2,
cnulval, (char **) array, nullarray, anynul, status);
}
else
*status = BAD_DATATYPE;
return(*status);
}