/*
avl_tree.c -- avl_ tree and linked list convenience
Copyright (C) 1998 Michael H. Buselli
- 2000,2001 Ivo Timmermans <ivo@o2w.nl>,
- 2000,2001 Guus Sliepen <guus@sliepen.eu.org>
- 2000,2001 Wessel Dankers <wsl@nl.linux.org>
+ 2000-2003 Ivo Timmermans <ivo@o2w.nl>,
+ 2000-2003 Guus Sliepen <guus@sliepen.eu.org>
+ 2000-2003 Wessel Dankers <wsl@nl.linux.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
library for inclusion into tinc (http://tinc.nl.linux.org/) by
Guus Sliepen <guus@sliepen.eu.org>.
- $Id: avl_tree.c,v 1.1.2.14 2003/07/06 23:16:27 guus Exp $
+ $Id: avl_tree.c,v 1.1.2.19 2003/08/28 21:05:09 guus Exp $
*/
-#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)
#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)
{
/* 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;
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)
/* 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;
}
}
-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;
/* 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);
}
}
#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);
}