From 90a42a210461658cfc7bea9701fd7ccb309d7cc4 Mon Sep 17 00:00:00 2001 From: "K.Takata" Date: Fri, 13 Mar 2020 11:46:45 +0900 Subject: [PATCH] st: Modify for non-Ruby environments --- regint.h | 34 +++++++++++++++++----------------- st.c | 23 +++++++++++++++++++++-- st.h | 17 ++++++++++++++--- 3 files changed, 52 insertions(+), 22 deletions(-) diff --git a/regint.h b/regint.h index a58d3b8f..f7552a65 100644 --- a/regint.h +++ b/regint.h @@ -172,23 +172,23 @@ # define CHECK_INTERRUPT_IN_MATCH_AT -# define st_init_table onig_st_init_table -# define st_init_table_with_size onig_st_init_table_with_size -# define st_init_numtable onig_st_init_numtable -# define st_init_numtable_with_size onig_st_init_numtable_with_size -# define st_init_strtable onig_st_init_strtable -# define st_init_strtable_with_size onig_st_init_strtable_with_size -# define st_delete onig_st_delete -# define st_delete_safe onig_st_delete_safe -# define st_insert onig_st_insert -# define st_lookup onig_st_lookup -# define st_foreach onig_st_foreach -# define st_add_direct onig_st_add_direct -# define st_free_table onig_st_free_table -# define st_cleanup_safe onig_st_cleanup_safe -# define st_copy onig_st_copy -# define st_nothing_key_clone onig_st_nothing_key_clone -# define st_nothing_key_free onig_st_nothing_key_free +# define rb_st_init_table onig_st_init_table +# define rb_st_init_table_with_size onig_st_init_table_with_size +# define rb_st_init_numtable onig_st_init_numtable +# define rb_st_init_numtable_with_size onig_st_init_numtable_with_size +# define rb_st_init_strtable onig_st_init_strtable +# define rb_st_init_strtable_with_size onig_st_init_strtable_with_size +# define rb_st_delete onig_st_delete +# define rb_st_delete_safe onig_st_delete_safe +# define rb_st_insert onig_st_insert +# define rb_st_lookup onig_st_lookup +# define rb_st_foreach onig_st_foreach +# define rb_st_add_direct onig_st_add_direct +# define rb_st_free_table onig_st_free_table +# define rb_st_cleanup_safe onig_st_cleanup_safe +# define rb_st_copy onig_st_copy +# define rb_st_nothing_key_clone onig_st_nothing_key_clone +# define rb_st_nothing_key_free onig_st_nothing_key_free /* */ # define onig_st_is_member st_is_member diff --git a/st.c b/st.c index 8b501af0..479b9413 100644 --- a/st.c +++ b/st.c @@ -100,12 +100,17 @@ */ +#if !defined(RUBY) && defined(RUBY_EXPORT) +#define RUBY +#endif + #ifdef RUBY #include "internal.h" #include "internal/bits.h" #include "internal/hash.h" #include "internal/sanitizers.h" #else +#include "regint.h" #include "st.h" #endif @@ -171,7 +176,14 @@ static const struct st_hash_type type_strcasehash = { #define realloc ruby_xrealloc #define free ruby_xfree #else /* RUBY */ -#define MEMCPY(p1,p2,type,n) memcpy((p1), (p2), sizeof(type)*(n)) +#ifndef FALSE +#define FALSE 0 +#endif +#ifndef TRUE +#define TRUE 1 +#endif +#define MEMCPY(p1,p2,type,n) memcpy((p1), (p2), sizeof(type)*(n)) +#define NO_SANITIZE(s,decl) decl #endif /* RUBY */ #define EQUAL(tab,x,y) ((x) == (y) || (*(tab)->type->compare)((x),(y)) == 0) @@ -343,7 +355,14 @@ do_hash(st_data_t key, st_table *tab) static int get_power2(st_index_t size) { - unsigned int n = ST_INDEX_BITS - nlz_intptr(size); + unsigned int n; + +#ifdef RUBY + n = ST_INDEX_BITS - nlz_intptr(size); +#else + for (n = 0; size != 0; n++) + size >>= 1; +#endif if (n <= MAX_POWER2) return n < MINIMAL_POWER2 ? MINIMAL_POWER2 : n; #ifdef RUBY diff --git a/st.h b/st.h index fe6a4bc3..f9ecbe5a 100644 --- a/st.h +++ b/st.h @@ -14,13 +14,27 @@ extern "C" { #endif #endif +#if !defined(RUBY) && defined(RUBY_EXPORT) +#define RUBY +#endif + #ifdef RUBY #include "ruby/defines.h" #else /* RUBY */ +#ifdef HAVE_STDINT_H +#include +#endif +#ifdef HAVE_STDLIB_H +#include +#endif #ifndef RUBY_SYMBOL_EXPORT_BEGIN #define RUBY_SYMBOL_EXPORT_BEGIN #define RUBY_SYMBOL_EXPORT_END #endif +#ifndef CONSTFUNC +#define CONSTFUNC(decl) decl +#define PUREFUNC(decl) decl +#endif #endif /* RUBY */ RUBY_SYMBOL_EXPORT_BEGIN @@ -41,9 +55,6 @@ typedef unsigned LONG_LONG st_data_t; # define CHAR_BIT 8 # endif #endif -#ifndef _ -# define _(args) args -#endif #ifndef ANYARGS # ifdef __cplusplus # define ANYARGS ...