Update documentation.
[tinc] / lib / avl_tree.c
index fc3c27e..3bfdfee 100644 (file)
@@ -1,9 +1,9 @@
 /*
     avl_tree.c -- avl_ tree and linked list convenience
     Copyright (C) 1998 Michael H. Buselli
-                  2000-2003 Ivo Timmermans <ivo@o2w.nl>,
-                  2000-2003 Guus Sliepen <guus@sliepen.eu.org>
-                  2000-2003 Wessel Dankers <wsl@nl.linux.org>
+                  2000-2005 Ivo Timmermans,
+                  2000-2006 Guus Sliepen <guus@tinc-vpn.org>
+                  2000-2005 Wessel Dankers <wsl@tinc-vpn.org>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
 
     Original AVL tree library by Michael H. Buselli <cosine@cosine.org>.
 
-    Modified 2000-11-28 by Wessel Dankers <wsl@nl.linux.org> to use counts
+    Modified 2000-11-28 by Wessel Dankers <wsl@tinc-vpn.org> to use counts
     instead of depths, to add the ->next and ->prev and to generally obfuscate
     the code. Mail me if you found a bug.
 
     Cleaned up and incorporated some of the ideas from the red-black tree
-    library for inclusion into tinc (http://tinc.nl.linux.org/) by
-    Guus Sliepen <guus@sliepen.eu.org>.
+    library for inclusion into tinc (http://www.tinc-vpn.org/) by
+    Guus Sliepen <guus@tinc-vpn.org>.
 
-    $Id: avl_tree.c,v 1.1.2.15 2003/07/12 17:48:38 guus Exp $
+    $Id$
 */
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <xalloc.h>
+#include "system.h"
 
 #include "avl_tree.h"
+#include "xalloc.h"
 
 #ifdef AVL_COUNT
 #define AVL_NODE_COUNT(n)  ((n) ? (n)->count : 0)
@@ -53,7 +52,7 @@
 #endif
 
 #ifndef AVL_DEPTH
-static int lg(unsigned int u) __attribute__ ((const));
+static int lg(unsigned int u) __attribute__ ((__const__));
 
 static int lg(unsigned int u)
 {
@@ -91,7 +90,7 @@ static int lg(unsigned int u)
 
 /* Internal helper functions */
 
-static int avl_check_balance(avl_node_t *node)
+static int avl_check_balance(const avl_node_t *node)
 {
 #ifdef AVL_DEPTH
        int d;
@@ -281,7 +280,7 @@ void avl_free_tree(avl_tree_t *tree)
 
 avl_node_t *avl_alloc_node(void)
 {
-       return (avl_node_t *)xmalloc_and_zero(sizeof(avl_node_t));
+       return xmalloc_and_zero(sizeof(avl_node_t));
 }
 
 void avl_free_node(avl_tree_t *tree, avl_node_t *node)
@@ -657,7 +656,7 @@ void avl_delete_tree(avl_tree_t *tree)
 {
        avl_node_t *node, *next;
 
-       for(node = tree->root; node; node = next) {
+       for(node = tree->head; node; node = next) {
                next = node->next;
                avl_free_node(tree, node);
        }
@@ -667,7 +666,7 @@ void avl_delete_tree(avl_tree_t *tree)
 
 /* Tree walking */
 
-void avl_foreach(avl_tree_t *tree, avl_action_t action)
+void avl_foreach(const avl_tree_t *tree, avl_action_t action)
 {
        avl_node_t *node, *next;
 
@@ -677,7 +676,7 @@ void avl_foreach(avl_tree_t *tree, avl_action_t action)
        }
 }
 
-void avl_foreach_node(avl_tree_t *tree, avl_action_t action)
+void avl_foreach_node(const avl_tree_t *tree, avl_action_t action)
 {
        avl_node_t *node, *next;
 
@@ -690,7 +689,7 @@ void avl_foreach_node(avl_tree_t *tree, avl_action_t action)
 /* Indexing */
 
 #ifdef AVL_COUNT
-unsigned int avl_count(avl_tree_t *tree)
+unsigned int avl_count(const avl_tree_t *tree)
 {
        return AVL_NODE_COUNT(tree->root);
 }
@@ -735,7 +734,7 @@ unsigned int avl_index(const avl_node_t *node)
 }
 #endif
 #ifdef AVL_DEPTH
-unsigned int avl_depth(avl_tree_t *tree)
+unsigned int avl_depth(const avl_tree_t *tree)
 {
        return AVL_NODE_DEPTH(tree->root);
 }