#pragma once #include #include namespace NYql { class TConfigException: public yexception {}; class IPolyArgs { public: virtual ~IPolyArgs() = default; using TArgs = THashMap; struct TUnresolvedInput { TMaybe> UserTypeArgs; TLangVersion LangVer = MinLangVersion; }; virtual ui32 GetPredicatesCount() const = 0; virtual TMaybe GetUnresolvedInput(ui32 index) const = 0; struct TMatchResult { ui32 Index = Max(); TMaybe CallableType; TMaybe RunConfigType; TMaybe Error; }; // may fill callable type if specified, otherwise resolved callable type should be used // returns index of first matched predicate virtual TMatchResult Match(const TArgs& args, TLangVersion version) const = 0; }; std::unique_ptr ParsePolyArgs(const NYT::TNode& config); } // namespace NYql