On Mon, Jul 5, 2010 at 7:24 PM, Dag Sverre Seljebotn <[email protected]> wrote: > toki doki wrote: >> On Mon, Jul 5, 2010 at 6:15 PM, Stefan Behnel <[email protected]> wrote: >> >>> Dag Sverre Seljebotn, 05.07.2010 10:56: >>> >>>> the example toki doki posted gets ugly, as one needs to do >>>> >>>> foo = vect.at(4)[0] + 10 >>>> >>>> to get the equivalent of the C++ "foo = vect.at(4) + 10". >>>> >>> What's so ugly about that? >>> >>> Stefan >>> _______________________________________________ >>> >> >> Well, I was just concerned that many users might unintentionnally >> write " foo=vect.at(4)+10 " when they meant " foo=vect.at(4)[0]+10 ". >> If foo is declared to be an unsigned int or a pointer, there might not >> be any warning from the compiler. And that could result in a bug very >> difficult to understand. >> >> An (ugly) example: >> >> """""""" >> cdef vector[void **] vect >> cdef void *foo >> # Assume that vect has been populated with meaningful pointers >> foo= vect.at(2)[3] # foo is equal to vect[5] instead of vect[2][3] >> """""""" >> In the above code, no compiler warnings will tell the user that he did >> something wrong. It will be very difficult for him to understand what >> is the problem. One could say that somebody using vectors of void** >> beg to be punished. Still, it is possible there exist more valid >> examples. >> >> Also, the issue of how to write " *foo=bar " when foo is a general >> iterator remains. (one cannot write " operator.dereference(foo)=bar >> "). >> > Argh, yes that is a real problem. The easiest way of assigning to items > in a C++ list<int> would be this? > > (&(cython.dereference(my_iterator)))[0] = value > > Hmmm... > > Dag Sverre > _______________________________________________ > Cython-dev mailing list > [email protected] > http://codespeak.net/mailman/listinfo/cython-dev >
Actually, that won't even work. Current cython-devel refuses to take the address of a dereference call. It complains with a "Taking address of non-lvalue" error. Toki _______________________________________________ Cython-dev mailing list [email protected] http://codespeak.net/mailman/listinfo/cython-dev
