Add utility function to allow easy reverse range-based iteration of a container
[WebKit-https.git] / Source / WTF / wtf / IteratorRange.h
index 393fceb..5d8fe4d 100644 (file)
@@ -25,6 +25,8 @@
 
 #pragma once
 
+#include <iterator>
+
 namespace WTF {
 
 template<typename Iterator>
@@ -50,6 +52,18 @@ IteratorRange<Iterator> makeIteratorRange(Iterator&& begin, Iterator&& end)
     return IteratorRange<Iterator>(std::forward<Iterator>(begin), std::forward<Iterator>(end));
 }
 
+template<typename Container>
+IteratorRange<typename Container::reverse_iterator> makeReversedRange(Container& container)
+{
+    return makeIteratorRange(std::rbegin(container), std::rend(container));
+}
+
+template<typename Container>
+IteratorRange<typename Container::const_reverse_iterator> makeReversedRange(const Container& container)
+{
+    return makeIteratorRange(std::crbegin(container), std::crend(container));
+}
+
 template<typename Container, typename Iterator>
 class SizedIteratorRange {
 public: