/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Code/ThirdParty/Jolt/Core/ScopeExit.h
49 строк
1 KB
Jan Krassnigg
Updated Jolt and fixed DLL export issue (#1349)
13 июл 2024, 20:09
Не верифицирован
13 июл 2024, 20:09
ecc487d
Код
Авторство
О чём код?
// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) // SPDX-FileCopyrightText: 2024 Jorrit Rouwe // SPDX-License-Identifier: MIT #pragma once #include <Jolt/Core/NonCopyable.h> JPH_NAMESPACE_BEGIN /// Class that calls a function when it goes out of scope template <class F> class ScopeExit : public NonCopyable { public: /// Constructor specifies the exit function JPH_INLINE explicit ScopeExit(F &&inFunction) : mFunction(std::move(inFunction)) { } /// Destructor calls the exit function JPH_INLINE ~ScopeExit() { if (!mInvoked) mFunction(); } /// Call the exit function now instead of when going out of scope JPH_INLINE void Invoke() { if (!mInvoked) { mFunction(); mInvoked = true; } } /// No longer call the exit function when going out of scope JPH_INLINE void Release() { mInvoked = true; } private: F mFunction; bool mInvoked = false; }; #define JPH_SCOPE_EXIT_TAG2(line) scope_exit##line #define JPH_SCOPE_EXIT_TAG(line) JPH_SCOPE_EXIT_TAG2(line) /// Usage: JPH_SCOPE_EXIT([]{ code to call on scope exit }); #define JPH_SCOPE_EXIT(...) ScopeExit JPH_SCOPE_EXIT_TAG(__LINE__)(__VA_ARGS__) JPH_NAMESPACE_END