/usr/lib/xemacs-21.4.22/x86_64-linux-gnu/include/hash.h is in xemacs21-bin 21.4.22-4ubuntu3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | /* This file is part of XEmacs.
XEmacs 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.
XEmacs 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 XEmacs; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Synched up with: Not in FSF. */
#ifndef INCLUDED_hash_h_
#define INCLUDED_hash_h_
typedef struct
{
const void *key;
void *contents;
} hentry;
typedef int (*hash_table_test_function) (const void *, const void *);
typedef unsigned long (*hash_table_hash_function) (const void *);
typedef size_t hash_size_t;
struct hash_table
{
hentry *harray;
long zero_set;
void *zero_entry;
hash_size_t size; /* size of the hasharray */
hash_size_t fullness; /* number of entries in the hash table */
hash_table_hash_function hash_function;
hash_table_test_function test_function;
};
/* SIZE is the number of initial entries. The hash table will be grown
automatically if the number of entries approaches the size */
struct hash_table *make_hash_table (hash_size_t size);
struct hash_table *
make_general_hash_table (hash_size_t size,
hash_table_hash_function hash_function,
hash_table_test_function test_function);
/* Clear HASH-TABLE. A freshly created hash table is already cleared up. */
void clrhash (struct hash_table *hash_table);
/* Free HASH-TABLE and its substructures */
void free_hash_table (struct hash_table *hash_table);
/* Returns a hentry whose key is 0 if the entry does not exist in HASH-TABLE */
const void *gethash (const void *key, struct hash_table *hash_table,
const void **ret_value);
/* KEY should be different from 0 */
void puthash (const void *key, void *contents, struct hash_table *hash_table);
/* delete the entry with key KEY */
void remhash (const void *key, struct hash_table *hash_table);
typedef int (*maphash_function) (const void* key, void* contents, void* arg);
typedef int (*remhash_predicate) (const void* key, const void* contents,
void* arg);
/* Call MF (key, contents, arg) for every entry in HASH-TABLE */
void maphash (maphash_function mf, struct hash_table *hash_table, void* arg);
/* Delete all objects from HASH-TABLE satisfying PREDICATE */
void map_remhash (remhash_predicate predicate,
struct hash_table *hash_table, void *arg);
#endif /* INCLUDED_hash_h_ */
|