[DEBUG] correct some errors
This commit is contained in:
parent
39e7d4103e
commit
f2dd438a7d
@ -16,7 +16,7 @@ namespace ememory {
|
|||||||
class EnableSharedFromThis {
|
class EnableSharedFromThis {
|
||||||
friend class ememory::SharedPtr<EMEMORY_TYPE>;
|
friend class ememory::SharedPtr<EMEMORY_TYPE>;
|
||||||
private:
|
private:
|
||||||
ememory::WeakPtr<EMEMORY_TYPE> m_weakThis;
|
mutable ememory::WeakPtr<EMEMORY_TYPE> m_weakThis;
|
||||||
protected:
|
protected:
|
||||||
EnableSharedFromThis();
|
EnableSharedFromThis();
|
||||||
virtual ~EnableSharedFromThis() = default;
|
virtual ~EnableSharedFromThis() = default;
|
||||||
|
@ -33,6 +33,7 @@ namespace ememory {
|
|||||||
, int>::type = 0>
|
, int>::type = 0>
|
||||||
SharedPtr(EMEMORY_TYPE2* _element);
|
SharedPtr(EMEMORY_TYPE2* _element);
|
||||||
public:
|
public:
|
||||||
|
SharedPtr(std::nullptr_t);
|
||||||
SharedPtr();
|
SharedPtr();
|
||||||
~SharedPtr();
|
~SharedPtr();
|
||||||
SharedPtr(EMEMORY_TYPE* _obj, ememory::Counter* _counter);
|
SharedPtr(EMEMORY_TYPE* _obj, ememory::Counter* _counter);
|
||||||
@ -58,9 +59,25 @@ namespace ememory {
|
|||||||
bool operator!=(const SharedPtr<EMEMORY_TYPE>& _obj) const;
|
bool operator!=(const SharedPtr<EMEMORY_TYPE>& _obj) const;
|
||||||
const EMEMORY_TYPE* get() const;
|
const EMEMORY_TYPE* get() const;
|
||||||
EMEMORY_TYPE* get();
|
EMEMORY_TYPE* get();
|
||||||
|
template<class EMEMORY_TYPE2 = EMEMORY_TYPE,
|
||||||
|
typename std::enable_if< std::is_same<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
||||||
|
&& !std::is_same<EMEMORY_TYPE2, void>::value
|
||||||
|
, int>::type = 0>
|
||||||
const EMEMORY_TYPE* operator->() const;
|
const EMEMORY_TYPE* operator->() const;
|
||||||
|
template<class EMEMORY_TYPE2 = EMEMORY_TYPE,
|
||||||
|
typename std::enable_if< std::is_same<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
||||||
|
&& !std::is_same<EMEMORY_TYPE2, void>::value
|
||||||
|
, int>::type = 0>
|
||||||
EMEMORY_TYPE* operator->();
|
EMEMORY_TYPE* operator->();
|
||||||
|
template<class EMEMORY_TYPE2 = EMEMORY_TYPE,
|
||||||
|
typename std::enable_if< std::is_same<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
||||||
|
&& !std::is_same<EMEMORY_TYPE2, void>::value
|
||||||
|
, int>::type = 0>
|
||||||
const EMEMORY_TYPE& operator*() const;
|
const EMEMORY_TYPE& operator*() const;
|
||||||
|
template<class EMEMORY_TYPE2 = EMEMORY_TYPE,
|
||||||
|
typename std::enable_if< std::is_same<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
||||||
|
&& !std::is_same<EMEMORY_TYPE2, void>::value
|
||||||
|
, int>::type = 0>
|
||||||
EMEMORY_TYPE& operator*();
|
EMEMORY_TYPE& operator*();
|
||||||
void swap(SharedPtr<EMEMORY_TYPE>& _obj);
|
void swap(SharedPtr<EMEMORY_TYPE>& _obj);
|
||||||
ememory::Counter* getCounter() const {
|
ememory::Counter* getCounter() const {
|
||||||
|
@ -22,6 +22,7 @@ namespace ememory {
|
|||||||
ememory::Counter* m_counter;
|
ememory::Counter* m_counter;
|
||||||
public:
|
public:
|
||||||
WeakPtr();
|
WeakPtr();
|
||||||
|
WeakPtr(std::nullptr_t);
|
||||||
private:
|
private:
|
||||||
WeakPtr(EMEMORY_TYPE* _element); // this is only for enable shared from this ...
|
WeakPtr(EMEMORY_TYPE* _element); // this is only for enable shared from this ...
|
||||||
public:
|
public:
|
||||||
|
@ -57,6 +57,13 @@ ememory::SharedPtr<EMEMORY_TYPE>::SharedPtr():
|
|||||||
EMEMORY_VERBOSE("new shared");
|
EMEMORY_VERBOSE("new shared");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename EMEMORY_TYPE>
|
||||||
|
ememory::SharedPtr<EMEMORY_TYPE>::SharedPtr(std::nullptr_t):
|
||||||
|
m_element(nullptr),
|
||||||
|
m_counter(nullptr) {
|
||||||
|
EMEMORY_VERBOSE("new shared");
|
||||||
|
}
|
||||||
|
|
||||||
template<typename EMEMORY_TYPE>
|
template<typename EMEMORY_TYPE>
|
||||||
ememory::SharedPtr<EMEMORY_TYPE>::SharedPtr(EMEMORY_TYPE* _obj, ememory::Counter* _counter):
|
ememory::SharedPtr<EMEMORY_TYPE>::SharedPtr(EMEMORY_TYPE* _obj, ememory::Counter* _counter):
|
||||||
m_element(_obj),
|
m_element(_obj),
|
||||||
@ -228,21 +235,37 @@ EMEMORY_TYPE* ememory::SharedPtr<EMEMORY_TYPE>::get() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<typename EMEMORY_TYPE>
|
template<typename EMEMORY_TYPE>
|
||||||
|
template<class EMEMORY_TYPE2,
|
||||||
|
typename std::enable_if< std::is_same<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
||||||
|
&& !std::is_same<EMEMORY_TYPE2, void>::value
|
||||||
|
, int>::type>
|
||||||
const EMEMORY_TYPE* ememory::SharedPtr<EMEMORY_TYPE>::operator->() const {
|
const EMEMORY_TYPE* ememory::SharedPtr<EMEMORY_TYPE>::operator->() const {
|
||||||
return m_element;
|
return m_element;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename EMEMORY_TYPE>
|
template<typename EMEMORY_TYPE>
|
||||||
|
template<class EMEMORY_TYPE2,
|
||||||
|
typename std::enable_if< std::is_same<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
||||||
|
&& !std::is_same<EMEMORY_TYPE2, void>::value
|
||||||
|
, int>::type>
|
||||||
EMEMORY_TYPE* ememory::SharedPtr<EMEMORY_TYPE>::operator->() {
|
EMEMORY_TYPE* ememory::SharedPtr<EMEMORY_TYPE>::operator->() {
|
||||||
return m_element;
|
return m_element;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename EMEMORY_TYPE>
|
template<typename EMEMORY_TYPE>
|
||||||
|
template<class EMEMORY_TYPE2,
|
||||||
|
typename std::enable_if< std::is_same<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
||||||
|
&& !std::is_same<EMEMORY_TYPE2, void>::value
|
||||||
|
, int>::type>
|
||||||
const EMEMORY_TYPE& ememory::SharedPtr<EMEMORY_TYPE>::operator*() const {
|
const EMEMORY_TYPE& ememory::SharedPtr<EMEMORY_TYPE>::operator*() const {
|
||||||
return *m_element;
|
return *m_element;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename EMEMORY_TYPE>
|
template<typename EMEMORY_TYPE>
|
||||||
|
template<class EMEMORY_TYPE2,
|
||||||
|
typename std::enable_if< std::is_same<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
||||||
|
&& !std::is_same<EMEMORY_TYPE2, void>::value
|
||||||
|
, int>::type>
|
||||||
EMEMORY_TYPE& ememory::SharedPtr<EMEMORY_TYPE>::operator*() {
|
EMEMORY_TYPE& ememory::SharedPtr<EMEMORY_TYPE>::operator*() {
|
||||||
return *m_element;
|
return *m_element;
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,13 @@ ememory::WeakPtr<EMEMORY_TYPE>::WeakPtr():
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename EMEMORY_TYPE>
|
||||||
|
ememory::WeakPtr<EMEMORY_TYPE>::WeakPtr(std::nullptr_t):
|
||||||
|
m_element(nullptr),
|
||||||
|
m_counter(nullptr) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
template<typename EMEMORY_TYPE>
|
template<typename EMEMORY_TYPE>
|
||||||
ememory::WeakPtr<EMEMORY_TYPE>::WeakPtr(EMEMORY_TYPE* _element):
|
ememory::WeakPtr<EMEMORY_TYPE>::WeakPtr(EMEMORY_TYPE* _element):
|
||||||
m_element(_element),
|
m_element(_element),
|
||||||
|
@ -24,7 +24,7 @@ namespace ememory {
|
|||||||
}
|
}
|
||||||
template<class EMEMORY_TYPE_CAST, class EMEMORY_TYPE>
|
template<class EMEMORY_TYPE_CAST, class EMEMORY_TYPE>
|
||||||
inline const ememory::SharedPtr<EMEMORY_TYPE_CAST> dynamicPointerCast(const ememory::SharedPtr<EMEMORY_TYPE>& _obj) {
|
inline const ememory::SharedPtr<EMEMORY_TYPE_CAST> dynamicPointerCast(const ememory::SharedPtr<EMEMORY_TYPE>& _obj) {
|
||||||
return ememory::SharedPtr<EMEMORY_TYPE_CAST>(dynamic_cast<EMEMORY_TYPE_CAST*>(_obj.get()), _obj.getCounter());
|
return ememory::SharedPtr<EMEMORY_TYPE_CAST>(dynamic_cast<EMEMORY_TYPE_CAST*>(const_cast<EMEMORY_TYPE*>(_obj.get())), _obj.getCounter());
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class EMEMORY_TYPE_CAST, class EMEMORY_TYPE>
|
template<class EMEMORY_TYPE_CAST, class EMEMORY_TYPE>
|
||||||
@ -33,7 +33,7 @@ namespace ememory {
|
|||||||
}
|
}
|
||||||
template<class EMEMORY_TYPE_CAST, class EMEMORY_TYPE>
|
template<class EMEMORY_TYPE_CAST, class EMEMORY_TYPE>
|
||||||
inline const ememory::SharedPtr<EMEMORY_TYPE_CAST> staticPointerCast(const ememory::SharedPtr<EMEMORY_TYPE>& _obj) {
|
inline const ememory::SharedPtr<EMEMORY_TYPE_CAST> staticPointerCast(const ememory::SharedPtr<EMEMORY_TYPE>& _obj) {
|
||||||
return ememory::SharedPtr<EMEMORY_TYPE_CAST>(static_cast<EMEMORY_TYPE_CAST*>(_obj.get()), _obj.getCounter());
|
return ememory::SharedPtr<EMEMORY_TYPE_CAST>(static_cast<EMEMORY_TYPE_CAST*>(const_cast<EMEMORY_TYPE*>(_obj.get())), _obj.getCounter());
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class EMEMORY_TYPE_CAST, class EMEMORY_TYPE>
|
template<class EMEMORY_TYPE_CAST, class EMEMORY_TYPE>
|
||||||
@ -42,6 +42,11 @@ namespace ememory {
|
|||||||
}
|
}
|
||||||
template<class EMEMORY_TYPE_CAST, class EMEMORY_TYPE>
|
template<class EMEMORY_TYPE_CAST, class EMEMORY_TYPE>
|
||||||
inline const ememory::SharedPtr<EMEMORY_TYPE_CAST> reinterpretPointerCast(const ememory::SharedPtr<EMEMORY_TYPE>& _obj) {
|
inline const ememory::SharedPtr<EMEMORY_TYPE_CAST> reinterpretPointerCast(const ememory::SharedPtr<EMEMORY_TYPE>& _obj) {
|
||||||
return ememory::SharedPtr<EMEMORY_TYPE_CAST>(reinterpret_cast<EMEMORY_TYPE_CAST*>(_obj.get()), _obj.getCounter());
|
return ememory::SharedPtr<EMEMORY_TYPE_CAST>(reinterpret_cast<EMEMORY_TYPE_CAST*>(const_cast<EMEMORY_TYPE*>(_obj.get())), _obj.getCounter());
|
||||||
|
}
|
||||||
|
|
||||||
|
template<class EMEMORY_TYPE_CAST, class EMEMORY_TYPE>
|
||||||
|
inline ememory::SharedPtr<EMEMORY_TYPE_CAST> constPointerCast(const ememory::SharedPtr<EMEMORY_TYPE>& _obj) {
|
||||||
|
return ememory::SharedPtr<EMEMORY_TYPE_CAST>(const_cast<EMEMORY_TYPE*>(_obj.get()), _obj.getCounter());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user