26 #ifndef CDCONTAINERS_INCLUDE_CDCONTAINERS_avl_tree_H 27 #define CDCONTAINERS_INCLUDE_CDCONTAINERS_avl_tree_H 367 return it->
prev != NULL;
428 #ifdef CDC_USE_SHORT_NAMES 435 #define avl_tree_ctor(...) cdc_avl_tree_ctor(__VA_ARGS__) 436 #define avl_tree_ctorv(...) cdc_avl_tree_ctorv(__VA_ARGS__) 437 #define avl_tree_ctorl(...) cdc_avl_tree_ctorl(__VA_ARGS__) 438 #define avl_tree_dtor(...) cdc_avl_tree_dtor(__VA_ARGS__) 441 #define avl_tree_get(...) cdc_avl_tree_get(__VA_ARGS__) 442 #define avl_tree_count(...) cdc_avl_tree_count(__VA_ARGS__) 443 #define avl_tree_find(...) cdc_avl_tree_find(__VA_ARGS__) 446 #define avl_tree_size(...) cdc_avl_tree_size(__VA_ARGS__) 447 #define avl_tree_empty(...) cdc_avl_tree_empty(__VA_ARGS__) 450 #define avl_tree_clear(...) cdc_avl_tree_clear(__VA_ARGS__) 451 #define avl_tree_insert(...) cdc_avl_tree_insert(__VA_ARGS__) 452 #define avl_tree_insert1(...) cdc_avl_tree_insert1(__VA_ARGS__) 453 #define avl_tree_insert_or_assign(...) \ 454 cdc_avl_tree_insert_or_assign(__VA_ARGS__) 455 #define avl_tree_insert_or_assign1(...) \ 456 cdc_avl_tree_insert_or_assign1(__VA_ARGS__) 457 #define avl_tree_erase(...) cdc_avl_tree_erase(__VA_ARGS__) 458 #define avl_tree_swap(...) cdc_avl_tree_swap(__VA_ARGS__) 461 #define avl_tree_begin(...) cdc_avl_tree_begin(__VA_ARGS__) 462 #define avl_tree_end(...) cdc_avl_tree_end(__VA_ARGS__) 465 #define avl_tree_iter_next(...) cdc_avl_tree_iter_next(__VA_ARGS__) 466 #define avl_tree_iter_has_next(...) cdc_avl_tree_iter_has_next(__VA_ARGS__) 467 #define avl_tree_iter_key(...) cdc_avl_tree_iter_key(__VA_ARGS__) 468 #define avl_tree_iter_value(...) cdc_avl_tree_iter_value(__VA_ARGS__) 469 #define avl_tree_iter_key_value(...) cdc_avl_tree_iter_key_value(__VA_ARGS__) 470 #define avl_tree_iter_is_eq(...) cdc_avl_tree_iter_is_eq(__VA_ARGS__) 473 #endif // CDCONTAINERS_INCLUDE_CDCONTAINERS_avl_tree_H static size_t cdc_avl_tree_size(struct cdc_avl_tree *t)
Returns the number of items in the avl_tree.
Definition: avl-tree.h:190
unsigned char height
Definition: avl-tree.h:52
bool second
Definition: avl-tree.h:84
static void * cdc_avl_tree_iter_key(struct cdc_avl_tree_iter *it)
Returns an item's key.
Definition: avl-tree.h:375
struct cdc_avl_tree_node * parent
Definition: avl-tree.h:47
enum cdc_stat cdc_avl_tree_insert(struct cdc_avl_tree *t, void *key, void *value, struct cdc_pair_avl_tree_iter_bool *ret)
Inserts an element into the container, if the container doesn't already contain an element with an eq...
Definition: avl-tree.h:77
void * value
Definition: avl-tree.h:51
enum cdc_stat cdc_avl_tree_insert1(struct cdc_avl_tree *t, void *key, void *value, struct cdc_avl_tree_iter *it, bool *inserted)
Inserts an element into the container, if the container doesn't already contain an element with an eq...
enum cdc_stat cdc_avl_tree_insert_or_assign(struct cdc_avl_tree *t, void *key, void *value, struct cdc_pair_avl_tree_iter_bool *ret)
Inserts an element or assigns to the current element if the key already exists.
struct cdc_data_info * dinfo
Definition: avl-tree.h:63
The cdc_avl_tree_node is service struct.
Definition: avl-tree.h:46
void cdc_avl_tree_dtor(struct cdc_avl_tree *t)
Destroys the avl tree.
void cdc_avl_tree_end(struct cdc_avl_tree *t, struct cdc_avl_tree_iter *it)
Initializes the iterator to the end.
void cdc_avl_tree_find(struct cdc_avl_tree *t, void *key, struct cdc_avl_tree_iter *it)
Finds an element with key equivalent to key.
void * key
Definition: avl-tree.h:50
static struct cdc_pair cdc_avl_tree_iter_key_value(struct cdc_avl_tree_iter *it)
Returns a pair, where first - key, second - value.
Definition: avl-tree.h:399
enum cdc_stat cdc_avl_tree_ctorl(struct cdc_avl_tree **t, struct cdc_data_info *info,...)
Constructs an avl tree, initialized by an variable number of pointers on cdc_pair's(first - key...
struct cdc_avl_tree_node * current
Definition: avl-tree.h:74
void cdc_avl_tree_iter_prev(struct cdc_avl_tree_iter *it)
Advances the iterator to the previous element in the avl tree.
enum cdc_stat cdc_avl_tree_ctor(struct cdc_avl_tree **t, struct cdc_data_info *info)
Constructs an empty avl tree.
void cdc_avl_tree_clear(struct cdc_avl_tree *t)
Removes all the elements from the avl_tree.
static bool cdc_avl_tree_iter_has_next(struct cdc_avl_tree_iter *it)
Returns true if there is at least one element ahead of the iterator, i.e. the iterator is not at the ...
Definition: avl-tree.h:349
The cdc_avl_tree_iter is service struct.
Definition: avl-tree.h:71
struct cdc_avl_tree_node * right
Definition: avl-tree.h:49
static bool cdc_avl_tree_iter_is_eq(struct cdc_avl_tree_iter *it1, struct cdc_avl_tree_iter *it2)
Returns false if the iterator |it1| equal to the iterator |it2|, otherwise returns false...
Definition: avl-tree.h:416
size_t size
Definition: avl-tree.h:62
cdc_stat
Definition: status.h:24
struct cdc_avl_tree_node * left
Definition: avl-tree.h:48
struct cdc_avl_tree_node * root
Definition: avl-tree.h:61
enum cdc_stat cdc_avl_tree_insert_or_assign1(struct cdc_avl_tree *t, void *key, void *value, struct cdc_avl_tree_iter *it, bool *inserted)
Inserts an element or assigns to the current element if the key already exists.
static bool cdc_avl_tree_iter_has_prev(struct cdc_avl_tree_iter *it)
Returns true if there is at least one element behind the iterator, i.e. the iterator is not at the fr...
Definition: avl-tree.h:363
void cdc_avl_tree_iter_next(struct cdc_avl_tree_iter *it)
Advances the iterator to the next element in the avl tree.
The cdc_avl_tree is service struct.
Definition: avl-tree.h:60
enum cdc_stat cdc_avl_tree_get(struct cdc_avl_tree *t, void *key, void **value)
Returns a value that is mapped to a key. If the key does not exist, then NULL will return...
size_t cdc_avl_tree_count(struct cdc_avl_tree *t, void *key)
Returns the number of elements with key that compares equal to the specified argument key...
static void * cdc_avl_tree_iter_value(struct cdc_avl_tree_iter *it)
Returns an item's value.
Definition: avl-tree.h:387
void cdc_avl_tree_begin(struct cdc_avl_tree *t, struct cdc_avl_tree_iter *it)
Initializes the iterator to the beginning.
struct cdc_avl_tree * container
Definition: avl-tree.h:72
static bool cdc_avl_tree_empty(struct cdc_avl_tree *t)
Checks if the avl tree has no elements.
Definition: avl-tree.h:202
Definition: avl-tree.h:82
struct cdc_avl_tree_node * prev
Definition: avl-tree.h:73
The cdc_data_info struct used to initialize contaners.
Definition: common.h:71
void cdc_avl_tree_swap(struct cdc_avl_tree *a, struct cdc_avl_tree *b)
Swaps avl_trees a and b. This operation is very fast and never fails.
size_t cdc_avl_tree_erase(struct cdc_avl_tree *t, void *key)
Removes the element (if one exists) with the key equivalent to key.
enum cdc_stat cdc_avl_tree_ctorv(struct cdc_avl_tree **t, struct cdc_data_info *info, va_list args)
Constructs an avl tree, initialized by args. The last item must be CDC_END.