📄 squid.h.in
字号:
MSA *msa; MSAFILE *afp;};typedef struct ReadSeqVars SQFILE;/**************************************************** * Cluster analysis and phylogenetic tree support ****************************************************/ /* struct phylo_s - a phylogenetic tree * * For N sequences, there will generally be an array of 0..N-2 * phylo_s structures representing the nodes of a tree. * [0] is the root. The indexes of left and * right children are somewhat confusing so be careful. The * indexes can have values of 0..2N-2. If they are 0..N-1, they * represent pointers to individual sequences. If they are * >= N, they represent pointers to a phylo_s structure * at (index - N). */struct phylo_s { int parent; /* index of parent, N..2N-2, or -1 for root */ int left; /* index of one of the branches, 0..2N-2 */ int right; /* index of other branch, 0..2N-2 */ float diff; /* difference score between seqs */ float lblen; /* left branch length */ float rblen; /* right branch length */ char *is_in; /* 0..N-1 flag array, 1 if seq included */ int incnum; /* number of seqs included at this node */};/* Strategies for cluster analysis; cluster by mean distance, * minimum distance, or maximum distance. */enum clust_strategy { CLUSTER_MEAN, CLUSTER_MAX, CLUSTER_MIN };/**************************************************** * Generic data structure support ****************************************************//* a struct intstack_s implements a pushdown stack for storing * single integers. */struct intstack_s { int data; struct intstack_s *nxt;};/**************************************************** * Binary nucleotide alphabet support ****************************************************//* Binary encoding of the IUPAC code for nucleotides * * four-bit "word", permitting rapid degenerate matching * A C G T/U * 0 0 1 0 */#define NTA 8#define NTC 4#define NTG 2#define NTT 1#define NTU 1#define NTN 15 /* A|C|G|T */#define NTR 10 /* A|G */#define NTY 5 /* C|T */#define NTM 12 /* A|C */#define NTK 3 /* G|T */#define NTS 6 /* C|G */#define NTW 9 /* A|T */#define NTH 13 /* A|C|T */#define NTB 7 /* C|G|T */#define NTV 14 /* A|C|G */#define NTD 11 /* A|G|T */#define NTGAP 16 /* GAP */#define NTEND 0 /* null string terminator *//* ntmatch(): bitwise comparison of two nuc's * note that it's sensitive to the order; * probe may be degenerate but target should not be */#define ntmatch(probe, target) ((probe & target) == target)/**************************************************** * Support for a portable, flexible Getopt() ****************************************************//* Structure: opt_s * * Structure for declaring options to a main(). */struct opt_s { char *name; /* name of option, e.g. "--option1" or "-o" */ int single; /* TRUE if a single letter option */ int argtype; /* for typechecking, e.g. sqdARG_INT */}; /* acceptable argtype's... */#define sqdARG_NONE 0 /* no argument */#define sqdARG_INT 1 /* something that atoi() can grok */#define sqdARG_FLOAT 2 /* something that atof() can grok */#define sqdARG_CHAR 3 /* require single character or digit */#define sqdARG_STRING 4 /* anything goes *//**************************************************** * Support for convenient Perl-y regexp matching * See hsregexp.c for copyright notice: this code is derived * from Henry Spencer's freely distributed regexp library. ****************************************************/#define NSUBEXP 10typedef struct sqd_regexp { char *startp[NSUBEXP]; char *endp[NSUBEXP]; char regstart; /* Internal use only. */ char reganch; /* Internal use only. */ char *regmust; /* Internal use only. */ int regmlen; /* Internal use only. */ char program[1]; /* Unwarranted chumminess with compiler. */} sqd_regexp;/* Strparse() defines and manages these. * sqd_parse[0] contains the substring that matched the pattern. * sqd_parse[1-9] contain substrings matched with ()'s. */extern char *sqd_parse[10];/**************************************************** * Portable detection of multiprocessor # of CPUs. * #include <unistd.h> * long foo = SQD_NPROC; * returns the number of available processors. * if foo == -1, we failed. ****************************************************//* Our problem here is that POSIX apparently doesn't specify * a standard for how to get sysconf() to report the number of * processors on-line. _SC_NPROCESSORS_ONLN is specified * by SVR4.0MP. Thanks to W. Gish for help here. */#undef SQD_NPROC#ifdef _SC_NPROCESSORS_ONLN /* Sun Solaris, Digital UNIX */#define SQD_NPROC sysconf(_SC_NPROCESSORS_ONLN)#else#ifdef _SC_NPROC_ONLN /* Silicon Graphics IRIX */#define SQD_NPROC sysconf(_SC_NPROC_ONLN)#else /* FreeBSD, Linux don't support getting ncpu via sysconf() */#define SQD_NPROC -1#endif#endif/**************************************************** * Three levels of debugging printf's and assert's * level 1: little impact on verbosity or performance * level 2: moderate impact * level 3: high impact * Example: * SQD_DPRINTF3(("Matrix row %d col %d = %f\n", i, j, val)); * Note the double parentheses; these are important. ****************************************************/#ifndef DEBUGLEVEL#define DEBUGLEVEL 0#endif#if (DEBUGLEVEL >= 1)#define SQD_DPRINTF1(x) printf x#define SQD_DASSERT1(x) assert x#else#define SQD_DPRINTF1(x) #define SQD_DASSERT1(x)#endif#if (DEBUGLEVEL >= 2)#define SQD_DPRINTF2(x) printf x#define SQD_DASSERT2(x) assert x#else#define SQD_DPRINTF2(x) #define SQD_DASSERT2(x)#endif#if (DEBUGLEVEL >= 3)#define SQD_DPRINTF3(x) printf x#define SQD_DASSERT3(x) assert x#else#define SQD_DPRINTF3(x) #define SQD_DASSERT3(x)#endif/* PANIC is called for failures of Std C/POSIX functions, * instead of my own functions. Panic() calls perror() and exits * abnormally. */#define PANIC Panic(__FILE__, __LINE__)/* Malloc/realloc calls are wrapped */#define MallocOrDie(x) sre_malloc(__FILE__, __LINE__, (x))#define ReallocOrDie(x,y) sre_realloc(__FILE__, __LINE__, (x), (y))/**************************************************** * Miscellaneous macros and defines ****************************************************/#define CHOOSE(a) ((int) (sre_random() * (a))) /* must declare swapfoo to use SWAP() */#define SWAP(a,b) {swapfoo = b; b = a; a = swapfoo;}#define ScalarsEqual(a,b) (fabs((a)-(b)) < 1e-7)#ifndef MIN#define MIN(a,b) (((a)<(b))?(a):(b))#endif#ifndef MAX#define MAX(a,b) (((a)>(b))?(a):(b))#endif/* For convenience and (one hopes) clarity in boolean tests: */#ifndef TRUE#define TRUE 1#endif#ifndef FALSE #define FALSE 0#endif/* Somewhere, there is a universe in which Unix vendors comply * with the ANSI C standard. Unfortunately, it is not ours: */#ifndef EXIT_SUCCESS#define EXIT_SUCCESS 0#endif#ifndef EXIT_FAILURE#define EXIT_FAILURE 1#endif#include "sqfuncs.h" /* squid function declarations */#endif /* SQUIDH_INCLUDED */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -