summaryrefslogtreecommitdiff
path: root/runtime/base/iteration_range.h
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/base/iteration_range.h')
-rw-r--r--runtime/base/iteration_range.h11
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_