// -*- Mode: C++; indent-tabs-mode: nil; tab-width: 2 -*- /* * Copyright (C) 2011 Canonical Ltd * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3 as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Authored by: Neil Jagdish patel */ #ifndef UNITY_GLIB_SIGNAL_INL_H #define UNITY_GLIB_SIGNAL_INL_H namespace unity { namespace glib { template Signal0::Signal0() {} template void Signal0::Connect(G object, std::string const& signal_name, SignalCallback callback) { object_ = reinterpret_cast(object); name_ = signal_name; callback_ = callback; connection_id_ = g_signal_connect(object, signal_name.c_str(), G_CALLBACK(Callback), this); } template R Signal0::Callback(G object, Signal0* self) { return self->callback_(object); } template Signal1::Signal1() {} template void Signal1::Connect(G object, std::string const& signal_name, SignalCallback callback) { object_ = reinterpret_cast(object); name_ = signal_name; callback_ = callback; connection_id_ = g_signal_connect(object, signal_name.c_str(), G_CALLBACK(Callback), this); } template R Signal1::Callback(G object, T data1, Signal1* self) { return self->callback_(object, data1); } template Signal2::Signal2() {} template void Signal2::Connect(G object, std::string const& signal_name, SignalCallback callback) { object_ = reinterpret_cast(object); name_ = signal_name; callback_ = callback; connection_id_ = g_signal_connect(object, signal_name.c_str(), G_CALLBACK(Callback), this); } template R Signal2::Callback(G object, T1 data1, T2 data2, Signal2* self) { return self->callback_(object, data1, data2); } template Signal3::Signal3() {} template void Signal3::Connect(G object, std::string const& signal_name, SignalCallback callback) { object_ = reinterpret_cast(object); name_ = signal_name; callback_ = callback; connection_id_ = g_signal_connect(object, signal_name.c_str(), G_CALLBACK(Callback), this); } template R Signal3::Callback(G object, T1 data1, T2 data2, T3 data3, Signal3* self) { return self->callback_(object, data1, data2, data3); } template Signal4::Signal4() {} template void Signal4::Connect(G object, std::string const& signal_name, SignalCallback callback) { object_ = reinterpret_cast(object); name_ = signal_name; callback_ = callback; connection_id_ = g_signal_connect(object, signal_name.c_str(), G_CALLBACK(Callback), this); } template R Signal4::Callback(G object, T1 data1, T2 data2, T3 data3, T4 data4, Signal4* self) { return self->callback_(object, data1, data2, data3, data4); } template < typename R, typename G, typename T1, typename T2, typename T3, typename T4, typename T5 > Signal5::Signal5() {} template < typename R, typename G, typename T1, typename T2, typename T3, typename T4, typename T5 > void Signal5::Connect(G object, std::string const& signal_name, SignalCallback callback) { object_ = reinterpret_cast(object); name_ = signal_name; callback_ = callback; connection_id_ = g_signal_connect(object, signal_name.c_str(), G_CALLBACK(Callback), this); } template < typename R, typename G, typename T1, typename T2, typename T3, typename T4, typename T5 > R Signal5::Callback(G object, T1 data1, T2 data2, T3 data3, T4 data4, T5 data5, Signal5* self) { return self->callback_(object, data1, data2, data3, data4, data5); } template < typename R, typename G, typename T1, typename T2, typename T3, typename T4, typename T5 , typename T6 > Signal6::Signal6() {} template < typename R, typename G, typename T1, typename T2, typename T3, typename T4, typename T5 , typename T6 > void Signal6::Connect(G object, std::string const& signal_name, SignalCallback callback) { object_ = reinterpret_cast(object); name_ = signal_name; callback_ = callback; connection_id_ = g_signal_connect(object, signal_name.c_str(), G_CALLBACK(Callback), this); } template < typename R, typename G, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6 > R Signal6::Callback(G object, T1 data1, T2 data2, T3 data3, T4 data4, T5 data5, T6 data6, Signal6* self) { return self->callback_(object, data1, data2, data3, data4, data5, data6); } template Signal::Signal() {} template Signal::Signal(G object, std::string const& signal_name, SignalCallback callback) { Connect(object, signal_name, callback); } template Signal::Signal() {} template Signal::Signal(G object, std::string const& signal_name, SignalCallback callback) { Connect(object, signal_name, callback); } template Signal::Signal() {} template Signal::Signal(G object, std::string const& signal_name, SignalCallback callback) { Connect(object, signal_name, callback); } template Signal::Signal() {} template Signal::Signal(G object, std::string const& signal_name, SignalCallback callback) { Connect(object, signal_name, callback); } template Signal::Signal() {} template Signal::Signal(G object, std::string const& signal_name, SignalCallback callback) { Connect(object, signal_name, callback); } template < typename R, typename G, typename T1, typename T2, typename T3, typename T4, typename T5 > Signal::Signal() {} template < typename R, typename G, typename T1, typename T2, typename T3, typename T4, typename T5 > Signal::Signal(G object, std::string const& signal_name, SignalCallback callback) { Connect(object, signal_name, callback); } template < typename R, typename G, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6 > Signal::Signal() {} template < typename R, typename G, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6 > Signal::Signal(G object, std::string const& signal_name, SignalCallback callback) { Connect(object, signal_name, callback); } } } #endif