From 4db681110d3b3921970e98d7a76f042f77ef2ea4 Mon Sep 17 00:00:00 2001 From: Masaki Fukushima Date: Sun, 3 Sep 2000 17:11:15 +0000 Subject: [PATCH] a few bug fixes git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@810 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- Lib/ruby/rubydef.swg | 9 ++++++--- Source/Modules1.1/ruby.cxx | 14 +++++++------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/Lib/ruby/rubydef.swg b/Lib/ruby/rubydef.swg index 4c0ada814..ec0d0f0c3 100644 --- a/Lib/ruby/rubydef.swg +++ b/Lib/ruby/rubydef.swg @@ -11,12 +11,15 @@ static VALUE _cSWIG_Pointer = Qnil; SWIGRUNTIME(void) SWIG_define_class(swig_type_info *type) { + VALUE klass; char *klass_name = ALLOCA_N(char, 4 + strlen(type->name) + 1); + sprintf(klass_name, "TYPE%s", type->name); if (NIL_P(_cSWIG_Pointer)) { _cSWIG_Pointer = rb_define_class_under(_mSWIG, "Pointer", rb_cObject); + rb_undef_method(CLASS_OF(_cSWIG_Pointer), "new"); } - rb_define_class_under(_mSWIG, klass_name, _cSWIG_Pointer); + klass = rb_define_class_under(_mSWIG, klass_name, _cSWIG_Pointer); } /* Create a new pointer object */ @@ -61,11 +64,11 @@ SWIG_ConvertPtr(VALUE obj, swig_type_info *ty) swig_type_info *tc; if ((c = SWIG_MangleStr(obj)) == NULL) - rb_raise(rb_eTypeError, "Expected %s", ty->name); + rb_raise(rb_eTypeError, "Expected %s", ty->str); Data_Get_Struct(obj, void, ptr); if (ty) { tc = SWIG_TypeCheck(c, ty); - if (!tc) rb_raise(rb_eTypeError, "Expected %s", ty->name); + if (!tc) rb_raise(rb_eTypeError, "Expected %s", ty->str); ptr = SWIG_TypeCast(tc, ptr); } return ptr; diff --git a/Source/Modules1.1/ruby.cxx b/Source/Modules1.1/ruby.cxx index a57f67eaf..b79fde01f 100644 --- a/Source/Modules1.1/ruby.cxx +++ b/Source/Modules1.1/ruby.cxx @@ -320,6 +320,13 @@ void RUBY::initialize() { Printv(f_init, tab4, modvar, " = rb_define_module(\"", module, "\");\n", "_mSWIG = rb_define_module_under(", modvar, ", \"SWIG\");\n", 0); + Printv(f_init, + "\n", + "for (i = 0; swig_types_initial[i]; i++) {\n", + "swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]);\n", + "SWIG_define_class(swig_types[i]);\n", + "}\n", + 0); Printf(f_init,"\n"); klass = new RClass(); } @@ -333,13 +340,6 @@ void RUBY::initialize() { void RUBY::close(void) { /* Finish off our init function */ - Printv(f_init, - "\n", - "for (i = 0; swig_types_initial[i]; i++) {\n", - "swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]);\n", - "SWIG_define_class(swig_types[i]);\n", - "}\n", - 0); Printf(f_init,"}\n"); SwigType_emit_type_table(f_header,f_wrappers); }