[DEV] stabilize shared object interface

This commit is contained in:
Edouard DUPIN 2014-05-17 21:01:06 +02:00
parent 23eb78c7f9
commit b5b5785d04
4 changed files with 10 additions and 6 deletions

View File

@ -13,7 +13,7 @@
#include <ewol/object/MultiCast.h>
#undef __class__
#define __class__ "ewol::object::Shared<ewol::Object>"
#define __class__ "Object"
const char* const ewol::Object::configName = "name";

View File

@ -92,9 +92,6 @@ namespace ewol {
return m_pointer;
}
};
template<typename T> Owner<T> makeOwner(T* _pointer) {
return Owner<T>(_pointer);
}
};
// section to compare Owner pointer of an object with an other

View File

@ -103,8 +103,15 @@ namespace ewol {
return m_pointer;
}
};
// after calling this function, you might never call a delete on this pointer. (if you want to be able to use a delete, simply Shared<>(pointer)
template<typename T> Shared<T> makeShared(T* _pointer) {
return Shared<T>(_pointer);
if (_pointer == nullptr) {
return Shared<T>();
}
Shared<T> tmp(_pointer);
// remove one element to permit to remove at the last instance
_pointer->objRefCountDecrement();
return tmp;
}
};
// section to compare shared pointer of an object with an other

View File

@ -264,7 +264,7 @@ ewol::object::Shared<ewol::Widget> ewol::widget::Manager::create(const std::stri
if (m_creatorList.exist(nameLower) == true) {
ewol::widget::Manager::creator_tf pointerFunction = m_creatorList[nameLower];
if (pointerFunction != nullptr) {
return pointerFunction();
return ewol::object::makeShared<ewol::Widget>(pointerFunction());
}
}
EWOL_WARNING("try to create an UnExistant widget : " << nameLower);