From: Bill S. <wf...@sa...> - 2013-01-24 17:10:43
|
Pawel, I finally got around to building your patched swig and testing it on my problem. The generated python file refers to the base class as expected. Thanks. -Bill On Jan 15, 2013, at 4:08 PM, Paweł Tomulik wrote: > W dniu 15.01.2013 22:52, Bill Spotz pisze: >> Hello, >> >> I have the following C++ hierarchy: >> >> Top2::Type2::Common::AbstractGroup derives from >> Top2::Type1::Common::AbstractGroup derives from >> Top2::Continue::AbstractGroup derives from >> Top1::Abstract::Group >> >> I am trying to recreate the C++ namespaces in Python, so I end up with four SWIG interface files: >> >> Top2.Type2.Common.i >> Top2.Type1.Common.i >> Top2.Continue.i >> Top1.Abstract.i >> >> I use the %module(package="...") syntax to define my modules and I %import as appropriate. When I run SWIG on the Top2.Type2.Common.i interface file, it produces a Common.py file that defines the AbstractGroup class like this: >> >> class AbstractGroup(AbstractGroup): >> >> instead of >> >> class AbstractGroup(Top2.Type1.Common.AbstractGroup): >> >> I have tested this with swig 2.0.8 and swig 2.0.9. I have plenty of other similar situations where the base class is named correctly, so this seems to be a subtle bug where, for instance, IF there are multiple namespaces, AND the base and derived class names are the same AND the last namespace name is the same, THEN this error occurs. >> >> I have attached a tarball that demonstrates the problem. It has four C++ header files and four SWIG interface files. If you run 'make' it runs swig on the last SWIG interface file in the hierarchy. You can then look at Common.py to verify the error. 'make clean' will delete the generated files. > > Bill, > > I tried similar things couple days ago and had > similar results to yours. There are also few other > problems related to python import directives generated > by swig. I've worked on fixes for these and proposed > changes as a pull request to git repository of swig > > https://github.com/swig/swig/pull/7 > > Perhaps it needs verification or modification, so it's not > pulled-in (yet?). > > If you wish, you may try my patched swig source available at > > https://github.com/ptomulik/swig/archive/SFbug1297.zip > > and let us know if it works for you. > > Best Regars! > > -- > Pawel Tomulik ** Bill Spotz ** ** Sandia National Laboratories Voice: (505)845-0170 ** ** P.O. Box 5800 Fax: (505)284-0154 ** ** Albuquerque, NM 87185-0370 Email: wf...@sa... ** |