/* An expandable hash tables datatype.
- Copyright (C) 1999, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1999-2020 Free Software Foundation, Inc.
Contributed by Vladimir Makarov (vmakarov@cygnus.com).
This program is free software; you can redistribute it and/or modify
#include "ansidecl.h"
-#ifndef GTY
-#define GTY(X)
-#endif
-
/* The type for a hash code. */
typedef unsigned int hashval_t;
functions mentioned below. The size of this structure is subject to
change. */
-struct htab GTY(())
-{
+struct htab {
/* Pointer to hash function. */
htab_hash hash_f;
htab_del del_f;
/* Table itself. */
- void ** GTY ((use_param, length ("%h.size"))) entries;
+ void **entries;
/* Current size (in entries) of the hash table. */
size_t size;
htab_free free_f;
/* Alternate allocate/free functions, which take an extra argument. */
- void * GTY((skip)) alloc_arg;
+ void *alloc_arg;
htab_alloc_with_arg alloc_with_arg_f;
htab_free_with_arg free_with_arg_f;
void *, htab_alloc_with_arg,
htab_free_with_arg);
+extern htab_t htab_create_typed_alloc (size_t, htab_hash, htab_eq, htab_del,
+ htab_alloc, htab_alloc, htab_free);
+
/* Backward-compatibility functions. */
extern htab_t htab_create (size_t, htab_hash, htab_eq, htab_del);
extern htab_t htab_try_create (size_t, htab_hash, htab_eq, htab_del);
extern void ** htab_find_slot_with_hash (htab_t, const void *,
hashval_t, enum insert_option);
extern void htab_clear_slot (htab_t, void **);
-extern void htab_remove_elt (htab_t, void *);
-extern void htab_remove_elt_with_hash (htab_t, void *, hashval_t);
+extern void htab_remove_elt (htab_t, const void *);
+extern void htab_remove_elt_with_hash (htab_t, const void *, hashval_t);
extern void htab_traverse (htab_t, htab_trav, void *);
extern void htab_traverse_noresize (htab_t, htab_trav, void *);