summaryrefslogtreecommitdiff
path: root/st.h
diff options
context:
space:
mode:
Diffstat (limited to 'st.h')
-rw-r--r--st.h43
1 files changed, 27 insertions, 16 deletions
diff --git a/st.h b/st.h
index 6397f8763b..223f4f66e7 100644
--- a/st.h
+++ b/st.h
@@ -6,11 +6,17 @@
#define ST_INCLUDED
+typedef long st_data_t;
+
+typedef int (*st_compare_func_t)(st_data_t data1, st_data_t data2);
+typedef int (*st_hash_func_t)(st_data_t data);
+typedef int (*st_each_func_t)(st_data_t key, st_data_t value, st_data_t data);
+
typedef struct st_table st_table;
struct st_hash_type {
- int (*compare)();
- int (*hash)();
+ st_compare_func_t compare;
+ st_hash_func_t hash;
};
struct st_table {
@@ -20,23 +26,28 @@ struct st_table {
struct st_table_entry **bins;
};
-#define st_is_member(table,key) st_lookup(table,key,(char **)0)
+#define st_is_member(table,key) st_lookup(table,key,(st_data_t *)0)
enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE};
-st_table *st_init_table();
-st_table *st_init_table_with_size();
-st_table *st_init_numtable();
-st_table *st_init_numtable_with_size();
-st_table *st_init_strtable();
-st_table *st_init_strtable_with_size();
-int st_delete(), st_delete_safe();
-int st_insert(), st_lookup();
-void st_foreach(), st_add_direct(), st_free_table(), st_cleanup_safe();
-st_table *st_copy();
-
-#define ST_NUMCMP ((int (*)()) 0)
-#define ST_NUMHASH ((int (*)()) -2)
+st_table *st_init_table(struct st_hash_type *);
+st_table *st_init_table_with_size(struct st_hash_type *, int);
+st_table *st_init_numtable(void);
+st_table *st_init_numtable_with_size(int);
+st_table *st_init_strtable(void);
+st_table *st_init_strtable_with_size(int);
+int st_delete(st_table *, st_data_t *, st_data_t *);
+int st_delete_safe(st_table *, st_data_t *, st_data_t *, st_data_t);
+int st_insert(st_table *, st_data_t, st_data_t);
+int st_lookup(st_table *, st_data_t, st_data_t *);
+void st_foreach(st_table *, st_each_func_t, st_data_t);
+void st_add_direct(st_table *, st_data_t, st_data_t);
+void st_free_table(st_table *);
+void st_cleanup_safe(st_table *, st_data_t);
+st_table *st_copy(st_table *);
+
+#define ST_NUMCMP ((st_compare_func_t) 0)
+#define ST_NUMHASH ((st_hash_func_t) -2)
#define st_numcmp ST_NUMCMP
#define st_numhash ST_NUMHASH