From 9681d41bf0b56257ea1642844d6d2fbdfe11a8ec Mon Sep 17 00:00:00 2001 From: Andrew Kaster Date: Thu, 9 Jan 2020 00:35:32 -0700 Subject: [PATCH] AK: Add ArmedScopeGuard, a scope guard that can be disarmed --- AK/ScopeGuard.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/AK/ScopeGuard.h b/AK/ScopeGuard.h index 9946796663..6cacfd29d6 100644 --- a/AK/ScopeGuard.h +++ b/AK/ScopeGuard.h @@ -21,6 +21,28 @@ private: Callback m_callback; }; +template +class ArmedScopeGuard { +public: + ArmedScopeGuard(Callback callback) + : m_callback(move(callback)) + { + } + + ~ArmedScopeGuard() + { + if (m_armed) + m_callback(); + } + + void disarm() { m_armed = false; } + +private: + Callback m_callback; + bool m_armed { true }; +}; + } using AK::ScopeGuard; +using AK::ArmedScopeGuard;