From c42eff2db0cfcb4b9d3f9b34aa3f63e45fd1b485 Mon Sep 17 00:00:00 2001 From: Lynix Date: Tue, 18 Feb 2014 01:01:30 +0100 Subject: [PATCH] Added CallOnExit class Former-commit-id: d4b6bb17a8183f46e4631d727fc8056eb2fcb254 --- include/Nazara/Core/CallOnExit.hpp | 28 ++++++++++++++++++++++++++++ include/Nazara/Core/CallOnExit.inl | 23 +++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 include/Nazara/Core/CallOnExit.hpp create mode 100644 include/Nazara/Core/CallOnExit.inl diff --git a/include/Nazara/Core/CallOnExit.hpp b/include/Nazara/Core/CallOnExit.hpp new file mode 100644 index 000000000..4d95042a6 --- /dev/null +++ b/include/Nazara/Core/CallOnExit.hpp @@ -0,0 +1,28 @@ +// Copyright (C) 2014 Jérôme Leclercq +// This file is part of the "Nazara Engine - Core module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#pragma once + +#ifndef NAZARA_CALLONEXIT_HPP +#define NAZARA_CALLONEXIT_HPP + +#include + +class NzCallOnExit +{ + using Func = void (*)(); + + public: + NzCallOnExit(Func func = nullptr); + ~NzCallOnExit(); + + void Reset(Func func = nullptr); + + private: + Func m_func; +}; + +#include + +#endif // NAZARA_CALLONEXIT_HPP diff --git a/include/Nazara/Core/CallOnExit.inl b/include/Nazara/Core/CallOnExit.inl new file mode 100644 index 000000000..00960f3ac --- /dev/null +++ b/include/Nazara/Core/CallOnExit.inl @@ -0,0 +1,23 @@ +// Copyright (C) 2014 Jérôme Leclercq +// This file is part of the "Nazara Engine - Core module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#include + +inline NzCallOnExit::NzCallOnExit(Func func) : +m_func(func) +{ +} + +inline NzCallOnExit::~NzCallOnExit() +{ + if (m_func) + m_func(); +} + +inline void NzCallOnExit::Reset(Func func) +{ + m_func = func; +} + +#include