view src/ploki/hash.h @ 8427:1fc808cd5b1f

<b_jonas> learn can\'t is the most frequent word whose pronunciation varies between /\xc9\x91\xcb\x90/ and /\xc3\xa6/ depending on dialect. The list is: advance after answer ask aunt brass can\'t cast castle chance class command dance demand draft enhance example fast father glass graph grass half last laugh mask master nasty pass past path plant rather sample shan\'t staff task vast
author HackBot
date Thu, 09 Jun 2016 21:28:47 +0000
parents ac0403686959
children
line wrap: on
line source

#ifndef HASH_H_
#define HASH_H_

#include <stddef.h>

typedef struct {
	size_t entries, size, newsize;
	size_t brk;
	size_t seed;
	size_t iter;
	struct h_node *iterptr;
	struct h_node **table;
	size_t (*hash)(const void *, size_t);
	int (*cmp)(const void *, const void *);
	void (*delk)(void *);
	void (*delv)(void *);
} Hash;

enum {
	H_OK,
	H_EXIST,
	H_NOENT
};

void h_init(
		Hash *,
		size_t (*)(const void *, size_t),
		int (*)(const void *, const void *),
		void (*)(void *),
		void (*)(void *)
		);
void h_end(Hash *);
int h_get(Hash *, const void *, void **);
int h_del(Hash *, const void *);
#if 0
void h_push(Hash *, void *, void *);
#endif
int h_put(Hash *, void *, void *, int);
void h_reset(Hash *);
int h_nextkv(Hash *, void **, void **);

#if 0
size_t h_entries(const Hash *);
#define h_entries(h) ((h)->entries + 0)
#endif

#endif /* HASH_H_ */