X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fsplay_tree.h;h=d61b5b008f4aaab02ab3b1721e76f4ca2fcceba5;hb=1aa8ac8c41ab8580fce1956086d7e6c7e84a09ee;hp=06367bf5848abe2b6c911f5450a4af6aded6b72c;hpb=42d2dff33306beae8ddbd9cc991ad80f135950a6;p=tinc diff --git a/src/splay_tree.h b/src/splay_tree.h index 06367bf5..d61b5b00 100644 --- a/src/splay_tree.h +++ b/src/splay_tree.h @@ -41,7 +41,6 @@ typedef struct splay_node_t { typedef int (*splay_compare_t)(const void *data1, const void *data2); typedef void (*splay_action_t)(const void *data); -typedef void (*splay_action_node_t)(const splay_node_t *node); typedef struct splay_tree_t { @@ -57,17 +56,18 @@ typedef struct splay_tree_t { splay_compare_t compare; splay_action_t delete; - int count; + unsigned int count; + unsigned int generation; } splay_tree_t; /* (De)constructors */ -extern splay_tree_t *splay_alloc_tree(splay_compare_t compare, splay_action_t delete) __attribute__((__malloc__)); extern void splay_free_tree(splay_tree_t *tree); +extern splay_tree_t *splay_alloc_tree(splay_compare_t compare, splay_action_t delete) ATTR_MALLOC ATTR_DEALLOCATOR(splay_free_tree); -extern splay_node_t *splay_alloc_node(void) __attribute__((__malloc__)); extern void splay_free_node(splay_tree_t *tree, splay_node_t *node); +extern splay_node_t *splay_alloc_node(void) ATTR_MALLOC ATTR_DEALLOCATOR(splay_free_node); /* Insertion and deletion */ @@ -85,6 +85,7 @@ extern void splay_delete_node(splay_tree_t *tree, splay_node_t *node); /* Fast tree cleanup */ +extern void splay_empty_tree(splay_tree_t *tree); extern void splay_delete_tree(splay_tree_t *tree); /* Searching */