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

@@ -17,10 +17,6 @@
#define NazaraSlotType(Class, SignalName) Class::SignalName ## Type::ConnectionGuard
#define NazaraSlot(Class, SignalName, SlotName) NazaraSlotType(Class, SignalName) SlotName
#define NazaraConnect(Instance, SignalName, Callback) (Instance).SignalName.Connect(Callback)
#define NazaraConnectThis(Instance, SignalName, Callback) (Instance).SignalName.Connect(this, Callback)
#define NazaraDisconnect(SlotName) SlotName.GetConnection().Disconnect()
template<typename... Args>
class NzSignal
@@ -82,6 +78,8 @@ class NzSignal<Args...>::Connection
Connection(Connection&& connection) = default;
~Connection() = default;
template<typename... ConnectArgs>
void Connect(BaseClass& signal, ConnectArgs&&... args);
void Disconnect();
bool IsConnected() const;
@@ -109,8 +107,14 @@ class NzSignal<Args...>::ConnectionGuard
ConnectionGuard(ConnectionGuard&& connection) = default;
~ConnectionGuard();
template<typename... ConnectArgs>
void Connect(BaseClass& signal, ConnectArgs&&... args);
void Disconnect();
Connection& GetConnection();
bool IsConnected() const;
ConnectionGuard& operator=(const Connection& connection);
ConnectionGuard& operator=(const ConnectionGuard& connection) = delete;
ConnectionGuard& operator=(Connection&& connection);