// -*- c++ -*- /* This is a generated file, do not edit. Generated from ../sigc++/macros/basic_signal.h.m4 */ #ifndef SIGCXX_BASIC_SIGNAL_H #define SIGCXX_BASIC_SIGNAL_H #include #include // Qt steals a method name. #ifdef SIGC_QT #undef emit #endif #ifdef emit #define SIGC_QT #undef emit #endif #ifdef SIGC_CXX_NAMESPACES namespace SigC { #endif /**************************************************************** ***** Signals (build by macros) ****************************************************************/ // common part to all signals class LIBSIGC_API Signal_ { private: Signal_(const Signal_&); protected: typedef ScopeList List; struct LIBSIGC_API Impl { typedef ScopeList List; List incoming_; List outgoing_; Impl(); ~Impl(); }; Impl *impl; SlotData* in_connect(); SlotData* out_connect(SlotData *s); Signal_(); ~Signal_(); public: bool empty() const; void clear(); }; /**************************************************************** ***** Signal 0 ****************************************************************/ template > class Signal0:public Signal_ { public: typedef Slot0 InSlotType; typedef Slot0 OutSlotType; private: #ifdef SIGC_CXX_PARTIAL_SPEC typedef typename Marsh::OutType SType; typedef R RType; #else typedef Trait::type SType; typedef Trait::type RType; #endif typedef typename InSlotType::Callback Callback; typedef Signal0 Self; typedef CallDataObj2 CallData; static SType callback(void* d) { CallData* data=(CallData*)d; return data->obj->emit(); } public: OutSlotType slot() { SlotData* tmp=in_connect(); CallData &data=reinterpret_cast(tmp->data_); data.callback=(typename OutSlotType::Func)callback; data.obj=this; return tmp; } Connection connect(const InSlotType &s) { return out_connect(s.data()); } SType emit(); SType operator()() {return emit();} Signal0() {} Signal0(const InSlotType &s) {connect(s);} ~Signal0() {} }; // emit template typename Signal0::SType Signal0:: emit() { if (!impl||impl->outgoing_.empty()) return Marsh::default_value(); List &out=impl->outgoing_; Marsh rc; SlotData *data; List::Iterator i=out.begin(); while (i!=out.end()) { data=((SlotDependent*)(i.node()))->parent(); ++i; Callback& s=(Callback&)(data->callback()); if (rc.marshal(s.call())) return rc.value(); } return rc.value(); } #ifdef SIGC_CXX_PARTIAL_SPEC template class Signal0 :public Signal_ { public: typedef Slot0 InSlotType; typedef Slot0 OutSlotType; private: typedef InSlotType::Callback Callback; typedef Signal0 Self; typedef CallDataObj2 CallData; static void callback(void* d) { CallData* data=(CallData*)d; data->obj->emit(); } public: OutSlotType slot() { SlotData* tmp=in_connect(); CallData& data=reinterpret_cast(tmp->data_); data.callback=callback; data.obj=this; return tmp; } Connection connect(const InSlotType &s) { return out_connect(s.data()); } void emit(); void operator()() {emit();} Signal0() {} Signal0(const InSlotType &s) {connect(s);} ~Signal0() {} }; // emit template void Signal0:: emit() { if (!impl||impl->outgoing_.empty()) return; List &out=impl->outgoing_; SlotData *data; List::Iterator i=out.begin(); while (i!=out.end()) { data=((SlotDependent*)(i.node()))->parent(); ++i; Callback& s=(Callback&)(data->callback()); s.call(); } } #endif /**************************************************************** ***** Signal 1 ****************************************************************/ template > class Signal1:public Signal_ { public: typedef Slot1 InSlotType; typedef Slot1 OutSlotType; private: #ifdef SIGC_CXX_PARTIAL_SPEC typedef typename Marsh::OutType SType; typedef R RType; #else typedef Trait::type SType; typedef Trait::type RType; #endif typedef typename InSlotType::Callback Callback; typedef Signal1 Self; typedef CallDataObj2 CallData; static SType callback(void* d,P1 p1) { CallData* data=(CallData*)d; return data->obj->emit(p1); } public: OutSlotType slot() { SlotData* tmp=in_connect(); CallData &data=reinterpret_cast(tmp->data_); data.callback=(typename OutSlotType::Func)callback; data.obj=this; return tmp; } Connection connect(const InSlotType &s) { return out_connect(s.data()); } SType emit(typename Trait::ref p1); SType operator()(typename Trait::ref p1) {return emit(p1);} Signal1() {} Signal1(const InSlotType &s) {connect(s);} ~Signal1() {} }; // emit template typename Signal1::SType Signal1:: emit(typename Trait::ref p1) { if (!impl||impl->outgoing_.empty()) return Marsh::default_value(); List &out=impl->outgoing_; Marsh rc; SlotData *data; List::Iterator i=out.begin(); while (i!=out.end()) { data=((SlotDependent*)(i.node()))->parent(); ++i; Callback& s=(Callback&)(data->callback()); if (rc.marshal(s.call(p1))) return rc.value(); } return rc.value(); } #ifdef SIGC_CXX_PARTIAL_SPEC template class Signal1 :public Signal_ { public: typedef Slot1 InSlotType; typedef Slot1 OutSlotType; private: typedef typename InSlotType::Callback Callback; typedef Signal1 Self; typedef CallDataObj2 CallData; static void callback(void* d,P1 p1) { CallData* data=(CallData*)d; data->obj->emit(p1); } public: OutSlotType slot() { SlotData* tmp=in_connect(); CallData& data=reinterpret_cast(tmp->data_); data.callback=callback; data.obj=this; return tmp; } Connection connect(const InSlotType &s) { return out_connect(s.data()); } void emit(typename Trait::ref p1); void operator()(typename Trait::ref p1) {emit(p1);} Signal1() {} Signal1(const InSlotType &s) {connect(s);} ~Signal1() {} }; // emit template void Signal1:: emit(typename Trait::ref p1) { if (!impl||impl->outgoing_.empty()) return; List &out=impl->outgoing_; SlotData *data; List::Iterator i=out.begin(); while (i!=out.end()) { data=((SlotDependent*)(i.node()))->parent(); ++i; Callback& s=(Callback&)(data->callback()); s.call(p1); } } #endif /**************************************************************** ***** Signal 2 ****************************************************************/ template > class Signal2:public Signal_ { public: typedef Slot2 InSlotType; typedef Slot2 OutSlotType; private: #ifdef SIGC_CXX_PARTIAL_SPEC typedef typename Marsh::OutType SType; typedef R RType; #else typedef Trait::type SType; typedef Trait::type RType; #endif typedef typename InSlotType::Callback Callback; typedef Signal2 Self; typedef CallDataObj2 CallData; static SType callback(void* d,P1 p1,P2 p2) { CallData* data=(CallData*)d; return data->obj->emit(p1,p2); } public: OutSlotType slot() { SlotData* tmp=in_connect(); CallData &data=reinterpret_cast(tmp->data_); data.callback=(typename OutSlotType::Func)callback; data.obj=this; return tmp; } Connection connect(const InSlotType &s) { return out_connect(s.data()); } SType emit(typename Trait::ref p1,typename Trait::ref p2); SType operator()(typename Trait::ref p1,typename Trait::ref p2) {return emit(p1,p2);} Signal2() {} Signal2(const InSlotType &s) {connect(s);} ~Signal2() {} }; // emit template typename Signal2::SType Signal2:: emit(typename Trait::ref p1,typename Trait::ref p2) { if (!impl||impl->outgoing_.empty()) return Marsh::default_value(); List &out=impl->outgoing_; Marsh rc; SlotData *data; List::Iterator i=out.begin(); while (i!=out.end()) { data=((SlotDependent*)(i.node()))->parent(); ++i; Callback& s=(Callback&)(data->callback()); if (rc.marshal(s.call(p1,p2))) return rc.value(); } return rc.value(); } #ifdef SIGC_CXX_PARTIAL_SPEC template class Signal2 :public Signal_ { public: typedef Slot2 InSlotType; typedef Slot2 OutSlotType; private: typedef typename InSlotType::Callback Callback; typedef Signal2 Self; typedef CallDataObj2 CallData; static void callback(void* d,P1 p1,P2 p2) { CallData* data=(CallData*)d; data->obj->emit(p1,p2); } public: OutSlotType slot() { SlotData* tmp=in_connect(); CallData& data=reinterpret_cast(tmp->data_); data.callback=callback; data.obj=this; return tmp; } Connection connect(const InSlotType &s) { return out_connect(s.data()); } void emit(typename Trait::ref p1,typename Trait::ref p2); void operator()(typename Trait::ref p1,typename Trait::ref p2) {emit(p1,p2);} Signal2() {} Signal2(const InSlotType &s) {connect(s);} ~Signal2() {} }; // emit template void Signal2:: emit(typename Trait::ref p1,typename Trait::ref p2) { if (!impl||impl->outgoing_.empty()) return; List &out=impl->outgoing_; SlotData *data; List::Iterator i=out.begin(); while (i!=out.end()) { data=((SlotDependent*)(i.node()))->parent(); ++i; Callback& s=(Callback&)(data->callback()); s.call(p1,p2); } } #endif /**************************************************************** ***** Signal 3 ****************************************************************/ template > class Signal3:public Signal_ { public: typedef Slot3 InSlotType; typedef Slot3 OutSlotType; private: #ifdef SIGC_CXX_PARTIAL_SPEC typedef typename Marsh::OutType SType; typedef R RType; #else typedef Trait::type SType; typedef Trait::type RType; #endif typedef typename InSlotType::Callback Callback; typedef Signal3 Self; typedef CallDataObj2 CallData; static SType callback(void* d,P1 p1,P2 p2,P3 p3) { CallData* data=(CallData*)d; return data->obj->emit(p1,p2,p3); } public: OutSlotType slot() { SlotData* tmp=in_connect(); CallData &data=reinterpret_cast(tmp->data_); data.callback=(typename OutSlotType::Func)callback; data.obj=this; return tmp; } Connection connect(const InSlotType &s) { return out_connect(s.data()); } SType emit(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3); SType operator()(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3) {return emit(p1,p2,p3);} Signal3() {} Signal3(const InSlotType &s) {connect(s);} ~Signal3() {} }; // emit template typename Signal3::SType Signal3:: emit(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3) { if (!impl||impl->outgoing_.empty()) return Marsh::default_value(); List &out=impl->outgoing_; Marsh rc; SlotData *data; List::Iterator i=out.begin(); while (i!=out.end()) { data=((SlotDependent*)(i.node()))->parent(); ++i; Callback& s=(Callback&)(data->callback()); if (rc.marshal(s.call(p1,p2,p3))) return rc.value(); } return rc.value(); } #ifdef SIGC_CXX_PARTIAL_SPEC template class Signal3 :public Signal_ { public: typedef Slot3 InSlotType; typedef Slot3 OutSlotType; private: typedef typename InSlotType::Callback Callback; typedef Signal3 Self; typedef CallDataObj2 CallData; static void callback(void* d,P1 p1,P2 p2,P3 p3) { CallData* data=(CallData*)d; data->obj->emit(p1,p2,p3); } public: OutSlotType slot() { SlotData* tmp=in_connect(); CallData& data=reinterpret_cast(tmp->data_); data.callback=callback; data.obj=this; return tmp; } Connection connect(const InSlotType &s) { return out_connect(s.data()); } void emit(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3); void operator()(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3) {emit(p1,p2,p3);} Signal3() {} Signal3(const InSlotType &s) {connect(s);} ~Signal3() {} }; // emit template void Signal3:: emit(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3) { if (!impl||impl->outgoing_.empty()) return; List &out=impl->outgoing_; SlotData *data; List::Iterator i=out.begin(); while (i!=out.end()) { data=((SlotDependent*)(i.node()))->parent(); ++i; Callback& s=(Callback&)(data->callback()); s.call(p1,p2,p3); } } #endif /**************************************************************** ***** Signal 4 ****************************************************************/ template > class Signal4:public Signal_ { public: typedef Slot4 InSlotType; typedef Slot4 OutSlotType; private: #ifdef SIGC_CXX_PARTIAL_SPEC typedef typename Marsh::OutType SType; typedef R RType; #else typedef Trait::type SType; typedef Trait::type RType; #endif typedef typename InSlotType::Callback Callback; typedef Signal4 Self; typedef CallDataObj2 CallData; static SType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4) { CallData* data=(CallData*)d; return data->obj->emit(p1,p2,p3,p4); } public: OutSlotType slot() { SlotData* tmp=in_connect(); CallData &data=reinterpret_cast(tmp->data_); data.callback=(typename OutSlotType::Func)callback; data.obj=this; return tmp; } Connection connect(const InSlotType &s) { return out_connect(s.data()); } SType emit(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3,typename Trait::ref p4); SType operator()(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3,typename Trait::ref p4) {return emit(p1,p2,p3,p4);} Signal4() {} Signal4(const InSlotType &s) {connect(s);} ~Signal4() {} }; // emit template typename Signal4::SType Signal4:: emit(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3,typename Trait::ref p4) { if (!impl||impl->outgoing_.empty()) return Marsh::default_value(); List &out=impl->outgoing_; Marsh rc; SlotData *data; List::Iterator i=out.begin(); while (i!=out.end()) { data=((SlotDependent*)(i.node()))->parent(); ++i; Callback& s=(Callback&)(data->callback()); if (rc.marshal(s.call(p1,p2,p3,p4))) return rc.value(); } return rc.value(); } #ifdef SIGC_CXX_PARTIAL_SPEC template class Signal4 :public Signal_ { public: typedef Slot4 InSlotType; typedef Slot4 OutSlotType; private: typedef typename InSlotType::Callback Callback; typedef Signal4 Self; typedef CallDataObj2 CallData; static void callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4) { CallData* data=(CallData*)d; data->obj->emit(p1,p2,p3,p4); } public: OutSlotType slot() { SlotData* tmp=in_connect(); CallData& data=reinterpret_cast(tmp->data_); data.callback=callback; data.obj=this; return tmp; } Connection connect(const InSlotType &s) { return out_connect(s.data()); } void emit(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3,typename Trait::ref p4); void operator()(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3,typename Trait::ref p4) {emit(p1,p2,p3,p4);} Signal4() {} Signal4(const InSlotType &s) {connect(s);} ~Signal4() {} }; // emit template void Signal4:: emit(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3,typename Trait::ref p4) { if (!impl||impl->outgoing_.empty()) return; List &out=impl->outgoing_; SlotData *data; List::Iterator i=out.begin(); while (i!=out.end()) { data=((SlotDependent*)(i.node()))->parent(); ++i; Callback& s=(Callback&)(data->callback()); s.call(p1,p2,p3,p4); } } #endif /**************************************************************** ***** Signal 5 ****************************************************************/ template > class Signal5:public Signal_ { public: typedef Slot5 InSlotType; typedef Slot5 OutSlotType; private: #ifdef SIGC_CXX_PARTIAL_SPEC typedef typename Marsh::OutType SType; typedef R RType; #else typedef Trait::type SType; typedef Trait::type RType; #endif typedef typename InSlotType::Callback Callback; typedef Signal5 Self; typedef CallDataObj2 CallData; static SType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5) { CallData* data=(CallData*)d; return data->obj->emit(p1,p2,p3,p4,p5); } public: OutSlotType slot() { SlotData* tmp=in_connect(); CallData &data=reinterpret_cast(tmp->data_); data.callback=(typename OutSlotType::Func)callback; data.obj=this; return tmp; } Connection connect(const InSlotType &s) { return out_connect(s.data()); } SType emit(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3,typename Trait::ref p4,typename Trait::ref p5); SType operator()(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3,typename Trait::ref p4,typename Trait::ref p5) {return emit(p1,p2,p3,p4,p5);} Signal5() {} Signal5(const InSlotType &s) {connect(s);} ~Signal5() {} }; // emit template typename Signal5::SType Signal5:: emit(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3,typename Trait::ref p4,typename Trait::ref p5) { if (!impl||impl->outgoing_.empty()) return Marsh::default_value(); List &out=impl->outgoing_; Marsh rc; SlotData *data; List::Iterator i=out.begin(); while (i!=out.end()) { data=((SlotDependent*)(i.node()))->parent(); ++i; Callback& s=(Callback&)(data->callback()); if (rc.marshal(s.call(p1,p2,p3,p4,p5))) return rc.value(); } return rc.value(); } #ifdef SIGC_CXX_PARTIAL_SPEC template class Signal5 :public Signal_ { public: typedef Slot5 InSlotType; typedef Slot5 OutSlotType; private: typedef typename InSlotType::Callback Callback; typedef Signal5 Self; typedef CallDataObj2 CallData; static void callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5) { CallData* data=(CallData*)d; data->obj->emit(p1,p2,p3,p4,p5); } public: OutSlotType slot() { SlotData* tmp=in_connect(); CallData& data=reinterpret_cast(tmp->data_); data.callback=callback; data.obj=this; return tmp; } Connection connect(const InSlotType &s) { return out_connect(s.data()); } void emit(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3,typename Trait::ref p4,typename Trait::ref p5); void operator()(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3,typename Trait::ref p4,typename Trait::ref p5) {emit(p1,p2,p3,p4,p5);} Signal5() {} Signal5(const InSlotType &s) {connect(s);} ~Signal5() {} }; // emit template void Signal5:: emit(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3,typename Trait::ref p4,typename Trait::ref p5) { if (!impl||impl->outgoing_.empty()) return; List &out=impl->outgoing_; SlotData *data; List::Iterator i=out.begin(); while (i!=out.end()) { data=((SlotDependent*)(i.node()))->parent(); ++i; Callback& s=(Callback&)(data->callback()); s.call(p1,p2,p3,p4,p5); } } #endif /**************************************************************** ***** Signal 6 ****************************************************************/ template > class Signal6:public Signal_ { public: typedef Slot6 InSlotType; typedef Slot6 OutSlotType; private: #ifdef SIGC_CXX_PARTIAL_SPEC typedef typename Marsh::OutType SType; typedef R RType; #else typedef Trait::type SType; typedef Trait::type RType; #endif typedef typename InSlotType::Callback Callback; typedef Signal6 Self; typedef CallDataObj2 CallData; static SType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5,P6 p6) { CallData* data=(CallData*)d; return data->obj->emit(p1,p2,p3,p4,p5,p6); } public: OutSlotType slot() { SlotData* tmp=in_connect(); CallData &data=reinterpret_cast(tmp->data_); data.callback=(typename OutSlotType::Func)callback; data.obj=this; return tmp; } Connection connect(const InSlotType &s) { return out_connect(s.data()); } SType emit(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3,typename Trait::ref p4,typename Trait::ref p5,typename Trait::ref p6); SType operator()(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3,typename Trait::ref p4,typename Trait::ref p5,typename Trait::ref p6) {return emit(p1,p2,p3,p4,p5,p6);} Signal6() {} Signal6(const InSlotType &s) {connect(s);} ~Signal6() {} }; // emit template typename Signal6::SType Signal6:: emit(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3,typename Trait::ref p4,typename Trait::ref p5,typename Trait::ref p6) { if (!impl||impl->outgoing_.empty()) return Marsh::default_value(); List &out=impl->outgoing_; Marsh rc; SlotData *data; List::Iterator i=out.begin(); while (i!=out.end()) { data=((SlotDependent*)(i.node()))->parent(); ++i; Callback& s=(Callback&)(data->callback()); if (rc.marshal(s.call(p1,p2,p3,p4,p5,p6))) return rc.value(); } return rc.value(); } #ifdef SIGC_CXX_PARTIAL_SPEC template class Signal6 :public Signal_ { public: typedef Slot6 InSlotType; typedef Slot6 OutSlotType; private: typedef typename InSlotType::Callback Callback; typedef Signal6 Self; typedef CallDataObj2 CallData; static void callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5,P6 p6) { CallData* data=(CallData*)d; data->obj->emit(p1,p2,p3,p4,p5,p6); } public: OutSlotType slot() { SlotData* tmp=in_connect(); CallData& data=reinterpret_cast(tmp->data_); data.callback=callback; data.obj=this; return tmp; } Connection connect(const InSlotType &s) { return out_connect(s.data()); } void emit(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3,typename Trait::ref p4,typename Trait::ref p5,typename Trait::ref p6); void operator()(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3,typename Trait::ref p4,typename Trait::ref p5,typename Trait::ref p6) {emit(p1,p2,p3,p4,p5,p6);} Signal6() {} Signal6(const InSlotType &s) {connect(s);} ~Signal6() {} }; // emit template void Signal6:: emit(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3,typename Trait::ref p4,typename Trait::ref p5,typename Trait::ref p6) { if (!impl||impl->outgoing_.empty()) return; List &out=impl->outgoing_; SlotData *data; List::Iterator i=out.begin(); while (i!=out.end()) { data=((SlotDependent*)(i.node()))->parent(); ++i; Callback& s=(Callback&)(data->callback()); s.call(p1,p2,p3,p4,p5,p6); } } #endif /**************************************************************** ***** Signal 7 ****************************************************************/ template > class Signal7:public Signal_ { public: typedef Slot7 InSlotType; typedef Slot7 OutSlotType; private: #ifdef SIGC_CXX_PARTIAL_SPEC typedef typename Marsh::OutType SType; typedef R RType; #else typedef Trait::type SType; typedef Trait::type RType; #endif typedef typename InSlotType::Callback Callback; typedef Signal7 Self; typedef CallDataObj2 CallData; static SType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5,P6 p6,P7 p7) { CallData* data=(CallData*)d; return data->obj->emit(p1,p2,p3,p4,p5,p6,p7); } public: OutSlotType slot() { SlotData* tmp=in_connect(); CallData &data=reinterpret_cast(tmp->data_); data.callback=(typename OutSlotType::Func)callback; data.obj=this; return tmp; } Connection connect(const InSlotType &s) { return out_connect(s.data()); } SType emit(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3,typename Trait::ref p4,typename Trait::ref p5,typename Trait::ref p6,typename Trait::ref p7); SType operator()(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3,typename Trait::ref p4,typename Trait::ref p5,typename Trait::ref p6,typename Trait::ref p7) {return emit(p1,p2,p3,p4,p5,p6,p7);} Signal7() {} Signal7(const InSlotType &s) {connect(s);} ~Signal7() {} }; // emit template typename Signal7::SType Signal7:: emit(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3,typename Trait::ref p4,typename Trait::ref p5,typename Trait::ref p6,typename Trait::ref p7) { if (!impl||impl->outgoing_.empty()) return Marsh::default_value(); List &out=impl->outgoing_; Marsh rc; SlotData *data; List::Iterator i=out.begin(); while (i!=out.end()) { data=((SlotDependent*)(i.node()))->parent(); ++i; Callback& s=(Callback&)(data->callback()); if (rc.marshal(s.call(p1,p2,p3,p4,p5,p6,p7))) return rc.value(); } return rc.value(); } #ifdef SIGC_CXX_PARTIAL_SPEC template class Signal7 :public Signal_ { public: typedef Slot7 InSlotType; typedef Slot7 OutSlotType; private: typedef typename InSlotType::Callback Callback; typedef Signal7 Self; typedef CallDataObj2 CallData; static void callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5,P6 p6,P7 p7) { CallData* data=(CallData*)d; data->obj->emit(p1,p2,p3,p4,p5,p6,p7); } public: OutSlotType slot() { SlotData* tmp=in_connect(); CallData& data=reinterpret_cast(tmp->data_); data.callback=callback; data.obj=this; return tmp; } Connection connect(const InSlotType &s) { return out_connect(s.data()); } void emit(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3,typename Trait::ref p4,typename Trait::ref p5,typename Trait::ref p6,typename Trait::ref p7); void operator()(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3,typename Trait::ref p4,typename Trait::ref p5,typename Trait::ref p6,typename Trait::ref p7) {emit(p1,p2,p3,p4,p5,p6,p7);} Signal7() {} Signal7(const InSlotType &s) {connect(s);} ~Signal7() {} }; // emit template void Signal7:: emit(typename Trait::ref p1,typename Trait::ref p2,typename Trait::ref p3,typename Trait::ref p4,typename Trait::ref p5,typename Trait::ref p6,typename Trait::ref p7) { if (!impl||impl->outgoing_.empty()) return; List &out=impl->outgoing_; SlotData *data; List::Iterator i=out.begin(); while (i!=out.end()) { data=((SlotDependent*)(i.node()))->parent(); ++i; Callback& s=(Callback&)(data->callback()); s.call(p1,p2,p3,p4,p5,p6,p7); } } #endif #ifdef SIGC_CXX_NAMESPACES } // namespace #endif #ifdef SIGC_QT #define emit #endif #endif // SIGCXX_BASIC_SIGNAL_H