diff options
| author | mimaki <[email protected]> | 2012-04-23 11:51:47 +0900 |
|---|---|---|
| committer | mimaki <[email protected]> | 2012-04-23 11:51:47 +0900 |
| commit | c80487561f291e8239541687341b4d64a840c108 (patch) | |
| tree | d4f7777cc91597cf880bed364df26066b9aaee8f /src/encoding.c | |
| parent | 835443614d21b13b27af3674d7f8cb9bf49c298b (diff) | |
| parent | 3f0b98762d4a49beb7cc3f9cc8a8dfcee4aa5f6f (diff) | |
| download | mruby-c80487561f291e8239541687341b4d64a840c108.tar.gz mruby-c80487561f291e8239541687341b4d64a840c108.zip | |
Merge branch 'master' of github.com:mruby/mruby
Conflicts:
src/variable.c
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 2df294e20..ed30a222a 100644 --- a/src/encoding.c +++ b/src/encoding.c @@ -917,6 +917,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) { |
