[DEV] Add deleter in SharedPtr when contruct the object

This commit is contained in:
Edouard DUPIN 2017-10-09 10:19:16 +02:00
parent 643a37b289
commit 70dd3441e3
2 changed files with 8 additions and 7 deletions

View File

@ -49,18 +49,19 @@ namespace ememory {
typename etk::EnableIf< etk::IsSame<EMEMORY_TYPE2, EMEMORY_TYPE>::value
&& etk::IsBaseOf<ememory::EnableSharedFromThisBase, EMEMORY_TYPE2>::value
, int>::type = 0>
SharedPtr(EMEMORY_TYPE2* _element);
SharedPtr(EMEMORY_TYPE2* _element, deleterCall&& _deleter = [](void* _data) { delete((EMEMORY_TYPE*)_data);});
template<class EMEMORY_TYPE2,
typename etk::EnableIf< etk::IsSame<EMEMORY_TYPE2, EMEMORY_TYPE>::value
&& !etk::IsBaseOf<ememory::EnableSharedFromThisBase, EMEMORY_TYPE2>::value
, int>::type = 0>
SharedPtr(EMEMORY_TYPE2* _element);
SharedPtr(EMEMORY_TYPE2* _element, deleterCall&& _deleter = [](void* _data) { delete((EMEMORY_TYPE*)_data);});
#else
/**
* @brief Contructor whith the pointer of data
* @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
public:
/**

View File

@ -13,10 +13,10 @@ template<class EMEMORY_TYPE2,
typename etk::EnableIf< etk::IsSame<EMEMORY_TYPE2, EMEMORY_TYPE>::value
&& etk::IsBaseOf<ememory::EnableSharedFromThisBase, EMEMORY_TYPE2>::value
, int>::type>
ememory::SharedPtr<EMEMORY_TYPE>::SharedPtr(EMEMORY_TYPE2* _element):
ememory::SharedPtr<EMEMORY_TYPE>::SharedPtr(EMEMORY_TYPE2* _element, deleterCall&& _deleter):
m_element(_element),
m_counter(nullptr),
m_deleter(createDeleter()) {
m_deleter(_deleter) {
EMEMORY_DBG("new shared");
if (m_element == nullptr) {
return;
@ -36,10 +36,10 @@ template<class EMEMORY_TYPE2,
typename etk::EnableIf< etk::IsSame<EMEMORY_TYPE2, EMEMORY_TYPE>::value
&& !etk::IsBaseOf<ememory::EnableSharedFromThisBase, EMEMORY_TYPE2>::value
, int>::type>
ememory::SharedPtr<EMEMORY_TYPE>::SharedPtr(EMEMORY_TYPE2* _element):
ememory::SharedPtr<EMEMORY_TYPE>::SharedPtr(EMEMORY_TYPE2* _element, deleterCall&& _deleter):
m_element(_element),
m_counter(nullptr),
m_deleter(createDeleter()) {
m_deleter(_deleter) {
EMEMORY_DBG("new shared");
if (m_element == nullptr) {
return;