mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 20:47:45 +00:00
AK: Add ArmedScopeGuard, a scope guard that can be disarmed
This commit is contained in:
parent
4cee441279
commit
9681d41bf0
1 changed files with 22 additions and 0 deletions
|
@ -21,6 +21,28 @@ private:
|
||||||
Callback m_callback;
|
Callback m_callback;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<typename Callback>
|
||||||
|
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::ScopeGuard;
|
||||||
|
using AK::ArmedScopeGuard;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue