diff options
| author | snaba <[email protected]> | 2012-04-23 09:42:29 +0900 |
|---|---|---|
| committer | snaba <[email protected]> | 2012-04-23 09:42:29 +0900 |
| commit | 1f87caa2c76bc3b522455b400ab1ff362bfeaa15 (patch) | |
| tree | 713cf17746e245aa03af0d86c8f62bd5b983bebd /src/encoding.c | |
| parent | 210fcdc14b7531e2888e9ebb67d2c77b9f5302c0 (diff) | |
| parent | cf6e7966d3de0de1cf03e8c72dbde474d61d9f7d (diff) | |
| download | mruby-1f87caa2c76bc3b522455b400ab1ff362bfeaa15.tar.gz mruby-1f87caa2c76bc3b522455b400ab1ff362bfeaa15.zip | |
Merge branch 'master' of github.com:mruby/mruby
Diffstat (limited to 'src/encoding.c')
| -rw-r--r-- | src/encoding.c | 25 |
1 files changed, 25 insertions, 0 deletions
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) { |
