summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/ControlReference
diff options
context:
space:
mode:
authorAdmiral H. Curtiss <pikachu025@gmail.com>2020-11-08 01:04:33 +0100
committerAdmiral H. Curtiss <pikachu025@gmail.com>2020-11-08 01:04:33 +0100
commitcae741584b10fc7451929a1341ef5e25ec01c454 (patch)
tree090d239339b0562f0784a79cfc4b2a153114f695 /Source/Core/InputCommon/ControlReference
parent3cd4c56645541640f61a761dfde16464b1ef09df (diff)
InputCommon: Return error, if any, from ControlReference::SetExpression().
Diffstat (limited to 'Source/Core/InputCommon/ControlReference')
-rw-r--r--Source/Core/InputCommon/ControlReference/ControlReference.cpp3
-rw-r--r--Source/Core/InputCommon/ControlReference/ControlReference.h4
2 files changed, 5 insertions, 2 deletions
diff --git a/Source/Core/InputCommon/ControlReference/ControlReference.cpp b/Source/Core/InputCommon/ControlReference/ControlReference.cpp
index b1dd5deee3..671f2f3379 100644
--- a/Source/Core/InputCommon/ControlReference/ControlReference.cpp
+++ b/Source/Core/InputCommon/ControlReference/ControlReference.cpp
@@ -50,12 +50,13 @@ std::string ControlReference::GetExpression() const
return m_expression;
}
-void ControlReference::SetExpression(std::string expr)
+std::optional<std::string> ControlReference::SetExpression(std::string expr)
{
m_expression = std::move(expr);
auto parse_result = ParseExpression(m_expression);
m_parse_status = parse_result.status;
m_parsed_expression = std::move(parse_result.expr);
+ return parse_result.description;
}
ControlReference::ControlReference() : range(1), m_parsed_expression(nullptr)
diff --git a/Source/Core/InputCommon/ControlReference/ControlReference.h b/Source/Core/InputCommon/ControlReference/ControlReference.h
index de289ba265..fb4b5cc1df 100644
--- a/Source/Core/InputCommon/ControlReference/ControlReference.h
+++ b/Source/Core/InputCommon/ControlReference/ControlReference.h
@@ -38,7 +38,9 @@ public:
ciface::ExpressionParser::ParseStatus GetParseStatus() const;
void UpdateReference(ciface::ExpressionParser::ControlEnvironment& env);
std::string GetExpression() const;
- void SetExpression(std::string expr);
+
+ // Returns a human-readable error description when the given expression is invalid.
+ std::optional<std::string> SetExpression(std::string expr);
ControlState range;