| 133 | |
| 134 | template <typename T> |
| 135 | FlatVectorPtr<EvalType<T>> flatVector( |
| 136 | vector_size_t size, |
| 137 | std::function<T(vector_size_t /*row*/)> valueAt, |
| 138 | std::function<bool(vector_size_t /*row*/)> isNullAt = nullptr, |
| 139 | const TypePtr& type = CppToType<T>::create()) { |
| 140 | auto flatVector = |
| 141 | BaseVector::create<FlatVector<EvalType<T>>>(type, size, pool_); |
| 142 | for (vector_size_t i = 0; i < size; i++) { |
| 143 | if (isNullAt && isNullAt(i)) { |
| 144 | flatVector->setNull(i, true); |
| 145 | } else { |
| 146 | auto v = valueAt(i); |
| 147 | flatVector->set(i, EvalType<T>(v)); |
| 148 | } |
| 149 | } |
| 150 | return flatVector; |
| 151 | } |
| 152 | |
| 153 | template <typename T> |
| 154 | std::shared_ptr<LazyVector> lazyFlatVector( |