| 39 | struct generic_iterator { |
| 40 | generic_iterator(bp::object o) : iterable(o), size(bp::len(iterable)) {} |
| 41 | bp::object next() { |
| 42 | if (idx == size) { |
| 43 | PyErr_SetString(PyExc_StopIteration, "No more items."); |
| 44 | bp::throw_error_already_set(); |
| 45 | } |
| 46 | return iterable[idx++]; |
| 47 | } |
| 48 | generic_iterator& self() { return *this; } |
| 49 | bp::object iterable; |
| 50 | unsigned idx = 0; |