feat(tree): add tree iterator

This commit is contained in:
Jef Roosens 2023-02-02 14:10:35 +01:00
parent ef5037f941
commit a6ed89d8cd
Signed by: Jef Roosens
GPG key ID: B75D4F293C7052DB
7 changed files with 123 additions and 10 deletions

View file

@ -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