GCC Code Coverage Report


Directory: ./
File: include/CXXIter/src/util/TraitImpl.h
Date: 2023-01-04 16:32:12
Exec Total Coverage
Lines: 6 6 100.0%
Functions: 1 1 100.0%
Branches: 2 2 100.0%

Line Branch Exec Source
1 #pragma once
2
3 #include <cstddef>
4
5 #include "../Traits.h"
6
7 /** @private */
8 namespace CXXIter::util {
9
10 /**
11 * @private
12 * @brief Internal advanceBy() implementation that eagerly pulls @p n elements from the pipeline.
13 * @param self Iterator pipeline.
14 * @param n Amounts to advance by.
15 * @return Amount of elements by which the iterator was actually advanced.
16 */
17 template<typename TSelf>
18 30 static constexpr inline size_t advanceByPull(TSelf& self, size_t n) {
19 30 size_t skipN = 0;
20
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
46 while(skipN < n) {
21 16 trait::Iterator<TSelf>::next(self);
22 16 skipN += 1;
23 }
24 30 return skipN;
25 }
26
27 /**
28 * @private
29 * @brief Internal advanceBy() implementation that eagerly pulls @p n elements from the pipeline.
30 * @param self Iterator pipeline.
31 * @param n Amounts to advance by.
32 * @return Amount of elements by which the iterator was actually advanced.
33 */
34 template<typename TSelf>
35 static constexpr inline size_t advanceByPullBack(TSelf& self, size_t n) {
36 size_t skipN = 0;
37 while(skipN < n) {
38 trait::Iterator<TSelf>::nextBack(self);
39 skipN += 1;
40 }
41 return skipN;
42 }
43
44 }
45