Add SCOPE_EXIT macro and use it in prefab tests to cleanup assets on test fail
This commit is contained in:
36
Source/Engine/Core/ScopeExit.h
Normal file
36
Source/Engine/Core/ScopeExit.h
Normal file
@@ -0,0 +1,36 @@
|
||||
// Copyright (c) Wojciech Figat. All rights reserved.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Core.h"
|
||||
|
||||
template<typename FuncType>
|
||||
struct ScopeExit
|
||||
{
|
||||
explicit ScopeExit(FuncType&& func)
|
||||
: _func((FuncType&&)func)
|
||||
{
|
||||
}
|
||||
|
||||
~ScopeExit()
|
||||
{
|
||||
_func();
|
||||
}
|
||||
|
||||
private:
|
||||
FuncType _func;
|
||||
};
|
||||
|
||||
namespace THelpers
|
||||
{
|
||||
struct ScopeExitInternal
|
||||
{
|
||||
template<typename FuncType>
|
||||
ScopeExit<FuncType> operator*(FuncType&& func)
|
||||
{
|
||||
return ScopeExit<FuncType>((FuncType&&)func);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#define SCOPE_EXIT const auto CONCAT_MACROS(__scopeExit, __LINE__) = THelpers::ScopeExitInternal() * [&]()
|
||||
Reference in New Issue
Block a user