/[LeafOK_CVS]/pvpgn-1.7.4/src/tinycdb/cdb.h
ViewVC logotype

Annotation of /pvpgn-1.7.4/src/tinycdb/cdb.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (hide annotations) (vendor branch)
Tue Jun 6 03:41:38 2006 UTC (19 years, 9 months ago) by sysadm
Branch: GNU, MAIN
CVS Tags: arelease, HEAD
Changes since 1.1: +0 -0 lines
Content type: text/x-chdr
no message

1 sysadm 1.1 /* public cdb include file
2     *
3     * This file is a part of tinycdb package by Michael Tokarev, mjt@corpit.ru.
4     * Public domain.
5     */
6     #include <stdio.h>
7    
8     #ifndef TINYCDB_VERSION
9     #define TINYCDB_VERSION 0.74
10    
11     typedef unsigned int cdbi_t; /* compatibility */
12    
13     /* common routines */
14     unsigned cdb_hash(const void *buf, unsigned len);
15     unsigned cdb_unpack(const unsigned char buf[4]);
16     void cdb_pack(unsigned num, unsigned char buf[4]);
17    
18     struct cdb {
19     FILE *cdb_fd; /* file descriptor */
20     /* private members */
21     unsigned cdb_fsize; /* datafile size */
22     unsigned cdb_dend; /* end of data ptr */
23     const unsigned char *cdb_mem; /* mmap'ed file memory */
24     unsigned cdb_vpos, cdb_vlen; /* found data */
25     unsigned cdb_kpos, cdb_klen; /* found key */
26     };
27    
28     #define CDB_STATIC_INIT {0,0,0,0,0,0,0,0}
29    
30     #define cdb_datapos(c) ((c)->cdb_vpos)
31     #define cdb_datalen(c) ((c)->cdb_vlen)
32     #define cdb_keypos(c) ((c)->cdb_kpos)
33     #define cdb_keylen(c) ((c)->cdb_klen)
34     #define cdb_fileno(c) ((c)->cdb_fd)
35    
36     int cdb_init(struct cdb *cdbp, FILE *fd);
37     void cdb_free(struct cdb *cdbp);
38    
39     int cdb_read(const struct cdb *cdbp,
40     void *buf, unsigned len, unsigned pos);
41     #define cdb_readdata(cdbp, buf) \
42     cdb_read((cdbp), (buf), cdb_datalen(cdbp), cdb_datapos(cdbp))
43     #define cdb_readkey(cdbp, buf) \
44     cdb_read((cdbp), (buf), cdb_keylen(cdbp), cdb_keypos(cdbp))
45    
46     const void *cdb_get(const struct cdb *cdbp, unsigned len, unsigned pos);
47     #define cdb_getdata(cdbp) \
48     cdb_get((cdbp), cdb_datalen(cdbp), cdb_datapos(cdbp))
49     #define cdb_getkey(cdbp) \
50     cdb_get((cdbp), cdb_keylen(cdbp), cdb_keypos(cdbp))
51    
52     int cdb_find(struct cdb *cdbp, const void *key, unsigned klen);
53    
54     struct cdb_find {
55     struct cdb *cdb_cdbp;
56     unsigned cdb_hval;
57     const unsigned char *cdb_htp, *cdb_htab, *cdb_htend;
58     unsigned cdb_httodo;
59     const void *cdb_key;
60     unsigned cdb_klen;
61     };
62    
63     int cdb_findinit(struct cdb_find *cdbfp, struct cdb *cdbp,
64     const void *key, unsigned klen);
65     int cdb_findnext(struct cdb_find *cdbfp);
66    
67     #define cdb_seqinit(cptr, cdbp) ((*(cptr))=2048)
68     int cdb_seqnext(unsigned *cptr, struct cdb *cdbp);
69    
70     /* old simple interface */
71     /* open file using standard routine, then: */
72     int cdb_seek(FILE *fd, const void *key, unsigned klen, unsigned *dlenp);
73     int cdb_bread(FILE *fd, void *buf, int len);
74    
75     /* cdb_make */
76    
77     struct cdb_make {
78     FILE *cdb_fd; /* file descriptor */
79     /* private */
80     unsigned cdb_dpos; /* data position so far */
81     unsigned cdb_rcnt; /* record count so far */
82     char cdb_buf[4096]; /* write buffer */
83     char *cdb_bpos; /* current buf position */
84     struct cdb_rl *cdb_rec[256]; /* list of arrays of record infos */
85     };
86    
87     int cdb_make_start(struct cdb_make *cdbmp, FILE *fd);
88     int cdb_make_add(struct cdb_make *cdbmp,
89     const void *key, unsigned klen,
90     const void *val, unsigned vlen);
91     int cdb_make_exists(struct cdb_make *cdbmp,
92     const void *key, unsigned klen);
93     int cdb_make_put(struct cdb_make *cdbmp,
94     const void *key, unsigned klen,
95     const void *val, unsigned vlen,
96     int flag);
97     #define CDB_PUT_ADD 0 /* add unconditionnaly, like cdb_make_add() */
98     #define CDB_PUT_REPLACE 1 /* replace: do not place to index OLD record */
99     #define CDB_PUT_INSERT 2 /* add only if not already exists */
100     #define CDB_PUT_WARN 3 /* add unconditionally but ret. 1 if exists */
101     int cdb_make_finish(struct cdb_make *cdbmp);
102    
103     #endif /* include guard */

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1