diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-10-10 12:12:29 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-10-10 12:12:29 +0900 |
| commit | 400ccecf0a072fed0be0945277b752ce6aace79b (patch) | |
| tree | 1d89b48522a39f99eab45fe05a6f4ab9c6118844 | |
| parent | 9295f6ae4916854c92cd3430cd0ee5d3b2f1b2df (diff) | |
| download | mruby-400ccecf0a072fed0be0945277b752ce6aace79b.tar.gz mruby-400ccecf0a072fed0be0945277b752ce6aace79b.zip | |
add mrb_gv_remove(); untested
| -rw-r--r-- | include/mruby/variable.h | 1 | ||||
| -rw-r--r-- | src/variable.c | 11 |
2 files changed, 12 insertions, 0 deletions
diff --git a/include/mruby/variable.h b/include/mruby/variable.h index 2845e0daa..fdee68b29 100644 --- a/include/mruby/variable.h +++ b/include/mruby/variable.h @@ -53,6 +53,7 @@ mrb_value mrb_mod_constants(mrb_state *mrb, mrb_value mod); mrb_value mrb_f_global_variables(mrb_state *mrb, mrb_value self); mrb_value mrb_gv_get(mrb_state *mrb, mrb_sym sym); void mrb_gv_set(mrb_state *mrb, mrb_sym sym, mrb_value val); +void mrb_gv_remove(mrb_state *mrb, mrb_sym sym); mrb_value mrb_obj_instance_variables(mrb_state*, mrb_value); mrb_value mrb_obj_iv_inspect(mrb_state*, struct RObject*); mrb_sym mrb_class_sym(mrb_state *mrb, struct RClass *c, struct RClass *outer); diff --git a/src/variable.c b/src/variable.c index f2a474201..dd0ad5da4 100644 --- a/src/variable.c +++ b/src/variable.c @@ -1031,6 +1031,17 @@ mrb_gv_set(mrb_state *mrb, mrb_sym sym, mrb_value v) iv_put(mrb, t, sym, v); } +void +mrb_gv_remove(mrb_state *mrb, mrb_sym sym) +{ + iv_tbl *t; + + if (!mrb->globals) { + return; + } + iv_del(mrb, mrb->globals, sym, NULL); +} + static int gv_i(mrb_state *mrb, mrb_sym sym, mrb_value v, void *p) { |
