On Mon, Oct 12, 2009 at 10:51 PM, Christopher Bruns <cmbr...@stanford.edu> wrote: > Below is a simplified example of a tricky wrapping problem I have > encountered. The example remains somewhat complicated, but further > simplification results in a file that causes no trouble. > I get a compile error when I try to build the boost python code > generated by the following case: > > #### test_enum.h #### > struct System { > struct ProjectOptions { > enum Option { > All = 1 > }; > ProjectOptions(Option); > }; > void project(ProjectOptions = ProjectOptions::All); > }; > #### end test_enum.h #### > > The trouble comes from the default value ('ProjectOptions::All') for > the project() method. Notice also the constructor for ProjectOptions > from Options. That is required for reproducing the trouble here. > > The resulting boost.python code is as follows: > ... > #### test_wrap_enum2.cpp #### > > The symbol "All" in the line ", ( bp::arg("arg0")=All ) );" is out of > scope here. If I change the line from > > , ( bp::arg("arg0")=All ) ); // compile failure > > to > > , ( bp::arg("arg0")=System::ProjectOptions::All ) ); // works > > it compiles fine. > > Is there any way to instruct pyplusplus to generate the default > argument value for the project() method with the scope > "System::ProjectOptions::All"?
Yes: mb = module_builder_t(...) project = mb.mem_fun( 'project' ) project.arguments[0].default_value = "System::ProjectOptions::All" > Any enlightenment is much appreciated. Basically this is GCCXML limitations. The default argument could be full-blown C++ expression. GCCXML doesn't handles\dumps them. It do writes something for default arguments and Py++(pygccxml) try to decode what it is. May be the following link could help you: http://language-binding.net/pygccxml/upgrade_issues.html http://language-binding.net/pyplusplus/documentation/functions/functions.html Also try google, this problem was discussed on this, pygccxml and gccxml mailing lists. HTH -- Roman Yakovenko C++ Python language binding http://www.language-binding.net/ _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig