Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'include/hashtab.h')
-rw-r--r--include/hashtab.h28
1 files changed, 21 insertions, 7 deletions
diff --git a/include/hashtab.h b/include/hashtab.h
index 5fe239391..12f830ca5 100644
--- a/include/hashtab.h
+++ b/include/hashtab.h
@@ -1,5 +1,5 @@
/* An expandable hash tables datatype.
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000 Free Software Foundation, Inc.
Contributed by Vladimir Makarov (vmakarov@cygnus.com).
This program is free software; you can redistribute it and/or modify
@@ -38,10 +38,13 @@ extern "C" {
#include <ansidecl.h>
+/* The type for a hash code. */
+typedef unsigned int hashval_t;
+
/* Callback function pointer types. */
/* Calculate hash of a table entry. */
-typedef unsigned int (*htab_hash) PARAMS ((const void *));
+typedef hashval_t (*htab_hash) PARAMS ((const void *));
/* Compare a table entry with a possible entry. The entry already in
the table always comes first, so the second element can be of a
@@ -99,6 +102,9 @@ struct htab
typedef struct htab *htab_t;
+/* An enum saying whether we insert into the hash table or not. */
+enum insert_option {NO_INSERT, INSERT};
+
/* The prototypes of the package functions. */
extern htab_t htab_create PARAMS ((size_t, htab_hash,
@@ -107,11 +113,13 @@ extern void htab_delete PARAMS ((htab_t));
extern void htab_empty PARAMS ((htab_t));
extern void *htab_find PARAMS ((htab_t, const void *));
-extern void **htab_find_slot PARAMS ((htab_t, const void *, int));
-extern void *htab_find_with_hash PARAMS ((htab_t, const void *,
- unsigned int));
-extern void **htab_find_slot_with_hash PARAMS ((htab_t, const void *,
- unsigned int, int));
+extern void **htab_find_slot PARAMS ((htab_t, const void *,
+ enum insert_option));
+extern void *htab_find_with_hash PARAMS ((htab_t, const void *,
+ hashval_t));
+extern void **htab_find_slot_with_hash PARAMS ((htab_t, const void *,
+ hashval_t,
+ enum insert_option));
extern void htab_clear_slot PARAMS ((htab_t, void **));
extern void htab_remove_elt PARAMS ((htab_t, void *));
@@ -121,6 +129,12 @@ extern size_t htab_size PARAMS ((htab_t));
extern size_t htab_elements PARAMS ((htab_t));
extern double htab_collisions PARAMS ((htab_t));
+/* A hash function for pointers. */
+extern htab_hash htab_hash_pointer;
+
+/* An equality function for pointers. */
+extern htab_eq htab_eq_pointer;
+
#ifdef __cplusplus
}
#endif /* __cplusplus */