2.4.2 From C to Python

We've (partially) covered turning Python objects into C objects. What about the reverse? A function that returns to Python must return a pointer to a PyObject, not a raw C long or double.

Fortunately, converting simple C types such as integers and strings to the corresponding Python types is pretty easy: as you can see from the example module, PyInt_FromLong does the former job and the predictably named PyString_FromString does the latter (for NULL-terminated strings anyway; being aware of the PyString_FromStringAndSize function is useful for when that's not what you want).

For more complex situations, Python provides the function Py_BuildValue:

PyAPI_FUNC(PyObject *) Py_BuildValue(char *format,  ...);

The string format is similar to that passed to PyArg_ParseTuple, with the difference that the following arguments are not pointers to variables of appropriate types, but values of these types.

The type of object returned by Py_BuildValue depends on the number of ``format units''...

XXX need an example of using Py_BuildValue.

XXX describe Py_BuildValue, PyList_*, etc here? Mention, at least?

THIS DOCUMENT IS A DRAFT! Comments to mwh@python.net please.