From: Guillaume B. <gui...@ub...> - 2011-11-28 16:11:11
|
Hi all, I try to make the protected methods of a class (virtual or not) available in Python. I'm using the director and « allprotected » options. I'd like to be able to call the protected methods from Python. But it is explicitely prevented : (generated by python.cxx, line 2408) if (!director || !(director->swig_get_inner("my_protected_method"))) { SWIG_SetErrorMsg(PyExc_RuntimeError,"accessing protected member my_protected_method "); SWIG_fail; } "director->swig_get_inner" returns true only if the call comes from the director class (then from a C++ code). Calling a protected method from Python always fails. I understand it is hard to protect a method in Python (« protected » does not exists really). Swig can't know if the call comes from the inside of the object or not. But it is not that important to protect a protected method. (In C++, it is damn easy to unlock the protection : subclass and add a public method that calls the protected one.) At least when the « allprotected » flag is on, all protected methods should be freely accessible. (or for directors only ?) At home I changed the test to : if (!director) { SWIG_SetErrorMsg(PyExc_RuntimeError,"accessing protected member my_protected_method "); SWIG_fail; } Guillaume |
From: Lauri L. <lau...@he...> - 2011-11-29 14:07:10
|
Hey, In the following files, there's an easy to spot problem at around line 264. This is with Ubuntu swig versions. /usr/share/swig2.0/r/rrun.swg /usr/share/swig1.3/r/rrun.swg The offending line is easy to spot. Possibly there are more such lines in other files. Otherwise the SWIG generated code works nicely with the C89 standard and with at least Python and Lua but not with R. Probably I should somehow file a bug report but I'm instead asking whether this thing can be circumvented somehow portably, i.e. without e.g. editing specific file? /* Create a new pointer object */ SWIGRUNTIMEINLINE SEXP SWIG_R_NewPointerObj(void *ptr, swig_type_info *type, int flags) { SEXP rptr = R_MakeExternalPtr(ptr, R_MakeExternalPtr(type, R_NilValue, R_NilValue), R_NilValue); SET_S4_OBJECT(rptr); // rptr = Rf_setAttrib(rptr, R_ClassSymbol, mkChar(SWIG_TypeName(type))); return rptr; } - Lauri |
From: Lauri L. <lau...@he...> - 2011-11-29 14:22:31
|
Hey, Sorry to reply to myself but I'm currently simply sed'ing the comments generated from the template. Still I feel like others shouldn't run into similar problems. Well, that's in case SWIG should be compatible with C89. - Lauri On 11/29/2011 04:06 PM, Lauri Lyly wrote: > Hey, > > In the following files, there's an easy to spot problem at around line > 264. This is with Ubuntu swig versions. > > /usr/share/swig2.0/r/rrun.swg > /usr/share/swig1.3/r/rrun.swg > > The offending line is easy to spot. Possibly there are more such lines > in other files. Otherwise the SWIG generated code works nicely with the > C89 standard and with at least Python and Lua but not with R. > > Probably I should somehow file a bug report but I'm instead asking > whether this thing can be circumvented somehow portably, i.e. without > e.g. editing specific file? > > /* Create a new pointer object */ > SWIGRUNTIMEINLINE SEXP > SWIG_R_NewPointerObj(void *ptr, swig_type_info *type, int flags) { > SEXP rptr = R_MakeExternalPtr(ptr, > R_MakeExternalPtr(type, R_NilValue, R_NilValue), R_NilValue); > SET_S4_OBJECT(rptr); > // rptr = Rf_setAttrib(rptr, R_ClassSymbol, mkChar(SWIG_TypeName(type))); > return rptr; > } > > - Lauri > > > ------------------------------------------------------------------------------ > All the data continuously generated in your IT infrastructure > contains a definitive record of customers, application performance, > security threats, fraudulent activity, and more. Splunk takes this > data and makes sense of it. IT sense. And common sense. > http://p.sf.net/sfu/splunk-novd2d > _______________________________________________ > Swig-user mailing list > Swi...@li... > https://lists.sourceforge.net/lists/listinfo/swig-user > |
From: William S F. <ws...@fu...> - 2011-11-30 20:10:31
|
Thanks for pointing out, fixed for swig-2.0.5. William On 29/11/11 14:22, Lauri Lyly wrote: > Hey, > Sorry to reply to myself but I'm currently simply sed'ing the comments > generated from the template. Still I feel like others shouldn't run into > similar problems. Well, that's in case SWIG should be compatible with C89. > - Lauri > > On 11/29/2011 04:06 PM, Lauri Lyly wrote: >> Hey, >> >> In the following files, there's an easy to spot problem at around line >> 264. This is with Ubuntu swig versions. >> >> /usr/share/swig2.0/r/rrun.swg >> /usr/share/swig1.3/r/rrun.swg >> >> The offending line is easy to spot. Possibly there are more such lines >> in other files. Otherwise the SWIG generated code works nicely with the >> C89 standard and with at least Python and Lua but not with R. >> >> Probably I should somehow file a bug report but I'm instead asking >> whether this thing can be circumvented somehow portably, i.e. without >> e.g. editing specific file? >> >> /* Create a new pointer object */ >> SWIGRUNTIMEINLINE SEXP >> SWIG_R_NewPointerObj(void *ptr, swig_type_info *type, int flags) { >> SEXP rptr = R_MakeExternalPtr(ptr, >> R_MakeExternalPtr(type, R_NilValue, R_NilValue), R_NilValue); >> SET_S4_OBJECT(rptr); >> // rptr = Rf_setAttrib(rptr, R_ClassSymbol, mkChar(SWIG_TypeName(type))); >> return rptr; >> } >> >> - Lauri >> >> >> ------------------------------------------------------------------------------ >> All the data continuously generated in your IT infrastructure >> contains a definitive record of customers, application performance, >> security threats, fraudulent activity, and more. Splunk takes this >> data and makes sense of it. IT sense. And common sense. >> http://p.sf.net/sfu/splunk-novd2d >> _______________________________________________ >> Swig-user mailing list >> Swi...@li... >> https://lists.sourceforge.net/lists/listinfo/swig-user >> > > > ------------------------------------------------------------------------------ > All the data continuously generated in your IT infrastructure > contains a definitive record of customers, application performance, > security threats, fraudulent activity, and more. Splunk takes this > data and makes sense of it. IT sense. And common sense. > http://p.sf.net/sfu/splunk-novd2d > _______________________________________________ > Swig-user mailing list > Swi...@li... > https://lists.sourceforge.net/lists/listinfo/swig-user > |