diff options
Diffstat (limited to 'runtime/base/iteration_range.h')
-rw-r--r-- | runtime/base/iteration_range.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/runtime/base/iteration_range.h b/runtime/base/iteration_range.h index 54ab174dff..9d45707596 100644 --- a/runtime/base/iteration_range.h +++ b/runtime/base/iteration_range.h @@ -54,6 +54,17 @@ inline IterationRange<Iter> MakeEmptyIterationRange(const Iter& it) { return IterationRange<Iter>(it, it); } +template <typename Container> +inline auto ReverseRange(Container& c) { + typedef typename std::reverse_iterator<decltype(c.begin())> riter; + return MakeIterationRange(riter(c.end()), riter(c.begin())); +} + +template <typename T, size_t size> +inline auto ReverseRange(T (&array)[size]) { + return ReverseRange(MakeIterationRange<T*>(array, array+size)); +} + } // namespace art #endif // ART_RUNTIME_BASE_ITERATION_RANGE_H_ |