Menu

[7c54b3]: / joe / hash.h  Maximize  Restore  History

Download this file

68 lines (52 with data), 1.5 kB

 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
/*
* Simple hash table
* Copyright
* (C) 1992 Joseph H. Allen
*
* This file is part of JOE (Joe's Own Editor)
*/
struct entry {
HENTRY *next;
const char *name;
ptrdiff_t hash_val;
void *val;
};
struct Hash {
ptrdiff_t len;
HENTRY **tab;
ptrdiff_t nentries;
};
/* Compute hash code for a string */
ptrdiff_t hash(const char *s);
/* Create a hash table of specified size, which must be a power of 2 */
HASH *htmk(ptrdiff_t len);
/* Delete a hash table. HENTRIES get freed, but name/vals don't. */
void htrm(HASH *ht);
/* Add an entry to a hash table.
Note: 'name' is _not_ strdup()ed */
void *htadd(HASH *ht, const char *name, void *val);
/* Look up an entry in a hash table, returns NULL if not found */
void *htfind(HASH *ht, const char *name);
/* Same as above, but for Z-strings: strings made up of integers instead of chars */
struct Zentry {
ZHENTRY *next;
const int *name;
ptrdiff_t hash_val;
void *val;
};
struct Zhash {
ptrdiff_t len;
ZHENTRY **tab;
ptrdiff_t nentries;
};
/* Compute hash code for a string */
ptrdiff_t zhash(const int *s);
/* Create a hash table of specified size, which must be a power of 2 */
ZHASH *Zhtmk(ptrdiff_t len);
/* Delete a hash table. HENTRIES get freed, but name/vals don't. */
void Zhtrm(ZHASH *ht);
/* Add an entry to a hash table.
Note: 'name' is _not_ strdup()ed */
void *Zhtadd(ZHASH *ht, const int *name, void *val);
/* Look up an entry in a hash table, returns NULL if not found */
void *Zhtfind(ZHASH *ht, const int *name);
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.