1 #ifndef PYTHONIC_INCLUDE_BUILTIN_REVERSED_HPP
2 #define PYTHONIC_INCLUDE_BUILTIN_REVERSED_HPP
3 
4 #include "pythonic/include/utils/functor.hpp"
5 
6 PYTHONIC_NS_BEGIN
7 
8 namespace builtins
9 {
10 
11   namespace details
12   {
13     template <class Iterable>
14     struct reversed {
15 
16       using value_type = typename Iterable::value_type;
17       using iterator = typename Iterable::reverse_iterator;
18       using const_iterator = typename Iterable::const_reverse_iterator;
19 
20       Iterable iterable;
21 
22       reversed();
23       reversed(Iterable const &iterable);
24       iterator begin();
25       iterator end();
26       const_iterator begin() const;
27       const_iterator end() const;
28     };
29   }
30 
31   template <class Iterable>
32   details::reversed<Iterable> reversed(Iterable const &iterable);
33 
34   DEFINE_FUNCTOR(pythonic::builtins, reversed);
35 }
36 PYTHONIC_NS_END
37 
38 #endif
39