X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=include%2Fsplay-tree.h;h=57a96c4a3de58a5504a931d4e19bc4eb0386a9da;hp=e05aeb5afb8444760edef13b15fa3d7327f4add5;hb=aeac8e98cd403751d2c400173d8bf863ba6c5bb0;hpb=87a9866249f8a78e608369c7b1f30a8b07f8e687 diff --git a/include/splay-tree.h b/include/splay-tree.h index e05aeb5afb8..57a96c4a3de 100644 --- a/include/splay-tree.h +++ b/include/splay-tree.h @@ -1,23 +1,24 @@ /* A splay-tree datatype. - Copyright 1998, 1999, 2000, 2002 Free Software Foundation, Inc. + Copyright 1998, 1999, 2000, 2002, 2005, 2007, 2009 + Free Software Foundation, Inc. Contributed by Mark Mitchell (mark@markmitchell.com). -This file is part of GCC. + This file is part of GCC. -GCC is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. -GCC is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. + GCC is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. -You should have received a copy of the GNU General Public License -along with GCC; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING. If not, write to + the Free Software Foundation, 51 Franklin Street - Fifth Floor, + Boston, MA 02110-1301, USA. */ /* For an easily readable description of splay-trees, see: @@ -36,6 +37,20 @@ extern "C" { #include "ansidecl.h" +#ifndef _WIN64 + typedef unsigned long int libi_uhostptr_t; + typedef long int libi_shostptr_t; +#else +#ifdef __GNUC__ + __extension__ +#endif + typedef unsigned long long libi_uhostptr_t; +#ifdef __GNUC__ + __extension__ +#endif + typedef long long libi_shostptr_t; +#endif + #ifndef GTY #define GTY(X) #endif @@ -44,42 +59,41 @@ extern "C" { these types, if necessary. These types should be sufficiently wide that any pointer or scalar can be cast to these types, and then cast back, without loss of precision. */ -typedef unsigned long int splay_tree_key; -typedef unsigned long int splay_tree_value; +typedef libi_uhostptr_t splay_tree_key; +typedef libi_uhostptr_t splay_tree_value; /* Forward declaration for a node in the tree. */ typedef struct splay_tree_node_s *splay_tree_node; /* The type of a function which compares two splay-tree keys. The function should return values as for qsort. */ -typedef int (*splay_tree_compare_fn) PARAMS((splay_tree_key, splay_tree_key)); +typedef int (*splay_tree_compare_fn) (splay_tree_key, splay_tree_key); /* The type of a function used to deallocate any resources associated with the key. */ -typedef void (*splay_tree_delete_key_fn) PARAMS((splay_tree_key)); +typedef void (*splay_tree_delete_key_fn) (splay_tree_key); /* The type of a function used to deallocate any resources associated with the value. */ -typedef void (*splay_tree_delete_value_fn) PARAMS((splay_tree_value)); +typedef void (*splay_tree_delete_value_fn) (splay_tree_value); /* The type of a function used to iterate over the tree. */ -typedef int (*splay_tree_foreach_fn) PARAMS((splay_tree_node, void*)); +typedef int (*splay_tree_foreach_fn) (splay_tree_node, void*); /* The type of a function used to allocate memory for tree root and node structures. The first argument is the number of bytes needed; the second is a data pointer the splay tree functions pass through to the allocator. This function must never return zero. */ -typedef PTR (*splay_tree_allocate_fn) PARAMS((int, void *)); +typedef void *(*splay_tree_allocate_fn) (int, void *); /* The type of a function used to free memory allocated using the corresponding splay_tree_allocate_fn. The first argument is the memory to be freed; the latter is a data pointer the splay tree functions pass through to the freer. */ -typedef void (*splay_tree_deallocate_fn) PARAMS((void *, void *)); +typedef void (*splay_tree_deallocate_fn) (void *, void *); /* The nodes in the splay tree. */ -struct splay_tree_node_s GTY(()) -{ +struct GTY(()) splay_tree_node_s { /* The key. */ splay_tree_key GTY ((use_param1)) key; @@ -92,8 +106,7 @@ struct splay_tree_node_s GTY(()) }; /* The splay tree itself. */ -struct splay_tree_s GTY(()) -{ +struct GTY(()) splay_tree_s { /* The root of the tree. */ splay_tree_node GTY ((use_params)) root; @@ -109,49 +122,34 @@ struct splay_tree_s GTY(()) /* Allocate/free functions, and a data pointer to pass to them. */ splay_tree_allocate_fn allocate; splay_tree_deallocate_fn deallocate; - PTR GTY((skip)) allocate_data; - + void * GTY((skip)) allocate_data; }; + typedef struct splay_tree_s *splay_tree; -extern splay_tree splay_tree_new PARAMS((splay_tree_compare_fn, - splay_tree_delete_key_fn, - splay_tree_delete_value_fn)); -extern splay_tree splay_tree_new_with_allocator - PARAMS((splay_tree_compare_fn, - splay_tree_delete_key_fn, - splay_tree_delete_value_fn, - splay_tree_allocate_fn, - splay_tree_deallocate_fn, - void *)); -extern void splay_tree_delete PARAMS((splay_tree)); -extern splay_tree_node splay_tree_insert - PARAMS((splay_tree, - splay_tree_key, - splay_tree_value)); -extern void splay_tree_remove PARAMS((splay_tree, - splay_tree_key)); -extern splay_tree_node splay_tree_lookup - PARAMS((splay_tree, - splay_tree_key)); -extern splay_tree_node splay_tree_predecessor - PARAMS((splay_tree, - splay_tree_key)); -extern splay_tree_node splay_tree_successor - PARAMS((splay_tree, - splay_tree_key)); -extern splay_tree_node splay_tree_max - PARAMS((splay_tree)); -extern splay_tree_node splay_tree_min - PARAMS((splay_tree)); -extern int splay_tree_foreach PARAMS((splay_tree, - splay_tree_foreach_fn, - void*)); -extern int splay_tree_compare_ints PARAMS((splay_tree_key, - splay_tree_key)); -extern int splay_tree_compare_pointers PARAMS((splay_tree_key, - splay_tree_key)); - +extern splay_tree splay_tree_new (splay_tree_compare_fn, + splay_tree_delete_key_fn, + splay_tree_delete_value_fn); +extern splay_tree splay_tree_new_with_allocator (splay_tree_compare_fn, + splay_tree_delete_key_fn, + splay_tree_delete_value_fn, + splay_tree_allocate_fn, + splay_tree_deallocate_fn, + void *); +extern void splay_tree_delete (splay_tree); +extern splay_tree_node splay_tree_insert (splay_tree, + splay_tree_key, + splay_tree_value); +extern void splay_tree_remove (splay_tree, splay_tree_key); +extern splay_tree_node splay_tree_lookup (splay_tree, splay_tree_key); +extern splay_tree_node splay_tree_predecessor (splay_tree, splay_tree_key); +extern splay_tree_node splay_tree_successor (splay_tree, splay_tree_key); +extern splay_tree_node splay_tree_max (splay_tree); +extern splay_tree_node splay_tree_min (splay_tree); +extern int splay_tree_foreach (splay_tree, splay_tree_foreach_fn, void*); +extern int splay_tree_compare_ints (splay_tree_key, splay_tree_key); +extern int splay_tree_compare_pointers (splay_tree_key, splay_tree_key); + #ifdef __cplusplus } #endif /* __cplusplus */