#pragma once #include #include #include namespace NYql { namespace NNodes { #include class TResultDataSink: public NGenerated::TResultDataSinkStub { public: explicit TResultDataSink(const TExprNode* node) : TResultDataSinkStub(node) { } explicit TResultDataSink(const TExprNode::TPtr& node) : TResultDataSinkStub(node) { } static bool Match(const TExprNode* node) { if (!TResultDataSinkStub::Match(node)) { return false; } if (node->Child(0)->Content() != ResultProviderName) { return false; } return true; } }; #include template class TNodeBuilder : TNodeBuilderBase { public: typedef std::function BuildFuncType; typedef std::function GetArgFuncType; typedef TResultDataSink ResultType; TNodeBuilder(TExprContext& ctx, TPositionHandle pos, BuildFuncType buildFunc, GetArgFuncType getArgFunc) : TNodeBuilderBase(ctx, pos, getArgFunc) , BuildFunc(buildFunc) {} TParent& Build() { auto atom = this->Ctx.NewAtom(this->Pos, ResultProviderName); auto node = this->Ctx.NewCallable(this->Pos, "DataSink", { atom }); return BuildFunc(TResultDataSink(node)); } private: BuildFuncType BuildFunc; }; } // namespace NNodes } // namespace NYql