One approach we thought of is to use additional int pointer to indicate
whether the value is None.

ffi.cdef('''struct API {    double (*add_numbers)(double x, double y);

    int *ret};

And then wrap the python function, if the return value is None, set ret[0] to 1.



On Tue, May 19, 2015 at 11:06 PM, Yicong Huang <hengha....@gmail.com> wrote:

> The document Embedding PyPy shows good examples, but did not tell how to
> deal with None value.
> As Python support None value, it might bring some troubles:
> 1. How to pass NULL from C to python for None?
> 2. If python function return None, how to handle the issue in C?
>
> For the above cases, we observed errors like these:
>
> From cffi callback <function add_numbersInt at 0x00007f25f313e110>:
> Trying to convert the result back to C:
> TypeError: expected integer, got NoneType object
>
>
>
_______________________________________________
pypy-dev mailing list
pypy-dev@python.org
https://mail.python.org/mailman/listinfo/pypy-dev

Reply via email to