Core/ObjectHandle: Remade object handle system

This commit is contained in:
Jérôme Leclercq
2018-10-12 15:46:40 +02:00
parent 3933d5007d
commit 4c4822eef9
9 changed files with 107 additions and 180 deletions

View File

@@ -13,6 +13,16 @@
namespace Nz
{
namespace Detail
{
struct NAZARA_CORE_API HandleData
{
void* object;
static std::shared_ptr<HandleData> GetEmptyObject();
};
}
template<typename T> class ObjectHandle;
template<typename T>
@@ -35,11 +45,10 @@ namespace Nz
void UnregisterAllHandles() noexcept;
private:
void RegisterHandle(ObjectHandle<T>* handle);
void UnregisterHandle(ObjectHandle<T>* handle) noexcept;
void UpdateHandle(ObjectHandle<T>* oldHandle, ObjectHandle<T>* newHandle) noexcept;
std::shared_ptr<const Detail::HandleData> GetHandleData();
void InitHandleData();
std::vector<ObjectHandle<T>*> m_handles;
std::shared_ptr<Detail::HandleData> m_handleData;
};
}