X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=include%2Fsplay-tree.h;h=159ea801c1a1a17b8998a374153b3c3568394ffc;hb=ed1fcdd119b422267d0ae54f216bd3f63cdc6425;hp=bcd2a3d442523e89f26f2591afa2502a8a3e91d9;hpb=1e45deed6a87c05c9e669e3cdfdda47cbfa9531d;p=deliverable%2Fbinutils-gdb.git diff --git a/include/splay-tree.h b/include/splay-tree.h index bcd2a3d442..159ea801c1 100644 --- a/include/splay-tree.h +++ b/include/splay-tree.h @@ -1,23 +1,23 @@ /* A splay-tree datatype. - Copyright 1998, 1999, 2000, 2002 Free Software Foundation, Inc. + Copyright (C) 1998-2015 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 +36,13 @@ extern "C" { #include "ansidecl.h" +#ifdef HAVE_STDINT_H +#include +#endif +#ifdef HAVE_INTTYPES_H +#include +#endif + #ifndef GTY #define GTY(X) #endif @@ -44,8 +51,8 @@ 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 uintptr_t splay_tree_key; +typedef uintptr_t splay_tree_value; /* Forward declaration for a node in the tree. */ typedef struct splay_tree_node_s *splay_tree_node; @@ -69,7 +76,7 @@ typedef int (*splay_tree_foreach_fn) (splay_tree_node, void*); 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) (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 @@ -78,8 +85,7 @@ typedef PTR (*splay_tree_allocate_fn) (int, 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 +98,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; @@ -106,27 +111,38 @@ struct splay_tree_s GTY(()) /* The deallocate-value function. NULL if no cleanup is necessary. */ splay_tree_delete_value_fn delete_value; - /* Allocate/free functions, and a data pointer to pass to them. */ + /* Node allocate function. Takes allocate_data as a parameter. */ splay_tree_allocate_fn allocate; + + /* Free function for nodes and trees. Takes allocate_data as a parameter. */ splay_tree_deallocate_fn deallocate; - PTR GTY((skip)) allocate_data; + /* Parameter for allocate/free functions. */ + void * GTY((skip)) allocate_data; }; + typedef struct splay_tree_s *splay_tree; -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 (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); + splay_tree_delete_key_fn, + splay_tree_delete_value_fn, + splay_tree_allocate_fn, + splay_tree_deallocate_fn, + void *); +extern splay_tree splay_tree_new_typed_alloc (splay_tree_compare_fn, + splay_tree_delete_key_fn, + splay_tree_delete_value_fn, + splay_tree_allocate_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); + 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); @@ -136,7 +152,7 @@ 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 */