ClickHouse/src/Functions/GatherUtils/ArraySinkVisitor.h
2023-04-11 18:21:08 +00:00

35 lines
826 B
C++

#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;
};
}