ecoli_htable(3)

πŸ“¦
version 0.11.3 Β· 5 versions
, in epel 9

πŸ’… ecoli_htable β€” Hash Table (Libecoli manual, section 3) πŸ—‚οΈβœ¨

okay so bestie, gather round, because this page is literally the whole Libecoli hash table API and it's giving "any key you want" energy πŸ‘‘

🌸 NAME 🌸

ecoli_htable β€” Hash table

  • Simple hash table API (any key) πŸ’–

✨ SYNOPSIS ✨

πŸŽ€ Typedefs

  • typedef void(* ec_htable_elt_free_t) (void *)

πŸ¦‹ Functions

struct ec_htable * ec_htable (void)
void * ec_htable_get (const struct ec_htable *htable, const void *key,
    size_t key_len)
bool ec_htable_has_key (const struct ec_htable *htable, const void *key,
    size_t key_len)
int ec_htable_del (struct ec_htable *htable, const void *key, size_t
    key_len)
int ec_htable_set (struct ec_htable *htable, const void *key, size_t
    key_len, void *val, ec_htable_elt_free_t free_cb)
void ec_htable_free (struct ec_htable *htable)
size_t ec_htable_len (const struct ec_htable *htable)
struct ec_htable * ec_htable_dup (const struct ec_htable *htable)
void ec_htable_force_seed (uint32_t seed)
void ec_htable_dump (FILE *out, const struct ec_htable *htable)
struct ec_htable_elt_ref * ec_htable_iter (const struct ec_htable
    *htable)
struct ec_htable_elt_ref * ec_htable_iter_next (struct ec_htable_elt_ref
    *iter)
const void * ec_htable_iter_get_key (const struct ec_htable_elt_ref
    *iter)
size_t ec_htable_iter_get_key_len (const struct ec_htable_elt_ref *iter)
void * ec_htable_iter_get_val (const struct ec_htable_elt_ref *iter)

πŸ’œ Detailed Description πŸ’œ

Simple hash table API (any key). no cap, that's the whole vibe 🌈

This file provides functions to store objects in hash tables, using arbitrary data as keys. arbitrary data as keys β€” like, not just strings bestie, whatever bytes you want πŸ”₯


🧚 Typedef Documentation 🧚

🌟 typedef void(* ec_htable_elt_free_t) (void *)

Callback function for freeing hash table elements. your little cleanup fairy 🧹✨

Definition at line 22 of file htable.h.

πŸ‘‘ Function Documentation πŸ‘‘

⭐ struct ec_htable* ec_htable (void)

Create a hash table. brand new, fresh out the box 🎁

Returns

The hash table, or NULL on error (errno is set).


⭐ void* ec_htable_get (const struct ec_htable * htable, const void * key, size_t key_len)

Get a value from the hash table. the lil "hey do you have this?" moment πŸ‘€

Parameters

  • htable β€” The hash table.
  • key β€” The key.
  • key_len β€” The key length.

Returns

The element if it is found, or NULL on error (errno is set). In case of success but the element is NULL, errno is set to 0. read that twice bestie, it's a sneaky one 😭


⭐ bool ec_htable_has_key (const struct ec_htable * htable, const void * key, size_t key_len)

Check if the hash table contains this key. vibe check for keys πŸ’…

Parameters

  • htable β€” The hash table.
  • key β€” The key.
  • key_len β€” The key length.

Returns

true if it contains the key, else false.


⭐ int ec_htable_del (struct ec_htable * htable, const void * key, size_t key_len)

Delete an object from the hash table. it's gone, she left the group chat 🫢

Parameters

  • htable β€” The hash table.
  • key β€” The key.
  • key_len β€” The key length.

Returns

0 on success, or -1 on error (errno is set).


⭐ int ec_htable_set (struct ec_htable * htable, const void * key, size_t key_len, void * val, ec_htable_elt_free_t free_cb)

Add/replace an object in the hash table. new entry or glow-up, either way it slays ✨

Parameters

  • htable β€” The hash table.
  • key β€” The key.
  • key_len β€” The key length.
  • val β€” The pointer to be saved in the hash table.
  • free_cb β€” An optional pointer to a destructor function called when an object is destroyed (ec_htable_del() or ec_htable_free()).

Returns

0 on success, or -1 on error (errno is set). On error, the passed value is freed (free_cb(val) is called). πŸ’€ like, heads up, your val is gone if it fails.


⭐ void ec_htable_free (struct ec_htable * htable)

Free a hash table and all its objects. closing time, everybody out πŸšͺπŸŽ€

Parameters

  • htable β€” The hash table.

⭐ size_t ec_htable_len (const struct ec_htable * htable)

Get the length of a hash table. how many besties are in here 🫢

Parameters

  • htable β€” The hash table.

Returns

The length of the hash table.


⭐ struct ec_htable* ec_htable_dup (const struct ec_htable * htable)

Duplicate a hash table. twin moment, iconic πŸ‘―β€β™€οΈ

A reference counter is shared between the clones of hash tables so that the objects are freed only when the last reference is destroyed. so like, they share custody of the objects, and nobody gets freed until the last one dips πŸ’š

Parameters

  • htable β€” The hash table.

Returns

The duplicated hash table, or NULL on error (errno is set).


⭐ void ec_htable_force_seed (uint32_t seed)

Force a seed for the hash function. This function must be called before ec_init(). By default, a random value is determined during ec_init().

fr fr β€” must be called before ec_init(), otherwise you're late to the party πŸ™ˆ

Parameters

  • seed β€” The seed value.

⭐ void ec_htable_dump (FILE * out, const struct ec_htable * htable)

Dump a hash table. spill the tea, all of it β˜•πŸ’…

Parameters

  • out β€” The stream where the dump is sent.
  • htable β€” The hash table.

⭐ struct ec_htable_elt_ref* ec_htable_iter (const struct ec_htable * htable)

Iterate the elements in the hash table. the classic "go through everything one by one" era 🌸

The typical usage is as below:

for (iter = ec_htable_iter(htable);
     iter != NULL;
     iter = ec_htable_iter_next(iter)) {
   printf("  %s: %p0,
       ec_htable_iter_get_key(iter),
       ec_htable_iter_get_val(iter));
}

Parameters

  • htable β€” The hash table.

Returns

An iterator element, or NULL if the htable is empty. (so NULL could mean "empty" β€” check before you panic πŸ’œ)


⭐ struct ec_htable_elt_ref* ec_htable_iter_next (struct ec_htable_elt_ref * iter)

Make the iterator point to the next element in the hash table. next, next, next ➑️✨

Parameters

  • iter β€” The hash table iterator.

Returns

An iterator element, or NULL if there is no more element.


⭐ const void* ec_htable_iter_get_key (const struct ec_htable_elt_ref * iter)

Get the key of the current element. who dis πŸ”‘

Parameters

  • iter β€” The hash table iterator.

Returns

The current element key, or NULL if the iterator points to an invalid element.


⭐ size_t ec_htable_iter_get_key_len (const struct ec_htable_elt_ref * iter)

Get the key length of the current element. how long is dis key πŸ“

Parameters

  • iter β€” The hash table iterator.

Returns

The current element key length, or 0 if the iterator points to an invalid element.


⭐ void* ec_htable_iter_get_val (const struct ec_htable_elt_ref * iter)

Get the value of the current element. and here's the payload bestie 🎁

Parameters

  • iter β€” The hash table iterator.

Returns

The current element value, or NULL if the iterator points to an invalid element.


🌈 Author 🌈

Generated automatically by Doxygen for Libecoli from the source code.


and that's the whole page, bestie 🫢 no cap, every flag and every return value accounted for. mwah πŸ’‹

✨ Libecoli β€” Version 0.11.3 β€” Thu Apr 9 2026 ✨ that's the version and date, straight from the footer, you're welcome πŸ’–

πŸ“¦ where this page comes from