From d2821e14fa9735ece3be6eec9d6bdf4cf96c1280 Mon Sep 17 00:00:00 2001 From: Michael M Date: Wed, 7 Jun 2017 14:53:41 -0700 Subject: ParseExpression: return a std::pair --- Source/Core/InputCommon/ControlReference/ExpressionParser.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'Source/Core/InputCommon/ControlReference/ExpressionParser.h') diff --git a/Source/Core/InputCommon/ControlReference/ExpressionParser.h b/Source/Core/InputCommon/ControlReference/ExpressionParser.h index f07c9a1326..2d41933e50 100644 --- a/Source/Core/InputCommon/ControlReference/ExpressionParser.h +++ b/Source/Core/InputCommon/ControlReference/ExpressionParser.h @@ -6,6 +6,7 @@ #include #include +#include #include "InputCommon/ControllerInterface/Device.h" namespace ciface @@ -66,6 +67,6 @@ enum class ParseStatus NoDevice, }; -ParseStatus ParseExpression(const std::string& expr, ControlFinder& finder, Expression** expr_out); +std::pair ParseExpression(const std::string& expr, ControlFinder& finder); } } -- cgit v1.2.3 From 3df945f8d0c34677b009c210dd0400b2e9655024 Mon Sep 17 00:00:00 2001 From: Michael M Date: Wed, 7 Jun 2017 15:29:00 -0700 Subject: ExpressionParser: replace bare pointers with unique_ptrs --- Source/Core/InputCommon/ControlReference/ExpressionParser.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'Source/Core/InputCommon/ControlReference/ExpressionParser.h') diff --git a/Source/Core/InputCommon/ControlReference/ExpressionParser.h b/Source/Core/InputCommon/ControlReference/ExpressionParser.h index 2d41933e50..d05ac6f546 100644 --- a/Source/Core/InputCommon/ControlReference/ExpressionParser.h +++ b/Source/Core/InputCommon/ControlReference/ExpressionParser.h @@ -51,13 +51,12 @@ class ExpressionNode; class Expression { public: - Expression() : node(nullptr) {} - Expression(ExpressionNode* node); + explicit Expression(std::unique_ptr&& node = {}); ~Expression(); ControlState GetValue() const; void SetValue(ControlState state); int num_controls; - ExpressionNode* node; + std::unique_ptr node; }; enum class ParseStatus @@ -67,6 +66,7 @@ enum class ParseStatus NoDevice, }; -std::pair ParseExpression(const std::string& expr, ControlFinder& finder); +std::pair> ParseExpression(const std::string& expr, + ControlFinder& finder); } } -- cgit v1.2.3 From 85301e2baeda9a97c4c5ebbf07807566831e22d1 Mon Sep 17 00:00:00 2001 From: Michael M Date: Wed, 7 Jun 2017 16:03:36 -0700 Subject: ParseStatus: replace NoDevice with EmptyExpression --- Source/Core/InputCommon/ControlReference/ExpressionParser.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/Core/InputCommon/ControlReference/ExpressionParser.h') diff --git a/Source/Core/InputCommon/ControlReference/ExpressionParser.h b/Source/Core/InputCommon/ControlReference/ExpressionParser.h index d05ac6f546..55bf86b951 100644 --- a/Source/Core/InputCommon/ControlReference/ExpressionParser.h +++ b/Source/Core/InputCommon/ControlReference/ExpressionParser.h @@ -63,7 +63,7 @@ enum class ParseStatus { Successful, SyntaxError, - NoDevice, + EmptyExpression, }; std::pair> ParseExpression(const std::string& expr, -- cgit v1.2.3 From 7e74961eb150f28a56405403335f4904f888e058 Mon Sep 17 00:00:00 2001 From: Michael M Date: Wed, 7 Jun 2017 17:30:07 -0700 Subject: ExpressionParser: expose ExpressionNode directly --- Source/Core/InputCommon/ControlReference/ExpressionParser.h | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'Source/Core/InputCommon/ControlReference/ExpressionParser.h') diff --git a/Source/Core/InputCommon/ControlReference/ExpressionParser.h b/Source/Core/InputCommon/ControlReference/ExpressionParser.h index 55bf86b951..8fde647390 100644 --- a/Source/Core/InputCommon/ControlReference/ExpressionParser.h +++ b/Source/Core/InputCommon/ControlReference/ExpressionParser.h @@ -47,16 +47,14 @@ private: bool is_input; }; -class ExpressionNode; class Expression { public: - explicit Expression(std::unique_ptr&& node = {}); - ~Expression(); - ControlState GetValue() const; - void SetValue(ControlState state); - int num_controls; - std::unique_ptr node; + virtual ~Expression() = default; + virtual ControlState GetValue() const = 0; + virtual void SetValue(ControlState state) = 0; + virtual int CountNumControls() const = 0; + virtual operator std::string() const = 0; }; enum class ParseStatus -- cgit v1.2.3 From c332580b83ea8cd5650d53378843ceadcbfeb9cb Mon Sep 17 00:00:00 2001 From: Michael M Date: Wed, 7 Jun 2017 18:48:17 -0700 Subject: ControlReference/ExpressionParser: separate parsing from binding --- Source/Core/InputCommon/ControlReference/ExpressionParser.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Source/Core/InputCommon/ControlReference/ExpressionParser.h') diff --git a/Source/Core/InputCommon/ControlReference/ExpressionParser.h b/Source/Core/InputCommon/ControlReference/ExpressionParser.h index 8fde647390..398b273e0f 100644 --- a/Source/Core/InputCommon/ControlReference/ExpressionParser.h +++ b/Source/Core/InputCommon/ControlReference/ExpressionParser.h @@ -54,6 +54,7 @@ public: virtual ControlState GetValue() const = 0; virtual void SetValue(ControlState state) = 0; virtual int CountNumControls() const = 0; + virtual void UpdateReferences(ControlFinder& finder) = 0; virtual operator std::string() const = 0; }; @@ -64,7 +65,6 @@ enum class ParseStatus EmptyExpression, }; -std::pair> ParseExpression(const std::string& expr, - ControlFinder& finder); +std::pair> ParseExpression(const std::string& expr); } } -- cgit v1.2.3