Eric Hodel
4/3/2009 8:39:00 PM
On Apr 3, 2009, at 09:03, Andre Nathan wrote:
> On Sat, 2009-04-04 at 00:45 +0900, I=F1aki Baz Castillo 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 =3D 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