C hash implementation based on khash
C Makefile
Switch branches/tags
Nothing to show
Clone or download
Latest commit cce864e Jun 22, 2016
Permalink
Failed to load latest commit information.
.gitignore Initial commit Jun 17, 2012
Makefile Initial commit Jun 17, 2012
Readme.md docs Oct 10, 2013
hash.c Fixed "no newline at end of file [-Werror,-Wnewline-eof]" error. Jun 22, 2016
hash.h Fixed a couple errors. Jun 22, 2016
khash.h Updated to latest "khash.h". Jun 22, 2016
package.json docs Oct 10, 2013

Readme.md

hash

C hash implementation based on khash.

Installation

Install with clib:

$ clib install clibs/hash

Example

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);
});

hash_free(hash);

yields:

species: ferret
age: 2
name: tobi

API

hash_t

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);
})