dbh.h - bmf - bmf (Bayesian Mail Filter) 0.9.4 fork + patches
 (HTM) git clone git://git.codemadness.org/bmf
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       dbh.h (2129B)
       ---
            1 /* $Id: dbh.h,v 1.3 2002/10/02 04:45:40 tommy Exp $ */
            2 
            3 /*
            4  * Copyright (c) 2002 Tom Marshall <tommy@tig-grr.com>
            5  *
            6  * This program is free software.  It may be distributed under the terms
            7  * in the file LICENSE, found in the top level of the distribution.
            8  */
            9 
           10 #ifndef _DBH_H
           11 #define _DBH_H
           12 
           13 #define BOGOFILTER_HEADER "# bogofilter wordlist (format version A): %u\n"
           14 #define TEXTDB_MAXLINELEN    (MAXWORDLEN+32)
           15 
           16 /* record/field structure */
           17 typedef struct _rec {
           18         str_t w;
           19         uint n;
           20 } rec_t;
           21 
           22 /* database table */
           23 typedef struct _dbt dbt_t;
           24 struct _dbt {
           25         bool_t(*close) (dbt_t *);
           26         bool_t(*mergeclose) (dbt_t *, vec_t *);
           27         bool_t(*unmergeclose) (dbt_t *, vec_t *);
           28         uint(*getmsgcount) (dbt_t *);
           29         uint(*getcount) (dbt_t *, str_t *);
           30 };
           31 
           32 typedef struct _dbttext dbttext_t;
           33 struct _dbttext
           34 {
           35     bool_t      (*close)(dbttext_t*);
           36     bool_t      (*mergeclose)(dbttext_t*,vec_t*);
           37     bool_t      (*unmergeclose)(dbttext_t*,vec_t*);
           38     uint        (*getmsgcount)(dbttext_t*);
           39     uint        (*getcount)(dbttext_t*,str_t*);
           40 
           41     int         fd;         /* file descriptor, if currently open */
           42     char*       pbuf;       /* data buffer, if currently open */
           43     uint        nmsgs;      /* number of messages represented in list */
           44     uint        nalloc;     /* items alloced in pitems */
           45     uint        nitems;     /* items available */
           46     rec_t*      pitems;     /* growing vector of items */
           47 };
           48 
           49 typedef struct _dbhtext dbhtext_t;
           50 struct _dbhtext
           51 {
           52     bool_t      (*close)(dbhtext_t*);
           53     dbt_t*      (*opentable)(dbhtext_t*,cpchar,bool_t);
           54 
           55     char*       dir;
           56 };
           57 
           58 uint db_getnewcount(veciter_t * piter);
           59 
           60 dbhtext_t*  dbtext_db_open(cpchar dbname, bool_t rdonly);
           61 bool_t  dbtext_db_close( dbhtext_t* pthis );
           62 dbt_t*  dbtext_db_opentable( dbhtext_t* pthis, cpchar table, bool_t rdonly );
           63 
           64 bool_t  dbtext_table_close( dbttext_t* pthis );
           65 bool_t  dbtext_table_mergeclose( dbttext_t* pthis, vec_t* pmsg );
           66 bool_t  dbtext_table_unmergeclose( dbttext_t* pthis, vec_t* pmsg );
           67 uint    dbtext_table_getmsgcount( dbttext_t* pthis );
           68 uint    dbtext_table_getcount( dbttext_t* pthis, str_t* pword );
           69 
           70 #endif                                /* ndef _DBH_H */