// -*- c++ -*- /* This is a generated file, do not edit. Generated from ../sigc++/macros/rettype.h.m4 */ #ifndef SIGCXX_RETTYPE_H #define SIGCXX_RETTYPE_H /* SigC::rettype ------------- rettype() alters a Slot by changing the return type. Only allowed conversions or conversions to void can properly be implemented. The type must always be specified as a template parameter. Simple Sample usage: int f(int); Slot1 s1=rettype(slot(&f)); Slot1 s2=rettype(slot(&f)); */ #include #ifdef SIGC_CXX_NAMESPACES namespace SigC { #endif /**************************************************************** ***** Adaptor Rettype Slot 0 ****************************************************************/ template struct AdaptorRettypeSlot0_ : public AdaptorSlot_ { #ifdef SIGC_CXX_PARTIAL_SPEC typedef R1 RType; #else typedef typename Trait::type RType; #endif typedef Slot0 SlotType; typedef Slot0 InSlotType; typedef AdaptorNode Node; typedef CallDataObj2 CallData; static RType callback(void* d) { CallData* data=(CallData*)d; Node* node=data->obj; return RType(((typename InSlotType::Callback&)(node->data_))()); } static SlotData* create(SlotData *s) { SlotData* tmp=(SlotData*)s; Node *node=new Node(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.obj=node; return tmp; } }; #ifndef SIGC_CXX_VOID_RETURN #ifdef SIGC_CXX_PARTIAL_SPEC template < class R2> struct AdaptorRettypeSlot0_ : public AdaptorSlot_ { typedef void RType; typedef Slot0 SlotType; typedef Slot0 InSlotType; typedef AdaptorNode Node; typedef CallDataObj2 CallData; static RType callback(void* d) { CallData* data=(CallData*)d; Node* node=data->obj; ((typename InSlotType::Callback&)(node->data_))(); } static SlotData* create(SlotData *s) { SlotData* tmp=(SlotData*)s; Node *node=new Node(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.obj=node; return tmp; } }; #endif #endif template Slot0 rettype(const Slot0 &s) {return AdaptorRettypeSlot0_::create(s.obj()); } /**************************************************************** ***** Adaptor Rettype Slot 1 ****************************************************************/ template struct AdaptorRettypeSlot1_ : public AdaptorSlot_ { #ifdef SIGC_CXX_PARTIAL_SPEC typedef R1 RType; #else typedef typename Trait::type RType; #endif typedef Slot1 SlotType; typedef Slot1 InSlotType; typedef AdaptorNode Node; typedef CallDataObj2 CallData; static RType callback(void* d,P1 p1) { CallData* data=(CallData*)d; Node* node=data->obj; return RType(((typename InSlotType::Callback&)(node->data_))(p1)); } static SlotData* create(SlotData *s) { SlotData* tmp=(SlotData*)s; Node *node=new Node(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.obj=node; return tmp; } }; #ifndef SIGC_CXX_VOID_RETURN #ifdef SIGC_CXX_PARTIAL_SPEC template < class P1, class R2> struct AdaptorRettypeSlot1_ : public AdaptorSlot_ { typedef void RType; typedef Slot1 SlotType; typedef Slot1 InSlotType; typedef AdaptorNode Node; typedef CallDataObj2 CallData; static RType callback(void* d,P1 p1) { CallData* data=(CallData*)d; Node* node=data->obj; ((typename InSlotType::Callback&)(node->data_))(p1); } static SlotData* create(SlotData *s) { SlotData* tmp=(SlotData*)s; Node *node=new Node(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.obj=node; return tmp; } }; #endif #endif template Slot1 rettype(const Slot1 &s) {return AdaptorRettypeSlot1_::create(s.obj()); } /**************************************************************** ***** Adaptor Rettype Slot 2 ****************************************************************/ template struct AdaptorRettypeSlot2_ : public AdaptorSlot_ { #ifdef SIGC_CXX_PARTIAL_SPEC typedef R1 RType; #else typedef typename Trait::type RType; #endif typedef Slot2 SlotType; typedef Slot2 InSlotType; typedef AdaptorNode Node; typedef CallDataObj2 CallData; static RType callback(void* d,P1 p1,P2 p2) { CallData* data=(CallData*)d; Node* node=data->obj; return RType(((typename InSlotType::Callback&)(node->data_))(p1,p2)); } static SlotData* create(SlotData *s) { SlotData* tmp=(SlotData*)s; Node *node=new Node(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.obj=node; return tmp; } }; #ifndef SIGC_CXX_VOID_RETURN #ifdef SIGC_CXX_PARTIAL_SPEC template < class P1,class P2, class R2> struct AdaptorRettypeSlot2_ : public AdaptorSlot_ { typedef void RType; typedef Slot2 SlotType; typedef Slot2 InSlotType; typedef AdaptorNode Node; typedef CallDataObj2 CallData; static RType callback(void* d,P1 p1,P2 p2) { CallData* data=(CallData*)d; Node* node=data->obj; ((typename InSlotType::Callback&)(node->data_))(p1,p2); } static SlotData* create(SlotData *s) { SlotData* tmp=(SlotData*)s; Node *node=new Node(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.obj=node; return tmp; } }; #endif #endif template Slot2 rettype(const Slot2 &s) {return AdaptorRettypeSlot2_::create(s.obj()); } /**************************************************************** ***** Adaptor Rettype Slot 3 ****************************************************************/ template struct AdaptorRettypeSlot3_ : public AdaptorSlot_ { #ifdef SIGC_CXX_PARTIAL_SPEC typedef R1 RType; #else typedef typename Trait::type RType; #endif typedef Slot3 SlotType; typedef Slot3 InSlotType; typedef AdaptorNode Node; typedef CallDataObj2 CallData; static RType callback(void* d,P1 p1,P2 p2,P3 p3) { CallData* data=(CallData*)d; Node* node=data->obj; return RType(((typename InSlotType::Callback&)(node->data_))(p1,p2,p3)); } static SlotData* create(SlotData *s) { SlotData* tmp=(SlotData*)s; Node *node=new Node(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.obj=node; return tmp; } }; #ifndef SIGC_CXX_VOID_RETURN #ifdef SIGC_CXX_PARTIAL_SPEC template < class P1,class P2,class P3, class R2> struct AdaptorRettypeSlot3_ : public AdaptorSlot_ { typedef void RType; typedef Slot3 SlotType; typedef Slot3 InSlotType; typedef AdaptorNode Node; typedef CallDataObj2 CallData; static RType callback(void* d,P1 p1,P2 p2,P3 p3) { CallData* data=(CallData*)d; Node* node=data->obj; ((typename InSlotType::Callback&)(node->data_))(p1,p2,p3); } static SlotData* create(SlotData *s) { SlotData* tmp=(SlotData*)s; Node *node=new Node(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.obj=node; return tmp; } }; #endif #endif template Slot3 rettype(const Slot3 &s) {return AdaptorRettypeSlot3_::create(s.obj()); } /**************************************************************** ***** Adaptor Rettype Slot 4 ****************************************************************/ template struct AdaptorRettypeSlot4_ : public AdaptorSlot_ { #ifdef SIGC_CXX_PARTIAL_SPEC typedef R1 RType; #else typedef typename Trait::type RType; #endif typedef Slot4 SlotType; typedef Slot4 InSlotType; typedef AdaptorNode Node; typedef CallDataObj2 CallData; static RType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4) { CallData* data=(CallData*)d; Node* node=data->obj; return RType(((typename InSlotType::Callback&)(node->data_))(p1,p2,p3,p4)); } static SlotData* create(SlotData *s) { SlotData* tmp=(SlotData*)s; Node *node=new Node(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.obj=node; return tmp; } }; #ifndef SIGC_CXX_VOID_RETURN #ifdef SIGC_CXX_PARTIAL_SPEC template < class P1,class P2,class P3,class P4, class R2> struct AdaptorRettypeSlot4_ : public AdaptorSlot_ { typedef void RType; typedef Slot4 SlotType; typedef Slot4 InSlotType; typedef AdaptorNode Node; typedef CallDataObj2 CallData; static RType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4) { CallData* data=(CallData*)d; Node* node=data->obj; ((typename InSlotType::Callback&)(node->data_))(p1,p2,p3,p4); } static SlotData* create(SlotData *s) { SlotData* tmp=(SlotData*)s; Node *node=new Node(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.obj=node; return tmp; } }; #endif #endif template Slot4 rettype(const Slot4 &s) {return AdaptorRettypeSlot4_::create(s.obj()); } /**************************************************************** ***** Adaptor Rettype Slot 5 ****************************************************************/ template struct AdaptorRettypeSlot5_ : public AdaptorSlot_ { #ifdef SIGC_CXX_PARTIAL_SPEC typedef R1 RType; #else typedef typename Trait::type RType; #endif typedef Slot5 SlotType; typedef Slot5 InSlotType; typedef AdaptorNode Node; typedef CallDataObj2 CallData; static RType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5) { CallData* data=(CallData*)d; Node* node=data->obj; return RType(((typename InSlotType::Callback&)(node->data_))(p1,p2,p3,p4,p5)); } static SlotData* create(SlotData *s) { SlotData* tmp=(SlotData*)s; Node *node=new Node(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.obj=node; return tmp; } }; #ifndef SIGC_CXX_VOID_RETURN #ifdef SIGC_CXX_PARTIAL_SPEC template < class P1,class P2,class P3,class P4,class P5, class R2> struct AdaptorRettypeSlot5_ : public AdaptorSlot_ { typedef void RType; typedef Slot5 SlotType; typedef Slot5 InSlotType; typedef AdaptorNode Node; typedef CallDataObj2 CallData; static RType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5) { CallData* data=(CallData*)d; Node* node=data->obj; ((typename InSlotType::Callback&)(node->data_))(p1,p2,p3,p4,p5); } static SlotData* create(SlotData *s) { SlotData* tmp=(SlotData*)s; Node *node=new Node(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.obj=node; return tmp; } }; #endif #endif template Slot5 rettype(const Slot5 &s) {return AdaptorRettypeSlot5_::create(s.obj()); } /**************************************************************** ***** Adaptor Rettype Slot 6 ****************************************************************/ template struct AdaptorRettypeSlot6_ : public AdaptorSlot_ { #ifdef SIGC_CXX_PARTIAL_SPEC typedef R1 RType; #else typedef typename Trait::type RType; #endif typedef Slot6 SlotType; typedef Slot6 InSlotType; typedef AdaptorNode Node; typedef CallDataObj2 CallData; static RType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5,P6 p6) { CallData* data=(CallData*)d; Node* node=data->obj; return RType(((typename InSlotType::Callback&)(node->data_))(p1,p2,p3,p4,p5,p6)); } static SlotData* create(SlotData *s) { SlotData* tmp=(SlotData*)s; Node *node=new Node(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.obj=node; return tmp; } }; #ifndef SIGC_CXX_VOID_RETURN #ifdef SIGC_CXX_PARTIAL_SPEC template < class P1,class P2,class P3,class P4,class P5,class P6, class R2> struct AdaptorRettypeSlot6_ : public AdaptorSlot_ { typedef void RType; typedef Slot6 SlotType; typedef Slot6 InSlotType; typedef AdaptorNode Node; typedef CallDataObj2 CallData; static RType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5,P6 p6) { CallData* data=(CallData*)d; Node* node=data->obj; ((typename InSlotType::Callback&)(node->data_))(p1,p2,p3,p4,p5,p6); } static SlotData* create(SlotData *s) { SlotData* tmp=(SlotData*)s; Node *node=new Node(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.obj=node; return tmp; } }; #endif #endif template Slot6 rettype(const Slot6 &s) {return AdaptorRettypeSlot6_::create(s.obj()); } /**************************************************************** ***** Adaptor Rettype Slot 7 ****************************************************************/ template struct AdaptorRettypeSlot7_ : public AdaptorSlot_ { #ifdef SIGC_CXX_PARTIAL_SPEC typedef R1 RType; #else typedef typename Trait::type RType; #endif typedef Slot7 SlotType; typedef Slot7 InSlotType; typedef AdaptorNode Node; typedef CallDataObj2 CallData; static RType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5,P6 p6,P7 p7) { CallData* data=(CallData*)d; Node* node=data->obj; return RType(((typename InSlotType::Callback&)(node->data_))(p1,p2,p3,p4,p5,p6,p7)); } static SlotData* create(SlotData *s) { SlotData* tmp=(SlotData*)s; Node *node=new Node(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.obj=node; return tmp; } }; #ifndef SIGC_CXX_VOID_RETURN #ifdef SIGC_CXX_PARTIAL_SPEC template < class P1,class P2,class P3,class P4,class P5,class P6,class P7, class R2> struct AdaptorRettypeSlot7_ : public AdaptorSlot_ { typedef void RType; typedef Slot7 SlotType; typedef Slot7 InSlotType; typedef AdaptorNode Node; typedef CallDataObj2 CallData; static RType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5,P6 p6,P7 p7) { CallData* data=(CallData*)d; Node* node=data->obj; ((typename InSlotType::Callback&)(node->data_))(p1,p2,p3,p4,p5,p6,p7); } static SlotData* create(SlotData *s) { SlotData* tmp=(SlotData*)s; Node *node=new Node(); copy_callback(tmp,node); CallData &data=reinterpret_cast(tmp->data_); data.callback=&callback; data.obj=node; return tmp; } }; #endif #endif template Slot7 rettype(const Slot7 &s) {return AdaptorRettypeSlot7_::create(s.obj()); } #ifdef SIGC_CXX_NAMESPACES } // namespace #endif #endif