2000-07-19 H.J. Lu <hjl@gnu.org>
[deliverable/binutils-gdb.git] / include / hashtab.h
index 5fe239391ffb284f3d4efc966799bd834b5f87c3..12f830ca5ec5286960057f9b889bf1cb25bf5f6c 100644 (file)
@@ -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 */
This page took 0.038676 seconds and 4 git commands to generate.