#ifndef CFITSIO_PERL_UTIL_H #define CFITSIO_PERL_UTIL_H #include "fitsio.h" #define FIXME(s) struct FitsFile { fitsfile *fptr; int perlyunpacking; int is_open; }; typedef struct FitsFile FitsFile; #define FitsFileSV(_SV) ((FitsFile *)SvIV((SV*)SvRV(_SV))) #define fitsfileSV(_SV) (FitsFileSV(_SV)->fptr) #define PERLYUNPACKING(perlyunpack) ( perlyunpack < 0 ? PerlyUnpacking(-1) : perlyunpack) typedef char logical; typedef unsigned char byte; typedef signed char sbyte; typedef float cmp; typedef double dblcmp; void * pack1D( SV * arg, int datatype ); void * packND( SV * arg, int datatype ); void pack_element( SV* work, SV** arg, int datatype ); void* get_mortalspace(LONGLONG n, int datatype); AV* coerce1D ( SV* arg, LONGLONG n ); AV* coerceND ( SV* arg, int ndims, LONGLONG *dims ); void unpack1D ( SV* arg, void * var, LONGLONG n, int datatype, int perlyunpack); void unpack2D (SV* arg, void* var, LONGLONG* dims, int datatype, int perlyunpack); void unpack3D (SV* arg, void* var, LONGLONG* dims, int datatype, int perlyunpack); void unpackND (SV* arg, void * var, int ndims, long *dims, int datatype, int perlyunpack); void unpackNDll (SV* arg, void * var, int ndims, LONGLONG *dims, int datatype, int perlyunpack); void unpack2scalar ( SV* arg, void * var, long n, int datatype ); void unpackScalar( SV* arg, void *var, int datatype ); void swap_dims(int ndims, long *dims); int PerlyUnpacking(int value); int sizeof_datatype(int datatype); long column_width(fitsfile * fptr, int colnum); void check_status(int status); void order_reverse (int nelem, long *vals); void order_reversell (int nelem, LONGLONG *vals); #endif /* CFITSIO_PERL_UTIL_H */