summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2013-10-10 12:12:29 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2013-10-10 12:12:29 +0900
commit400ccecf0a072fed0be0945277b752ce6aace79b (patch)
tree1d89b48522a39f99eab45fe05a6f4ab9c6118844
parent9295f6ae4916854c92cd3430cd0ee5d3b2f1b2df (diff)
downloadmruby-400ccecf0a072fed0be0945277b752ce6aace79b.tar.gz
mruby-400ccecf0a072fed0be0945277b752ce6aace79b.zip
add mrb_gv_remove(); untested
-rw-r--r--include/mruby/variable.h1
-rw-r--r--src/variable.c11
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)
{