From a19d6b33d7419ed3724ee6646fa9303d9542b5e5 Mon Sep 17 00:00:00 2001 From: ksaito Date: Fri, 28 Jan 2005 15:21:48 +0000 Subject: * ascii.c, euc_jp.c, hash.c, oniggnu.h, oniguruma.h, regcomp.c, regenc.c, regenc.h, regerror.c, regexec.c, reggnu.c, regint.h, regparse.c, regparse.h, sjis.c, st.c, st.h, utf8.c: imported Oni Guruma 3.5.4. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7846 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- st.h | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'st.h') diff --git a/st.h b/st.h index bc12624b90..fffbb32376 100644 --- a/st.h +++ b/st.h @@ -14,6 +14,8 @@ typedef struct st_table st_table; struct st_hash_type { int (*compare)(); int (*hash)(); + int (*key_free)(); + st_data_t (*key_clone)(); }; struct st_table { @@ -23,6 +25,11 @@ struct st_table { struct st_table_entry **bins; }; +typedef struct { + unsigned char* s; + unsigned char* end; +} st_strend_key; + #define st_is_member(table,key) st_lookup(table,key,(st_data_t *)0) enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK}; @@ -44,22 +51,27 @@ 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)); +st_table *st_init_strend_table_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_insert_strend _((st_table *, unsigned char*, unsigned char*, st_data_t)); int st_lookup _((st_table *, st_data_t, st_data_t *)); +int st_lookup_strend _((st_table *, unsigned char*, unsigned char*, st_data_t*)); void st_foreach _((st_table *, int (*)(ANYARGS), st_data_t)); void st_add_direct _((st_table *, st_data_t, st_data_t)); +void st_add_direct_strend _((st_table *, unsigned char*, unsigned char*, st_data_t)); void st_free_table _((st_table *)); void st_cleanup_safe _((st_table *, st_data_t)); st_table *st_copy _((st_table *)); +extern st_data_t st_nothing_key_clone _((st_data_t key)); +extern int st_nothing_key_free _((st_data_t key)); + #define ST_NUMCMP ((int (*)()) 0) #define ST_NUMHASH ((int (*)()) -2) #define st_numcmp ST_NUMCMP #define st_numhash ST_NUMHASH -int st_strhash(); - #endif /* ST_INCLUDED */ -- cgit v1.2.3