diff --git a/include/Nazara/Core/CallOnExit.hpp b/include/Nazara/Core/CallOnExit.hpp index 3f8fc1f2f..45ea2622d 100644 --- a/include/Nazara/Core/CallOnExit.hpp +++ b/include/Nazara/Core/CallOnExit.hpp @@ -19,6 +19,7 @@ class NzCallOnExit : NzNonCopyable NzCallOnExit(Func func = nullptr); ~NzCallOnExit(); + void CallAndReset(Func func = nullptr); void Reset(Func func = nullptr); private: diff --git a/include/Nazara/Core/CallOnExit.inl b/include/Nazara/Core/CallOnExit.inl index 00960f3ac..fd7f4de80 100644 --- a/include/Nazara/Core/CallOnExit.inl +++ b/include/Nazara/Core/CallOnExit.inl @@ -2,6 +2,7 @@ // This file is part of the "Nazara Engine - Core module" // For conditions of distribution and use, see copyright notice in Config.hpp +#include #include inline NzCallOnExit::NzCallOnExit(Func func) : @@ -15,6 +16,14 @@ inline NzCallOnExit::~NzCallOnExit() m_func(); } +inline void NzCallOnExit::CallAndReset(Func func) +{ + if (m_func) + m_func(); + + Reset(func); +} + inline void NzCallOnExit::Reset(Func func) { m_func = func;