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

mark florisson markflorisson88 at gmail.com
Tue Jul 3 12:15:51 CEST 2012


On 3 July 2012 05:58, Stefan Behnel <stefan_ml at behnel.de> wrote:
> 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

I see this CEP also mentions overriding C++ methods. But I think if it
doesn't support virtual methods, then overriding base class methods by
calling another function is pretty horrible.

> 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
> _______________________________________________
> cython-devel mailing list
> cython-devel at python.org
> http://mail.python.org/mailman/listinfo/cython-devel


More information about the cython-devel mailing list