blob: a2a50558003a3c2e7fb399bd508a7d6f62e804af (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#pragma once
#include <yql/essentials/public/purecalc/common/interface.h>
namespace NYql {
namespace NPureCalc {
namespace NPrivate {
template <typename T>
class TVectorStream final: public IStream<T*> {
private:
size_t I_;
TVector<T> Data_;
public:
explicit TVectorStream(TVector<T> 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 <typename T>
THolder<IStream<T*>> StreamFromVector(TVector<T> data) {
return MakeHolder<NPrivate::TVectorStream<T>>(std::move(data));
}
}
}
|