ExpressionParser: Replace ScopeGuard with custom deleter unique_ptr.
This commit is contained in:
parent
48b76ff90f
commit
44927da420
|
@ -15,7 +15,6 @@
|
||||||
|
|
||||||
#include "Common/Common.h"
|
#include "Common/Common.h"
|
||||||
#include "Common/Logging/Log.h"
|
#include "Common/Logging/Log.h"
|
||||||
#include "Common/ScopeGuard.h"
|
|
||||||
#include "Common/StringUtil.h"
|
#include "Common/StringUtil.h"
|
||||||
|
|
||||||
#include "InputCommon/ControlReference/ExpressionParser.h"
|
#include "InputCommon/ControlReference/ExpressionParser.h"
|
||||||
|
@ -31,7 +30,17 @@ class HotkeySuppressions
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
using Modifiers = std::vector<std::unique_ptr<ControlExpression>>;
|
using Modifiers = std::vector<std::unique_ptr<ControlExpression>>;
|
||||||
using Suppressor = std::unique_ptr<Common::ScopeGuard>;
|
|
||||||
|
struct InvokingDeleter
|
||||||
|
{
|
||||||
|
template <typename T>
|
||||||
|
void operator()(T* func)
|
||||||
|
{
|
||||||
|
(*func)();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
using Suppressor = std::unique_ptr<std::function<void()>, InvokingDeleter>;
|
||||||
|
|
||||||
bool IsSuppressed(Device::Input* input) const
|
bool IsSuppressed(Device::Input* input) const
|
||||||
{
|
{
|
||||||
|
@ -309,10 +318,11 @@ HotkeySuppressions::MakeSuppressor(const Modifiers* modifiers,
|
||||||
for (auto& modifier : *modifiers)
|
for (auto& modifier : *modifiers)
|
||||||
++m_suppressions[{(*final_input)->GetInput(), modifier->GetInput()}];
|
++m_suppressions[{(*final_input)->GetInput(), modifier->GetInput()}];
|
||||||
|
|
||||||
return std::make_unique<Common::ScopeGuard>([this, modifiers, final_input]() {
|
return Suppressor(std::make_unique<std::function<void()>>([this, modifiers, final_input]() {
|
||||||
for (auto& modifier : *modifiers)
|
for (auto& modifier : *modifiers)
|
||||||
RemoveSuppression(modifier->GetInput(), (*final_input)->GetInput());
|
RemoveSuppression(modifier->GetInput(), (*final_input)->GetInput());
|
||||||
});
|
}).release(),
|
||||||
|
InvokingDeleter{});
|
||||||
}
|
}
|
||||||
|
|
||||||
class BinaryExpression : public Expression
|
class BinaryExpression : public Expression
|
||||||
|
|
Loading…
Reference in New Issue