Core/ObjectHandle: Add noexcept move constructor/assignment
Former-commit-id: 930de41518be74fff072e061f735afceb218138c
This commit is contained in:
@@ -24,11 +24,18 @@ namespace Nz
|
||||
|
||||
template<typename T>
|
||||
ObjectHandle<T>::ObjectHandle(const ObjectHandle<T>& handle) :
|
||||
ObjectHandle()
|
||||
ObjectHandle()
|
||||
{
|
||||
Reset(handle);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
ObjectHandle<T>::ObjectHandle(ObjectHandle<T>&& handle) noexcept :
|
||||
ObjectHandle()
|
||||
{
|
||||
Reset(std::move(handle));
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
ObjectHandle<T>::~ObjectHandle()
|
||||
{
|
||||
@@ -66,6 +73,19 @@ namespace Nz
|
||||
Reset(handle.GetObject());
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void ObjectHandle<T>::Reset(ObjectHandle<T>&& handle) noexcept
|
||||
{
|
||||
if (m_object)
|
||||
m_object->UnregisterHandle(this);
|
||||
|
||||
if (T* object = handle.GetObject())
|
||||
{
|
||||
object->UpdateHandle(&handle, this);
|
||||
handle.m_object = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
ObjectHandle<T>& ObjectHandle<T>::Swap(ObjectHandle<T>& handle)
|
||||
{
|
||||
@@ -138,6 +158,14 @@ namespace Nz
|
||||
return *this;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
ObjectHandle<T>& ObjectHandle<T>::operator=(ObjectHandle<T>&& handle) noexcept
|
||||
{
|
||||
Reset(std::move(handle));
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void ObjectHandle<T>::OnObjectDestroyed()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user