view src/ploki/hash.h @ 8916:0234daffd946

<oerjan> addquote <int-e> I couldn\'t help thinking that maybe if one considers the ramifications in full detail it will turn out that overthinking is often not helpful and therefore, not something to be proud of.
author HackBot
date Sun, 14 Aug 2016 02:31: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_ */