// -*- 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