Core/Signals: Remove Connect/Disconnect macros

And make interface easier to use


Former-commit-id: 5b789c9acb694839cb173ae96392650d80d383b7
This commit is contained in:
Lynix
2015-06-07 17:28:19 +02:00
parent 004b53c590
commit 4e5cdea454
10 changed files with 77 additions and 47 deletions

View File

@@ -100,6 +100,13 @@ m_ptr(slot)
{
}
template<typename... Args>
template<typename... ConnectArgs>
void NzSignal<Args...>::Connection::Connect(BaseClass& signal, ConnectArgs&&... args)
{
operator=(signal.Connect(std::forward<ConnectArgs>(args)...));
}
template<typename... Args>
void NzSignal<Args...>::Connection::Disconnect()
{
@@ -132,12 +139,32 @@ NzSignal<Args...>::ConnectionGuard::~ConnectionGuard()
m_connection.Disconnect();
}
template<typename... Args>
template<typename... ConnectArgs>
void NzSignal<Args...>::ConnectionGuard::Connect(BaseClass& signal, ConnectArgs&&... args)
{
m_connection.Disconnect();
m_connection.Connect(signal, std::forward<ConnectArgs>(args)...);
}
template<typename... Args>
void NzSignal<Args...>::ConnectionGuard::Disconnect()
{
m_connection.Disconnect();
}
template<typename... Args>
typename NzSignal<Args...>::Connection& NzSignal<Args...>::ConnectionGuard::GetConnection()
{
return m_connection;
}
template<typename... Args>
bool NzSignal<Args...>::ConnectionGuard::IsConnected() const
{
return m_connection.IsConnected();
}
template<typename... Args>
typename NzSignal<Args...>::ConnectionGuard& NzSignal<Args...>::ConnectionGuard::operator=(const Connection& connection)
{