// Copyright 2019 Dolphin Emulator Project // Licensed under GPLv2+ // Refer to the license.txt file included. #pragma once #include #include #include #include "InputCommon/ControlReference/ExpressionParser.h" #include "InputCommon/ControlReference/FunctionExpression.h" namespace ciface { namespace ExpressionParser { class FunctionExpression : public Expression { public: int CountNumControls() const override; void UpdateReferences(ControlEnvironment& env) override; operator std::string() const override; bool SetArguments(std::vector>&& args); protected: virtual std::string GetFuncName() const = 0; virtual bool ValidateArguments(const std::vector>& args) = 0; Expression& GetArg(u32 number); const Expression& GetArg(u32 number) const; private: std::vector> m_args; }; std::unique_ptr MakeFunctionExpression(std::string name); } // namespace ExpressionParser } // namespace ciface