-rw-r--r-- 1815 cdb-20251021/cdb.h raw
/* Public domain. */
#ifndef CDB_H
#define CDB_H
#include "num.h"
#ifdef CDB64
#define CDB_LIMIT 0xfffffffffffffffLL
#define CDB_HASHMASK 0xffffffffffffffffULL
#define CDB_HASHTOP(h) (((h)>>8)&0xffffffffffffffLL)
#define CDB_NUMBYTES 8
#define cdb_unpacknum num_from8bytes
#define cdb_packnum num_to8bytes_allowoverflow
#else
#define CDB_LIMIT 0xffffffffLL
#define CDB_HASHMASK 0xffffffffLL
#define CDB_HASHTOP(h) ((h)>>8)
#define CDB_NUMBYTES 4
#define cdb_unpacknum num_from4bytes
#define cdb_packnum num_to4bytes_allowoverflow
#endif
#ifdef CDB64
#define cdb cdb64
#define cdb_hashadd cdb64_hashadd
#define cdb_hash cdb64_hash
#define cdb_free cdb64_free
#define cdb_init cdb64_init
#define cdb_read cdb64_read
#define cdb_findstart cdb64_findstart
#define cdb_findnext cdb64_findnext
#define cdb_find cdb64_find
#endif
#define CDB_HASHSTART 5381
extern num cdb_hashadd(num,unsigned char);
extern num cdb_hash(const char *,num);
struct cdb {
char *map; /* 0 if no map is available */
num fd;
num size; /* initialized if map is nonzero */
num loop; /* number of hash slots searched under this key */
num khash; /* initialized if loop is nonzero */
num kpos; /* initialized if loop is nonzero */
num hpos; /* initialized if loop is nonzero */
num hslots; /* initialized if loop is nonzero */
num dpos; /* initialized if cdb_findnext() returns 1 */
num dlen; /* initialized if cdb_findnext() returns 1 */
} ;
extern void cdb_free(struct cdb *);
extern void cdb_init(struct cdb *,num);
extern num cdb_read(struct cdb *,char *,num,num);
extern void cdb_findstart(struct cdb *);
extern num cdb_findnext(struct cdb *,const char *,num);
extern num cdb_find(struct cdb *,const char *,num);
#define cdb_datapos(c) ((c)->dpos)
#define cdb_datalen(c) ((c)->dlen)
#endif