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 NumericArraySource; |
10 | |
11 | struct GenericArraySource; |
12 | |
13 | template <typename ArraySource> |
14 | struct NullableArraySource; |
15 | |
16 | template <typename Base> |
17 | struct ConstSource; |
18 | |
19 | using NumericArraySources = typename TypeListMap<NumericArraySource, TypeListNumbers>::Type; |
20 | using BasicArraySources = typename AppendToTypeList<GenericArraySource, NumericArraySources>::Type; |
21 | using NullableArraySources = typename TypeListMap<NullableArraySource, BasicArraySources>::Type; |
22 | using BasicAndNullableArraySources = typename TypeListConcat<BasicArraySources, NullableArraySources>::Type; |
23 | using ConstArraySources = typename TypeListMap<ConstSource, BasicAndNullableArraySources>::Type; |
24 | using TypeListArraySources = typename TypeListConcat<BasicAndNullableArraySources, ConstArraySources>::Type; |
25 | |
26 | class ArraySourceVisitor : public ApplyTypeListForClass<Visitor, TypeListArraySources>::Type {}; |
27 | |
28 | template <typename Derived> |
29 | class ArraySourceVisitorImpl : public VisitorImpl<Derived, ArraySourceVisitor> {}; |
30 | |
31 | } |
32 |