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:
		
							parent
							
								
									8287b89fad
								
							
						
					
					
						commit
						0360d094d2
					
				
					 1 changed files with 37 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue