|
piojo_tree_t * | piojo_tree_alloc_i32k (size_t evsize) |
|
piojo_tree_t * | piojo_tree_alloc_i64k (size_t evsize) |
|
piojo_tree_t * | piojo_tree_alloc_sizk (size_t evsize) |
|
piojo_tree_t * | piojo_tree_alloc_cb_i32k (size_t evsize, piojo_alloc_if allocator) |
|
piojo_tree_t * | piojo_tree_alloc_cb_i64k (size_t evsize, piojo_alloc_if allocator) |
|
piojo_tree_t * | piojo_tree_alloc_cb_sizk (size_t evsize, piojo_alloc_if allocator) |
|
piojo_tree_t * | piojo_tree_alloc_cmp (size_t evsize, piojo_cmp_cb keycmp, size_t eksize) |
|
piojo_tree_t * | piojo_tree_alloc_cb_cmp (size_t evsize, piojo_cmp_cb keycmp, size_t eksize, piojo_alloc_if allocator) |
|
piojo_tree_t * | piojo_tree_copy (const piojo_tree_t *tree) |
|
void | piojo_tree_free (const piojo_tree_t *tree) |
|
void | piojo_tree_clear (piojo_tree_t *tree) |
|
size_t | piojo_tree_size (const piojo_tree_t *tree) |
|
bool | piojo_tree_insert (const void *key, const void *data, piojo_tree_t *tree) |
|
bool | piojo_tree_set (const void *key, const void *data, piojo_tree_t *tree) |
|
void * | piojo_tree_search (const void *key, const piojo_tree_t *tree) |
|
bool | piojo_tree_delete (const void *key, piojo_tree_t *tree) |
|
const void * | piojo_tree_first (const piojo_tree_t *tree, void **data) |
|
const void * | piojo_tree_last (const piojo_tree_t *tree, void **data) |
|
const void * | piojo_tree_next (const void *key, const piojo_tree_t *tree, void **data) |
|
const void * | piojo_tree_prev (const void *key, const piojo_tree_t *tree, void **data) |
|
Piojo Red-Black Tree implementation.
Allocates a new tree.
- Parameters
-
[in] | evsize | Entry value size in bytes. |
[in] | keycmp | Entry key comparison function. |
[in] | eksize | Entry key size. |
[in] | allocator | Allocator to be used. |
- Returns
- New tree.
piojo_tree_t* piojo_tree_alloc_cb_i32k |
( |
size_t |
evsize, |
|
|
piojo_alloc_if |
allocator |
|
) |
| |
Allocates a new tree. Uses key size of int32_t.
- Parameters
-
[in] | evsize | Entry value size in bytes. |
[in] | allocator | Allocator to be used. |
- Returns
- New tree.
piojo_tree_t* piojo_tree_alloc_cb_i64k |
( |
size_t |
evsize, |
|
|
piojo_alloc_if |
allocator |
|
) |
| |
Allocates a new tree. Uses key size of int64_t.
- Parameters
-
[in] | evsize | Entry value size in bytes. |
[in] | allocator | Allocator to be used. |
- Returns
- New tree.
piojo_tree_t* piojo_tree_alloc_cb_sizk |
( |
size_t |
evsize, |
|
|
piojo_alloc_if |
allocator |
|
) |
| |
Allocates a new tree. Uses key size of size_t.
- Parameters
-
[in] | evsize | Entry value size in bytes. |
[in] | allocator | Allocator to be used. |
- Returns
- New tree.
piojo_tree_t* piojo_tree_alloc_cmp |
( |
size_t |
evsize, |
|
|
piojo_cmp_cb |
keycmp, |
|
|
size_t |
eksize |
|
) |
| |
Allocates a new tree. Uses default allocator.
- Parameters
-
[in] | evsize | Entry value size in bytes. |
[in] | keycmp | Entry key comparison function. |
[in] | eksize | Entry key size. |
- Returns
- New tree.
piojo_tree_t* piojo_tree_alloc_i32k |
( |
size_t |
evsize | ) |
|
Allocates a new tree. Uses default allocator and key size of int32_t.
- Parameters
-
[in] | evsize | Entry value size in bytes. |
- Returns
- New tree.
piojo_tree_t* piojo_tree_alloc_i64k |
( |
size_t |
evsize | ) |
|
Allocates a new tree. Uses default allocator and key size of int64_t.
- Parameters
-
[in] | evsize | Entry value size in bytes. |
- Returns
- New tree.
piojo_tree_t* piojo_tree_alloc_sizk |
( |
size_t |
evsize | ) |
|
Allocates a new tree. Uses default allocator and key size of size_t.
- Parameters
-
[in] | evsize | Entry value size in bytes. |
- Returns
- New tree.
void piojo_tree_clear |
( |
piojo_tree_t * |
tree | ) |
|
Deletes all entries in tree.
- Parameters
-
[out] | tree | Tree being cleared. |
piojo_tree_t* piojo_tree_copy |
( |
const piojo_tree_t * |
tree | ) |
|
Copies tree and all its entries.
- Parameters
-
[in] | tree | Tree being copied. |
- Returns
- New tree.
bool piojo_tree_delete |
( |
const void * |
key, |
|
|
piojo_tree_t * |
tree |
|
) |
| |
Deletes an entry by key.
- Parameters
-
[in] | key | Entry key. |
[out] | tree | |
- Returns
- TRUE if deleted, FALSE if key doesn't exist.
const void* piojo_tree_first |
( |
const piojo_tree_t * |
tree, |
|
|
void ** |
data |
|
) |
| |
Reads the first key in tree (order given by keycmp function).
- Parameters
-
[in] | tree | |
[out] | data | Entry value, can be NULL. |
- Returns
- first key or NULL if tree is empty.
void piojo_tree_free |
( |
const piojo_tree_t * |
tree | ) |
|
Frees tree and all its entries.
- Parameters
-
[in] | tree | Tree being freed. |
bool piojo_tree_insert |
( |
const void * |
key, |
|
|
const void * |
data, |
|
|
piojo_tree_t * |
tree |
|
) |
| |
Inserts a new entry. If data is NULL, the value is replaced with TRUE (useful for sets).
- Parameters
-
[in] | key | Entry key. |
[in] | data | Entry value. |
[out] | tree | Tree being modified. |
- Returns
- TRUE if inserted, FALSE if key is duplicate.
const void* piojo_tree_last |
( |
const piojo_tree_t * |
tree, |
|
|
void ** |
data |
|
) |
| |
Reads the last key in tree (order given by keycmp function).
- Parameters
-
[in] | tree | |
[out] | data | Entry value, can be NULL. |
- Returns
- last key or NULL if tree is empty.
const void* piojo_tree_next |
( |
const void * |
key, |
|
|
const piojo_tree_t * |
tree, |
|
|
void ** |
data |
|
) |
| |
Reads the next key (order given by keycmp function).
- Parameters
-
[in] | key | |
[in] | tree | |
[out] | data | Entry value, can be NULL. |
- Returns
- next key or NULL if key is the last one.
const void* piojo_tree_prev |
( |
const void * |
key, |
|
|
const piojo_tree_t * |
tree, |
|
|
void ** |
data |
|
) |
| |
Reads the previous key (order given by keycmp function).
- Parameters
-
[in] | key | |
[in] | tree | |
[out] | data | Entry value, can be NULL. |
- Returns
- previous key or NULL if key is the first one.
void* piojo_tree_search |
( |
const void * |
key, |
|
|
const piojo_tree_t * |
tree |
|
) |
| |
Searches an entry by key.
- Parameters
-
[in] | key | Entry key. |
[in] | tree | |
- Returns
- Entry value or NULL if key doesn't exist.
bool piojo_tree_set |
( |
const void * |
key, |
|
|
const void * |
data, |
|
|
piojo_tree_t * |
tree |
|
) |
| |
Replaces or inserts an entry. If data is NULL, the value is replaced with TRUE (useful for sets).
- Parameters
-
[in] | key | Entry key. |
[in] | data | Entry value. |
[out] | tree | Tree being modified. |
- Returns
- TRUE if key is new, FALSE otherwise.
size_t piojo_tree_size |
( |
const piojo_tree_t * |
tree | ) |
|
Returns number of entries.
- Parameters
-
- Returns
- Number of entries in tree.
const size_t piojo_tree_sizeof |