--- /dev/null
+/*
+ copyright (c) 1999 William R. Pearson
+*/
+
+/* $Name: fa_34_26_5 $ - $Id: mm_file.h,v 1.26 2006/10/05 18:20:40 wrp Exp $ */
+
+/*
+ mm_file.h - defines m_file_str for mmap()ed files
+*/
+
+#include <sys/types.h>
+
+#ifndef USE_FSEEKO
+#define FSEEK fseek
+#define FTELL ftell
+typedef long fseek_t;
+#else
+#define FSEEK fseeko
+#define FTELL ftello
+typedef off_t fseek_t;
+#endif
+#define FSEEK_T_DEF
+
+#ifdef HAS_INTTYPES
+#include <inttypes.h>
+#else
+#ifdef WIN32
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+#else
+typedef long int64_t;
+typedef unsigned long uint64_t;
+#endif
+#endif
+#ifdef BIG_LIB64
+typedef int64_t MM_OFF;
+#else
+typedef long MM_OFF;
+#endif
+
+#ifdef MYSQL_DB
+#include <mysql.h>
+#endif
+#ifdef PGSQL_DB
+#include <libpq-fe.h>
+#endif
+
+struct lmf_str {
+ FILE *libf; /* sequence file being read */
+ FILE *hfile; /* BLAST2.0 description file */
+ unsigned int *oid_list; /* oid list for subsets */
+ int oid_seqs; /* start offset for mask array */
+ int pref_db; /* preferred database */
+ unsigned int max_oid; /* start offset for mask array */
+
+ char lb_name[120]; /* file name */
+ int lb_type; /* library type */
+ int *sascii; /* ascii -> sq mapping */
+
+ /* used by flat files */
+ char *lline; /* last line read */
+ unsigned char *cpsave; /* position in line for lgetlib() */
+ fseek_t lpos; /* position in file */
+
+ /* Genbank Flat files */
+ int lfflag; /* flag for CRLF in EMBL CDROM files */
+
+ /* stuff for GCG format files (5,6) */
+ int gcg_binary; /* flag for binary gcg format */
+ long gcg_len; /* length of GCG sequence */
+
+ int bl_lib_pos; /* for ncbl2 */
+ int bl_format_ver; /* blast formatdb version */
+ char opt_text[MAX_FN]; /* text after filename */
+
+ /* used when memory mapping */
+ int mm_flg; /* mmap worked */
+ int mmap_fd; /* mmap_fd */
+ char *mmap_base; /* base */
+ char *mmap_addr; /* current pos */
+ long st_size; /* file size */
+
+ MM_OFF *d_pos_arr; /* pointer to desc. offsets */
+ MM_OFF *s_pos_arr; /* pointer to seq. offsets */
+ MM_OFF *a_pos_arr; /* pointer to aux offsets */
+
+ /* currently available only for memory mapped files */
+ int max_cnt; /* # database entries */
+ int64_t tot_len; /* total residue length */
+ long max_len; /* maximum sequence lengh */
+ int lib_aa; /* 0 = DNA, 1 = prot */
+ char *tmp_buf; /* temporary buffer */
+ int tmp_buf_max; /* max size */
+
+ /* used for SQL database queries */
+ char *sql_db, *sql_query, *sql_getdesc, *sql_getseq;
+ int sql_reopen;
+ char **sql_uid_arr; /* indexed by lpos */
+ /* used to get sequence data */
+ char *sql_seqp;
+
+#ifdef MYSQL_DB
+ /* used to open the database */
+ MYSQL *mysql_conn;
+ MYSQL_RES *mysql_res;
+ MYSQL_ROW mysql_row;
+#endif
+
+#ifdef PGSQL_DB
+ /* used to open the database */
+ PGconn *pgsql_conn;
+ PGresult *pgsql_res;
+#endif
+
+ int (*getlib)(unsigned char *seq, int maxs,
+ char *libstr, int n_libstr,
+ fseek_t *libpos,
+ int *lcont,
+ struct lmf_str *lm_fd,
+ long *l_off);
+
+ void (*ranlib)(char *str, int cnt,
+ fseek_t libpos, char *libstr,
+ struct lmf_str *lm_fd);
+};
+