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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (show 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 /* 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