Danilo Freitas wrote:
> As I said before, I prefer a Pythonic syntax for Cython.
> So, deref() would be better in this case.
> But, for all this and more, we need to define a default syntax.
> Mixing syntax is a little weird and harder to use.
>
> If we translate C++ syntax to Pythonic syntax, I think it will be
> easier to use it.
>
> So, if we gonna do it, many other functions will be added to the list.
> I have some Ideas. Don't know if they are good. But it sounds like:
>
> my_list = clist(int) #just an example
> it = cython.get_begin_iterator(my_list)
> while it != cython.get_end_iterator(my_list):
> if something == cython.deref(it): #just a normal if
> break
> cython.inc(it)
>
> So, we could get iterator fom many ways. Just like in STL.
Yes. (Though my vote is for my_list.begin() and my_list.end() instead.)
The main issue with using STL iterators in Cython though is what types
to add.
For comparison, this is how it is /currently/ possible in Cython to do this:
# the proper extern declarations
# use vector in example, then we don't need inc/dec/deref
cdef cpp_vector_int* vec = new_cpp_vector_int()
cdef cpp_vector_int_iterator* it = \
new_cpp_vector_int_iterator(vec.begin())
cdef cpp_vector_int_iterator* end = \
new_cpp_vector_int_iterator(vec.end())
while it[0] != end[0]:
if something = it[0][0]:
break
it[0] += 1
cpp_delete(it)
cpp_delete(end)
cpp_delete(vec)
Not pretty. The types are the problem -- if one could simply do
cdef cpp_vector_int_iterator it = vec.begin()
things would look much nicer.
--
Dag Sverre
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev