// -*- c++ -*- /* This is a generated file, do not edit. Generated from ../sigc++/macros/convert.h.m4 */ #ifndef SIGCXX_CONVERT_H #define SIGCXX_CONVERT_H /* SigC::convert ------------- convert() alters a Slot by assigning a conversion function which can completely alter the parameter types of a slot. Only convert functions for changing with same number of arguments is compiled by default. See examples/custom_convert.h.m4 for details on how to build non standard ones. Sample usage: int my_string_to_char(Callback1 *d,const string &s) int f(const char*); string s=hello; Slot1 s2=convert(slot(f),my_string_to_char); s2(s); */ #include #ifdef SIGC_CXX_NAMESPACES namespace SigC { #endif /**************************************************************** ***** Adaptor Convert Slot 1 ****************************************************************/ template struct AdaptorConvertSlot1_1: public AdaptorSlot_ { #ifdef SIGC_CXX_PARTIAL_SPEC typedef R1 RType; #else typedef typename Trait::type RType; #endif typedef Slot1 SlotType; typedef Slot1 InSlotType; typedef typename InSlotType::Callback Callback; typedef RType (*Func) (Callback*,P1); typedef R1 (*InFunc)(Callback*,P1); typedef CallDataObj3 CallData; static RType callback(void* d,P1 p1) { CallData* data=(CallData*)d; return (data->func)(data->obj,p1); } static SlotData* create(SlotData *s,InFunc func) { SlotData* tmp=(SlotData*)s; AdaptorNode *node=new AdaptorNode(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.func=(Func)func; data.obj=(Callback*)&(node->data_); return tmp; } }; #ifndef SIGC_CXX_VOID_RETURN #ifdef SIGC_CXX_PARTIAL_SPEC template struct AdaptorConvertSlot1_1 : public AdaptorSlot_ { typedef void RType; typedef Slot1 SlotType; typedef Slot1 InSlotType; typedef typename InSlotType::Callback Callback; typedef RType (*Func) (Callback*,P1); typedef void (*InFunc)(Callback*,P1); typedef CallDataObj3 CallData; static RType callback(void* d,P1 p1) { CallData* data=(CallData*)d; (data->func)(data->obj,p1); } static SlotData* create(SlotData *s,InFunc func) { SlotData* tmp=(SlotData*)s; AdaptorNode *node=new AdaptorNode(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.func=(Func)func; data.obj=(Callback*)&(node->data_); return tmp; } }; #endif #endif template Slot1 convert(const Slot1 &s, R1 (*func)(Callback1*,P1)) {return AdaptorConvertSlot1_1::create(s.obj(),func); } /**************************************************************** ***** Adaptor Convert Slot 2 ****************************************************************/ template struct AdaptorConvertSlot2_2: public AdaptorSlot_ { #ifdef SIGC_CXX_PARTIAL_SPEC typedef R1 RType; #else typedef typename Trait::type RType; #endif typedef Slot2 SlotType; typedef Slot2 InSlotType; typedef typename InSlotType::Callback Callback; typedef RType (*Func) (Callback*,P1,P2); typedef R1 (*InFunc)(Callback*,P1,P2); typedef CallDataObj3 CallData; static RType callback(void* d,P1 p1,P2 p2) { CallData* data=(CallData*)d; return (data->func)(data->obj,p1,p2); } static SlotData* create(SlotData *s,InFunc func) { SlotData* tmp=(SlotData*)s; AdaptorNode *node=new AdaptorNode(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.func=(Func)func; data.obj=(Callback*)&(node->data_); return tmp; } }; #ifndef SIGC_CXX_VOID_RETURN #ifdef SIGC_CXX_PARTIAL_SPEC template struct AdaptorConvertSlot2_2 : public AdaptorSlot_ { typedef void RType; typedef Slot2 SlotType; typedef Slot2 InSlotType; typedef typename InSlotType::Callback Callback; typedef RType (*Func) (Callback*,P1,P2); typedef void (*InFunc)(Callback*,P1,P2); typedef CallDataObj3 CallData; static RType callback(void* d,P1 p1,P2 p2) { CallData* data=(CallData*)d; (data->func)(data->obj,p1,p2); } static SlotData* create(SlotData *s,InFunc func) { SlotData* tmp=(SlotData*)s; AdaptorNode *node=new AdaptorNode(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.func=(Func)func; data.obj=(Callback*)&(node->data_); return tmp; } }; #endif #endif template Slot2 convert(const Slot2 &s, R1 (*func)(Callback2*,P1,P2)) {return AdaptorConvertSlot2_2::create(s.obj(),func); } /**************************************************************** ***** Adaptor Convert Slot 3 ****************************************************************/ template struct AdaptorConvertSlot3_3: public AdaptorSlot_ { #ifdef SIGC_CXX_PARTIAL_SPEC typedef R1 RType; #else typedef typename Trait::type RType; #endif typedef Slot3 SlotType; typedef Slot3 InSlotType; typedef typename InSlotType::Callback Callback; typedef RType (*Func) (Callback*,P1,P2,P3); typedef R1 (*InFunc)(Callback*,P1,P2,P3); typedef CallDataObj3 CallData; static RType callback(void* d,P1 p1,P2 p2,P3 p3) { CallData* data=(CallData*)d; return (data->func)(data->obj,p1,p2,p3); } static SlotData* create(SlotData *s,InFunc func) { SlotData* tmp=(SlotData*)s; AdaptorNode *node=new AdaptorNode(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.func=(Func)func; data.obj=(Callback*)&(node->data_); return tmp; } }; #ifndef SIGC_CXX_VOID_RETURN #ifdef SIGC_CXX_PARTIAL_SPEC template struct AdaptorConvertSlot3_3 : public AdaptorSlot_ { typedef void RType; typedef Slot3 SlotType; typedef Slot3 InSlotType; typedef typename InSlotType::Callback Callback; typedef RType (*Func) (Callback*,P1,P2,P3); typedef void (*InFunc)(Callback*,P1,P2,P3); typedef CallDataObj3 CallData; static RType callback(void* d,P1 p1,P2 p2,P3 p3) { CallData* data=(CallData*)d; (data->func)(data->obj,p1,p2,p3); } static SlotData* create(SlotData *s,InFunc func) { SlotData* tmp=(SlotData*)s; AdaptorNode *node=new AdaptorNode(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.func=(Func)func; data.obj=(Callback*)&(node->data_); return tmp; } }; #endif #endif template Slot3 convert(const Slot3 &s, R1 (*func)(Callback3*,P1,P2,P3)) {return AdaptorConvertSlot3_3::create(s.obj(),func); } /**************************************************************** ***** Adaptor Convert Slot 4 ****************************************************************/ template struct AdaptorConvertSlot4_4: public AdaptorSlot_ { #ifdef SIGC_CXX_PARTIAL_SPEC typedef R1 RType; #else typedef typename Trait::type RType; #endif typedef Slot4 SlotType; typedef Slot4 InSlotType; typedef typename InSlotType::Callback Callback; typedef RType (*Func) (Callback*,P1,P2,P3,P4); typedef R1 (*InFunc)(Callback*,P1,P2,P3,P4); typedef CallDataObj3 CallData; static RType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4) { CallData* data=(CallData*)d; return (data->func)(data->obj,p1,p2,p3,p4); } static SlotData* create(SlotData *s,InFunc func) { SlotData* tmp=(SlotData*)s; AdaptorNode *node=new AdaptorNode(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.func=(Func)func; data.obj=(Callback*)&(node->data_); return tmp; } }; #ifndef SIGC_CXX_VOID_RETURN #ifdef SIGC_CXX_PARTIAL_SPEC template struct AdaptorConvertSlot4_4 : public AdaptorSlot_ { typedef void RType; typedef Slot4 SlotType; typedef Slot4 InSlotType; typedef typename InSlotType::Callback Callback; typedef RType (*Func) (Callback*,P1,P2,P3,P4); typedef void (*InFunc)(Callback*,P1,P2,P3,P4); typedef CallDataObj3 CallData; static RType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4) { CallData* data=(CallData*)d; (data->func)(data->obj,p1,p2,p3,p4); } static SlotData* create(SlotData *s,InFunc func) { SlotData* tmp=(SlotData*)s; AdaptorNode *node=new AdaptorNode(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.func=(Func)func; data.obj=(Callback*)&(node->data_); return tmp; } }; #endif #endif template Slot4 convert(const Slot4 &s, R1 (*func)(Callback4*,P1,P2,P3,P4)) {return AdaptorConvertSlot4_4::create(s.obj(),func); } /**************************************************************** ***** Adaptor Convert Slot 5 ****************************************************************/ template struct AdaptorConvertSlot5_5: public AdaptorSlot_ { #ifdef SIGC_CXX_PARTIAL_SPEC typedef R1 RType; #else typedef typename Trait::type RType; #endif typedef Slot5 SlotType; typedef Slot5 InSlotType; typedef typename InSlotType::Callback Callback; typedef RType (*Func) (Callback*,P1,P2,P3,P4,P5); typedef R1 (*InFunc)(Callback*,P1,P2,P3,P4,P5); typedef CallDataObj3 CallData; static RType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5) { CallData* data=(CallData*)d; return (data->func)(data->obj,p1,p2,p3,p4,p5); } static SlotData* create(SlotData *s,InFunc func) { SlotData* tmp=(SlotData*)s; AdaptorNode *node=new AdaptorNode(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.func=(Func)func; data.obj=(Callback*)&(node->data_); return tmp; } }; #ifndef SIGC_CXX_VOID_RETURN #ifdef SIGC_CXX_PARTIAL_SPEC template struct AdaptorConvertSlot5_5 : public AdaptorSlot_ { typedef void RType; typedef Slot5 SlotType; typedef Slot5 InSlotType; typedef typename InSlotType::Callback Callback; typedef RType (*Func) (Callback*,P1,P2,P3,P4,P5); typedef void (*InFunc)(Callback*,P1,P2,P3,P4,P5); typedef CallDataObj3 CallData; static RType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5) { CallData* data=(CallData*)d; (data->func)(data->obj,p1,p2,p3,p4,p5); } static SlotData* create(SlotData *s,InFunc func) { SlotData* tmp=(SlotData*)s; AdaptorNode *node=new AdaptorNode(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.func=(Func)func; data.obj=(Callback*)&(node->data_); return tmp; } }; #endif #endif template Slot5 convert(const Slot5 &s, R1 (*func)(Callback5*,P1,P2,P3,P4,P5)) {return AdaptorConvertSlot5_5::create(s.obj(),func); } /**************************************************************** ***** Adaptor Convert Slot 6 ****************************************************************/ template struct AdaptorConvertSlot6_6: public AdaptorSlot_ { #ifdef SIGC_CXX_PARTIAL_SPEC typedef R1 RType; #else typedef typename Trait::type RType; #endif typedef Slot6 SlotType; typedef Slot6 InSlotType; typedef typename InSlotType::Callback Callback; typedef RType (*Func) (Callback*,P1,P2,P3,P4,P5,P6); typedef R1 (*InFunc)(Callback*,P1,P2,P3,P4,P5,P6); typedef CallDataObj3 CallData; static RType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5,P6 p6) { CallData* data=(CallData*)d; return (data->func)(data->obj,p1,p2,p3,p4,p5,p6); } static SlotData* create(SlotData *s,InFunc func) { SlotData* tmp=(SlotData*)s; AdaptorNode *node=new AdaptorNode(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.func=(Func)func; data.obj=(Callback*)&(node->data_); return tmp; } }; #ifndef SIGC_CXX_VOID_RETURN #ifdef SIGC_CXX_PARTIAL_SPEC template struct AdaptorConvertSlot6_6 : public AdaptorSlot_ { typedef void RType; typedef Slot6 SlotType; typedef Slot6 InSlotType; typedef typename InSlotType::Callback Callback; typedef RType (*Func) (Callback*,P1,P2,P3,P4,P5,P6); typedef void (*InFunc)(Callback*,P1,P2,P3,P4,P5,P6); typedef CallDataObj3 CallData; static RType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5,P6 p6) { CallData* data=(CallData*)d; (data->func)(data->obj,p1,p2,p3,p4,p5,p6); } static SlotData* create(SlotData *s,InFunc func) { SlotData* tmp=(SlotData*)s; AdaptorNode *node=new AdaptorNode(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.func=(Func)func; data.obj=(Callback*)&(node->data_); return tmp; } }; #endif #endif template Slot6 convert(const Slot6 &s, R1 (*func)(Callback6*,P1,P2,P3,P4,P5,P6)) {return AdaptorConvertSlot6_6::create(s.obj(),func); } /**************************************************************** ***** Adaptor Convert Slot 7 ****************************************************************/ template struct AdaptorConvertSlot7_7: public AdaptorSlot_ { #ifdef SIGC_CXX_PARTIAL_SPEC typedef R1 RType; #else typedef typename Trait::type RType; #endif typedef Slot7 SlotType; typedef Slot7 InSlotType; typedef typename InSlotType::Callback Callback; typedef RType (*Func) (Callback*,P1,P2,P3,P4,P5,P6,P7); typedef R1 (*InFunc)(Callback*,P1,P2,P3,P4,P5,P6,P7); typedef CallDataObj3 CallData; static RType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5,P6 p6,P7 p7) { CallData* data=(CallData*)d; return (data->func)(data->obj,p1,p2,p3,p4,p5,p6,p7); } static SlotData* create(SlotData *s,InFunc func) { SlotData* tmp=(SlotData*)s; AdaptorNode *node=new AdaptorNode(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.func=(Func)func; data.obj=(Callback*)&(node->data_); return tmp; } }; #ifndef SIGC_CXX_VOID_RETURN #ifdef SIGC_CXX_PARTIAL_SPEC template struct AdaptorConvertSlot7_7 : public AdaptorSlot_ { typedef void RType; typedef Slot7 SlotType; typedef Slot7 InSlotType; typedef typename InSlotType::Callback Callback; typedef RType (*Func) (Callback*,P1,P2,P3,P4,P5,P6,P7); typedef void (*InFunc)(Callback*,P1,P2,P3,P4,P5,P6,P7); typedef CallDataObj3 CallData; static RType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5,P6 p6,P7 p7) { CallData* data=(CallData*)d; (data->func)(data->obj,p1,p2,p3,p4,p5,p6,p7); } static SlotData* create(SlotData *s,InFunc func) { SlotData* tmp=(SlotData*)s; AdaptorNode *node=new AdaptorNode(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.func=(Func)func; data.obj=(Callback*)&(node->data_); return tmp; } }; #endif #endif template Slot7 convert(const Slot7 &s, R1 (*func)(Callback7*,P1,P2,P3,P4,P5,P6,P7)) {return AdaptorConvertSlot7_7::create(s.obj(),func); } #ifdef SIGC_CXX_NAMESPACES } // namespace #endif #endif