|
Library of Assembled Shared Sources
|
View that adapts free iterator accessors to a PyIteratorRange. More...
#include <pyiteratorrange.h>
Related Symbols | |
(Note that these are not member symbols.) | |
| template<typename T, typename GetIterator> | |
| auto | makeMemberRangeViewFactory (GetIterator begin, GetIterator end) |
Returns a callable creating a MemberRangeView iterating over (self->*begin)() to (self->*end)() | |
| template<typename T, typename GetIterator> | |
| auto | makeFreeRangeView (const ShadoweePtr< T > &self, GetIterator begin, GetIterator end) |
Returns a FreeRangeView iterating over begin(*self) and end(*self) | |
| template<typename T, typename GetIterator> | |
| auto | makeFreeRangeViewFactory (GetIterator begin, GetIterator end) |
Returns a callable creating a FreeRangeView iterating over begin(*self) and end(*self) | |
View that adapts free iterator accessors to a PyIteratorRange.
FreeRangeView holds a ShadoweePtr to the container, and obtains the iterator pair by calling the supplied free-callable accessors begin(*self) and end(*self) when iter() is invoked.
iter() produces a PyIteratorRange and sets self as its owner, keeping the container alive for the duration of the iteration.
The main benefit of returning a FreeRangeView over a plain PyIteratorRange is that it correctly types the iterator's value type in the generated Python stubs as ValueType, in contrast to the generic Any type used by PyIteratorRange.
| SelfType | C++ container type |
| ValueType | Element type returned by the container's iterators |
| GetIterator | Function type of the free-callable iterator accessors; expected to accept a reference to the container as sole argument and return an iterator. |
Definition at line 416 of file pyiteratorrange.h.