#include "Core/Object.h" #include "Core/Signal.h" #include "testing-prototype.h" #include using namespace uLib; class Ping : public Object { public: signals: void PingSignal(int count); public slots: void OnPong(int count) { std::cout << "Ping received Pong " << count << std::endl; if (count > 0) ULIB_SIGNAL_EMIT(Ping::PingSignal, count - 1); } }; void Ping::PingSignal(int count) { ULIB_SIGNAL_EMIT(Ping::PingSignal, count); } class Pong : public Object { public: signals: void PongSignal(int count); public slots: void OnPing(int count) { std::cout << "Pong received Ping " << count << std::endl; if (count > 0) ULIB_SIGNAL_EMIT(Pong::PongSignal, count - 1); } }; void Pong::PongSignal(int count) { ULIB_SIGNAL_EMIT(Pong::PongSignal, count); } int main() { BEGIN_TESTING(PingPong); Ping ping; Pong pong; std::cout << "Connecting ping to pong" << std::endl; Object::connect(&ping, &Ping::PingSignal, &pong, &Pong::OnPing); std::cout << "Connecting pong to ping" << std::endl; Object::connect(&pong, &Pong::PongSignal, &ping, &Ping::OnPong); std::cout << "Emitting PingSignal(5)" << std::endl; ping.PingSignal(5); END_TESTING; return 0; }