MCPcopy Create free account
hub / github.com/apache/arrow / RangeIterator

Class RangeIterator

cpp/src/arrow/util/iterator.h:150–186  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

148 explicit operator bool() const { return ptr_ != NULLPTR; }
149
150 class RangeIterator {
151 public:
152 RangeIterator() : value_(IterationTraits<T>::End()) {}
153
154 explicit RangeIterator(Iterator i)
155 : value_(IterationTraits<T>::End()),
156 iterator_(std::make_shared<Iterator>(std::move(i))) {
157 Next();
158 }
159
160 bool operator!=(const RangeIterator& other) const { return value_ != other.value_; }
161
162 RangeIterator& operator++() {
163 Next();
164 return *this;
165 }
166
167 Result<T> operator*() {
168 ARROW_RETURN_NOT_OK(value_);
169
170 auto value = std::move(value_);
171 value_ = IterationTraits<T>::End();
172 return value;
173 }
174
175 private:
176 void Next() {
177 if (!value_.ok()) {
178 value_ = IterationTraits<T>::End();
179 return;
180 }
181 value_ = iterator_->Next();
182 }
183
184 Result<T> value_;
185 std::shared_ptr<Iterator> iterator_;
186 };
187
188 RangeIterator begin() { return RangeIterator(std::move(*this)); }
189

Callers 2

beginMethod · 0.85
endMethod · 0.85

Calls 1

NextFunction · 0.50

Tested by

no test coverage detected