⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cdb.h

📁 打魔兽战网的都知道他是什么
💻 H
字号:
/* public cdb include file * * This file is a part of tinycdb package by Michael Tokarev, mjt@corpit.ru. * Public domain. */#include <stdio.h>#ifndef TINYCDB_VERSION#define TINYCDB_VERSION 0.74typedef unsigned int cdbi_t; /* compatibility *//* common routines */unsigned cdb_hash(const void *buf, unsigned len);unsigned cdb_unpack(const unsigned char buf[4]);void cdb_pack(unsigned num, unsigned char buf[4]);struct cdb {  FILE *cdb_fd;			/* file descriptor */  /* private members */  unsigned cdb_fsize;		/* datafile size */  unsigned cdb_dend;		/* end of data ptr */  const unsigned char *cdb_mem; /* mmap'ed file memory */  unsigned cdb_vpos, cdb_vlen;	/* found data */  unsigned cdb_kpos, cdb_klen;	/* found key */};#define CDB_STATIC_INIT {0,0,0,0,0,0,0,0}#define cdb_datapos(c) ((c)->cdb_vpos)#define cdb_datalen(c) ((c)->cdb_vlen)#define cdb_keypos(c) ((c)->cdb_kpos)#define cdb_keylen(c) ((c)->cdb_klen)#define cdb_fileno(c) ((c)->cdb_fd)int cdb_init(struct cdb *cdbp, FILE *fd);void cdb_free(struct cdb *cdbp);int cdb_read(const struct cdb *cdbp,	     void *buf, unsigned len, unsigned pos);#define cdb_readdata(cdbp, buf) \	cdb_read((cdbp), (buf), cdb_datalen(cdbp), cdb_datapos(cdbp))#define cdb_readkey(cdbp, buf) \	cdb_read((cdbp), (buf), cdb_keylen(cdbp), cdb_keypos(cdbp))const void *cdb_get(const struct cdb *cdbp, unsigned len, unsigned pos);#define cdb_getdata(cdbp) \	cdb_get((cdbp), cdb_datalen(cdbp), cdb_datapos(cdbp))#define cdb_getkey(cdbp) \	cdb_get((cdbp), cdb_keylen(cdbp), cdb_keypos(cdbp))int cdb_find(struct cdb *cdbp, const void *key, unsigned klen);struct cdb_find {  struct cdb *cdb_cdbp;  unsigned cdb_hval;  const unsigned char *cdb_htp, *cdb_htab, *cdb_htend;  unsigned cdb_httodo;  const void *cdb_key;  unsigned cdb_klen;};int cdb_findinit(struct cdb_find *cdbfp, struct cdb *cdbp,		 const void *key, unsigned klen);int cdb_findnext(struct cdb_find *cdbfp);#define cdb_seqinit(cptr, cdbp) ((*(cptr))=2048)int cdb_seqnext(unsigned *cptr, struct cdb *cdbp);/* old simple interface *//* open file using standard routine, then: */int cdb_seek(FILE *fd, const void *key, unsigned klen, unsigned *dlenp);int cdb_bread(FILE *fd, void *buf, int len);/* cdb_make */struct cdb_make {  FILE *cdb_fd;			/* file descriptor */  /* private */  unsigned cdb_dpos;		/* data position so far */  unsigned cdb_rcnt;		/* record count so far */  char cdb_buf[4096];		/* write buffer */  char *cdb_bpos;		/* current buf position */  struct cdb_rl *cdb_rec[256];	/* list of arrays of record infos */};int cdb_make_start(struct cdb_make *cdbmp, FILE *fd);int cdb_make_add(struct cdb_make *cdbmp,		 const void *key, unsigned klen,		 const void *val, unsigned vlen);int cdb_make_exists(struct cdb_make *cdbmp,		    const void *key, unsigned klen);int cdb_make_put(struct cdb_make *cdbmp,		 const void *key, unsigned klen,		 const void *val, unsigned vlen,		 int flag);#define CDB_PUT_ADD	0	/* add unconditionnaly, like cdb_make_add() */#define CDB_PUT_REPLACE	1	/* replace: do not place to index OLD record */#define CDB_PUT_INSERT	2	/* add only if not already exists */#define CDB_PUT_WARN	3	/* add unconditionally but ret. 1 if exists */int cdb_make_finish(struct cdb_make *cdbmp);#endif /* include guard */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -