#pragma once #include namespace NYql { namespace NPureCalc { namespace NPrivate { template class TVectorStream final: public IStream { private: size_t I_; TVector Data_; public: explicit TVectorStream(TVector data) : I_(0) , Data_(std::move(data)) { } public: T* Fetch() override { if (I_ >= Data_.size()) { return nullptr; } else { return &Data_[I_++]; } } }; } /** * Convert vector into a purecalc stream. */ template THolder> StreamFromVector(TVector data) { return MakeHolder>(std::move(data)); } } }