Somehow putting the templates in the same type system.xml solved the > insert-template referring to non-existing template 'stdListToPyList'
Now when calling my function getPluginIDs() from Python, I get a crash in the call to convertToPython of std::string, any clue about the crash ? // C++ to Python conversion for type 'std::list<std::string >'. static PyObject* std_list_std_string__CppToPython_std_list_std_string_(const void* cppIn) { ::std::list<std::string >& cppInRef = *((::std::list<std::string >*)cppIn); // TEMPLATE - stdListToPyList - START PyObject* pyOut = PyList_New((int) cppInRef.size()); ::std::list<std::string >::const_iterator it = cppInRef.begin(); for (int idx = 0; it != cppInRef.end(); ++it, ++idx) { ::std::string cppItem(*it); PyList_SET_ITEM(pyOut, idx, // CRASHING IN THE FOLLOWING LINE Shiboken::Conversions::copyToPython(Shiboken::Conversions::PrimitiveTypeConverter<std::string>(), &cppItem)); } return pyOut; // TEMPLATE - stdListToPyList - END } > On 22 Oct 2014, at 14:29, Alexandre <alexandre.gauthier-foic...@inria.fr> > wrote: > > Hi Tom, > > Thank you for your quick answer. > Indeed with the wrapper around global functions I could make it work!;) > > However I still don’t understand one thing: > > If I supplied the a conversion for std::list and for std::string, do I need > to also provide a conversion for std::list<std::string> ? > > My function signature is the following: > > inline std::list<std::string> > getPluginIDs() > { > // Code logic > } > > > I’m declaring it in the type system this way: > <function signature="getPluginIDs()"/> > > > std::list and std::string conversion are declared as told in the previous > mail. > The generated code by Shiboken looks like this, with empty functions: > > // C++ to Python conversion for type 'std::list<std::string >'. > static PyObject* std_list_std_string__CppToPython_std_list_std_string_(const > void* cppIn) { > ::std::list<std::string >& cppInRef = *((::std::list<std::string > >*)cppIn); > > > > } > static void std_list_std_string__PythonToCpp_std_list_std_string_(PyObject* > pyIn, void* cppOut) { > ::std::list<std::string >& cppOutRef = *((::std::list<std::string > >*)cppOut); > > > > } > > > And I get the following warning: > insert-template referring to non-existing template 'stdListToPyList' > Any clue on what might cause this ? >
_______________________________________________ PySide mailing list PySide@qt-project.org http://lists.qt-project.org/mailman/listinfo/pyside