a few bug fixes

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@810 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Masaki Fukushima 2000-09-03 17:11:15 +00:00
commit 4db681110d
2 changed files with 13 additions and 10 deletions

View file

@ -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;

View file

@ -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);
}