Home
Reading
Searching
Subscribe
Sponsors
Statistics
Posting
Contact
Spam
Lists
Links
About
Hosting
Filtering
Features Download
Marketing
Archives
FAQ
Blog
 
Gmane
From: Haoyu Bai <baihaoyu-Re5JQEeQqe8AvxtiuMwx3w <at> public.gmane.org>
Subject: Re: [Cython] Some c++ bugs
Newsgroups: gmane.comp.python.cython.devel
Date: Thursday 1st July 2010 13:15:28 UTC (over 6 years ago)
On Thu, Jul 1, 2010 at 8:43 PM, Dag Sverre Seljebotn
 wrote:
> Haoyu Bai wrote:
>> On Thu, Jul 1, 2010 at 6:09 PM, toki doki  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 "" 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 "" 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
 
CD: 4ms