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:
parent
44f7039d7d
commit
4db681110d
2 changed files with 13 additions and 10 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue