From: Mark G. <ma...@go...> - 2009-02-23 15:29:48
|
Hello Fellow Developers, I just came upon this 'bug': template <class T> struct Holder{ T x;}; typedef Holder<int> IntHolder; // ignored %template(FloatHolder) Holder<float>; // wrapped SWIG no longer accepts typedefs to wrap classes. If you look at the wrappered code, FloatHolder is there with all its methods, but IntHolder is not present. This occurs on just about all language bindings (Python, Java, CSharp, TCL).. I know it used to work, you can see in the smart pointer documentation, a typedef was used to get SWIG to wrap a class (http://swig.sourceforge.net/Doc1.3/SWIGPlus.html#SWIGPlus_nn34) So what is the current situation? Has typedef stopped working and I just noticed it, or has it been removed and I didn't realise? Comments? Mark |
From: Nitro <ni...@dr...> - 2009-02-23 15:43:25
|
Am 23.02.2009, 16:29 Uhr, schrieb Mark Gossage <ma...@go...>: > Hello Fellow Developers, > > I just came upon this 'bug': > > template <class T> > struct Holder{ T x;}; > > typedef Holder<int> IntHolder; // ignored > %template(FloatHolder) Holder<float>; // wrapped > > SWIG no longer accepts typedefs to wrap classes. > If you look at the wrappered code, FloatHolder is there with all its > methods, but IntHolder is not present. > > This occurs on just about all language bindings (Python, Java, CSharp, > TCL).. > I know it used to work, you can see in the smart pointer documentation, > a typedef was used to get SWIG to wrap a class > (http://swig.sourceforge.net/Doc1.3/SWIGPlus.html#SWIGPlus_nn34) > > So what is the current situation? Has typedef stopped working and I just > noticed it, or has it been removed and I didn't realise? > > Comments? I've always had to instantiate my own smart pointer template with %template (MySmartPtrInt) MySmartPtr<int>; Automatic template instantiation via typedefs has never been in SWIG if I'm not totally off base here. If you are referring to the code sample below the "If the smart-pointer class and the underlying object both..." sentence, note it doesn't use any template. -Matthias |