| 86 | }; |
| 87 | |
| 88 | template<typename T2, typename T3> class IteratorETS |
| 89 | { |
| 90 | public: |
| 91 | typedef ExtraTestSizes value_type; |
| 92 | typedef std::forward_iterator_tag iterator_category; |
| 93 | typedef int difference_type; |
| 94 | typedef ExtraTestSizes* pointer; |
| 95 | typedef ExtraTestSizes& reference; |
| 96 | |
| 97 | IteratorETS( |
| 98 | const size_t *begin1, |
| 99 | const size_t *end1, |
| 100 | const T2 *begin2, |
| 101 | const T2 *end2, |
| 102 | const T3 *begin3, |
| 103 | const T3 *end3, |
| 104 | const size_t *begin4, |
| 105 | const size_t *end4, |
| 106 | const size_t *begin5, |
| 107 | const size_t *end5, |
| 108 | const size_t *begin6, |
| 109 | const size_t *end6, |
| 110 | int startEnd) : begin1_(begin1), end1_(end1), |
| 111 | begin2_(begin2), end2_(end2), |
| 112 | begin3_(begin3), end3_(end3), |
| 113 | begin4_(begin4), end4_(end4), |
| 114 | begin5_(begin5), end5_(end5), |
| 115 | begin6_(begin6), end6_(end6) |
| 116 | { |
| 117 | cur1_ = (startEnd) ? end1_ : begin1_; |
| 118 | cur2_ = begin2_; |
| 119 | cur3_ = begin3_; |
| 120 | cur4_ = begin4_; |
| 121 | cur5_ = begin5_; |
| 122 | cur6_ = begin6_; |
| 123 | } |
| 124 | |
| 125 | IteratorETS& operator++() |
| 126 | { |
| 127 | bool carry = false; |
| 128 | |
| 129 | // don't go beyond the end |
| 130 | if (cur1_ == end1_) { |
| 131 | return *this; |
| 132 | } |
| 133 | |
| 134 | carry = (cur6_ + 1 == end6_); |
| 135 | cur6_ = (carry) ? begin6_ : (cur6_ + 1); |
| 136 | if (carry) { |
| 137 | carry = (cur5_ + 1 == end5_); |
| 138 | cur5_ = (carry) ? begin5_ : (cur5_ + 1); |
| 139 | } |
| 140 | if (carry) { |
| 141 | carry = (cur4_ + 1 == end4_); |
| 142 | cur4_ = (carry) ? begin4_ : (cur4_ + 1); |
| 143 | } |
| 144 | if (carry) { |
| 145 | carry = (cur3_ + 1 == end3_); |
nothing calls this directly
no test coverage detected