1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- #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 = nullptr)
- : ptr(Ptr)
- {}
- ConstTransitivePtr(std::nullptr_t)
- : ptr(nullptr)
- {}
- 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 = nullptr;
- }
- template <typename Handler> void serialize(Handler &h, const int version)
- {
- h & ptr;
- }
- friend class CGameHandler;
- };
|