/*! * Copyright 2019-2021 XGBoost contributors */ #ifndef XGBOOST_DATA_SIMPLE_BATCH_ITERATOR_H_ #define XGBOOST_DATA_SIMPLE_BATCH_ITERATOR_H_ #include #include #include "xgboost/data.h" namespace xgboost { namespace data { template class SimpleBatchIteratorImpl : public BatchIteratorImpl { public: explicit SimpleBatchIteratorImpl(std::shared_ptr page) : page_(std::move(page)) {} const T& operator*() const override { CHECK(page_ != nullptr); return *page_; } SimpleBatchIteratorImpl &operator++() override { page_ = nullptr; return *this; } bool AtEnd() const override { return page_ == nullptr; } std::shared_ptr Page() const override { return page_; } private: std::shared_ptr page_{nullptr}; }; } // namespace data } // namespace xgboost #endif // XGBOOST_DATA_SIMPLE_BATCH_ITERATOR_H_