From 9676edda669a3028c24fd9f1e7364c3b73dc7212 Mon Sep 17 00:00:00 2001 From: Yukihiro Matsumoto Date: Sat, 21 Apr 2012 18:59:02 +0900 Subject: replace st.[ch] to remove SIZEOF_ST_INDEX_T --- src/encoding.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src/encoding.c') diff --git a/src/encoding.c b/src/encoding.c index db9a36425..9c50686c6 100644 --- a/src/encoding.c +++ b/src/encoding.c @@ -922,6 +922,31 @@ enc_name(mrb_state *mrb, mrb_value self) return mrb_usascii_str_new2(mrb, mrb_enc_name((mrb_encoding*)DATA_PTR(self))); } +struct fn_arg { + mrb_state *mrb; + int (*func)(ANYARGS); + void *a; +}; + +static int +fn_i(st_data_t key, st_data_t val, st_data_t arg) { + struct fn_arg *a = (struct fn_arg*)arg; + + return (*a->func)(a->mrb, key, val, a->a); +} + +static int +st_foreachNew(mrb_state *mrb, st_table *tbl, int (*func)(ANYARGS), void *a) +{ + struct fn_arg arg = { + mrb, + func, + a, + }; + + return st_foreach(tbl, fn_i, (st_data_t)&arg); +} + static int enc_names_i(mrb_state *mrb, st_data_t name, st_data_t idx, st_data_t args) { -- cgit v1.2.3