On Thu, Jul 1, 2010 at 8:43 PM, Dag Sverre Seljebotn <[email protected]> wrote: > Haoyu Bai wrote: >> On Thu, Jul 1, 2010 at 6:09 PM, toki doki <[email protected]> wrote: >> >>> Hi, >>> >>> I have been trying to use cython-devel with c++ and ran into the >>> following bugs (that seem to be unreported as far as I can say from a >>> quick glance at Trac). >>> >>> First, and most annoying: in spite of what is written in the docs >>> (http://wiki.cython.org/WrappingCPlusPlus), nested c++ class >>> declarations seem to be unsupported. Thus, the following snippet >>> (taken from the doc) for wrapping std::vector does not work and raise >>> a syntax error: >>> >>> cdef extern from "<vector>" namespace "std": >>> cdef cppclass vector[T]: >>> cdef cppclass iterator: >>> T operator*() >>> iterator operator++() >>> vector() >>> void push_back(T&) >>> T& operator[](int) >>> iterator begin() >>> iterator end() >>> >>> >> >> Refer to Cython/Includes/libcpp/vector.pxd for a example of nested class: >> >> cdef extern from "<vector>" namespace "std": >> cdef cppclass vector[T]: >> cppclass iterator: >> T& operator*() >> iterator operator++() >> iterator operator--() >> bint operator==(iterator) >> bint operator!=(iterator) >> ... >> >> >>> Second: ctypedef'ing templated types raises a syntax Error (for >>> example: "ctypedef vector[int] VectOfInt" ). >>> >>> It would be nice if these two problems were solved for the cython0.13 >>> release (or even before that, for those of us that dare to use >>> cython-devel :-) >>> >>> Anyway, congratulations on a great and useful project. It (and before >>> that, good old pyrex too) has been very useful for me during the years >>> of my PhD. Can't wait for full c++ and generators support :-) >>> >>> Toki >>> >> >> For your second issue, I have a patch that let you do "cdef cppclass >> VectOfInt(vector[int]): pass" (which is also not supported by >> cython-devel yet), which would get the same effect as ctypedef. See >> the attached file. The patch is not thoroughly tested yet. Feel free >> to take it and improve it if you are interested. >> > I thought we only supported "cppclass" only in extern blocks, i.e. we > don't ever emit code from Cython to create C++ classes? > > Dag Sverre
Oh sorry, there should not be a ": pass", my mistake. :) -- Haoyu BAI School of Computing, National University of Singapore. _______________________________________________ Cython-dev mailing list [email protected] http://codespeak.net/mailman/listinfo/cython-dev
