Core/HandledObject: Make move constructor/assignation operator noexception

This commit is contained in:
Lynix 2018-04-22 12:33:36 +02:00
parent 2147156df9
commit 8ab1462402
5 changed files with 11 additions and 10 deletions

View File

@ -93,6 +93,7 @@ Nazara Engine:
- Fixed SimpleTextDrawer line bounds - Fixed SimpleTextDrawer line bounds
- ⚠️ Stream::ReadLine will now returns empty lines if present in the file - ⚠️ Stream::ReadLine will now returns empty lines if present in the file
- Fixed cubemaps seams with OpenGL - Fixed cubemaps seams with OpenGL
- HandledObject movement constructor/assignement operator are now marked noexcept
Nazara Development Kit: Nazara Development Kit:
- Added ImageWidget (#139) - Added ImageWidget (#139)

View File

@ -23,16 +23,16 @@ namespace Nz
public: public:
HandledObject() = default; HandledObject() = default;
HandledObject(const HandledObject& object); HandledObject(const HandledObject& object);
HandledObject(HandledObject&& object); HandledObject(HandledObject&& object) noexcept;
~HandledObject(); ~HandledObject();
ObjectHandle<T> CreateHandle(); ObjectHandle<T> CreateHandle();
HandledObject& operator=(const HandledObject& object); HandledObject& operator=(const HandledObject& object);
HandledObject& operator=(HandledObject&& object); HandledObject& operator=(HandledObject&& object) noexcept;
protected: protected:
void UnregisterAllHandles(); void UnregisterAllHandles() noexcept;
private: private:
void RegisterHandle(ObjectHandle<T>* handle); void RegisterHandle(ObjectHandle<T>* handle);

View File

@ -34,7 +34,7 @@ namespace Nz
* \param object HandledObject to move into this * \param object HandledObject to move into this
*/ */
template<typename T> template<typename T>
HandledObject<T>::HandledObject(HandledObject&& object) : HandledObject<T>::HandledObject(HandledObject&& object) noexcept :
m_handles(std::move(object.m_handles)) m_handles(std::move(object.m_handles))
{ {
for (ObjectHandle<T>* handle : m_handles) for (ObjectHandle<T>* handle : m_handles)
@ -84,7 +84,7 @@ namespace Nz
* \param object HandledObject to move in this * \param object HandledObject to move in this
*/ */
template<typename T> template<typename T>
HandledObject<T>& HandledObject<T>::operator=(HandledObject&& object) HandledObject<T>& HandledObject<T>::operator=(HandledObject&& object) noexcept
{ {
UnregisterAllHandles(); UnregisterAllHandles();
@ -112,7 +112,7 @@ namespace Nz
* \brief Unregisters all handles * \brief Unregisters all handles
*/ */
template<typename T> template<typename T>
void HandledObject<T>::UnregisterAllHandles() void HandledObject<T>::UnregisterAllHandles() noexcept
{ {
// Tell every handle we got destroyed, to null them // Tell every handle we got destroyed, to null them
for (ObjectHandle<T>* handle : m_handles) for (ObjectHandle<T>* handle : m_handles)

View File

@ -49,8 +49,8 @@ namespace Nz
static const ObjectHandle InvalidHandle; static const ObjectHandle InvalidHandle;
protected: protected:
void OnObjectDestroyed(); void OnObjectDestroyed() noexcept;
void OnObjectMoved(T* newObject); void OnObjectMoved(T* newObject) noexcept;
T* m_object; T* m_object;
}; };

View File

@ -268,7 +268,7 @@ namespace Nz
* \brief Action to do on object destruction * \brief Action to do on object destruction
*/ */
template<typename T> template<typename T>
void ObjectHandle<T>::OnObjectDestroyed() void ObjectHandle<T>::OnObjectDestroyed() noexcept
{ {
// Shortcut // Shortcut
m_object = nullptr; m_object = nullptr;
@ -278,7 +278,7 @@ namespace Nz
* \brief Action to do on object move * \brief Action to do on object move
*/ */
template<typename T> template<typename T>
void ObjectHandle<T>::OnObjectMoved(T* newObject) void ObjectHandle<T>::OnObjectMoved(T* newObject) noexcept
{ {
// The object has been moved, update our pointer // The object has been moved, update our pointer
m_object = newObject; m_object = newObject;