Next version of JABA
[jabaws.git] / binaries / src / fasta34 / mm_file.h
1 /*
2   copyright (c) 1999 William R. Pearson
3 */
4
5 /* $Name: fa_34_26_5 $ - $Id: mm_file.h,v 1.26 2006/10/05 18:20:40 wrp Exp $ */
6
7 /*
8   mm_file.h - defines m_file_str for mmap()ed files 
9 */
10
11 #include <sys/types.h>
12
13 #ifndef USE_FSEEKO
14 #define FSEEK fseek
15 #define FTELL ftell
16 typedef long fseek_t;
17 #else
18 #define FSEEK fseeko
19 #define FTELL ftello
20 typedef off_t fseek_t;
21 #endif
22 #define FSEEK_T_DEF
23
24 #ifdef HAS_INTTYPES
25 #include <inttypes.h>
26 #else
27 #ifdef WIN32
28 typedef __int64 int64_t;
29 typedef unsigned __int64 uint64_t;
30 #else
31 typedef long int64_t;
32 typedef unsigned long uint64_t;
33 #endif
34 #endif
35 #ifdef BIG_LIB64
36 typedef int64_t MM_OFF;
37 #else
38 typedef long MM_OFF;
39 #endif
40
41 #ifdef MYSQL_DB
42 #include <mysql.h>
43 #endif
44 #ifdef PGSQL_DB
45 #include <libpq-fe.h>
46 #endif
47
48 struct lmf_str {
49   FILE *libf;           /* sequence file being read */
50   FILE *hfile;          /* BLAST2.0 description file */
51   unsigned int *oid_list;       /* oid list for subsets */
52   int oid_seqs;         /* start offset for mask array */
53   int pref_db;          /* preferred database */
54   unsigned int max_oid; /* start offset for mask array */
55
56   char lb_name[120];    /* file name */
57   int lb_type;          /* library type */
58   int *sascii;          /* ascii -> sq mapping */
59
60   /* used by flat files */
61   char *lline;          /* last line read */
62   unsigned char *cpsave;        /* position in line for lgetlib() */
63   fseek_t lpos;                 /* position in file */
64
65   /* Genbank Flat files */
66   int lfflag;           /* flag for CRLF in EMBL CDROM files */
67
68   /* stuff for GCG format files (5,6) */
69   int gcg_binary;       /* flag for binary gcg format */
70   long gcg_len;         /* length of GCG sequence */
71
72   int bl_lib_pos;         /* for ncbl2 */
73   int bl_format_ver;      /* blast formatdb version */
74   char opt_text[MAX_FN];          /* text after filename */
75
76   /* used when memory mapping */
77   int mm_flg;           /* mmap worked */
78   int mmap_fd;          /* mmap_fd */
79   char *mmap_base;      /* base */
80   char *mmap_addr;      /* current pos */
81   long st_size;         /* file size */
82
83   MM_OFF *d_pos_arr;    /* pointer to desc. offsets */
84   MM_OFF *s_pos_arr;    /* pointer to seq. offsets */
85   MM_OFF *a_pos_arr;    /* pointer to aux offsets */
86
87   /* currently available only for memory mapped files */
88   int max_cnt;          /* # database entries */
89   int64_t tot_len;      /* total residue length */
90   long max_len;         /* maximum sequence lengh */
91   int lib_aa;           /* 0 = DNA, 1 = prot */
92   char *tmp_buf;        /* temporary buffer */
93   int tmp_buf_max;      /* max size */
94
95   /* used for SQL database queries */
96   char *sql_db, *sql_query, *sql_getdesc, *sql_getseq;
97   int sql_reopen;
98   char **sql_uid_arr;   /* indexed by lpos */
99   /* used to get sequence data */
100   char *sql_seqp;
101
102 #ifdef MYSQL_DB
103   /* used to open the database */
104   MYSQL *mysql_conn;
105   MYSQL_RES *mysql_res;
106   MYSQL_ROW mysql_row;
107 #endif
108
109 #ifdef PGSQL_DB
110   /* used to open the database */
111   PGconn *pgsql_conn;
112   PGresult *pgsql_res;
113 #endif
114
115   int (*getlib)(unsigned char *seq, int maxs,
116                 char *libstr, int n_libstr,
117                 fseek_t *libpos,
118                 int *lcont,
119                 struct lmf_str *lm_fd,
120                 long *l_off);
121
122   void (*ranlib)(char *str, int cnt,
123                  fseek_t libpos, char *libstr,
124                  struct lmf_str *lm_fd);
125 };
126