[C++-sig] Iterator or not iterator...
Cyril Bazin
cyril.bazin at info.unicaen.fr
Thu Jun 22 10:46:55 CEST 2006
Hello,
I've got a question about the bindings of iterators.
Given a C++ code which look more or less like that:
template <class O>
class C {
It<O> the_begin() {...}
It<O> the_end() {...}
It2<O> foo(it<O>) {...}
}
template <class O>
class It {
//... define everything that an iterator must define ...
}
The C++ code to bind a version of the previous class C could be :
class MyO {
//define some methods
}
typedef C<MyO> MyC;
typedef It<MyO> MyIt;
class_<MyO>("MyO")
.def(...)
...;
//class _<MyIt>("MyIt")
// .def(...)
// ...;
class_<MyC>("MyC")
.def("the_iter", range(&MyC::the_begin , &MyC::the_end))
.def("foo", MyC::foo)
As expected, in Python the method MyC.the_iter will return some instances of
the class MyO.
But, the method MyC::foo expect a MyIt as argument... So, I can't do
something like that :
myC = MyC()
for bar in myC:
assert type(bar) == MyO
x = myC.foo(bar)
...
In other words, Is there a way to define MyC like that :
class_<MyC>("MyC")
.def("the_iter", range_bis(&MyC::the_begin , &MyC::the_end))
Which could allow me to do something like:
myC = MyC()
for bar in myC:
assert type(bar) == MyIt
x = myC.foo(bar)
...
If you have any suggestion...
Thanks in advance.
Cyril
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/cplusplus-sig/attachments/20060622/99f415e6/attachment.htm>
More information about the Cplusplus-sig
mailing list