diff options
| author | Leo Lam <leolino.lam@gmail.com> | 2017-09-15 19:11:57 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-09-15 19:11:57 +0200 |
| commit | 2b4bf8662a18b8b3a49e67133f3e2e2fa45322b6 (patch) | |
| tree | f7c161353249490421b2f0239d5d78ede901fc6b /Source/Core/InputCommon/ControlReference/ExpressionParser.h | |
| parent | 0d078219358b04266206ea1e2622396db7724136 (diff) | |
| parent | 294b1895ef2963cfc6fda1818d9a9f3b8b0af48f (diff) | |
Merge pull request #5577 from ligfx/separateexpressionparsingandbinding
ControlReference/ExpressionParser: separate parsing from binding
Diffstat (limited to 'Source/Core/InputCommon/ControlReference/ExpressionParser.h')
| -rw-r--r-- | Source/Core/InputCommon/ControlReference/ExpressionParser.h | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/Source/Core/InputCommon/ControlReference/ExpressionParser.h b/Source/Core/InputCommon/ControlReference/ExpressionParser.h index f07c9a1326..398b273e0f 100644 --- a/Source/Core/InputCommon/ControlReference/ExpressionParser.h +++ b/Source/Core/InputCommon/ControlReference/ExpressionParser.h @@ -6,6 +6,7 @@ #include <memory> #include <string> +#include <utility> #include "InputCommon/ControllerInterface/Device.h" namespace ciface @@ -46,26 +47,24 @@ private: bool is_input; }; -class ExpressionNode; class Expression { public: - Expression() : node(nullptr) {} - Expression(ExpressionNode* node); - ~Expression(); - ControlState GetValue() const; - void SetValue(ControlState state); - int num_controls; - ExpressionNode* node; + virtual ~Expression() = default; + 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; }; enum class ParseStatus { Successful, SyntaxError, - NoDevice, + EmptyExpression, }; -ParseStatus ParseExpression(const std::string& expr, ControlFinder& finder, Expression** expr_out); +std::pair<ParseStatus, std::unique_ptr<Expression>> ParseExpression(const std::string& expr); } } |
