view src/ploki/hash.h @ 12292:d51f2100210c draft

<kspalaiologos> `` cat <<<"asmbf && bfi output.b" > /hackenv/ibin/asmbf
author HackEso <hackeso@esolangs.org>
date Thu, 02 Jan 2020 15:38:21 +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_ */