1 | #pragma once |
---|---|
2 | #include <Common/Visitor.h> |
3 | #include <Core/TypeListNumber.h> |
4 | |
5 | namespace DB::GatherUtils |
6 | { |
7 | |
8 | template <typename T> |
9 | struct NumericArraySink; |
10 | |
11 | struct GenericArraySink; |
12 | |
13 | template <typename ArraySink> |
14 | struct NullableArraySink; |
15 | |
16 | using NumericArraySinks = typename TypeListMap<NumericArraySink, TypeListNumbers>::Type; |
17 | using BasicArraySinks = typename AppendToTypeList<GenericArraySink, NumericArraySinks>::Type; |
18 | using NullableArraySinks = typename TypeListMap<NullableArraySink, BasicArraySinks>::Type; |
19 | using TypeListArraySinks = typename TypeListConcat<BasicArraySinks, NullableArraySinks>::Type; |
20 | |
21 | class ArraySinkVisitor : public ApplyTypeListForClass<Visitor, TypeListArraySinks>::Type {}; |
22 | |
23 | template <typename Derived> |
24 | class ArraySinkVisitorImpl : public VisitorImpl<Derived, ArraySinkVisitor> {}; |
25 | |
26 | } |
27 |