summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/ControlReference/ExpressionParser.h
diff options
context:
space:
mode:
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);
}
}