42template <
typename CppObjT>
55 template <typename = std::enable_if<!std::is_const<CppObjT>::value>>
59 if ((
objType(rawPtr) == CppObjT::kObjectType))
60 ptr_ =
static_cast<CppObjT*
>(rawPtr);
63 template <typename = std::enable_if<std::is_const<CppObjT>::value>>
67 if ((
objType(rawPtr) == CppObjT::kObjectType))
68 ptr_ =
static_cast<CppObjT*
>(rawPtr);
71 template <
typename _UCppObj>
75 if (ptr && (ptr->objType_ == CppObjT::kObjectType))
76 ptr_ =
static_cast<CppObjT*
>(ptr.get());
86 return ptr_ !=
nullptr;
89 operator CppObjT*()
const
109 template <
typename _UCppObj>
110 operator _UCppObj*()
const
112 return _UCppObj::kObjectType == CppObjT::kObjectType ?
static_cast<_UCppObj*
>(
ptr_) :
nullptr;
Helps working with raw or unique_ptr of CppObj in a uniform way.
CppEasyPtr(const CppObj *rawPtr)
CppEasyPtr(CppObj *rawPtr)
CppObjT * operator->() const
CppObjT & operator*() const
CppEasyPtr(const std::unique_ptr< _UCppObj > &ptr)
CppEasyPtr(const std::unique_ptr< CppObjT > &ptr)
CppEasyPtr(CppObjT *rawPtr)
CppObjType objType(const CppObj *cppObj)
An abstract class that is used as base class of all other classes.