mirror of
				https://github.com/vcmi/vcmi.git
				synced 2025-10-31 00:07:39 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			77 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| class CGameHandler;
 | |
| 
 | |
| /*
 | |
|  * ConstTransitivePtr.h, part of VCMI engine
 | |
|  *
 | |
|  * Authors: listed in file AUTHORS in main folder
 | |
|  *
 | |
|  * License: GNU General Public License v2.0 or later
 | |
|  * Full text of license available in license.txt file, in main folder
 | |
|  *
 | |
|  */
 | |
| 
 | |
| template <typename T>
 | |
| class ConstTransitivePtr
 | |
| {
 | |
| 	T *ptr;
 | |
| 	ConstTransitivePtr(const T *Ptr)
 | |
| 		: ptr(const_cast<T*>(Ptr)) 
 | |
| 	{}
 | |
| public:
 | |
| 	ConstTransitivePtr(T *Ptr = NULL)
 | |
| 		: ptr(Ptr) 
 | |
| 	{}
 | |
| 
 | |
| 	const T& operator*() const
 | |
| 	{
 | |
| 		return *ptr;
 | |
| 	}
 | |
| 	T& operator*()
 | |
| 	{
 | |
| 		return *ptr;
 | |
| 	}
 | |
| 	operator const T*() const
 | |
| 	{
 | |
| 		return ptr;
 | |
| 	}
 | |
| 	T* get()
 | |
| 	{
 | |
| 		return ptr;
 | |
| 	}
 | |
| 	const T* get() const
 | |
| 	{
 | |
| 		return ptr;
 | |
| 	}
 | |
| 	operator T*() 
 | |
| 	{
 | |
| 		return ptr;
 | |
| 	}
 | |
| 	T *operator->() 
 | |
| 	{
 | |
| 		return ptr;
 | |
| 	}
 | |
| 	const T *operator->() const 
 | |
| 	{
 | |
| 		return ptr;
 | |
| 	}
 | |
| 	const T*operator=(T *t)
 | |
| 	{
 | |
| 		return ptr = t;
 | |
| 	}
 | |
| 
 | |
| 	void dellNull()
 | |
| 	{
 | |
| 		delete ptr;
 | |
| 		ptr = NULL;
 | |
| 	}
 | |
| 
 | |
| 	template <typename Handler> void serialize(Handler &h, const int version)
 | |
| 	{
 | |
| 		h & ptr;
 | |
| 	}
 | |
| 
 | |
| 	friend class CGameHandler;
 | |
| };
 |