summaryrefslogtreecommitdiffhomepage
path: root/src/st.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/st.h')
-rw-r--r--src/st.h72
1 files changed, 16 insertions, 56 deletions
diff --git a/src/st.h b/src/st.h
index 7324e8da7..d9da995a5 100644
--- a/src/st.h
+++ b/src/st.h
@@ -9,23 +9,8 @@
extern "C" {
#endif
-#ifndef RUBY_LIB_PREFIX
-
-#ifdef RUBY_EXTCONF_H
-#include RUBY_EXTCONF_H
-#endif
-#endif
-
-#if defined STDC_HEADERS
-#include <stddef.h>
-#elif defined HAVE_STDLIB_H
#include <stdlib.h>
-#endif
-
-#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#include <inttypes.h>
+#include <stdint.h>
#ifndef CHAR_BIT
# ifdef HAVE_LIMITS_H
@@ -35,10 +20,6 @@ extern "C" {
# endif
#endif
-#ifndef _
-# define _(args) args
-#endif
-
#ifndef ANYARGS
# ifdef __cplusplus
# define ANYARGS ...
@@ -64,27 +45,15 @@ struct st_table_entry {
st_table_entry *fore, *back;
};
-#ifndef SIZEOF_VOIDP
-#define SIZEOF_VOIDP 4
-#endif
-
-#define SIZEOF_ST_INDEX_T SIZEOF_VOIDP
-
struct st_hash_type {
int (*compare)(ANYARGS /*st_data_t, st_data_t*/); /* st_compare_func* */
st_index_t (*hash)(ANYARGS /*st_data_t*/); /* st_hash_func* */
};
-#define ST_INDEX_BITS (sizeof(st_index_t) * CHAR_BIT)
-
struct st_table {
const struct st_hash_type *type;
- st_index_t num_bins;
- unsigned int entries_packed : 1;
-#ifdef __GNUC__
- __extension__
-#endif
- st_index_t num_entries : ST_INDEX_BITS - 1;
+ int num_bins;
+ int num_entries;
struct st_table_entry **bins;
struct st_table_entry *head, *tail;
};
@@ -94,46 +63,37 @@ struct st_table {
enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK};
st_table *st_init_table(const struct st_hash_type *);
-st_table *st_init_table_with_size(const struct st_hash_type *, st_index_t);
+st_table *st_init_table_with_size(const struct st_hash_type *, int);
st_table *st_init_numtable(void);
-st_table *st_init_numtable_with_size(st_index_t);
+st_table *st_init_numtable_with_size(int);
st_table *st_init_strtable(void);
-st_table *st_init_strtable_with_size(st_index_t);
+st_table *st_init_strtable_with_size(int);
st_table *st_init_strcasetable(void);
st_table *st_init_strcasetable_with_size(st_index_t);
-int st_delete(st_table *, st_data_t *, st_data_t *); /* returns 0:notfound 1:deleted */
+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_insert2(st_table *, st_data_t, st_data_t, st_data_t (*)(st_data_t));
int st_lookup(st_table *, st_data_t, st_data_t *);
-int st_get_key(st_table *, st_data_t, st_data_t *);
int st_foreach(st_table *, int (*)(ANYARGS), st_data_t);
-int st_foreachNew(mrb_state *mrb, st_table *, int (*)(ANYARGS), void*);
-int st_reverse_foreach(st_table *, int (*)(ANYARGS), 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);
-void st_clear(st_table *);
st_table *st_copy(st_table *);
-int st_numcmp(st_data_t, st_data_t);
-st_index_t st_numhash(st_data_t);
-int st_strcasecmp(const char *s1, const char *s2);
-int st_strncasecmp(const char *s1, const char *s2, size_t n);
-size_t st_memsize(const st_table *);
-st_index_t st_hash(const void *ptr, size_t len, st_index_t h);
-st_index_t st_hash_uint32(st_index_t h, uint32_t i);
-st_index_t st_hash_uint(st_index_t h, st_index_t i);
-st_index_t st_hash_end(st_index_t h);
-st_index_t st_hash_start(st_index_t h);
-#define st_hash_start(h) ((st_index_t)(h))
-
int st_strcasecmp(const char *s1, const char *s2);
int st_strncasecmp(const char *s1, const char *s2, size_t n);
#define STRCASECMP(s1, s2) (st_strcasecmp(s1, s2))
#define STRNCASECMP(s1, s2, n) (st_strncasecmp(s1, s2, n))
+#define ST_NUMCMP ((int (*)()) 0)
+#define ST_NUMHASH ((int (*)()) -2)
+
+#define st_numcmp ST_NUMCMP
+#define st_numhash ST_NUMHASH
+
+int st_strhash();
+
#if defined(__cplusplus)
} /* extern "C" { */
#endif
-#endif /* RUBY_ST_H */
+#endif /* ST_INCLUDED */