Skip to content
C hash implementation based on khash
C Makefile
Find file
Latest commit 381bf80 @tj tj Merge pull request #4 from msiemens/patch-1
Fix segmentation fault in `hash_has`
Failed to load latest commit information.
.gitignore Initial commit
Makefile Initial commit docs
hash.c Fix segmentation fault in `hash_has`
hash.h fix khash include
khash.h add package.json
package.json docs


C hash implementation based on khash.


Install with clib:

$ clib install clibs/hash


hash_t *hash = hash_new();
hash_set(hash, "name", "tobi");
hash_set(hash, "species", "ferret");
hash_set(hash, "age", "2");

hash_each(hash, {
  printf("%s: %s\n", key, (char *) val);



species: ferret
age: 2
name: tobi



The hash type.

hash_t *hash_new()

Allocate and initialize a new hash.

hash_free(hash_t *self)

Free the hash, you must free values appropriately.

unsigned int hash_size(hash_t *self)

Return the number of values in the hash table.

void hash_clear(hash_t *self)

Remove all values from the hash.

void hash_set(hash_t *self, char *key, void *val);

Set key to val.

void *hash_get(hash_t *self, char *key);

Get value for key or NULL.

int hash_has(hash_t *self, char *key);

Check if the hash contains key.

void hash_del(hash_t *self, char *key);

Remove key from the hash.

hash_each(hash_t *self, block)

A macro for iterating key/value pairs.

hash_each(users, {
  printf("%s: %s\n", key, (char *) val);

hash_each_key(hash_t *self, block)

A macro for iterating keys only.

hash_each_key(users, {
  printf("%s\n", key);

hash_each_val(hash_t *self, block)

A macro for iterating values only.

hash_each_val(users, {
  printf("%s\n", (char *) val);
Something went wrong with that request. Please try again.