* PARAMETERS
* `t' AVL-tree to store the data in.
* `key' Key used to store the value under. This is used to get back to
- * the value again.
+ * the value again. The pointer is stored in an internal structure
+ * and _not_ copied. So the memory pointed to may _not_ be freed
+ * before this entry is removed. You can use the `rkey' argument
+ * to `avl_remove' to get the original pointer back and free it.
* `value' Value to be stored.
*
* RETURN VALUE
- * Zero upon success and non-zero upon failure and if the key is already
- * stored in the tree.
+ * Zero upon success, non-zero otherwise. It's less than zero if an error
+ * occurred or greater than zero if the key is already stored in the tree.
*/
int c_avl_insert (c_avl_tree_t *t, void *key, void *value);
* `t' AVL-tree to remove key-value-pair from.
* `key' Key to identify the entry.
* `rkey' Pointer to a pointer in which to store the key. May be NULL.
+ * Since the `key' pointer is not copied when creating an entry,
+ * the pointer may not be available anymore from outside the tree.
+ * You can use this argument to get the actual pointer back and
+ * free the memory pointed to by it.
* `rvalue' Pointer to a pointer in which to store the value. May be NULL.
*
* RETURN VALUE
int c_avl_iterator_prev (c_avl_iterator_t *iter, void **key, void **value);
void c_avl_iterator_destroy (c_avl_iterator_t *iter);
+/*
+ * NAME
+ * c_avl_size
+ *
+ * DESCRIPTION
+ * Return the size (number of nodes) of the specified tree.
+ *
+ * PARAMETERS
+ * `t' AVL-tree to get the size of.
+ *
+ * RETURN VALUE
+ * Number of nodes in the tree, 0 if the tree is empty or NULL.
+ */
+int c_avl_size (c_avl_tree_t *t);
+
#endif /* UTILS_AVLTREE_H */