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
16 typedef UINTN st_data_t
;
18 typedef struct st_table st_table
;
26 struct st_hash_type
*type
;
29 struct st_table_entry
**bins
;
32 #define st_is_member(table,key) st_lookup(table,key,(st_data_t *)0)
34 enum st_retval
{ST_CONTINUE
, ST_STOP
, ST_DELETE
, ST_CHECK
};
47 st_table
*st_init_table
_((struct st_hash_type
*));
48 st_table
*st_init_table_with_size
_((struct st_hash_type
*, int));
49 st_table
*st_init_numtable
_((void));
50 st_table
*st_init_numtable_with_size
_((int));
51 st_table
*st_init_strtable
_((void));
52 st_table
*st_init_strtable_with_size
_((int));
53 int st_delete
_((st_table
*, st_data_t
*, st_data_t
*));
54 int st_delete_safe
_((st_table
*, st_data_t
*, st_data_t
*, st_data_t
));
55 int st_insert
_((st_table
*, st_data_t
, st_data_t
));
56 int st_lookup
_((st_table
*, st_data_t
, st_data_t
*));
57 int st_foreach
_((st_table
*, int (*)(ANYARGS
), st_data_t
));
58 void st_add_direct
_((st_table
*, st_data_t
, st_data_t
));
59 void st_free_table
_((st_table
*));
60 void st_cleanup_safe
_((st_table
*, st_data_t
));
61 st_table
*st_copy
_((st_table
*));
63 #define ST_NUMCMP ((int (*)()) 0)
64 #define ST_NUMHASH ((int (*)()) -2)
66 #define st_numcmp ST_NUMCMP
67 #define st_numhash ST_NUMHASH
69 #endif /* ST_INCLUDED */