// -*- c++ -*- /* This is a generated file, do not edit. Generated from signalproxy.h.m4 */ #ifndef _GLIBMM_SIGNALPROXY_H #define _GLIBMM_SIGNALPROXY_H extern "C" { typedef void (*GCallback) (void); typedef struct _GObject GObject; } #include <sigc++/sigc++.h> #include <glibmm/signalproxy_connectionnode.h> namespace Glib { // Forward declarations class ObjectBase; #ifndef DOXYGEN_SHOULD_SKIP_THIS struct SignalProxyInfo { const char* signal_name; GCallback callback; GCallback notify_callback; }; #endif //DOXYGEN_SHOULD_SKIP_THIS // This base class is used by SignalProxyNormal and SignalProxyProperty. class SignalProxyBase { public: SignalProxyBase(Glib::ObjectBase* obj); #ifndef DOXYGEN_SHOULD_SKIP_THIS static inline sigc::slot_base* data_to_slot(void* data) { SignalProxyConnectionNode *const pConnectionNode = static_cast<SignalProxyConnectionNode*>(data); // Return 0 if the connection is blocked. return (!pConnectionNode->slot_.blocked()) ? &pConnectionNode->slot_ : 0; } #endif /* DOXYGEN_SHOULD_SKIP_THIS */ protected: ObjectBase* obj_; private: SignalProxyBase& operator=(const SignalProxyBase&); // not implemented }; // shared portion of a Signal /** The SignalProxy provides an API similar to sigc::signal that can be used to * connect sigc::slots to glib signals. * * This holds the name of the glib signal and the object * which might emit it. Actually, proxies are controlled by * the template derivatives, which serve as gatekeepers for the * types allowed on a particular signal. * */ 00068 class SignalProxyNormal : public SignalProxyBase { public: ~SignalProxyNormal(); /// stops the current signal emmision (not in libsigc++) void emission_stop(); #ifndef DOXYGEN_SHOULD_SKIP_THIS // This callback for SignalProxy0<void> // is defined here to avoid code duplication. static void slot0_void_callback(GObject*, void* data); #endif protected: /** Create a proxy for a signal that can be emitted by @a obj. * @param obj The object that can emit the signal. * @param info Information about the signal, including its name, and the C callbacks that should be called by glib. */ SignalProxyNormal(Glib::ObjectBase* obj, const SignalProxyInfo* info); /** Connects a signal to a generic signal handler. This is called by connect() in derived SignalProxy classes. * * @param slot The signal handler, usually created with sigc::mem_fun(), or sigc::ptr_fun(). * @param after Whether this signal handler should be called before or after the default signal handler. */ sigc::slot_base& connect_(const sigc::slot_base& slot, bool after); /** Connects a signal to a signal handler without a return value. * This is called by connect() in derived SignalProxy classes. * * By default, the signal handler will be called before the default signal handler, * in which case any return value would be replaced anyway by that of the later signal handler. * * @param slot The signal handler, which should have a void return type, usually created with sigc::mem_fun(), or sigc::ptr_fun(). * @param after Whether this signal handler should be called before or after the default signal handler. */ sigc::slot_base& connect_notify_(const sigc::slot_base& slot, bool after); private: const SignalProxyInfo* info_; //TODO: We could maybe replace both connect_ and connect_notify_ with this in future, because they don't do anything extra. /** This is called by connect_ and connect_impl_. */ sigc::slot_base& connect_impl_(GCallback callback, const sigc::slot_base& slot, bool after); // no copy assignment SignalProxyNormal& operator=(const SignalProxyNormal&); }; /**** Glib::SignalProxy0 ***************************************************/ /** Proxy for signals with 0 arguments. * Use the connect() method, with sigc::mem_fun() or sigc::ptr_fun() to connect signals to signal handlers. */ template <class R> 00130 class SignalProxy0 : public SignalProxyNormal { public: typedef sigc::slot<R> SlotType; typedef sigc::slot<void> VoidSlotType; SignalProxy0(ObjectBase* obj, const SignalProxyInfo* info) : SignalProxyNormal(obj, info) {} /** Connects a signal to a signal handler. * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) ); * * @param slot The signal handler, usually created with sigc::mem_fun(), or sigc::ptr_fun(). * @param after Whether this signal handler should be called before or after the default signal handler. */ 00145 sigc::connection connect(const SlotType& slot, bool after = true) { return sigc::connection(connect_(slot, after)); } /** Connects a signal to a signal handler without a return value. * By default, the signal handler will be called before the default signal handler, * in which case any return value would be replaced anyway by that of the later signal handler. * * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) ); * * @param slot The signal handler, which should have a void return type, usually created with sigc::mem_fun(), or sigc::ptr_fun(). * @param after Whether this signal handler should be called before or after the default signal handler. */ 00157 sigc::connection connect_notify(const VoidSlotType& slot, bool after = false) { return sigc::connection(connect_notify_(slot, after)); } }; /**** Glib::SignalProxy1 ***************************************************/ /** Proxy for signals with 1 arguments. * Use the connect() method, with sigc::mem_fun() or sigc::ptr_fun() to connect signals to signal handlers. */ template <class R,class P1> 00168 class SignalProxy1 : public SignalProxyNormal { public: typedef sigc::slot<R,P1> SlotType; typedef sigc::slot<void,P1> VoidSlotType; SignalProxy1(ObjectBase* obj, const SignalProxyInfo* info) : SignalProxyNormal(obj, info) {} /** Connects a signal to a signal handler. * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) ); * * @param slot The signal handler, usually created with sigc::mem_fun(), or sigc::ptr_fun(). * @param after Whether this signal handler should be called before or after the default signal handler. */ 00183 sigc::connection connect(const SlotType& slot, bool after = true) { return sigc::connection(connect_(slot, after)); } /** Connects a signal to a signal handler without a return value. * By default, the signal handler will be called before the default signal handler, * in which case any return value would be replaced anyway by that of the later signal handler. * * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) ); * * @param slot The signal handler, which should have a void return type, usually created with sigc::mem_fun(), or sigc::ptr_fun(). * @param after Whether this signal handler should be called before or after the default signal handler. */ 00195 sigc::connection connect_notify(const VoidSlotType& slot, bool after = false) { return sigc::connection(connect_notify_(slot, after)); } }; /**** Glib::SignalProxy2 ***************************************************/ /** Proxy for signals with 2 arguments. * Use the connect() method, with sigc::mem_fun() or sigc::ptr_fun() to connect signals to signal handlers. */ template <class R,class P1,class P2> 00206 class SignalProxy2 : public SignalProxyNormal { public: typedef sigc::slot<R,P1,P2> SlotType; typedef sigc::slot<void,P1,P2> VoidSlotType; SignalProxy2(ObjectBase* obj, const SignalProxyInfo* info) : SignalProxyNormal(obj, info) {} /** Connects a signal to a signal handler. * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) ); * * @param slot The signal handler, usually created with sigc::mem_fun(), or sigc::ptr_fun(). * @param after Whether this signal handler should be called before or after the default signal handler. */ 00221 sigc::connection connect(const SlotType& slot, bool after = true) { return sigc::connection(connect_(slot, after)); } /** Connects a signal to a signal handler without a return value. * By default, the signal handler will be called before the default signal handler, * in which case any return value would be replaced anyway by that of the later signal handler. * * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) ); * * @param slot The signal handler, which should have a void return type, usually created with sigc::mem_fun(), or sigc::ptr_fun(). * @param after Whether this signal handler should be called before or after the default signal handler. */ 00233 sigc::connection connect_notify(const VoidSlotType& slot, bool after = false) { return sigc::connection(connect_notify_(slot, after)); } }; /**** Glib::SignalProxy3 ***************************************************/ /** Proxy for signals with 3 arguments. * Use the connect() method, with sigc::mem_fun() or sigc::ptr_fun() to connect signals to signal handlers. */ template <class R,class P1,class P2,class P3> 00244 class SignalProxy3 : public SignalProxyNormal { public: typedef sigc::slot<R,P1,P2,P3> SlotType; typedef sigc::slot<void,P1,P2,P3> VoidSlotType; SignalProxy3(ObjectBase* obj, const SignalProxyInfo* info) : SignalProxyNormal(obj, info) {} /** Connects a signal to a signal handler. * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) ); * * @param slot The signal handler, usually created with sigc::mem_fun(), or sigc::ptr_fun(). * @param after Whether this signal handler should be called before or after the default signal handler. */ 00259 sigc::connection connect(const SlotType& slot, bool after = true) { return sigc::connection(connect_(slot, after)); } /** Connects a signal to a signal handler without a return value. * By default, the signal handler will be called before the default signal handler, * in which case any return value would be replaced anyway by that of the later signal handler. * * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) ); * * @param slot The signal handler, which should have a void return type, usually created with sigc::mem_fun(), or sigc::ptr_fun(). * @param after Whether this signal handler should be called before or after the default signal handler. */ 00271 sigc::connection connect_notify(const VoidSlotType& slot, bool after = false) { return sigc::connection(connect_notify_(slot, after)); } }; /**** Glib::SignalProxy4 ***************************************************/ /** Proxy for signals with 4 arguments. * Use the connect() method, with sigc::mem_fun() or sigc::ptr_fun() to connect signals to signal handlers. */ template <class R,class P1,class P2,class P3,class P4> 00282 class SignalProxy4 : public SignalProxyNormal { public: typedef sigc::slot<R,P1,P2,P3,P4> SlotType; typedef sigc::slot<void,P1,P2,P3,P4> VoidSlotType; SignalProxy4(ObjectBase* obj, const SignalProxyInfo* info) : SignalProxyNormal(obj, info) {} /** Connects a signal to a signal handler. * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) ); * * @param slot The signal handler, usually created with sigc::mem_fun(), or sigc::ptr_fun(). * @param after Whether this signal handler should be called before or after the default signal handler. */ 00297 sigc::connection connect(const SlotType& slot, bool after = true) { return sigc::connection(connect_(slot, after)); } /** Connects a signal to a signal handler without a return value. * By default, the signal handler will be called before the default signal handler, * in which case any return value would be replaced anyway by that of the later signal handler. * * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) ); * * @param slot The signal handler, which should have a void return type, usually created with sigc::mem_fun(), or sigc::ptr_fun(). * @param after Whether this signal handler should be called before or after the default signal handler. */ 00309 sigc::connection connect_notify(const VoidSlotType& slot, bool after = false) { return sigc::connection(connect_notify_(slot, after)); } }; /**** Glib::SignalProxy5 ***************************************************/ /** Proxy for signals with 5 arguments. * Use the connect() method, with sigc::mem_fun() or sigc::ptr_fun() to connect signals to signal handlers. */ template <class R,class P1,class P2,class P3,class P4,class P5> 00320 class SignalProxy5 : public SignalProxyNormal { public: typedef sigc::slot<R,P1,P2,P3,P4,P5> SlotType; typedef sigc::slot<void,P1,P2,P3,P4,P5> VoidSlotType; SignalProxy5(ObjectBase* obj, const SignalProxyInfo* info) : SignalProxyNormal(obj, info) {} /** Connects a signal to a signal handler. * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) ); * * @param slot The signal handler, usually created with sigc::mem_fun(), or sigc::ptr_fun(). * @param after Whether this signal handler should be called before or after the default signal handler. */ 00335 sigc::connection connect(const SlotType& slot, bool after = true) { return sigc::connection(connect_(slot, after)); } /** Connects a signal to a signal handler without a return value. * By default, the signal handler will be called before the default signal handler, * in which case any return value would be replaced anyway by that of the later signal handler. * * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) ); * * @param slot The signal handler, which should have a void return type, usually created with sigc::mem_fun(), or sigc::ptr_fun(). * @param after Whether this signal handler should be called before or after the default signal handler. */ 00347 sigc::connection connect_notify(const VoidSlotType& slot, bool after = false) { return sigc::connection(connect_notify_(slot, after)); } }; /**** Glib::SignalProxy6 ***************************************************/ /** Proxy for signals with 6 arguments. * Use the connect() method, with sigc::mem_fun() or sigc::ptr_fun() to connect signals to signal handlers. */ template <class R,class P1,class P2,class P3,class P4,class P5,class P6> 00358 class SignalProxy6 : public SignalProxyNormal { public: typedef sigc::slot<R,P1,P2,P3,P4,P5,P6> SlotType; typedef sigc::slot<void,P1,P2,P3,P4,P5,P6> VoidSlotType; SignalProxy6(ObjectBase* obj, const SignalProxyInfo* info) : SignalProxyNormal(obj, info) {} /** Connects a signal to a signal handler. * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) ); * * @param slot The signal handler, usually created with sigc::mem_fun(), or sigc::ptr_fun(). * @param after Whether this signal handler should be called before or after the default signal handler. */ 00373 sigc::connection connect(const SlotType& slot, bool after = true) { return sigc::connection(connect_(slot, after)); } /** Connects a signal to a signal handler without a return value. * By default, the signal handler will be called before the default signal handler, * in which case any return value would be replaced anyway by that of the later signal handler. * * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) ); * * @param slot The signal handler, which should have a void return type, usually created with sigc::mem_fun(), or sigc::ptr_fun(). * @param after Whether this signal handler should be called before or after the default signal handler. */ 00385 sigc::connection connect_notify(const VoidSlotType& slot, bool after = false) { return sigc::connection(connect_notify_(slot, after)); } }; } // namespace Glib #endif /* _GLIBMM_SIGNALPROXY_H */