From 70dd3441e3a20cae0727b3a4f7eecbae9d0c2b78 Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Mon, 9 Oct 2017 10:19:16 +0200 Subject: [PATCH] [DEV] Add deleter in SharedPtr when contruct the object --- ememory/SharedPtr.hpp | 7 ++++--- ememory/details/SharedPtr.hxx | 8 ++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/ememory/SharedPtr.hpp b/ememory/SharedPtr.hpp index de47d1f..9181978 100644 --- a/ememory/SharedPtr.hpp +++ b/ememory/SharedPtr.hpp @@ -49,18 +49,19 @@ namespace ememory { typename etk::EnableIf< etk::IsSame::value && etk::IsBaseOf::value , int>::type = 0> - SharedPtr(EMEMORY_TYPE2* _element); + SharedPtr(EMEMORY_TYPE2* _element, deleterCall&& _deleter = [](void* _data) { delete((EMEMORY_TYPE*)_data);}); template::value && !etk::IsBaseOf::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: /** diff --git a/ememory/details/SharedPtr.hxx b/ememory/details/SharedPtr.hxx index c7f94d2..7f02398 100644 --- a/ememory/details/SharedPtr.hxx +++ b/ememory/details/SharedPtr.hxx @@ -13,10 +13,10 @@ template::value && etk::IsBaseOf::value , int>::type> -ememory::SharedPtr::SharedPtr(EMEMORY_TYPE2* _element): +ememory::SharedPtr::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::value && !etk::IsBaseOf::value , int>::type> -ememory::SharedPtr::SharedPtr(EMEMORY_TYPE2* _element): +ememory::SharedPtr::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;