InputCommon: Return error, if any, from ControlReference::SetExpression().

This commit is contained in:
Admiral H. Curtiss 2020-11-08 01:04:33 +01:00
parent 3cd4c56645
commit cae741584b
2 changed files with 5 additions and 2 deletions

View File

@ -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)

View File

@ -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;