LCOV - code coverage report
Current view: top level - src - reverse_iterate.h (source / functions) Hit Total Coverage
Test: total_coverage.info Lines: 7 7 100.0 %
Date: 2025-02-23 09:33:43 Functions: 4 4 100.0 %

          Line data    Source code
       1             : // Copyright (c) 2017-2020 The PIVX Core developers
       2             : // Distributed under the MIT software license, see the accompanying
       3             : // file COPYING or http://www.opensource.org/licenses/mit-license.php.
       4             : 
       5             : #ifndef PIVX_REVERSE_ITERATE_H
       6             : #define PIVX_REVERSE_ITERATE_H
       7             : 
       8             : /**
       9             :  * Template used for reverse iteration in C++11 range-based for loops.
      10             :  *
      11             :  *   std::vector<int> v = {1, 2, 3, 4, 5};
      12             :  *   for (auto x : reverse_iterate(v))
      13             :  *       std::cout << x << " ";
      14             :  */
      15             : 
      16             : template <typename T>
      17             : class reverse_range
      18             : {
      19             :     T &m_x;
      20             : 
      21             : public:
      22       98092 :     explicit reverse_range(T &x) : m_x(x) {}
      23             : 
      24       98092 :     auto begin() const -> decltype(this->m_x.rbegin())
      25             :     {
      26       98092 :         return m_x.rbegin();
      27             :     }
      28             : 
      29       98092 :     auto end() const -> decltype(this->m_x.rend())
      30             :     {
      31       98092 :         return m_x.rend();
      32             :     }
      33             : };
      34             : 
      35             : template <typename T>
      36       98092 : reverse_range<T> reverse_iterate(T &x)
      37             : {
      38       98092 :     return reverse_range<T>(x);
      39             : }
      40             : 
      41             : #endif // PIVX_REVERSE_ITERATE_H

Generated by: LCOV version 1.14