[Cython] Cython methods for C/C++ types

Stefan Behnel stefan_ml at behnel.de
Tue Jul 3 06:58:35 CEST 2012


Hi,

the discussion on allowing for automatic user provided ways to coerce
between Python types and C++ types got me thinking that this might hide a
rather interesting general feature: methods for low-level types. I faintly
remember that this idea has come up in our discussions before, but here's a
draft CEP for it:

http://wiki.cython.org/enhancements/ctypemethods

Basically, it would allow writing this in .pxd files:

"""
cdef extern from "...":
    cdef cppclass MyClass:
        cdef int cython_method_here(self):
            return 1

ctypedef double mydouble:
    cdef double cython_method_here(self):
        return self ** 2

cdef struct mystruct:
    int x, y

    cdef int cython_method_here(self):
        return self.x + self.y

cdef union myunion:
    int a
    double b

    cdef int cython_method_here(self):
        return self.a if ImSureImAnInt else <int>self.b
"""

The C code for these methods would then be generated into the modules that
use these types, similar to what we allow with "__getbuffer__()". Calls
would be direct function calls as with "final" methods.

I think it fits into what's there in a very natural way.

Stefan


More information about the cython-devel mailing list