ext/h8/main.cpp in h8-0.0.4 vs ext/h8/main.cpp in h8-0.0.5

- old
+ new

@@ -77,10 +77,17 @@ static VALUE rvalue_get_index(VALUE self, VALUE index) { return rv(self)->get_index(index); } +static VALUE rvalue_set_attr(VALUE self, VALUE name, VALUE value) { + return protect_ruby([&] { + rv(self)->set_attribute(name, value); + return Qnil; + }); +} + static VALUE rvalue_is_string(VALUE self) { return rv(self)->is_string(); } static VALUE rvalue_is_array(VALUE self) { @@ -168,11 +175,11 @@ context_class = rb_define_class_under(h8, "Context", rb_cObject); ruby_gate_class = rb_define_class_under(h8, "RubyGate", rb_cObject); rb_define_alloc_func(context_class, context_alloc); rb_define_method(context_class, "_eval", (ruby_method) context_eval, 2); - rb_define_method(context_class, "set_var", (ruby_method) context_set_var, + rb_define_method(context_class, "_set_var", (ruby_method) context_set_var, 2); value_class = rb_define_class_under(h8, "Value", rb_cObject); rb_define_alloc_func(value_class, rvalue_alloc); rb_define_method(value_class, "to_s", (ruby_method) rvalue_to_s, 0); @@ -189,9 +196,11 @@ (ruby_method) rvalue_is_undefined, 0); rb_define_method(value_class, "_get_attr", (ruby_method) rvalue_get_attr, 1); rb_define_method(value_class, "_get_index", (ruby_method) rvalue_get_index, 1); + rb_define_method(value_class, "_set_attr", (ruby_method) rvalue_set_attr, + 2); rb_define_method(value_class, "_call", (ruby_method) rvalue_call, 1); rb_define_method(value_class, "_apply", (ruby_method) rvalue_apply, 2); rb_define_method(value_class, "context", (ruby_method) rvalue_get_ruby_context, 0);