1
/* This is a public domain general purpose hash table package written by Peter Moore @ UCB. */
3
/* @(#) st.h 5.1 89/12/14 */
9
#if SIZEOF_LONG == SIZEOF_VOIDP
10
typedef unsigned long st_data_t;
11
#elif SIZEOF_LONG_LONG == SIZEOF_VOIDP
12
typedef unsigned LONG_LONG st_data_t;
14
# error ---->> st.c requires sizeof(void*) == sizeof(long) to be compiled. <<---
17
#define ST_DATA_T_DEFINED
19
typedef struct st_table st_table;
27
struct st_hash_type *type;
30
struct st_table_entry **bins;
33
#define st_is_member(table,key) st_lookup(table,key,(st_data_t *)0)
35
enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK};
48
st_table *st_init_table(struct st_hash_type *);
49
st_table *st_init_table_with_size(struct st_hash_type *, int);
50
st_table *st_init_numtable(void);
51
st_table *st_init_numtable_with_size(int);
52
st_table *st_init_strtable(void);
53
st_table *st_init_strtable_with_size(int);
54
int st_delete(st_table *, st_data_t *, st_data_t *);
55
int st_delete_safe(st_table *, st_data_t *, st_data_t *, st_data_t);
56
int st_insert(st_table *, st_data_t, st_data_t);
57
int st_lookup(st_table *, st_data_t, st_data_t *);
58
int st_foreach(st_table *, int (*)(ANYARGS), st_data_t);
59
void st_add_direct(st_table *, st_data_t, st_data_t);
60
void st_free_table(st_table *);
61
void st_cleanup_safe(st_table *, st_data_t);
62
st_table *st_copy(st_table *);
63
int st_numcmp(long, long);
66
#endif /* ST_INCLUDED */