From: Marcelo M. <mar...@us...> - 2005-11-24 00:54:17
|
Update of /cvsroot/swig/SWIG/Lib/perl5 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16676/Lib/perl5 Modified Files: perlrun.swg Log Message: fix for perl + multiple modules Index: perlrun.swg =================================================================== RCS file: /cvsroot/swig/SWIG/Lib/perl5/perlrun.swg,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** perlrun.swg 10 Nov 2005 21:19:05 -0000 1.28 --- perlrun.swg 24 Nov 2005 00:54:10 -0000 1.29 *************** *** 78,86 **** #define SWIG_MAYBE_PERL_OBJECT SWIG_PERL_OBJECT_DECL SWIGRUNTIME swig_cast_info * ! SWIG_Perl_TypeCheckRV(SWIG_MAYBE_PERL_OBJECT SV *rv, swig_type_info *ty) { ! SWIG_TypeCheck_Template(sv_derived_from(rv, (char *) iter->type->name), ty); } /* Function for getting a pointer value */ --- 78,99 ---- #define SWIG_MAYBE_PERL_OBJECT SWIG_PERL_OBJECT_DECL + SWIGRUNTIME const char * + SWIG_Perl_TypeProxyName(const swig_type_info *type) { + if (!type) return NULL; + if (type->clientdata != NULL) { + return (const char*) type->clientdata; + } + else { + return type->name; + } + } + SWIGRUNTIME swig_cast_info * ! SWIG_TypeProxyCheck(const char *c, swig_type_info *ty) { ! SWIG_TypeCheck_Template(( (!iter->type->clientdata && (strcmp((char*)iter->type->name, c) == 0)) ! || (iter->type->clientdata && (strcmp((char*)iter->type->clientdata, c) == 0))), ty); } + /* Function for getting a pointer value */ *************** *** 132,137 **** /* Now see if the types match */ char *_c = HvNAME(SvSTASH(SvRV(sv))); ! ! tc = SWIG_TypeCheck(_c,_t); if (!tc) { return SWIG_ERROR; --- 145,149 ---- /* Now see if the types match */ char *_c = HvNAME(SvSTASH(SvRV(sv))); ! tc = SWIG_TypeProxyCheck(_c,_t); if (!tc) { return SWIG_ERROR; *************** *** 172,176 **** HV *hash=newHV(); HV *stash; ! sv_setref_pv(obj, (char *) t->name, ptr); stash=SvSTASH(SvRV(obj)); if (flags & SWIG_POINTER_OWN) { --- 184,188 ---- HV *hash=newHV(); HV *stash; ! sv_setref_pv(obj, (char *) SWIG_Perl_TypeProxyName(t), ptr); stash=SvSTASH(SvRV(obj)); if (flags & SWIG_POINTER_OWN) { *************** *** 190,194 **** } else { ! sv_setref_pv(sv, (char *) t->name, ptr); } } --- 202,206 ---- } else { ! sv_setref_pv(sv, (char *) SWIG_Perl_TypeProxyName(t), ptr); } } *************** *** 205,212 **** char result[1024]; char *r = result; ! if ((2*sz + 1 + strlen(type->name)) > 1000) return; *(r++) = '_'; r = SWIG_PackData(r,ptr,sz); ! strcpy(r,type->name); sv_setpv(sv, result); } --- 217,224 ---- char result[1024]; char *r = result; ! if ((2*sz + 1 + strlen(SWIG_Perl_TypeProxyName(type))) > 1000) return; *(r++) = '_'; r = SWIG_PackData(r,ptr,sz); ! strcpy(r,SWIG_Perl_TypeProxyName(type)); sv_setpv(sv, result); } |