diff options
Diffstat (limited to 'Source/Core/InputCommon/ControlReference/FunctionExpression.h')
| -rw-r--r-- | Source/Core/InputCommon/ControlReference/FunctionExpression.h | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/Source/Core/InputCommon/ControlReference/FunctionExpression.h b/Source/Core/InputCommon/ControlReference/FunctionExpression.h index 14b438a299..f5332a0d25 100644 --- a/Source/Core/InputCommon/ControlReference/FunctionExpression.h +++ b/Source/Core/InputCommon/ControlReference/FunctionExpression.h @@ -6,6 +6,7 @@ #include <memory> #include <string> +#include <variant> #include <vector> #include "InputCommon/ControlReference/ExpressionParser.h" @@ -18,15 +19,27 @@ namespace ExpressionParser class FunctionExpression : public Expression { public: + struct ArgumentsAreValid + { + }; + + struct ExpectedArguments + { + std::string text; + }; + + using ArgumentValidation = std::variant<ArgumentsAreValid, ExpectedArguments>; + int CountNumControls() const override; void UpdateReferences(ControlEnvironment& env) override; - bool SetArguments(std::vector<std::unique_ptr<Expression>>&& args); + ArgumentValidation SetArguments(std::vector<std::unique_ptr<Expression>>&& args); void SetValue(ControlState value) override; protected: - virtual bool ValidateArguments(const std::vector<std::unique_ptr<Expression>>& args) = 0; + virtual ArgumentValidation + ValidateArguments(const std::vector<std::unique_ptr<Expression>>& args) = 0; Expression& GetArg(u32 number); const Expression& GetArg(u32 number) const; |
