Ref. Scope

- Added Ref<T> and Scope<T> types to replace the std::shared_ptr<T> and
      std::unique_ptr<T>, currently it is being used as an alias
This commit is contained in:
Light 2021-07-26 10:00:29 +04:30
parent 8287b89fad
commit 0360d094d2

View file

@ -31,6 +31,7 @@
#endif
// operations
#define BIT(x) 1 << x
@ -43,6 +44,42 @@
#define LT_CLIENT_ASSERT(x, ...) { if(!(x)) { LT_CLIENT_CRITICAL(__VA_ARGS__); LT_BREAK(); throw ::Light::FailedClientAssertion(__FILE__, __LINE__); } }
#endif
namespace Light {
// Ref (std::shared_ptr)
template<typename T>
using Ref = std::shared_ptr<T>;
template<typename T, typename... Args>
constexpr std::shared_ptr<T> CreateRef(Args... args)
{
return std::make_shared<T>(std::forward<Args>(args)...);
}
template<typename T>
constexpr std::shared_ptr<T> MakeRef(T* rawPointer)
{
return std::shared_ptr<T>(T);
}
// Scope (std::unique_ptr)
template<typename T>
using Scope = std::unique_ptr<T>;
template<typename T, typename... Args>
constexpr std::unique_ptr<T> CreateScope(Args... args)
{
return std::make_unique<T>(std::forward<Args>(args)...);
}
template<typename T>
constexpr std::unique_ptr<T> MakeScope(T* rawPointer)
{
return std::unique_ptr<T>(rawPointer);
}
}
///*** [ PORTABLES ] ***///
//** PORTABLE_DEBUG_BREAK **//
// copied from: https://github.com/nemequ/portable-snippets/tree/master/debug-trap