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)
|
SWIGRUNTIME(void)
|
||||||
SWIG_define_class(swig_type_info *type)
|
SWIG_define_class(swig_type_info *type)
|
||||||
{
|
{
|
||||||
|
VALUE klass;
|
||||||
char *klass_name = ALLOCA_N(char, 4 + strlen(type->name) + 1);
|
char *klass_name = ALLOCA_N(char, 4 + strlen(type->name) + 1);
|
||||||
|
|
||||||
sprintf(klass_name, "TYPE%s", type->name);
|
sprintf(klass_name, "TYPE%s", type->name);
|
||||||
if (NIL_P(_cSWIG_Pointer)) {
|
if (NIL_P(_cSWIG_Pointer)) {
|
||||||
_cSWIG_Pointer = rb_define_class_under(_mSWIG, "Pointer", rb_cObject);
|
_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 */
|
/* Create a new pointer object */
|
||||||
|
|
@ -61,11 +64,11 @@ SWIG_ConvertPtr(VALUE obj, swig_type_info *ty)
|
||||||
swig_type_info *tc;
|
swig_type_info *tc;
|
||||||
|
|
||||||
if ((c = SWIG_MangleStr(obj)) == NULL)
|
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);
|
Data_Get_Struct(obj, void, ptr);
|
||||||
if (ty) {
|
if (ty) {
|
||||||
tc = SWIG_TypeCheck(c, 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);
|
ptr = SWIG_TypeCast(tc, ptr);
|
||||||
}
|
}
|
||||||
return ptr;
|
return ptr;
|
||||||
|
|
|
||||||
|
|
@ -320,6 +320,13 @@ void RUBY::initialize() {
|
||||||
Printv(f_init, tab4, modvar, " = rb_define_module(\"", module, "\");\n",
|
Printv(f_init, tab4, modvar, " = rb_define_module(\"", module, "\");\n",
|
||||||
"_mSWIG = rb_define_module_under(", modvar, ", \"SWIG\");\n",
|
"_mSWIG = rb_define_module_under(", modvar, ", \"SWIG\");\n",
|
||||||
0);
|
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");
|
Printf(f_init,"\n");
|
||||||
klass = new RClass();
|
klass = new RClass();
|
||||||
}
|
}
|
||||||
|
|
@ -333,13 +340,6 @@ void RUBY::initialize() {
|
||||||
|
|
||||||
void RUBY::close(void) {
|
void RUBY::close(void) {
|
||||||
/* Finish off our init function */
|
/* 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");
|
Printf(f_init,"}\n");
|
||||||
SwigType_emit_type_table(f_header,f_wrappers);
|
SwigType_emit_type_table(f_header,f_wrappers);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue