summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/ControlReference
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/InputCommon/ControlReference')
-rw-r--r--Source/Core/InputCommon/ControlReference/ControlReference.cpp26
-rw-r--r--Source/Core/InputCommon/ControlReference/ControlReference.h5
2 files changed, 13 insertions, 18 deletions
diff --git a/Source/Core/InputCommon/ControlReference/ControlReference.cpp b/Source/Core/InputCommon/ControlReference/ControlReference.cpp
index 1d3d62e8c3..56a1ad133f 100644
--- a/Source/Core/InputCommon/ControlReference/ControlReference.cpp
+++ b/Source/Core/InputCommon/ControlReference/ControlReference.cpp
@@ -29,22 +29,16 @@ bool ControlReference::InputGateOn()
void ControlReference::UpdateReference(ciface::Core::DeviceContainer& devices,
const ciface::Core::DeviceQualifier& default_device)
{
- delete parsed_expression;
- parsed_expression = nullptr;
-
+ Expression* expr;
ControlFinder finder(devices, default_device, IsInput());
- m_parse_status = ParseExpression(expression, finder, &parsed_expression);
-}
-
-ControlReference::~ControlReference()
-{
- delete parsed_expression;
+ m_parse_status = ParseExpression(expression, finder, &expr);
+ m_parsed_expression.reset(expr);
}
int ControlReference::BoundCount() const
{
- if (parsed_expression)
- return parsed_expression->num_controls;
+ if (m_parsed_expression)
+ return m_parsed_expression->num_controls;
else
return 0;
}
@@ -54,7 +48,7 @@ ExpressionParseStatus ControlReference::GetParseStatus() const
return m_parse_status;
}
-ControlReference::ControlReference() : range(1), parsed_expression(nullptr)
+ControlReference::ControlReference() : range(1), m_parsed_expression(nullptr)
{
}
@@ -83,8 +77,8 @@ bool OutputReference::IsInput() const
//
ControlState InputReference::State(const ControlState ignore)
{
- if (parsed_expression && InputGateOn())
- return parsed_expression->GetValue() * range;
+ if (m_parsed_expression && InputGateOn())
+ return m_parsed_expression->GetValue() * range;
return 0.0;
}
@@ -98,8 +92,8 @@ ControlState InputReference::State(const ControlState ignore)
//
ControlState OutputReference::State(const ControlState state)
{
- if (parsed_expression && InputGateOn())
- parsed_expression->SetValue(state);
+ if (m_parsed_expression && InputGateOn())
+ m_parsed_expression->SetValue(state);
return 0.0;
}
diff --git a/Source/Core/InputCommon/ControlReference/ControlReference.h b/Source/Core/InputCommon/ControlReference/ControlReference.h
index 49f08b97ce..e7e6e1a277 100644
--- a/Source/Core/InputCommon/ControlReference/ControlReference.h
+++ b/Source/Core/InputCommon/ControlReference/ControlReference.h
@@ -4,6 +4,8 @@
#pragma once
+#include <memory>
+
#include "InputCommon/ControlReference/ExpressionParser.h"
#include "InputCommon/ControllerInterface/Device.h"
@@ -22,7 +24,6 @@ class ControlReference
public:
static bool InputGateOn();
- virtual ~ControlReference();
virtual ControlState State(const ControlState state = 0) = 0;
virtual ciface::Core::Device::Control* Detect(const unsigned int ms,
ciface::Core::Device* const device) = 0;
@@ -38,7 +39,7 @@ public:
protected:
ControlReference();
- ciface::ExpressionParser::Expression* parsed_expression;
+ std::unique_ptr<ciface::ExpressionParser::Expression> m_parsed_expression;
ciface::ExpressionParser::ExpressionParseStatus m_parse_status;
};