Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
C hash implementation based on khash
C
branch: master

merge

latest commit f00e6e6e16
TJ Holowaychuk tj authored
Failed to load latest commit information.
.gitignore Initial commit
Makefile Initial commit
Readme.md docs
hash.c fix test asserts to account for randomness
hash.h fix khash include
khash.h add package.json
package.json docs

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);
})
Something went wrong with that request. Please try again.