--Multipart_Mon_Nov_19_10:52:36_2001-1 Content-Type: text/plain; charset=US-ASCII At Mon, 19 Nov 2001 06:16:09 +0900, Kero van Gelder <kero / d4050.upc-d.chello.nl> wrote: > [2 native.c <text/x-csrc; us-ascii (7bit)>] > #include <ruby.h> > > VALUE rb_cBla; > > VALUE bla_new(VALUE module) { > int *b LLOC(int); > VALUE bla; > *b ; > bla ata_Wrap_Struct(rb_cBla, NULL, free, b); > return bla; > } You'd better to define Bla#initialize not but Bla.new only, or Blaat#initialize would never be called. > void Init_native(void) { > rb_cBla b_define_class("Bla", rb_cObject); > rb_define_module_function(rb_cBla, "new", bla_new, 0); > } And bla_new() shouldn't be a module function but a singleton method. Of course, as David wrote, hardcoded rb_cBla is the problem. With 1.7 feature, new allocation framework, see attachments. --Multipart_Mon_Nov_19_10:52:36_2001-1 Content-Type: text/x-csrc; charset=US-ASCII Content-Disposition: attachment; filename="native.c" Content-Transfer-Encoding: 7bit #include <ruby.h> VALUE rb_cBla; #if HAVE_OBJECT_ALLOCATE static VALUE bla_allocate(VALUE klass) { return Data_Wrap_Struct(klass, NULL, free, ALLOC(int)); } #else static VALUE bla_new(int argc, VALUE *argv, VALUE klass) { VALUE bla ata_Wrap_Struct(klass, NULL, free, ALLOC(int)); rb_obj_call_init(bla, argc, argv); return bla; } #endif static VALUE bla_initialize(VALUE bla) { int *b; Data_Get_Struct(bla, int, b); *b ; return bla; } void Init_native(void) { rb_cBla b_define_class("Bla", rb_cObject); #if HAVE_OBJECT_ALLOCATE rb_define_singleton_method(rb_cBla, "allocate", bla_allocate, 0); #else rb_define_singleton_method(rb_cBla, "new", bla_new, -1); #endif rb_define_method(rb_cBla, "initialize", bla_initialize, 0); } --Multipart_Mon_Nov_19_10:52:36_2001-1 Content-Type: text/x-ruby; charset=US-ASCII Content-Disposition: attachment; filename="extconf.rb" Content-Transfer-Encoding: 7bit require 'mkmf' $CPPFLAGS + -DHAVE_OBJECT_ALLOCATE" if Object.respond_to? :allocate create_makefile("native") --Multipart_Mon_Nov_19_10:52:36_2001-1 Content-Type: text/plain; charset=US-ASCII Nobu Nakada --Multipart_Mon_Nov_19_10:52:36_2001-1--