hat-util 0.6.18
Utility library
ht.h File Reference

Hash table. More...

#include <stddef.h>
#include <stdint.h>
#include "allocator.h"
Include dependency graph for ht.h:

Go to the source code of this file.

Macros

#define HAT_HT_SUCCESS   0
 
#define HAT_HT_ERROR   (-1)
 

Typedefs

typedef struct hat_ht_t hat_ht_t
 Hash table.
 
typedef void * hat_ht_iter_t
 Hash table iterator.
 

Functions

hat_ht_that_ht_create (hat_allocator_t *a, size_t avg_count)
 Create new hash table.
 
void hat_ht_destroy (hat_ht_t *t)
 Destroy hash table.
 
int hat_ht_resize (hat_ht_t *t, size_t avg_count)
 Reallocate hash table based on new average count.
 
size_t hat_ht_count (hat_ht_t *t)
 Number of elements in table.
 
size_t hat_ht_avg_count (hat_ht_t *t)
 Initially estimated number of elements in table.
 
int hat_ht_set (hat_ht_t *t, void *key, size_t key_size, void *value)
 Set element in table.
 
void * hat_ht_get (hat_ht_t *t, void *key, size_t key_size)
 Get element from table.
 
void * hat_ht_pop (hat_ht_t *t, void *key, size_t key_size)
 Pop element from table.
 
int hat_ht_del (hat_ht_t *t, void *key, size_t key_size)
 Delete element from table.
 
hat_ht_iter_t hat_ht_iter_next (hat_ht_t *t, hat_ht_iter_t prev)
 Get next iterator position.
 
void * hat_ht_iter_key (hat_ht_iter_t i)
 Get current key.
 
size_t hat_ht_iter_key_size (hat_ht_iter_t i)
 Get current key size.
 
void * hat_ht_iter_value (hat_ht_iter_t i)
 Get current value.
 

Detailed Description

Hash table.

This hash table implementation stores copies of key data and value pointers.

Macro Definition Documentation

◆ HAT_HT_ERROR

#define HAT_HT_ERROR   (-1)

◆ HAT_HT_SUCCESS

#define HAT_HT_SUCCESS   0

Typedef Documentation

◆ hat_ht_iter_t

typedef void* hat_ht_iter_t

Hash table iterator.

◆ hat_ht_t

typedef struct hat_ht_t hat_ht_t

Hash table.

Function Documentation

◆ hat_ht_avg_count()

size_t hat_ht_avg_count ( hat_ht_t t)

Initially estimated number of elements in table.

Parameters
[in]ttable
Returns
elements count

◆ hat_ht_count()

size_t hat_ht_count ( hat_ht_t t)

Number of elements in table.

Parameters
[in]ttable
Returns
elements count

◆ hat_ht_create()

hat_ht_t * hat_ht_create ( hat_allocator_t a,
size_t  avg_count 
)

Create new hash table.

Parameters
[in]aallocator
[in]avg_countestimated number of elements in table
Returns
table or NULL on failure

◆ hat_ht_del()

int hat_ht_del ( hat_ht_t t,
void *  key,
size_t  key_size 
)

Delete element from table.

Parameters
[in]ttable
[in]keykey
[in]key_sizekey size
Returns
HAT_HT_SUCCESS or HAT_HT_ERROR

◆ hat_ht_destroy()

void hat_ht_destroy ( hat_ht_t t)

Destroy hash table.

Parameters
[in]ttable

◆ hat_ht_get()

void * hat_ht_get ( hat_ht_t t,
void *  key,
size_t  key_size 
)

Get element from table.

Parameters
[in]ttable
[in]keykey
[in]key_sizekey size
Returns
value or NULL on failure

◆ hat_ht_iter_key()

void * hat_ht_iter_key ( hat_ht_iter_t  i)

Get current key.

Parameters
[in]iiterator
Returns
key

◆ hat_ht_iter_key_size()

size_t hat_ht_iter_key_size ( hat_ht_iter_t  i)

Get current key size.

Parameters
[in]iiterator
Returns
key size

◆ hat_ht_iter_next()

hat_ht_iter_t hat_ht_iter_next ( hat_ht_t t,
hat_ht_iter_t  prev 
)

Get next iterator position.

Parameters
[in]ttable
[in]prevprevious iterator position
Returns
iterator or NULL

If prev is NULL, new iterator points to first entry. If all entries are iterated, NULL is returned.

◆ hat_ht_iter_value()

void * hat_ht_iter_value ( hat_ht_iter_t  i)

Get current value.

Parameters
[in]iiterator
Returns
value

◆ hat_ht_pop()

void * hat_ht_pop ( hat_ht_t t,
void *  key,
size_t  key_size 
)

Pop element from table.

Parameters
[in]ttable
[in]keykey
[in]key_sizekey size
Returns
value or NULL on failure

◆ hat_ht_resize()

int hat_ht_resize ( hat_ht_t t,
size_t  avg_count 
)

Reallocate hash table based on new average count.

Parameters
[in]ttable
[in]avg_countnew estimated number of elements in table
Returns
HAT_HT_SUCCESS or HAT_HT_ERROR

◆ hat_ht_set()

int hat_ht_set ( hat_ht_t t,
void *  key,
size_t  key_size,
void *  value 
)

Set element in table.

Parameters
[in]ttable
[in]keykey
[in]key_sizekey size
[in]valuevalue
Returns
HAT_HT_SUCCESS or HAT_HT_ERROR

If key already exist, value is overridden.