aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/clickhouse/src/Functions/GatherUtils/ArraySinkVisitor.h
blob: e4ec5233c80e7c763e174e0ddc78d1547a2c0127 (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
#pragma once
#include <Common/Visitor.h>
#include <base/TypeLists.h>

namespace DB::GatherUtils
{

template <typename T>
struct NumericArraySink;

struct GenericArraySink;

template <typename ArraySink>
struct NullableArraySink;

using NumericArraySinks = TypeListMap<NumericArraySink, TypeListNumberWithUUID>;
using BasicArraySinks = TypeListAppend<GenericArraySink, NumericArraySinks>;
using NullableArraySinks = TypeListMap<NullableArraySink, BasicArraySinks>;
using TLArraySinks = TypeListConcat<BasicArraySinks, NullableArraySinks>;

class ArraySinkVisitor : public TypeListChangeRoot<Visitor, TLArraySinks>
{
protected:
    ~ArraySinkVisitor() = default;
};

template <typename Derived>
class ArraySinkVisitorImpl : public VisitorImpl<Derived, ArraySinkVisitor>
{
protected:
    ~ArraySinkVisitorImpl() = default;
};

}