1 /* This is a public domain general purpose hash table package written by Peter Moore @ UCB. */
3 /* @(#) st.h 5.1 89/12/14 */
11 typedef ULONG_PTR st_data_t
;
13 typedef unsigned long st_data_t
;
15 #define ST_DATA_T_DEFINED
17 typedef struct st_table st_table
;
25 struct st_hash_type
*type
;
28 struct st_table_entry
**bins
;
31 #define st_is_member(table,key) st_lookup(table,key,(st_data_t *)0)
33 enum st_retval
{ST_CONTINUE
, ST_STOP
, ST_DELETE
, ST_CHECK
};
46 st_table
*st_init_table
_((struct st_hash_type
*));
47 st_table
*st_init_table_with_size
_((struct st_hash_type
*, int));
48 st_table
*st_init_numtable
_((void));
49 st_table
*st_init_numtable_with_size
_((int));
50 st_table
*st_init_strtable
_((void));
51 st_table
*st_init_strtable_with_size
_((int));
52 int st_delete
_((st_table
*, st_data_t
*, st_data_t
*));
53 int st_delete_safe
_((st_table
*, st_data_t
*, st_data_t
*, st_data_t
));
54 int st_insert
_((st_table
*, st_data_t
, st_data_t
));
55 int st_lookup
_((st_table
*, st_data_t
, st_data_t
*));
56 int st_foreach
_((st_table
*, int (*)(ANYARGS
), st_data_t
));
57 void st_add_direct
_((st_table
*, st_data_t
, st_data_t
));
58 void st_free_table
_((st_table
*));
59 void st_cleanup_safe
_((st_table
*, st_data_t
));
60 st_table
*st_copy
_((st_table
*));
62 #define ST_NUMCMP ((int (*)()) 0)
63 #define ST_NUMHASH ((int (*)()) -2)
65 #define st_numcmp ST_NUMCMP
66 #define st_numhash ST_NUMHASH
68 #endif /* ST_INCLUDED */