diff options
Diffstat (limited to 'Source/Core/InputCommon/ControlReference/ControlReference.cpp')
| -rw-r--r-- | Source/Core/InputCommon/ControlReference/ControlReference.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/Source/Core/InputCommon/ControlReference/ControlReference.cpp b/Source/Core/InputCommon/ControlReference/ControlReference.cpp index e4162e22a7..c7d652f15b 100644 --- a/Source/Core/InputCommon/ControlReference/ControlReference.cpp +++ b/Source/Core/InputCommon/ControlReference/ControlReference.cpp @@ -25,21 +25,20 @@ bool ControlReference::InputGateOn() // UpdateReference // // Updates a controlreference's binded devices/controls -// need to call this to re-parse a control reference's expression after changing it +// need to call this to re-bind a control reference after changing its expression // void ControlReference::UpdateReference(const ciface::Core::DeviceContainer& devices, const ciface::Core::DeviceQualifier& default_device) { - Expression* expr; ControlFinder finder(devices, default_device, IsInput()); - m_parse_status = ParseExpression(expression, finder, &expr); - m_parsed_expression.reset(expr); + if (m_parsed_expression) + m_parsed_expression->UpdateReferences(finder); } int ControlReference::BoundCount() const { if (m_parsed_expression) - return m_parsed_expression->num_controls; + return m_parsed_expression->CountNumControls(); else return 0; } @@ -49,6 +48,17 @@ ParseStatus ControlReference::GetParseStatus() const return m_parse_status; } +std::string ControlReference::GetExpression() const +{ + return m_expression; +} + +void ControlReference::SetExpression(std::string expr) +{ + m_expression = std::move(expr); + std::tie(m_parse_status, m_parsed_expression) = ParseExpression(m_expression); +} + ControlReference::ControlReference() : range(1), m_parsed_expression(nullptr) { } |
