From b82cbc074b829f6ef8cb07790735510191911d82 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sat, 16 Mar 2013 01:01:16 +0100 Subject: [PATCH] Optimized ResourceRef assignation Former-commit-id: 9dfdadb8e34f17c93caabef12f097504c89ee51b --- include/Nazara/Core/ResourceRef.hpp | 1 + include/Nazara/Core/ResourceRef.inl | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/include/Nazara/Core/ResourceRef.hpp b/include/Nazara/Core/ResourceRef.hpp index 0c6b39cec..dee1a709f 100644 --- a/include/Nazara/Core/ResourceRef.hpp +++ b/include/Nazara/Core/ResourceRef.hpp @@ -32,6 +32,7 @@ class NzResourceRef operator T*() const; T* operator->() const; + NzResourceRef& operator=(T* resource); NzResourceRef& operator=(const NzResourceRef& ref); NzResourceRef& operator=(NzResourceRef&& ref); diff --git a/include/Nazara/Core/ResourceRef.inl b/include/Nazara/Core/ResourceRef.inl index 9dcb1a4ad..80680c18a 100644 --- a/include/Nazara/Core/ResourceRef.inl +++ b/include/Nazara/Core/ResourceRef.inl @@ -93,6 +93,23 @@ T* NzResourceRef::operator->() const return m_resource; } +template +NzResourceRef& NzResourceRef::operator=(T* resource) +{ + if (m_resource != resource) + { + Release(); + + if (resource) + { + m_resource = resource; + m_resource->AddResourceReference(); + } + } + + return *this; +} + template NzResourceRef& NzResourceRef::operator=(const NzResourceRef& ref) {