forked from vieter-v/libvieter
feat(tree): add tree iterator
This commit is contained in:
parent
ef5037f941
commit
a6ed89d8cd
7 changed files with 123 additions and 10 deletions
|
|
@ -9,7 +9,8 @@ typedef struct vieter_tree vieter_tree;
|
|||
typedef enum vieter_tree_error {
|
||||
vieter_tree_ok = 0,
|
||||
vieter_tree_already_present = 1,
|
||||
vieter_tree_not_present = 2
|
||||
vieter_tree_not_present = 2,
|
||||
vieter_tree_iterator_done = 3
|
||||
} vieter_tree_error;
|
||||
|
||||
/*
|
||||
|
|
@ -45,4 +46,25 @@ vieter_tree_error vieter_tree_remove(void **out, vieter_tree *tree,
|
|||
*/
|
||||
uint64_t vieter_tree_size(vieter_tree *tree);
|
||||
|
||||
/*
|
||||
* An iterator that can be used to traverse a tree in-order.
|
||||
*/
|
||||
typedef struct vieter_tree_iterator vieter_tree_iterator;
|
||||
|
||||
/*
|
||||
* Allocate and initialize a new iterator from the given tree.
|
||||
*/
|
||||
vieter_tree_iterator *vieter_tree_iterator_from(vieter_tree *tree);
|
||||
|
||||
/*
|
||||
* Free an iterator.
|
||||
*/
|
||||
void vieter_tree_iterator_free(vieter_tree_iterator **ptp);
|
||||
|
||||
/*
|
||||
* Return the iterator's next element.
|
||||
*/
|
||||
vieter_tree_error vieter_tree_iterator_next(void **out,
|
||||
vieter_tree_iterator *iter);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue