[DEV] Add deleter in SharedPtr when contruct the object
This commit is contained in:
parent
643a37b289
commit
70dd3441e3
@ -49,18 +49,19 @@ namespace ememory {
|
|||||||
typename etk::EnableIf< etk::IsSame<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
typename etk::EnableIf< etk::IsSame<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
||||||
&& etk::IsBaseOf<ememory::EnableSharedFromThisBase, EMEMORY_TYPE2>::value
|
&& etk::IsBaseOf<ememory::EnableSharedFromThisBase, EMEMORY_TYPE2>::value
|
||||||
, int>::type = 0>
|
, int>::type = 0>
|
||||||
SharedPtr(EMEMORY_TYPE2* _element);
|
SharedPtr(EMEMORY_TYPE2* _element, deleterCall&& _deleter = [](void* _data) { delete((EMEMORY_TYPE*)_data);});
|
||||||
template<class EMEMORY_TYPE2,
|
template<class EMEMORY_TYPE2,
|
||||||
typename etk::EnableIf< etk::IsSame<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
typename etk::EnableIf< etk::IsSame<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
||||||
&& !etk::IsBaseOf<ememory::EnableSharedFromThisBase, EMEMORY_TYPE2>::value
|
&& !etk::IsBaseOf<ememory::EnableSharedFromThisBase, EMEMORY_TYPE2>::value
|
||||||
, int>::type = 0>
|
, int>::type = 0>
|
||||||
SharedPtr(EMEMORY_TYPE2* _element);
|
SharedPtr(EMEMORY_TYPE2* _element, deleterCall&& _deleter = [](void* _data) { delete((EMEMORY_TYPE*)_data);});
|
||||||
#else
|
#else
|
||||||
/**
|
/**
|
||||||
* @brief Contructor whith the pointer of data
|
* @brief Contructor whith the pointer of data
|
||||||
* @param[in] _element allocated data (SharedPtr will remove it)
|
* @param[in] _element allocated data (SharedPtr will remove it)
|
||||||
|
* @param[in] _deleter Deleter function of the data.
|
||||||
*/
|
*/
|
||||||
SharedPtr(EMEMORY_TYPE2* _element);
|
SharedPtr(EMEMORY_TYPE2* _element, deleterCall&& _deleter);
|
||||||
#endif
|
#endif
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
@ -13,10 +13,10 @@ template<class EMEMORY_TYPE2,
|
|||||||
typename etk::EnableIf< etk::IsSame<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
typename etk::EnableIf< etk::IsSame<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
||||||
&& etk::IsBaseOf<ememory::EnableSharedFromThisBase, EMEMORY_TYPE2>::value
|
&& etk::IsBaseOf<ememory::EnableSharedFromThisBase, EMEMORY_TYPE2>::value
|
||||||
, int>::type>
|
, int>::type>
|
||||||
ememory::SharedPtr<EMEMORY_TYPE>::SharedPtr(EMEMORY_TYPE2* _element):
|
ememory::SharedPtr<EMEMORY_TYPE>::SharedPtr(EMEMORY_TYPE2* _element, deleterCall&& _deleter):
|
||||||
m_element(_element),
|
m_element(_element),
|
||||||
m_counter(nullptr),
|
m_counter(nullptr),
|
||||||
m_deleter(createDeleter()) {
|
m_deleter(_deleter) {
|
||||||
EMEMORY_DBG("new shared");
|
EMEMORY_DBG("new shared");
|
||||||
if (m_element == nullptr) {
|
if (m_element == nullptr) {
|
||||||
return;
|
return;
|
||||||
@ -36,10 +36,10 @@ template<class EMEMORY_TYPE2,
|
|||||||
typename etk::EnableIf< etk::IsSame<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
typename etk::EnableIf< etk::IsSame<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
||||||
&& !etk::IsBaseOf<ememory::EnableSharedFromThisBase, EMEMORY_TYPE2>::value
|
&& !etk::IsBaseOf<ememory::EnableSharedFromThisBase, EMEMORY_TYPE2>::value
|
||||||
, int>::type>
|
, int>::type>
|
||||||
ememory::SharedPtr<EMEMORY_TYPE>::SharedPtr(EMEMORY_TYPE2* _element):
|
ememory::SharedPtr<EMEMORY_TYPE>::SharedPtr(EMEMORY_TYPE2* _element, deleterCall&& _deleter):
|
||||||
m_element(_element),
|
m_element(_element),
|
||||||
m_counter(nullptr),
|
m_counter(nullptr),
|
||||||
m_deleter(createDeleter()) {
|
m_deleter(_deleter) {
|
||||||
EMEMORY_DBG("new shared");
|
EMEMORY_DBG("new shared");
|
||||||
if (m_element == nullptr) {
|
if (m_element == nullptr) {
|
||||||
return;
|
return;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user