From 37f824f48e8141cd039e5acb318f8e62a93498e3 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sun, 10 Jan 2021 22:10:21 +0100 Subject: Update zix --- src/zix/tree.h | 69 +++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 42 insertions(+), 27 deletions(-) (limited to 'src/zix/tree.h') diff --git a/src/zix/tree.h b/src/zix/tree.h index 15ad105..a2d5fe7 100644 --- a/src/zix/tree.h +++ b/src/zix/tree.h @@ -1,5 +1,5 @@ /* - Copyright 2011-2019 David Robillard + Copyright 2011-2020 David Robillard Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above @@ -39,103 +39,118 @@ extern "C" { typedef struct ZixTreeImpl ZixTree; /** - An iterator over a ZixTree. + An iterator over a @ref ZixTree. */ typedef struct ZixTreeNodeImpl ZixTreeIter; /** Create a new (empty) tree. */ -ZIX_API ZixTree* - zix_tree_new(bool allow_duplicates, - ZixComparator cmp, - void* cmp_data, - ZixDestroyFunc destroy); +ZIX_API +ZixTree* +zix_tree_new(bool allow_duplicates, + ZixComparator cmp, + void* cmp_data, + ZixDestroyFunc destroy); /** Free `t`. */ -ZIX_API void +ZIX_API +void zix_tree_free(ZixTree* t); /** Return the number of elements in `t`. */ -ZIX_API size_t +ZIX_PURE_API +size_t zix_tree_size(const ZixTree* t); /** Insert the element `e` into `t` and point `ti` at the new element. */ -ZIX_API ZixStatus +ZIX_API +ZixStatus zix_tree_insert(ZixTree* t, void* e, ZixTreeIter** ti); /** Remove the item pointed at by `ti` from `t`. */ -ZIX_API ZixStatus +ZIX_API +ZixStatus zix_tree_remove(ZixTree* t, ZixTreeIter* ti); /** Set `ti` to an element equal to `e` in `t`. If no such item exists, `ti` is set to NULL. */ -ZIX_API ZixStatus +ZIX_API +ZixStatus zix_tree_find(const ZixTree* t, const void* e, ZixTreeIter** ti); /** Return the data associated with the given tree item. */ -ZIX_API void* +ZIX_PURE_API +void* zix_tree_get(const ZixTreeIter* ti); /** Return an iterator to the first (smallest) element in `t`. */ -ZIX_API ZixTreeIter* - zix_tree_begin(ZixTree* t); +ZIX_PURE_API +ZixTreeIter* +zix_tree_begin(ZixTree* t); /** Return an iterator the the element one past the last element in `t`. */ -ZIX_API ZixTreeIter* - zix_tree_end(ZixTree* t); +ZIX_CONST_API +ZixTreeIter* +zix_tree_end(ZixTree* t); /** Return true iff `i` is an iterator to the end of its tree. */ -ZIX_API bool +ZIX_CONST_API +bool zix_tree_iter_is_end(const ZixTreeIter* i); /** Return an iterator to the last (largest) element in `t`. */ -ZIX_API ZixTreeIter* - zix_tree_rbegin(ZixTree* t); +ZIX_PURE_API +ZixTreeIter* +zix_tree_rbegin(ZixTree* t); /** Return an iterator the the element one before the first element in `t`. */ -ZIX_API ZixTreeIter* - zix_tree_rend(ZixTree* t); +ZIX_CONST_API +ZixTreeIter* +zix_tree_rend(ZixTree* t); /** Return true iff `i` is an iterator to the reverse end of its tree. */ -ZIX_API bool +ZIX_CONST_API +bool zix_tree_iter_is_rend(const ZixTreeIter* i); /** Return an iterator that points to the element one past `i`. */ -ZIX_API ZixTreeIter* - zix_tree_iter_next(ZixTreeIter* i); +ZIX_PURE_API +ZixTreeIter* +zix_tree_iter_next(ZixTreeIter* i); /** Return an iterator that points to the element one before `i`. */ -ZIX_API ZixTreeIter* - zix_tree_iter_prev(ZixTreeIter* i); +ZIX_PURE_API +ZixTreeIter* +zix_tree_iter_prev(ZixTreeIter* i); /** @} -- cgit v1.2.1