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 NumericValueSource; |
10 | |
11 | struct GenericValueSource; |
12 | |
13 | template <typename ArraySource> |
14 | struct NullableValueSource; |
15 | |
16 | template <typename Base> |
17 | struct ConstSource; |
18 | |
19 | using NumericValueSources = typename TypeListMap<NumericValueSource, TypeListNumbers>::Type; |
20 | using BasicValueSources = typename AppendToTypeList<GenericValueSource, NumericValueSources>::Type; |
21 | using NullableValueSources = typename TypeListMap<NullableValueSource, BasicValueSources>::Type; |
22 | using BasicAndNullableValueSources = typename TypeListConcat<BasicValueSources, NullableValueSources>::Type; |
23 | using ConstValueSources = typename TypeListMap<ConstSource, BasicAndNullableValueSources>::Type; |
24 | using TypeListValueSources = typename TypeListConcat<BasicAndNullableValueSources, ConstValueSources>::Type; |
25 | |
26 | class ValueSourceVisitor : public ApplyTypeListForClass<Visitor, TypeListValueSources>::Type {}; |
27 | |
28 | template <typename Derived> |
29 | class ValueSourceVisitorImpl : public VisitorImpl<Derived, ValueSourceVisitor> {}; |
30 | |
31 | } |
32 |