From fd07ae8cec5c77ac60788350610739e6ac094547 Mon Sep 17 00:00:00 2001 From: Jordan Woyak Date: Sat, 26 Jan 2019 12:17:30 -0600 Subject: ExpressionParser: Move FunctionExpression type definitions into another file. --- .../ControlReference/FunctionExpression.h | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 Source/Core/InputCommon/ControlReference/FunctionExpression.h (limited to 'Source/Core/InputCommon/ControlReference/FunctionExpression.h') diff --git a/Source/Core/InputCommon/ControlReference/FunctionExpression.h b/Source/Core/InputCommon/ControlReference/FunctionExpression.h new file mode 100644 index 0000000000..8ac7e9800c --- /dev/null +++ b/Source/Core/InputCommon/ControlReference/FunctionExpression.h @@ -0,0 +1,41 @@ +// 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 -- cgit v1.2.3 From 6a2096c41977d6c33c2ca20494d9f623bed221ff Mon Sep 17 00:00:00 2001 From: Jordan Woyak Date: Sat, 26 Jan 2019 13:18:20 -0600 Subject: ExpressionParser: Add optional 2nd argument to toggle function which clears state. --- Source/Core/InputCommon/ControlReference/FunctionExpression.h | 1 + 1 file changed, 1 insertion(+) (limited to 'Source/Core/InputCommon/ControlReference/FunctionExpression.h') diff --git a/Source/Core/InputCommon/ControlReference/FunctionExpression.h b/Source/Core/InputCommon/ControlReference/FunctionExpression.h index 8ac7e9800c..35e000a16f 100644 --- a/Source/Core/InputCommon/ControlReference/FunctionExpression.h +++ b/Source/Core/InputCommon/ControlReference/FunctionExpression.h @@ -30,6 +30,7 @@ protected: Expression& GetArg(u32 number); const Expression& GetArg(u32 number) const; + u32 GetArgCount() const; private: std::vector> m_args; -- cgit v1.2.3 From b57178d246640270779d791b00d3a5b8fd7c13f2 Mon Sep 17 00:00:00 2001 From: Jordan Woyak Date: Thu, 4 Apr 2019 17:35:49 -0500 Subject: ExpressionParser: Remove ! character from function syntax. Remove unused serialization functions. --- Source/Core/InputCommon/ControlReference/FunctionExpression.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Source/Core/InputCommon/ControlReference/FunctionExpression.h') diff --git a/Source/Core/InputCommon/ControlReference/FunctionExpression.h b/Source/Core/InputCommon/ControlReference/FunctionExpression.h index 35e000a16f..14b438a299 100644 --- a/Source/Core/InputCommon/ControlReference/FunctionExpression.h +++ b/Source/Core/InputCommon/ControlReference/FunctionExpression.h @@ -20,12 +20,12 @@ class FunctionExpression : public Expression public: int CountNumControls() const override; void UpdateReferences(ControlEnvironment& env) override; - operator std::string() const override; bool SetArguments(std::vector>&& args); + void SetValue(ControlState value) override; + protected: - virtual std::string GetFuncName() const = 0; virtual bool ValidateArguments(const std::vector>& args) = 0; Expression& GetArg(u32 number); -- cgit v1.2.3 From 4d41bd64c8c01884fa0c2a663cc76a696c30adbb Mon Sep 17 00:00:00 2001 From: Jordan Woyak Date: Fri, 11 Oct 2019 19:38:18 -0500 Subject: ExpressionParser: Show error message with expected arguments. --- .../InputCommon/ControlReference/FunctionExpression.h | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'Source/Core/InputCommon/ControlReference/FunctionExpression.h') 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 #include +#include #include #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; + int CountNumControls() const override; void UpdateReferences(ControlEnvironment& env) override; - bool SetArguments(std::vector>&& args); + ArgumentValidation SetArguments(std::vector>&& args); void SetValue(ControlState value) override; protected: - virtual bool ValidateArguments(const std::vector>& args) = 0; + virtual ArgumentValidation + ValidateArguments(const std::vector>& args) = 0; Expression& GetArg(u32 number); const Expression& GetArg(u32 number) const; -- cgit v1.2.3