1#pragma once
2
3#include <DataTypes/IDataTypeDummy.h>
4
5
6namespace DB
7{
8
9/** Special data type, representing lambda expression.
10 */
11class DataTypeFunction final : public IDataTypeDummy
12{
13private:
14 DataTypes argument_types;
15 DataTypePtr return_type;
16
17public:
18 static constexpr bool is_parametric = true;
19 bool isParametric() const override { return true; }
20
21 /// Some types could be still unknown.
22 DataTypeFunction(const DataTypes & argument_types_ = DataTypes(), const DataTypePtr & return_type_ = nullptr)
23 : argument_types(argument_types_), return_type(return_type_) {}
24
25 std::string doGetName() const override;
26 const char * getFamilyName() const override { return "Function"; }
27 TypeIndex getTypeId() const override { return TypeIndex::Function; }
28
29 const DataTypes & getArgumentTypes() const
30 {
31 return argument_types;
32 }
33
34 const DataTypePtr & getReturnType() const
35 {
36 return return_type;
37 }
38
39 bool equals(const IDataType & rhs) const override;
40};
41
42}
43