diff options
| author | Jordan Woyak <jordan.woyak@gmail.com> | 2019-10-11 19:38:18 -0500 |
|---|---|---|
| committer | Jordan Woyak <jordan.woyak@gmail.com> | 2019-10-11 19:38:18 -0500 |
| commit | 4d41bd64c8c01884fa0c2a663cc76a696c30adbb (patch) | |
| tree | 27fdc23a047d67ee0b5fa7fd70699f92b83884b5 /Source/Core/InputCommon/ControlReference/FunctionExpression.h | |
| parent | b57178d246640270779d791b00d3a5b8fd7c13f2 (diff) | |
ExpressionParser: Show error message with expected arguments.
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; |
