| 37 | } |
| 38 | |
| 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; |
| 51 | unsigned size = 0; |
| 52 | }; |
| 53 | |
| 54 | generic_iterator make_generic_iterator(bp::object self) { return generic_iterator(self); } |
| 55 |
no outgoing calls
no test coverage detected