Core/Signal: Add default constructor and operators to ConnectionGuard

Former-commit-id: 0080c6bf19cab972945bf978c3d5461ee4228fce
This commit is contained in:
Lynix 2015-06-07 01:44:16 +02:00
parent 0b14711cbf
commit 991c1af1ca
2 changed files with 35 additions and 2 deletions

View File

@ -66,6 +66,7 @@ class NzSignal<Args...>::Connection
friend BaseClass; friend BaseClass;
public: public:
Connection() = default;
Connection(const Connection& connection) = default; Connection(const Connection& connection) = default;
Connection(Connection&& connection) = default; Connection(Connection&& connection) = default;
~Connection() = default; ~Connection() = default;
@ -90,14 +91,19 @@ class NzSignal<Args...>::ConnectionGuard
using Connection = BaseClass::Connection; using Connection = BaseClass::Connection;
public: public:
ConnectionGuard() = default;
ConnectionGuard(const Connection& connection); ConnectionGuard(const Connection& connection);
ConnectionGuard(const ConnectionGuard& connection) = delete;
ConnectionGuard(Connection&& connection); ConnectionGuard(Connection&& connection);
ConnectionGuard(ConnectionGuard&& connection) = default;
~ConnectionGuard(); ~ConnectionGuard();
Connection& GetConnection(); Connection& GetConnection();
Connection& operator=(const Connection& connection) = delete; ConnectionGuard& operator=(const Connection& connection);
Connection& operator=(Connection&& connection) = delete; ConnectionGuard& operator=(const ConnectionGuard& connection) = delete;
ConnectionGuard& operator=(Connection&& connection);
ConnectionGuard& operator=(ConnectionGuard&& connection);
private: private:
Connection m_connection; Connection m_connection;

View File

@ -138,4 +138,31 @@ typename NzSignal<Args...>::Connection& NzSignal<Args...>::ConnectionGuard::GetC
return m_connection; return m_connection;
} }
template<typename... Args>
typename NzSignal<Args...>::ConnectionGuard& NzSignal<Args...>::ConnectionGuard::operator=(const Connection& connection)
{
m_connection.Disconnect();
m_connection = connection;
return *this;
}
template<typename... Args>
typename NzSignal<Args...>::ConnectionGuard& NzSignal<Args...>::ConnectionGuard::operator=(Connection&& connection)
{
m_connection.Disconnect();
m_connection = std::move(connection);
return *this;
}
template<typename... Args>
typename NzSignal<Args...>::ConnectionGuard& NzSignal<Args...>::ConnectionGuard::operator=(ConnectionGuard&& connection)
{
m_connection.Disconnect();
m_connection = std::move(connection.m_connection);
return *this;
}
#include <Nazara/Core/DebugOff.hpp> #include <Nazara/Core/DebugOff.hpp>