summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/ControlReference/ExpressionParser.h
diff options
context:
space:
mode:
authorLeo Lam <leolino.lam@gmail.com>2017-09-15 19:11:57 +0200
committerGitHub <noreply@github.com>2017-09-15 19:11:57 +0200
commit2b4bf8662a18b8b3a49e67133f3e2e2fa45322b6 (patch)
treef7c161353249490421b2f0239d5d78ede901fc6b /Source/Core/InputCommon/ControlReference/ExpressionParser.h
parent0d078219358b04266206ea1e2622396db7724136 (diff)
parent294b1895ef2963cfc6fda1818d9a9f3b8b0af48f (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.h19
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);
}
}