%PDF- %PDF-
Direktori : /proc/thread-self/root/lib/python3/dist-packages/pythran/pythonic/include/builtins/ |
Current File : //proc/thread-self/root/lib/python3/dist-packages/pythran/pythonic/include/builtins/xrange.hpp |
#ifndef PYTHONIC_INCLUDE_BUILTIN_XRANGE_HPP #define PYTHONIC_INCLUDE_BUILTIN_XRANGE_HPP #include "pythonic/include/utils/functor.hpp" #include <iterator> PYTHONIC_NS_BEGIN namespace builtins { namespace { struct xrange_iterator : std::iterator<std::random_access_iterator_tag, long, ptrdiff_t, long *, long /*no ref here*/> { long value_; long step_; xrange_iterator() = default; xrange_iterator(long v, long s); long operator*() const; xrange_iterator &operator++(); xrange_iterator operator++(int); xrange_iterator &operator+=(long n); bool operator!=(xrange_iterator const &other) const; bool operator==(xrange_iterator const &other) const; bool operator<(xrange_iterator const &other) const; long operator-(xrange_iterator const &other) const; }; } struct xrange { using value_type = long; using iterator = xrange_iterator; using const_iterator = xrange_iterator; using reverse_iterator = xrange_iterator; using const_reverse_iterator = xrange_iterator; long begin_; long end_; long step_; xrange() = default; xrange(long b, long e, long s = 1); xrange(long e); iterator begin() const; iterator end() const; reverse_iterator rbegin() const; reverse_iterator rend() const; }; DEFINE_FUNCTOR(pythonic::builtins, xrange); } PYTHONIC_NS_END #endif