summaryrefslogtreecommitdiffstats
path: root/funtools/funtoolsP.h
diff options
context:
space:
mode:
Diffstat (limited to 'funtools/funtoolsP.h')
-rw-r--r--funtools/funtoolsP.h343
1 files changed, 343 insertions, 0 deletions
diff --git a/funtools/funtoolsP.h b/funtools/funtoolsP.h
new file mode 100644
index 0000000..14953ea
--- /dev/null
+++ b/funtools/funtoolsP.h
@@ -0,0 +1,343 @@
+/*
+ * Copyright (c) 1999-2003 Smithsonian Astrophysical Observatory
+ */
+
+/*
+ *
+ * funtools.h
+ *
+ */
+
+#ifndef __funtoolsP_h
+#define __funtoolsP_h
+
+#if HAVE_CONFIG_H
+#include "conf.h"
+#endif
+
+#include <stdio.h>
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#if HAVE_STRING_H
+#include <string.h>
+#endif
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_MALLOC_H
+#include <malloc.h>
+#endif
+#if HAVE_GETOPT_H
+#include <getopt.h>
+#endif
+#include <sys/types.h>
+#include "prsetup.h"
+#define USE_XFILEIO 1
+#include "fitsy.h"
+#undef USE_XFILEIO
+#include "wcs.h"
+#include "filter.h"
+#include "file.h"
+#include "swap.h"
+#include "word.h"
+#include "parse.h"
+#include "xalloc.h"
+#include "mkrtemp.h"
+#include "NaN.h"
+#include "xlaunch.h"
+
+#ifndef MAXINT
+#define MAXINT 2147483647
+#endif
+#ifndef MININT
+#define MININT (-MAXINT - 1)
+#endif
+#ifndef MAXDBL
+#define MAXDBL 1.7976931348623157E+308
+#endif
+#ifndef MINDBL
+#define MINDBL (-MAXDBL)
+#endif
+
+/* blocking types */
+#define FUN_SUM 1
+#define FUN_AVG 2
+
+/* merge types */
+#define MERGE_UPDATE 1
+#define MERGE_REPLACE 2
+#define MERGE_APPEND 4
+
+/* special "region" column info */
+#define COL_REGION_NAME "$REGION"
+#define COL_REGION_ONAME "REGION"
+#define COL_REGION_ID -1
+#define COL_NUM_NAME "$N"
+#define COL_NUM_ONAME "N"
+#define COL_NUM_ID -2
+#define COL_UNKNOWN_ID -100
+
+/* image data types */
+#define TY_CHAR 1
+#define TY_USHORT -2
+#define TY_SHORT 2
+#define TY_INT 4
+#define TY_LONG 8
+#define TY_FLOAT -4
+#define TY_DOUBLE -8
+
+/* list types for multi-file list support */
+#define LIST_NONE 0
+#define LIST_FILEORDER 1
+#define LIST_SORT 2
+#define LIST_TRYSORT 3
+#define LIST_UNSORT 4
+
+/* values for scaled flag */
+#define FUN_SCALE_EXISTS 1
+#define FUN_SCALE_APPLIED 2
+
+/* for a table, do we have an array of structs or a struct of arrays? */
+#define FUN_ORG_AOS 1
+#define FUN_ORG_SOA 2
+
+/* the usual */
+#ifndef DEFAULT_TMPDIR
+#define DEFAULT_TMPDIR "/tmp"
+#endif
+
+/* max number of ifun links to a single ifun struct */
+#define FUN_MAXBFUN 1024
+
+/* max number of columns in a file */
+#define FUN_MAXCOL 1000
+
+/* max buffer size when allocating memory to read rows */
+#define FUN_MAXBUFSIZE 5000000
+
+/* validation */
+#define FUN_MAGIC 14285
+#define FUN_VALID(fun) (fun && (*(short *)fun == FUN_MAGIC))
+
+/* save buffer for reading multiple input files from one FunOpen() */
+typedef struct savebufstruct{
+ struct savebufstruct *next;
+ int type;
+ int nrow;
+ char *ebuf;
+ unsigned char *rbuf;
+} *SaveBuf, SaveBufRec;
+
+/* columns record */
+typedef struct funcolrec {
+ char *name;
+ int order;
+ int type;
+ int from;
+ int ofrom;
+ int mode;
+ int n;
+ int offset;
+ int width;
+ int tcol;
+ int tindex;
+ int poff;
+ double tlmin;
+ double tlmax;
+ double binsiz;
+ int doblank; /* do we have a BLANK value? */
+ int tblank; /* blank value */
+ int scaled; /* valid bscale, bzero values exist */
+ double tscale; /* bscale value */
+ double tzero; /* bzero value */
+ char *tunit;
+ char *tctyp;
+ char *tcrvl;
+ char *tcdlt;
+ char *tcrpx;
+ char *tcrot;
+ char *vla;
+} *FunCol, FunColRec;
+
+/*
+ *
+ *
+ * funtools record structure
+ *
+ */
+typedef struct funrec {
+ /* magic MUST be first */
+ short magic; /* magic number identifying this as fun */
+ /* top level file info */
+ char *fname; /* file name */
+ char *mode; /* open mode */
+ int type; /* file type -- see above */
+ int bitpix; /* FITS bitpix defines data type */
+ double min1, max1; /* x limits for whole image or table */
+ double min2, max2; /* y limits for whole image or table */
+ double binsiz1, binsiz2; /* binsize for tables */
+ int dims; /* number of image dimensions */
+ int dim1, dim2; /* image dimensions */
+ int endian; /* 0=little, 1=big */
+ char *filter; /* filter info from bracket spec */
+ FITSHead header; /* underlying fitsy handle */
+ FITSHead theader; /* temp fitsy handle */
+ FITSHead primary; /* fitsy handle for *output* of primary */
+ GIO gio; /* I/O handle */
+ struct WorldCoor *wcs; /* WCS info -- converted to image */
+ struct WorldCoor *wcs0; /* WCS info -- unconverted to image */
+ char *activate; /* activation flag */
+ off_t datastart; /* starting position in file for data */
+ /* param-specific info */
+ int doprim; /* write to primary header */
+ int doraw; /* get raw value */
+ /* image-specific info */
+ off_t curpos; /* current position into image */
+ int primio; /* flag that the primary header was written */
+ int dtype; /* type of data -- see fits.h */
+ int dlen; /* length of data buffer */
+ int dpad; /* length of data padding */
+ int doblank; /* do we have a BLANK value? */
+ int blank; /* blank value */
+ int scaled; /* valid bscale, bzero values exist */
+ double bscale; /* bscale value */
+ double bzero; /* bzero value */
+ /* table-specific info */
+ char *bincols; /* binning columns string */
+ int bin[3]; /* pointers to column offsets for binning */
+ int vbin; /* column offset for val column when binning */
+ int vop; /* operator to apply to vcol binning */
+ int overflow; /* how many times we overflowed when binning */
+ int ncol; /* current nuber of selected columns */
+ int rowsize; /* size in bytes of selected column records */
+ int maxbufsize; /* max size of buffer holding columns */
+ int transparent; /* is mask transparent? */
+ int org; /* array of structs or struct of arrays? */
+ int idx; /* should we use filter index if found? */
+ FunCol *cols; /* selected columns */
+ off_t headpos; /* position in file for header start */
+ /* array/table specific info */
+ int total; /* number of rows in input table */
+ int left; /* number of rows left to process in table */
+ int io; /* count of number of putrows */
+ int skip; /* bytes to skip (for arrays) */
+ off_t bytes; /* count of bytes output via putrows */
+ /* text file info */
+ int nparser; /* number of parsers */
+ Parse *parsers; /* array of parsers */
+ /* raw row data buffer */
+ int rawsize; /* size in bytes of one (input) table row */
+ int rawbufsize; /* size in bytes of evbuf holding raw rows */
+ unsigned char *rawbuf; /* raw row buffer */
+ int dofilt; /* whether to run events through the filter */
+ Filter filt; /* filter handle */
+ int nmask; /* number of image masks */
+ FilterMask masks; /* image masks */
+ /* binning/section info */
+ int x0, x1, y0, y1, block, btype;
+ int odims;
+ int odim1, odim2;
+ int obitpix, odtype;
+ /* input/output info */
+ /* whether we convert data when moving from file to native */
+ int iconvert, oconvert;
+ /* input fun struct that we used to open */
+ struct funrec *ifun;
+ /* back-links to structs which use this struct as a reference */
+ struct funrec *bfun[FUN_MAXBFUN];
+ /* flag that we are copying all extensions from input */
+ int icopy;
+ /* whether we merge back into raw input data */
+ int merge;
+ /* operations performed on this handle */
+ int ops;
+ /* list support */
+ int ltype; /* see LIST_XXX above */
+ int lmem; /* amount of memory for saved buffers */
+ int ifd; /* ifd of this gio for select() */
+ struct funrec *head; /* list head, where "global" info resides */
+ struct funrec *current; /* currently active member: stored in head */
+ struct funrec *next; /* next member in linked list */
+ SaveBuf save; /* linked list of save buffers */
+ FILE *lefp; /* temp file for saved overflow (user data) */
+ FILE *lrfp; /* temp file for saved overflow (raw data) */
+ /* view support */
+ char *view; /* original view */
+ char *vcols; /* view columns */
+ char *vfmt; /* view format */
+} *Fun, FunRec;
+
+#define FUNTOOLS_PRIVATE 1
+
+_PRbeg
+
+/* funopen.c */
+Fun _FunFITSOpen _PRx((Fun ifun, char *fname, char *mode));
+
+/* funim.c */
+void *_FunImageMask _PRx((Fun fun, void *buf, int rstart, int rstop,
+ FilterMask masks, int nmask, char *mode));
+int _FunImagePutHeader _PRx((Fun fun, int dim1, int dim2, int bitpix));
+
+/* funtab.c */
+void *_FunRead _PRx((Fun fun, char *buf, size_t size, size_t get, size_t *got));
+void _FunSaveNaxis2 _PRx((Fun fun));
+int _FunFixNaxis2 _PRx((Fun fun));
+int _FunTablePutHeader _PRx((Fun fun));
+
+/* funcol.c */
+void _FunColumnHeader _PRx((Fun fun, FunCol *cols, int ncol));
+void _FunColumnFree _PRx((Fun fun));
+
+/* funcopy.c */
+void _FunCopyBinDelete _PRx((FITSHead header, int n));
+int _FunCopy2ImageHeader _PRx((Fun from, Fun to));
+
+/* funutils.c */
+int _FunPrimaryExtension _PRx((Fun fun));
+void _FunParseSection _PRx((Fun fun, char *section,
+ int *min1, int *max1, int *min2, int *max2,
+ int *block, int *btype, char *tail, int maxlen));
+int _FunColumnDims _PRx((char *s, int type, double *tlmin, double *tlmax,
+ double *binsiz, int *dims,
+ double *tscale, double *tzero, int *scaled));
+void _FunColumnType _PRx((char *s, int *type, int *n,
+ double *tlmin, double *tlmax,
+ double *binsiz, int *dims,
+ double *tscale, double *tzero, int *scaled,
+ int *ptype, int *poff));
+int _FunFile _PRx((char *lbuf, char *tbuf, int len, int *lptr));
+void * _FunSwap _PRx((void *obuf, void *ibuf, int width, int type));
+
+/* funtext.c */
+Fun FunTextOpen _PRx((char *fname, char *mode, char *iline, GIO ifd));
+int FunTextParam _PRx((char *pdelims, char *lbuf,
+ char *kbuf, char *vbuf, char *cbuf, int maxlen));
+void FunTextParamHeader _PRx((FITSHead theader, char *lbuf,
+ char *key, char *val, char *com, int pgot));
+
+/* funopenp.c */
+Fun _FunNew _PRx((void));
+int _FunSpecialFile _PRx((char *fname, char *type,
+ char *name, char *tail, char *extn, int mlen));
+int _FunRowNum _PRx((Fun fun, char *tail, char *env));
+int _FunTableBinCols _PRx((Fun fun, char *tail, char *env));
+int _FunTableValCol _PRx((Fun fun, char *tail, char *env));
+FITSHead _FunRawEvHeader _PRx((Fun fun,
+ char *iname, char *iext, char *eventdef));
+off_t _FunImageSkip _PRx((Fun fun, char *tail));
+Fun _FunValid _PRx((Fun fun));
+void _FunFree _PRx((Fun fun, int flag));
+int _FunImageSize _PRx((Fun fun));
+int _FunMaxBufSize _PRx((Fun fun, char *tail));
+int _FunOpenCommon _PRx((Fun fun));
+
+/* funvu.c */
+int FunView _PRx((Fun fun, char *view, char *vmode, char *fname, int fmax));
+
+_PRend
+
+#include "funtools.h"
+
+#endif /* __funtoolsP.h */