Hi Nicolas, Can you send a simple example, where the convention fail (c++ to python or python to c++)? What kind of test you are running?
BR Renato On Mon, Jun 22, 2009 at 8:31 AM, Nicolas Lara<nicolasl...@gmail.com> wrote: > Hello, > I'm new to Boost::Python and am encountering a problem that seem to be > quite common: I need to expose a class to C++ whose constructor takes > a wchar_t* as a parameter. > The problem is that there is no default type converter from wchar_t to > python and vice-versa. > > I wanted to know if there was a standard way of doing this. Or if > anyone could point me to an implementation of this type conversion. > > So far I'm doing this (based on the faq): > > struct wchar_t_to_python_str > { > static PyObject* convert(wchar_t* const& w) > { > string s = ""; > wchar_t* w2 = w; > while(*w2++ != 0){ > s += *w2; > } > return boost::python::incref(boost::python::object(s).ptr()); > } > }; > > struct wchar_t_from_python_str > { > wchar_t_from_python_str() > { > boost::python::converter::registry::push_back( > &convertible, > &construct, > boost::python::type_id<wchar_t>()); > } > > static void* convertible(PyObject* obj_ptr) > { > if (!PyString_Check(obj_ptr)) return 0; > return obj_ptr; > } > > static void construct( > PyObject* obj_ptr, > > boost::python::converter::rvalue_from_python_stage1_data* data) > { > const char* value = PyString_AsString(obj_ptr); > Py_ssize_t l = PyString_Size(obj_ptr); > if (value == 0) boost::python::throw_error_already_set(); > void* storage = ( > > (boost::python::converter::rvalue_from_python_storage<wchar_t*>*) > data)->storage.bytes; > > wchar_t* w = new wchar_t[l]; > for(int i=0;i<l;i++){ > w[i] = value[i]; > } > data->convertible = w; > } > }; > void init_module() > { > to_python_converter<wchar_t*,wchar_t_to_python_str>(); > wchar_t_from_python_str(); > } > > BOOST_PYTHON_MODULE(queryparser){ > init_module(); > } > > But it doesn't seem to be working. It compiles, but python doesn't > understand the conversion. > Any thoughts? > > > Thanks in advance! > > -- > Nicolas Lara > Linux user #380134 > http://nicolas-lara.blogspot.com/ > Public key id: 0x152e7713 at http://subkeys.pgp.net/ > _______________________________________________ > Cplusplus-sig mailing list > Cplusplus-sig@python.org > http://mail.python.org/mailman/listinfo/cplusplus-sig > -- Renato Araujo Oliveira Filho _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig