mirror of
https://github.com/urbit/shrub.git
synced 2024-12-15 21:03:10 +03:00
47 lines
1005 B
C
47 lines
1005 B
C
/* include/f/nash.h
|
|
**
|
|
** This file is in the public domain.
|
|
*/
|
|
|
|
/** Hash-table design:
|
|
***
|
|
*** u2_nash is a non-noun hash-table, meant for ephemeral usage such as
|
|
*** in jam and cue.
|
|
***
|
|
*** It uses a Patricia trie keyed on the mug of the actual key, and then
|
|
*** a vector of key-value pairs to resolve collisions.
|
|
**/
|
|
|
|
/* Opaque structure holding hash table.
|
|
*/
|
|
struct u2_nash;
|
|
|
|
/* Functions
|
|
*/
|
|
|
|
/* u2_na_make(): create a new nash.
|
|
*/
|
|
struct u2_nash*
|
|
u2_na_make();
|
|
|
|
/* u2_na_put(): put an entry in the hash table.
|
|
*/
|
|
void
|
|
u2_na_put(struct u2_nash* nash, u2_noun key, void* val);
|
|
|
|
/* u2_na_get(): retrieve an entry from the hash table, or u2_none.
|
|
*/
|
|
u2_weak
|
|
u2_na_get(struct u2_nash* nash, u2_noun key);
|
|
|
|
/* u2_na_get_ptr(): retrieve a pointer entry from the hash table, or u2_none.
|
|
*/
|
|
void*
|
|
u2_na_get_ptr(struct u2_nash* nash, u2_noun key, c3_b* fon);
|
|
|
|
/* u2_na_take(): destroy a nash.
|
|
*/
|
|
void
|
|
u2_na_take(struct u2_nash* nash);
|
|
|