Hi, in case I want to add a method (using C) for a class I’ve created
in pure Ruby, must I also create the class in C?
If not, how to fill MY_CLASS here?:
rb_define_method(MY_CLASS, “my_method”, my_method, arg_count);
Thanks.
Hi, in case I want to add a method (using C) for a class I’ve created
in pure Ruby, must I also create the class in C?
If not, how to fill MY_CLASS here?:
rb_define_method(MY_CLASS, “my_method”, my_method, arg_count);
Thanks.
On Sat, 2009-04-04 at 00:45 +0900, Iñaki Baz C. wrote:
Hi, in case I want to add a method (using C) for a class I’ve created
in pure Ruby, must I also create the class in C?
Something like this should work:
static VALUE
rb_foo(VALUE self)
{
rb_p(INT2FIX(42));
return Qnil;
}
void
Init_foo(void)
{
VALUE klass = rb_const_get(rb_cObject, rb_intern(“Foo”));
rb_define_method(klass, “foo”, rb_foo, 0);
}
Then you should be able to do
class Foo; end
require ‘foo’
Foo.new.foo
HTH,
Andre
2009/4/3 Andre N. [email protected]:
  return Qnil;
class Foo; end
require ‘foo’
Foo.new.foo
Thanks a lot!
On Apr 3, 2009, at 09:03, Andre N. wrote:
return Qnil;
}void
Init_foo(void)
{
VALUE klass = rb_const_get(rb_cObject, rb_intern(“Foo”));
rb_define_method(klass, “foo”, rb_foo, 0);
}
It’s better with RubyInline:
require ‘rubygems’
require ‘inline’
class Foo
inline :C do |builder|
builder.c <<-C
void foo() {
rb_p(INT2FIX(42));
}
C
end
end
Foo.new.foo
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs