On 2/21/11 14:33 , Hans Meine wrote:
Am Montag, 21. Februar 2011, um 11:36:52 schrieb Wichert Akkerman:
I'm trying to do something which should be very simple, but I'm not
having much luck figuring out how from the existing documentation.

For a python 2 project I am trying to return a gettext-translated string
as a unicode instance to python. The return value for gettext() is a
UTF-8 encoded char*, which should be pretty simple to convert to a
python unicode instrance using PyUnicode_FromString. I have a feeling
this is trivial to do, but I can't seem to figure out how.

According to http://docs.python.org/c-api/unicode.html , this is exactly what
PyUnicode_FromString is supposed to do.

What's the problem?  Do you get an error?  Some code might help.

For a single unicode instance this is indeed working correctly. Unfortunately it breaks down when I need to return a list of unicode instances. My simple approach looks like this:

boost::python::list PyMyFunc() {
    std::vector<std::string> raw_strings = BaseClass::MyFunc();
    std::vector<std::string>::const_iterator i;
    boost::python::list result;

    for (i=raw_strings.begin(); i!=raw_strings.end(); i++)
        result.append(PyUnicode_FromString(i->c_str()));
    return result;
}

but that results in a lot of compile errors suggesting that bp::list does not know how to handle PyObject* values.

Wichert.
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to