diff options
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); } } |
