Astro-FITS-CFITSIO

 view release on metacpan or  search on metacpan

CFITSIO.xs  view on Meta::CPAN

		fitsfilePtr::get_hduaddrll = 2
	CODE:
		RETVAL = ffghadll(fptr,&headstart,&datastart,&dataend,&status);
		if (ST(1) != &PL_sv_undef) sv_setiv(ST(1),headstart);
		if (ST(2) != &PL_sv_undef) sv_setiv(ST(2),datastart);
		if (ST(3) != &PL_sv_undef) sv_setiv(ST(3),dataend);
	OUTPUT:
		status
		RETVAL

int
ffghof(fptr, headstart, datastart, dataend, status)
	fitsfile * fptr
	OFF_T headstart = NO_INIT	
	OFF_T datastart = NO_INIT	
	OFF_T dataend = NO_INIT
	int status
	ALIAS:
		Astro::FITS::CFITSIO::fits_get_hduoff = 1
		fitsfilePtr::get_hduoff = 2
	CODE:
		RETVAL = ffghof(fptr,&headstart,&datastart,&dataend,&status);
		if (ST(1) != &PL_sv_undef) sv_setuv(ST(1),headstart);
		if (ST(2) != &PL_sv_undef) sv_setuv(ST(2),datastart);
		if (ST(3) != &PL_sv_undef) sv_setuv(ST(3),dataend);
	OUTPUT:
		status
		RETVAL


int
ffgknm(card,name,len,status)
	char * card
	char * name = NO_INIT
	int len = NO_INIT
	int status
	ALIAS:
		Astro::FITS::CFITSIO::fits_get_keyname = 1
	CODE:
		name = get_mortalspace(FLEN_KEYWORD,TBYTE);
		RETVAL = ffgknm(card,name,&len,&status);
		if (ST(2) != &PL_sv_undef)
			sv_setiv(ST(2), len);
	OUTPUT:
		name
		status
		RETVAL

int
ffdtyp(value,dtype,status)
	char * value
	char &dtype = NO_INIT
	int &status
	ALIAS:
		Astro::FITS::CFITSIO::fits_get_keytype = 1
	OUTPUT:
		dtype
		status

int
ffgidt(fptr,bitpix,status)
	fitsfile * fptr
	int &bitpix = NO_INIT
	int &status
	ALIAS:
		Astro::FITS::CFITSIO::fits_get_img_type = 1
		fitsfilePtr::get_img_type = 2
	OUTPUT:
		bitpix
		status

int
ffinttyp(value,inttype,neg,status)
	char * value
	int &inttype = NO_INIT
	int &neg = NO_INIT
	int &status
	ALIAS:
		Astro::FITS::CFITSIO::fits_get_inttype = 1
	OUTPUT:
		inttype
		neg
		status

int
ffgiet(fptr,bitpix,status)
	fitsfile * fptr
	int &bitpix = NO_INIT
	int &status
	ALIAS:
		Astro::FITS::CFITSIO::fits_get_img_equivtype = 1
		fitsfilePtr::get_img_equivtype = 2
	OUTPUT:
		bitpix
		status

int
ffgidm(fptr,naxis,status)
	fitsfile * fptr
	int &naxis = NO_INIT
	int &status
	ALIAS:
		Astro::FITS::CFITSIO::fits_get_img_dim = 1
		fitsfilePtr::get_img_dim = 2
	OUTPUT:
		naxis
		status

int
ffgisz(fptr,naxes,status)
	FitsFile * fptr
	long *naxes = NO_INIT
	int status
	ALIAS:
		Astro::FITS::CFITSIO::fits_get_img_size = 1
		fitsfilePtr::get_img_size = 2
	PREINIT:
		int nlen;
	CODE:
		RETVAL = ffgidm(fptr->fptr,&nlen,&status);
		if (RETVAL <= 0) {
			naxes = get_mortalspace(nlen,TLONG);
			RETVAL = ffgisz(fptr->fptr,nlen,naxes,&status);
			/* unpack as Perl array */
			unpack1D(ST(1),naxes,nlen,TLONG,1);
		}
	OUTPUT:
		status
		RETVAL

int
ffgiszll(fptr,naxes,status)
	FitsFile * fptr
	LONGLONG *naxes = NO_INIT
	int status
	ALIAS:
		Astro::FITS::CFITSIO::fits_get_img_sizell = 1
		fitsfilePtr::get_img_sizell = 2
	PREINIT:
		int nlen;
	CODE:
		RETVAL = ffgidm(fptr->fptr,&nlen,&status);
		if (RETVAL <= 0) {
			naxes = get_mortalspace(nlen,TLONGLONG);
			RETVAL = ffgiszll(fptr->fptr,nlen,naxes,&status);
			/* unpack as Perl array */
			unpack1D(ST(1),naxes,nlen,TLONGLONG,1);
		}
	OUTPUT:
		status
		RETVAL

int
fits_get_noise_bits(fptr, noisebits, status)
	fitsfile *fptr
	int &noisebits = NO_INIT
	int &status
	ALIAS:
		fitsfilePtr::get_noise_bits = 1
	OUTPUT:
		noisebits
		status

int
ffgncl(fptr,ncols,status)
	fitsfile * fptr
	int &ncols = NO_INIT
	int &status
	ALIAS:
		Astro::FITS::CFITSIO::fits_get_num_cols = 1
		fitsfilePtr::get_num_cols = 2
	OUTPUT:
		ncols
		status

int
ffgmng(mfptr,nmembers,status)
	fitsfile * mfptr
	long &nmembers = NO_INIT
	int &status
	ALIAS:
		Astro::FITS::CFITSIO::fits_get_num_groups = 1
		fitsfilePtr::get_num_groups = 2
	OUTPUT:
		nmembers
		status

int
ffthdu(fptr,hdunum,status)
	fitsfile * fptr
	int &hdunum = NO_INIT
	int &status
	ALIAS:
		Astro::FITS::CFITSIO::fits_get_num_hdus = 1
		fitsfilePtr::get_num_hdus = 2
	OUTPUT:
		hdunum
		status

int
ffgtnm(gfptr,nmembers,status)
	fitsfile * gfptr

CFITSIO.xs  view on Meta::CPAN

int
ffgkey(fptr,keyname,value,comment,status)
	fitsfile * fptr
	char * keyname
	char * value = NO_INIT
	char * comment = NO_INIT
	int status
	ALIAS:
		Astro::FITS::CFITSIO::fits_read_keyword = 1
		fitsfilePtr::read_keyword = 2
	CODE:
		value = get_mortalspace(FLEN_VALUE,TBYTE);
		comment=(ST(3)!=&PL_sv_undef) ? get_mortalspace(FLEN_COMMENT,TBYTE) : NULL;
		RETVAL=ffgkey(fptr,keyname,value,comment,&status);
	OUTPUT:
		value
		comment
		status
		RETVAL

int
ffgrec(fptr,keynum,card,status)
	fitsfile * fptr
	int keynum
	char * card = NO_INIT
	int status
	ALIAS:
		Astro::FITS::CFITSIO::fits_read_record = 1
		fitsfilePtr::read_record = 2
	CODE:
		card = get_mortalspace(FLEN_CARD,TBYTE);
		RETVAL=ffgrec(fptr,keynum,card,&status);
	OUTPUT:
		card
		status
		RETVAL

int
ffgsv(fptr, dtype, blc, trc, inc, nulval, array, anynul, status)
	FitsFile * fptr
	int dtype
	long * blc
	long * trc
	long * inc
	SV * nulval
	void * array = NO_INIT
	int anynul = NO_INIT
	int status
	ALIAS:
		Astro::FITS::CFITSIO::fits_read_subset = 1
		fitsfilePtr::read_subset = 2
	PREINIT:
		long ndata, *naxes;
		int i, naxis, storage_dtype;
	CODE:
		storage_dtype = dtype;
		if (dtype == TBIT)
			storage_dtype = TLOGICAL;

		/* get the size of the image */
		RETVAL = ffgidm(fptr->fptr, &naxis, &status);
		naxes = get_mortalspace(naxis, TLONG);
		RETVAL = ffgisz(fptr->fptr, naxis, naxes, &status);

		/* determine the number of pixels to be read */
		ndata = 1;
		for (i=0; i<naxis; i++)
		ndata *= (trc[i]-blc[i]+1)/inc[i] +
			(((trc[i]-blc[i]+1) % inc[i]) ? 1 : 0);

		if (!PERLYUNPACKING(fptr->perlyunpacking)) {
			SvGROW(ST(6),ndata*sizeof_datatype(storage_dtype));
			RETVAL=ffgsv(fptr->fptr,dtype,blc,trc,inc,(nulval!=&PL_sv_undef ? pack1D(nulval,storage_dtype) : NULL),(void*)SvPV(ST(6),PL_na),&anynul,&status);
		}
		else {
			array = get_mortalspace(ndata,storage_dtype);
			RETVAL=ffgsv(fptr->fptr,dtype,blc,trc,inc,(nulval != &PL_sv_undef ? pack1D(nulval,storage_dtype) : NULL),array,&anynul,&status);
			unpack1D(ST(6),array,ndata,storage_dtype,fptr->perlyunpacking);
		}
		if (ST(7) != &PL_sv_undef)
			sv_setiv(ST(7),anynul);
	OUTPUT:
		RETVAL
		status

int
ffgsvb(fptr,group,naxis,naxes,fpixels,lpixels,inc,nulval,array,anynul,status)
	FitsFile * fptr
	int group
	int naxis
	long * naxes
	long * fpixels
	long * lpixels
	long * inc
	byte nulval
	byte * array = NO_INIT
	int anynul = NO_INIT
	int status
	ALIAS:
		Astro::FITS::CFITSIO::fits_read_subset_byt = 1
		fitsfilePtr::read_subset_byt = 2
	PREINIT:
		long ndata;
		int i;
	CODE:
		ndata = 1;
		for (i=0; i<naxis; i++)
			ndata *= (lpixels[i]-fpixels[i]+1)/inc[i] +
				(((lpixels[i]-fpixels[i]+1) % inc[i]) ? 1 : 0);
		if (!PERLYUNPACKING(fptr->perlyunpacking)) {
			SvGROW(ST(8),ndata*sizeof_datatype(TBYTE));
			RETVAL=ffgsvb(fptr->fptr,group,naxis,naxes,fpixels,lpixels,inc,nulval,(byte*)SvPV(ST(8),PL_na),&anynul,&status);
		}
		else {
			array = get_mortalspace(ndata,TBYTE);
			RETVAL=ffgsvb(fptr->fptr,group,naxis,naxes,fpixels,lpixels,inc,nulval,array,&anynul,&status);
			unpack1D(ST(8),array,ndata,TBYTE,fptr->perlyunpacking);
		}
		if (ST(9) != &PL_sv_undef) sv_setiv(ST(9),anynul);
	OUTPUT:
		status

CFITSIO.xs  view on Meta::CPAN

int
ffgiprll(fptr,bitbix,naxis,naxes,status)
	FitsFile * fptr
	int bitpix = NO_INIT
	int naxis = NO_INIT
	LONGLONG * naxes = NO_INIT
	int status
	ALIAS:
		Astro::FITS::CFITSIO::fits_get_img_parmll = 1
		fitsfilePtr::get_img_parmll = 2
	CODE:
		if (ST(3)!=&PL_sv_undef) {
			RETVAL = ffgiprll(fptr->fptr,0,&bitpix,&naxis,NULL,&status);
			naxes = get_mortalspace(naxis,TLONGLONG);
		}
		else {
			naxis = 0;
			naxes = NULL;
		}
		RETVAL = ffgiprll(fptr->fptr,naxis,&bitpix,&naxis,naxes,&status);
		if (ST(1)!=&PL_sv_undef) sv_setiv(ST(1),bitpix);
		if (ST(2)!=&PL_sv_undef) sv_setiv(ST(2),naxis);
		if (ST(3)!=&PL_sv_undef) unpack1D(ST(3),naxes,naxis,TLONGLONG,fptr->perlyunpacking);
	OUTPUT:
		status
		RETVAL

int
ffgkcl(card)
	char * card
	ALIAS:
		Astro::FITS::CFITSIO::fits_get_keyclass = 1

int
ffgpxv(fptr, dtype, fpix, nelem, nulval, array, anynul, status)
	FitsFile * fptr
	int dtype
	long * fpix
	LONGLONG nelem
	SV * nulval
	void * array = NO_INIT
	int anynul = NO_INIT
	int status
	ALIAS:
		Astro::FITS::CFITSIO::fits_read_pix = 1
		fitsfilePtr::read_pix = 2
	PREINIT:
		int naxis;
		long *naxes;
		OFF_T nelem_all;
		int i;
	CODE:
		if (!PERLYUNPACKING(fptr->perlyunpacking)) {
			SvGROW(ST(5),nelem*sizeof_datatype(dtype));
			RETVAL = ffgpxv(fptr->fptr, dtype, fpix, nelem, (nulval!=&PL_sv_undef ? pack1D(nulval, dtype) : NULL), (void*)SvPV(ST(5),PL_na), &anynul, &status);
		}
		else {
			/* find out how many elements are in the image,
			 * allocate space, read, unpack
			 */
			RETVAL = ffgidm(fptr->fptr, &naxis, &status);
			if (status == 0) {
				naxes = get_mortalspace(naxis, TLONG);
				RETVAL = ffgisz(fptr->fptr, naxis, naxes, &status);
				nelem_all = 1;
				for (i=0; i<naxis; i++)
					nelem_all *= naxes[i];
				array=get_mortalspace(nelem_all,dtype);
				RETVAL=ffgpxv(fptr->fptr, dtype, fpix, nelem, (nulval!=&PL_sv_undef ?  pack1D(nulval, dtype) : NULL), array, &anynul, &status);
				if (status == 0) {
					order_reverse(naxis, naxes);
					unpackND(ST(5), array, naxis, naxes, dtype, fptr->perlyunpacking);
				}
			}
		}
		if (ST(6) != &PL_sv_undef)
			sv_setiv(ST(6), anynul);
	OUTPUT:
		status
		RETVAL

int
ffgpxvll(fptr, dtype, fpix, nelem, nulval, array, anynul, status)
	FitsFile * fptr
	int dtype
	LONGLONG * fpix
	LONGLONG nelem
	SV * nulval
	void * array = NO_INIT
	int anynul = NO_INIT
	int status
	ALIAS:
		Astro::FITS::CFITSIO::fits_read_pixll = 1
		fitsfilePtr::read_pixll = 2
	PREINIT:
		int naxis;
		LONGLONG *naxes;
		OFF_T nelem_all;
		int i;
	CODE:
		if (!PERLYUNPACKING(fptr->perlyunpacking)) {
			SvGROW(ST(5),nelem*sizeof_datatype(dtype));
			RETVAL = ffgpxvll(fptr->fptr, dtype, fpix, nelem, (nulval!=&PL_sv_undef ? pack1D(nulval, dtype) : NULL), (void*)SvPV(ST(5),PL_na), &anynul, &status);
		}
		else {
			/* find out how many elements are in the image,
			 * allocate space, read, unpack
			 */
			RETVAL = ffgidm(fptr->fptr, &naxis, &status);
			if (status == 0) {
				naxes = get_mortalspace(naxis, TLONGLONG);
				RETVAL = ffgiszll(fptr->fptr, naxis, naxes, &status);
				nelem_all = 1;
				for (i=0; i<naxis; i++)
					nelem_all *= naxes[i];
				array=get_mortalspace(nelem_all,dtype);
				RETVAL=ffgpxvll(fptr->fptr, dtype, fpix, nelem, (nulval!=&PL_sv_undef ?  pack1D(nulval, dtype) : NULL), array, &anynul, &status);
				if (status == 0) {
					order_reversell(naxis, naxes);
					unpackNDll(ST(5), array, naxis, naxes, dtype,fptr->perlyunpacking);
				}
			}
		}
		if (ST(6) != &PL_sv_undef)
			sv_setiv(ST(6), anynul);
	OUTPUT:
		status
		RETVAL

int
ffgpxf(fptr, dtype, fpix, nelem, array, nullarray, anynul, status)
	FitsFile * fptr
	int dtype
	long * fpix
	LONGLONG nelem
	void * array = NO_INIT
	logical * nullarray = NO_INIT
	int anynul = NO_INIT
	int status
	ALIAS:
		Astro::FITS::CFITSIO::fits_read_pixnull = 1
		fitsfilePtr::read_pixnull = 2
	PREINIT:
		int naxis;
		long *naxes;
		OFF_T nelem_all;
		int i;
	CODE:
		if (!PERLYUNPACKING(fptr->perlyunpacking)) {
			if (ST(4) != &PL_sv_undef) {
				SvGROW(ST(4),nelem*sizeof_datatype(dtype));
				array = (void*)SvPV(ST(4),PL_na);
			}
			else
				array = get_mortalspace(nelem, dtype);
			if (ST(5) != &PL_sv_undef) {
				SvGROW(ST(5),nelem*sizeof_datatype(TLOGICAL));
				nullarray = (logical*)SvPV(ST(5),PL_na);
			}
			else
				nullarray = get_mortalspace(nelem,TLOGICAL);
			RETVAL = ffgpxf(fptr->fptr,dtype,fpix,nelem,array,nullarray, &anynul,&status);
		}
		else {
			/* find out how many elements are in the image,
			 * allocate space, read, unpack
			 */
			RETVAL = ffgidm(fptr->fptr, &naxis, &status);
			if (status == 0) {
				naxes = get_mortalspace(naxis, TLONG);
				RETVAL = ffgisz(fptr->fptr, naxis, naxes, &status);
				nelem_all = 1;
				for (i=0; i<naxis; i++)
					nelem_all *= naxes[i];
				array=get_mortalspace(nelem_all,dtype);
				nullarray=get_mortalspace(nelem_all,TLOGICAL);
				RETVAL=ffgpxf(fptr->fptr,dtype,fpix,nelem,array,nullarray,&anynul,&status);
				if (status == 0) {
					order_reverse(naxis, naxes);
					if (ST(4)!=&PL_sv_undef)
						unpackND(ST(4),array,naxis,naxes,dtype,fptr->perlyunpacking);
					if (ST(5)!=&PL_sv_undef)
						unpackND(ST(5),nullarray,naxis,naxes,TLOGICAL,fptr->perlyunpacking);
				}
			}
		}
		if (ST(6) != &PL_sv_undef)
			sv_setiv(ST(6), anynul);
	OUTPUT:
		status
		RETVAL

int
ffgpxfll(fptr, dtype, fpix, nelem, array, nullarray, anynul, status)
	FitsFile * fptr
	int dtype
	LONGLONG * fpix
	LONGLONG nelem
	void * array = NO_INIT
	logical * nullarray = NO_INIT
	int anynul = NO_INIT
	int status
	ALIAS:
		Astro::FITS::CFITSIO::fits_read_pixnullll = 1
		fitsfilePtr::read_pixnullll = 2
	PREINIT:
		int naxis;
		LONGLONG *naxes;
		OFF_T nelem_all;
		int i;
	CODE:
		if (!PERLYUNPACKING(fptr->perlyunpacking)) {
			if (ST(4) != &PL_sv_undef) {
				SvGROW(ST(4),nelem*sizeof_datatype(dtype));
				array = (void*)SvPV(ST(4),PL_na);
			}
			else
				array = get_mortalspace(nelem, dtype);
			if (ST(5) != &PL_sv_undef) {
				SvGROW(ST(5),nelem*sizeof_datatype(TLOGICAL));
				nullarray = (logical*)SvPV(ST(5),PL_na);
			}
			else
				nullarray = get_mortalspace(nelem,TLOGICAL);
			RETVAL = ffgpxfll(fptr->fptr,dtype,fpix,nelem,array,nullarray, &anynul,&status);
		}
		else {
			/* find out how many elements are in the image,
			 * allocate space, read, unpack
			 */
			RETVAL = ffgidm(fptr->fptr, &naxis, &status);
			if (status == 0) {
				naxes = get_mortalspace(naxis, TLONGLONG);
				RETVAL = ffgiszll(fptr->fptr, naxis, naxes, &status);
				nelem_all = 1;
				for (i=0; i<naxis; i++)
					nelem_all *= naxes[i];
				array=get_mortalspace(nelem_all,dtype);
				nullarray=get_mortalspace(nelem_all,TLOGICAL);
				RETVAL=ffgpxfll(fptr->fptr,dtype,fpix,nelem,array,nullarray,&anynul,&status);
				if (status == 0) {
					order_reversell(naxis, naxes);
					if (ST(4)!=&PL_sv_undef)
						unpackNDll(ST(4),array,naxis,naxes,dtype,fptr->perlyunpacking);
					if (ST(5)!=&PL_sv_undef)
						unpackNDll(ST(5),nullarray,naxis,naxes,TLOGICAL,fptr->perlyunpacking);
				}
			}
		}
		if (ST(6) != &PL_sv_undef)
			sv_setiv(ST(6), anynul);
	OUTPUT:
		status
		RETVAL

int
ffppx(fptr, dtype, fpix, nelem, array, status)
	fitsfile * fptr
	int dtype
	long * fpix
	LONGLONG nelem
	SV * array
	int status
	ALIAS:
		Astro::FITS::CFITSIO::fits_write_pix = 1
		fitsfilePtr::write_pix = 2
	PREINIT:
		int storage_dtype;
	CODE:
		storage_dtype = dtype;
		if (dtype == TBIT)
			storage_dtype = TLOGICAL;
		RETVAL = ffppx(fptr,dtype,fpix,nelem,packND(array,storage_dtype),&status);
	OUTPUT:
		RETVAL
		status

int
ffppxll(fptr, dtype, fpix, nelem, array, status)
	fitsfile * fptr
	int dtype
	LONGLONG * fpix
	LONGLONG nelem
	SV * array
	int status
	ALIAS:
		Astro::FITS::CFITSIO::fits_write_pixll = 1
		fitsfilePtr::write_pixll = 2
	PREINIT:
		int storage_dtype;
	CODE:



( run in 1.372 second using v1.01-cache-2.11-cpan-5735350b133 )