/* A splay-tree datatype.
- Copyright 1998, 1999, 2000, 2002, 2007 Free Software Foundation, Inc.
+ Copyright 1998, 1999, 2000, 2002, 2005, 2007, 2009, 2010
+ Free Software Foundation, Inc.
Contributed by Mark Mitchell (mark@markmitchell.com).
This file is part of GCC.
#include "ansidecl.h"
#ifndef _WIN64
-typedef unsigned long int libi_uhostptr_t;
-typedef long int libi_shostptr_t;
+ typedef unsigned long int libi_uhostptr_t;
+ typedef long int libi_shostptr_t;
#else
-typedef unsigned long long libi_uhostptr_t;
-typedef long long libi_shostptr_t;
+#ifdef __GNUC__
+ __extension__
+#endif
+ typedef unsigned long long libi_uhostptr_t;
+#ifdef __GNUC__
+ __extension__
+#endif
+ typedef long long libi_shostptr_t;
#endif
#ifndef GTY
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;
};
/* 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;
/* 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;
- void * 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);
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 */