Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. // -*- c++ -*-
  2. /* This is a generated file, do not edit.  Generated from ../sigc++/macros/convert.h.m4 */
  3.  
  4. #ifndef SIGCXX_CONVERT_H
  5. #define SIGCXX_CONVERT_H
  6.  
  7. /*
  8.   SigC::convert
  9.   -------------
  10.   convert() alters a Slot by assigning a conversion function
  11.   which can completely alter the parameter types of a slot.
  12.  
  13.   Only convert functions for changing with same number of
  14.   arguments is compiled by default.  See examples/custom_convert.h.m4
  15.   for details on how to build non standard ones.
  16.  
  17.   Sample usage:
  18.     int my_string_to_char(Callback1<int,const char*> *d,const string &s)
  19.     int f(const char*);
  20.     string s=hello;
  21.  
  22.  
  23.     Slot1<int,const string &>  s2=convert(slot(f),my_string_to_char);
  24.     s2(s);  
  25.  
  26. */
  27. #include <sigc++/adaptor.h>
  28.  
  29. #ifdef SIGC_CXX_NAMESPACES
  30. namespace SigC
  31. {
  32. #endif
  33.  
  34.  
  35.  
  36. /****************************************************************
  37. ***** Adaptor Convert Slot 1
  38. ****************************************************************/
  39. template <class R1,class P1,
  40.           class R2,class Q1>
  41. struct AdaptorConvertSlot1_1: public AdaptorSlot_
  42.   {
  43. #ifdef SIGC_CXX_PARTIAL_SPEC
  44.    typedef R1 RType;
  45. #else
  46.    typedef typename Trait<R1>::type RType;
  47. #endif
  48.    typedef Slot1<R1,P1> SlotType;
  49.    typedef Slot1<R2,Q1> InSlotType;
  50.    typedef typename InSlotType::Callback Callback;
  51.    typedef RType (*Func)  (Callback*,P1);
  52.    typedef R1    (*InFunc)(Callback*,P1);
  53.    typedef CallDataObj3<typename SlotType::Func,Callback,Func> CallData;
  54.  
  55.    static RType callback(void* d,P1 p1)
  56.      {
  57.       CallData* data=(CallData*)d;
  58.       return (data->func)(data->obj,p1);
  59.      }
  60.  
  61.    static SlotData* create(SlotData *s,InFunc func)
  62.      {
  63.       SlotData* tmp=(SlotData*)s;
  64.       AdaptorNode *node=new AdaptorNode();
  65.       copy_callback(tmp,node);
  66.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  67.       data.callback=&callback;
  68.       data.func=(Func)func;
  69.       data.obj=(Callback*)&(node->data_);
  70.       return tmp;
  71.      }
  72.   };
  73.  
  74.  
  75.  
  76. #ifndef SIGC_CXX_VOID_RETURN
  77. #ifdef SIGC_CXX_PARTIAL_SPEC
  78. template <class P1,
  79.           class R2,class Q1>
  80. struct AdaptorConvertSlot1_1
  81.          <void,P1,
  82.           R2,Q1>
  83.   : public AdaptorSlot_
  84.   {
  85.    typedef void RType;
  86.    typedef Slot1<void,P1> SlotType;
  87.    typedef Slot1<R2,Q1> InSlotType;
  88.    typedef typename InSlotType::Callback Callback;
  89.    typedef RType (*Func)  (Callback*,P1);
  90.    typedef void    (*InFunc)(Callback*,P1);
  91.    typedef CallDataObj3<typename SlotType::Func,Callback,Func> CallData;
  92.  
  93.    static RType callback(void* d,P1 p1)
  94.      {
  95.       CallData* data=(CallData*)d;
  96.        (data->func)(data->obj,p1);
  97.      }
  98.  
  99.    static SlotData* create(SlotData *s,InFunc func)
  100.      {
  101.       SlotData* tmp=(SlotData*)s;
  102.       AdaptorNode *node=new AdaptorNode();
  103.       copy_callback(tmp,node);
  104.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  105.       data.callback=&callback;
  106.       data.func=(Func)func;
  107.       data.obj=(Callback*)&(node->data_);
  108.       return tmp;
  109.      }
  110.   };
  111.  
  112.  
  113. #endif
  114. #endif
  115.  
  116. template <class R1,class P1,
  117.           class R2,class Q1>
  118. Slot1<R1,P1>
  119.   convert(const Slot1<R2,Q1> &s,
  120.           R1 (*func)(Callback1<R2,Q1>*,P1))
  121.   {return AdaptorConvertSlot1_1<R1,P1,
  122.            R2,Q1>::create(s.obj(),func);
  123.   }
  124.  
  125.  
  126. /****************************************************************
  127. ***** Adaptor Convert Slot 2
  128. ****************************************************************/
  129. template <class R1,class P1,class P2,
  130.           class R2,class Q1,class Q2>
  131. struct AdaptorConvertSlot2_2: public AdaptorSlot_
  132.   {
  133. #ifdef SIGC_CXX_PARTIAL_SPEC
  134.    typedef R1 RType;
  135. #else
  136.    typedef typename Trait<R1>::type RType;
  137. #endif
  138.    typedef Slot2<R1,P1,P2> SlotType;
  139.    typedef Slot2<R2,Q1,Q2> InSlotType;
  140.    typedef typename InSlotType::Callback Callback;
  141.    typedef RType (*Func)  (Callback*,P1,P2);
  142.    typedef R1    (*InFunc)(Callback*,P1,P2);
  143.    typedef CallDataObj3<typename SlotType::Func,Callback,Func> CallData;
  144.  
  145.    static RType callback(void* d,P1 p1,P2 p2)
  146.      {
  147.       CallData* data=(CallData*)d;
  148.       return (data->func)(data->obj,p1,p2);
  149.      }
  150.  
  151.    static SlotData* create(SlotData *s,InFunc func)
  152.      {
  153.       SlotData* tmp=(SlotData*)s;
  154.       AdaptorNode *node=new AdaptorNode();
  155.       copy_callback(tmp,node);
  156.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  157.       data.callback=&callback;
  158.       data.func=(Func)func;
  159.       data.obj=(Callback*)&(node->data_);
  160.       return tmp;
  161.      }
  162.   };
  163.  
  164.  
  165.  
  166. #ifndef SIGC_CXX_VOID_RETURN
  167. #ifdef SIGC_CXX_PARTIAL_SPEC
  168. template <class P1,class P2,
  169.           class R2,class Q1,class Q2>
  170. struct AdaptorConvertSlot2_2
  171.          <void,P1,P2,
  172.           R2,Q1,Q2>
  173.   : public AdaptorSlot_
  174.   {
  175.    typedef void RType;
  176.    typedef Slot2<void,P1,P2> SlotType;
  177.    typedef Slot2<R2,Q1,Q2> InSlotType;
  178.    typedef typename InSlotType::Callback Callback;
  179.    typedef RType (*Func)  (Callback*,P1,P2);
  180.    typedef void    (*InFunc)(Callback*,P1,P2);
  181.    typedef CallDataObj3<typename SlotType::Func,Callback,Func> CallData;
  182.  
  183.    static RType callback(void* d,P1 p1,P2 p2)
  184.      {
  185.       CallData* data=(CallData*)d;
  186.        (data->func)(data->obj,p1,p2);
  187.      }
  188.  
  189.    static SlotData* create(SlotData *s,InFunc func)
  190.      {
  191.       SlotData* tmp=(SlotData*)s;
  192.       AdaptorNode *node=new AdaptorNode();
  193.       copy_callback(tmp,node);
  194.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  195.       data.callback=&callback;
  196.       data.func=(Func)func;
  197.       data.obj=(Callback*)&(node->data_);
  198.       return tmp;
  199.      }
  200.   };
  201.  
  202.  
  203. #endif
  204. #endif
  205.  
  206. template <class R1,class P1,class P2,
  207.           class R2,class Q1,class Q2>
  208. Slot2<R1,P1,P2>
  209.   convert(const Slot2<R2,Q1,Q2> &s,
  210.           R1 (*func)(Callback2<R2,Q1,Q2>*,P1,P2))
  211.   {return AdaptorConvertSlot2_2<R1,P1,P2,
  212.            R2,Q1,Q2>::create(s.obj(),func);
  213.   }
  214.  
  215.  
  216. /****************************************************************
  217. ***** Adaptor Convert Slot 3
  218. ****************************************************************/
  219. template <class R1,class P1,class P2,class P3,
  220.           class R2,class Q1,class Q2,class Q3>
  221. struct AdaptorConvertSlot3_3: public AdaptorSlot_
  222.   {
  223. #ifdef SIGC_CXX_PARTIAL_SPEC
  224.    typedef R1 RType;
  225. #else
  226.    typedef typename Trait<R1>::type RType;
  227. #endif
  228.    typedef Slot3<R1,P1,P2,P3> SlotType;
  229.    typedef Slot3<R2,Q1,Q2,Q3> InSlotType;
  230.    typedef typename InSlotType::Callback Callback;
  231.    typedef RType (*Func)  (Callback*,P1,P2,P3);
  232.    typedef R1    (*InFunc)(Callback*,P1,P2,P3);
  233.    typedef CallDataObj3<typename SlotType::Func,Callback,Func> CallData;
  234.  
  235.    static RType callback(void* d,P1 p1,P2 p2,P3 p3)
  236.      {
  237.       CallData* data=(CallData*)d;
  238.       return (data->func)(data->obj,p1,p2,p3);
  239.      }
  240.  
  241.    static SlotData* create(SlotData *s,InFunc func)
  242.      {
  243.       SlotData* tmp=(SlotData*)s;
  244.       AdaptorNode *node=new AdaptorNode();
  245.       copy_callback(tmp,node);
  246.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  247.       data.callback=&callback;
  248.       data.func=(Func)func;
  249.       data.obj=(Callback*)&(node->data_);
  250.       return tmp;
  251.      }
  252.   };
  253.  
  254.  
  255.  
  256. #ifndef SIGC_CXX_VOID_RETURN
  257. #ifdef SIGC_CXX_PARTIAL_SPEC
  258. template <class P1,class P2,class P3,
  259.           class R2,class Q1,class Q2,class Q3>
  260. struct AdaptorConvertSlot3_3
  261.          <void,P1,P2,P3,
  262.           R2,Q1,Q2,Q3>
  263.   : public AdaptorSlot_
  264.   {
  265.    typedef void RType;
  266.    typedef Slot3<void,P1,P2,P3> SlotType;
  267.    typedef Slot3<R2,Q1,Q2,Q3> InSlotType;
  268.    typedef typename InSlotType::Callback Callback;
  269.    typedef RType (*Func)  (Callback*,P1,P2,P3);
  270.    typedef void    (*InFunc)(Callback*,P1,P2,P3);
  271.    typedef CallDataObj3<typename SlotType::Func,Callback,Func> CallData;
  272.  
  273.    static RType callback(void* d,P1 p1,P2 p2,P3 p3)
  274.      {
  275.       CallData* data=(CallData*)d;
  276.        (data->func)(data->obj,p1,p2,p3);
  277.      }
  278.  
  279.    static SlotData* create(SlotData *s,InFunc func)
  280.      {
  281.       SlotData* tmp=(SlotData*)s;
  282.       AdaptorNode *node=new AdaptorNode();
  283.       copy_callback(tmp,node);
  284.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  285.       data.callback=&callback;
  286.       data.func=(Func)func;
  287.       data.obj=(Callback*)&(node->data_);
  288.       return tmp;
  289.      }
  290.   };
  291.  
  292.  
  293. #endif
  294. #endif
  295.  
  296. template <class R1,class P1,class P2,class P3,
  297.           class R2,class Q1,class Q2,class Q3>
  298. Slot3<R1,P1,P2,P3>
  299.   convert(const Slot3<R2,Q1,Q2,Q3> &s,
  300.           R1 (*func)(Callback3<R2,Q1,Q2,Q3>*,P1,P2,P3))
  301.   {return AdaptorConvertSlot3_3<R1,P1,P2,P3,
  302.            R2,Q1,Q2,Q3>::create(s.obj(),func);
  303.   }
  304.  
  305.  
  306. /****************************************************************
  307. ***** Adaptor Convert Slot 4
  308. ****************************************************************/
  309. template <class R1,class P1,class P2,class P3,class P4,
  310.           class R2,class Q1,class Q2,class Q3,class Q4>
  311. struct AdaptorConvertSlot4_4: public AdaptorSlot_
  312.   {
  313. #ifdef SIGC_CXX_PARTIAL_SPEC
  314.    typedef R1 RType;
  315. #else
  316.    typedef typename Trait<R1>::type RType;
  317. #endif
  318.    typedef Slot4<R1,P1,P2,P3,P4> SlotType;
  319.    typedef Slot4<R2,Q1,Q2,Q3,Q4> InSlotType;
  320.    typedef typename InSlotType::Callback Callback;
  321.    typedef RType (*Func)  (Callback*,P1,P2,P3,P4);
  322.    typedef R1    (*InFunc)(Callback*,P1,P2,P3,P4);
  323.    typedef CallDataObj3<typename SlotType::Func,Callback,Func> CallData;
  324.  
  325.    static RType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4)
  326.      {
  327.       CallData* data=(CallData*)d;
  328.       return (data->func)(data->obj,p1,p2,p3,p4);
  329.      }
  330.  
  331.    static SlotData* create(SlotData *s,InFunc func)
  332.      {
  333.       SlotData* tmp=(SlotData*)s;
  334.       AdaptorNode *node=new AdaptorNode();
  335.       copy_callback(tmp,node);
  336.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  337.       data.callback=&callback;
  338.       data.func=(Func)func;
  339.       data.obj=(Callback*)&(node->data_);
  340.       return tmp;
  341.      }
  342.   };
  343.  
  344.  
  345.  
  346. #ifndef SIGC_CXX_VOID_RETURN
  347. #ifdef SIGC_CXX_PARTIAL_SPEC
  348. template <class P1,class P2,class P3,class P4,
  349.           class R2,class Q1,class Q2,class Q3,class Q4>
  350. struct AdaptorConvertSlot4_4
  351.          <void,P1,P2,P3,P4,
  352.           R2,Q1,Q2,Q3,Q4>
  353.   : public AdaptorSlot_
  354.   {
  355.    typedef void RType;
  356.    typedef Slot4<void,P1,P2,P3,P4> SlotType;
  357.    typedef Slot4<R2,Q1,Q2,Q3,Q4> InSlotType;
  358.    typedef typename InSlotType::Callback Callback;
  359.    typedef RType (*Func)  (Callback*,P1,P2,P3,P4);
  360.    typedef void    (*InFunc)(Callback*,P1,P2,P3,P4);
  361.    typedef CallDataObj3<typename SlotType::Func,Callback,Func> CallData;
  362.  
  363.    static RType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4)
  364.      {
  365.       CallData* data=(CallData*)d;
  366.        (data->func)(data->obj,p1,p2,p3,p4);
  367.      }
  368.  
  369.    static SlotData* create(SlotData *s,InFunc func)
  370.      {
  371.       SlotData* tmp=(SlotData*)s;
  372.       AdaptorNode *node=new AdaptorNode();
  373.       copy_callback(tmp,node);
  374.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  375.       data.callback=&callback;
  376.       data.func=(Func)func;
  377.       data.obj=(Callback*)&(node->data_);
  378.       return tmp;
  379.      }
  380.   };
  381.  
  382.  
  383. #endif
  384. #endif
  385.  
  386. template <class R1,class P1,class P2,class P3,class P4,
  387.           class R2,class Q1,class Q2,class Q3,class Q4>
  388. Slot4<R1,P1,P2,P3,P4>
  389.   convert(const Slot4<R2,Q1,Q2,Q3,Q4> &s,
  390.           R1 (*func)(Callback4<R2,Q1,Q2,Q3,Q4>*,P1,P2,P3,P4))
  391.   {return AdaptorConvertSlot4_4<R1,P1,P2,P3,P4,
  392.            R2,Q1,Q2,Q3,Q4>::create(s.obj(),func);
  393.   }
  394.  
  395.  
  396. /****************************************************************
  397. ***** Adaptor Convert Slot 5
  398. ****************************************************************/
  399. template <class R1,class P1,class P2,class P3,class P4,class P5,
  400.           class R2,class Q1,class Q2,class Q3,class Q4,class Q5>
  401. struct AdaptorConvertSlot5_5: public AdaptorSlot_
  402.   {
  403. #ifdef SIGC_CXX_PARTIAL_SPEC
  404.    typedef R1 RType;
  405. #else
  406.    typedef typename Trait<R1>::type RType;
  407. #endif
  408.    typedef Slot5<R1,P1,P2,P3,P4,P5> SlotType;
  409.    typedef Slot5<R2,Q1,Q2,Q3,Q4,Q5> InSlotType;
  410.    typedef typename InSlotType::Callback Callback;
  411.    typedef RType (*Func)  (Callback*,P1,P2,P3,P4,P5);
  412.    typedef R1    (*InFunc)(Callback*,P1,P2,P3,P4,P5);
  413.    typedef CallDataObj3<typename SlotType::Func,Callback,Func> CallData;
  414.  
  415.    static RType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5)
  416.      {
  417.       CallData* data=(CallData*)d;
  418.       return (data->func)(data->obj,p1,p2,p3,p4,p5);
  419.      }
  420.  
  421.    static SlotData* create(SlotData *s,InFunc func)
  422.      {
  423.       SlotData* tmp=(SlotData*)s;
  424.       AdaptorNode *node=new AdaptorNode();
  425.       copy_callback(tmp,node);
  426.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  427.       data.callback=&callback;
  428.       data.func=(Func)func;
  429.       data.obj=(Callback*)&(node->data_);
  430.       return tmp;
  431.      }
  432.   };
  433.  
  434.  
  435.  
  436. #ifndef SIGC_CXX_VOID_RETURN
  437. #ifdef SIGC_CXX_PARTIAL_SPEC
  438. template <class P1,class P2,class P3,class P4,class P5,
  439.           class R2,class Q1,class Q2,class Q3,class Q4,class Q5>
  440. struct AdaptorConvertSlot5_5
  441.          <void,P1,P2,P3,P4,P5,
  442.           R2,Q1,Q2,Q3,Q4,Q5>
  443.   : public AdaptorSlot_
  444.   {
  445.    typedef void RType;
  446.    typedef Slot5<void,P1,P2,P3,P4,P5> SlotType;
  447.    typedef Slot5<R2,Q1,Q2,Q3,Q4,Q5> InSlotType;
  448.    typedef typename InSlotType::Callback Callback;
  449.    typedef RType (*Func)  (Callback*,P1,P2,P3,P4,P5);
  450.    typedef void    (*InFunc)(Callback*,P1,P2,P3,P4,P5);
  451.    typedef CallDataObj3<typename SlotType::Func,Callback,Func> CallData;
  452.  
  453.    static RType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5)
  454.      {
  455.       CallData* data=(CallData*)d;
  456.        (data->func)(data->obj,p1,p2,p3,p4,p5);
  457.      }
  458.  
  459.    static SlotData* create(SlotData *s,InFunc func)
  460.      {
  461.       SlotData* tmp=(SlotData*)s;
  462.       AdaptorNode *node=new AdaptorNode();
  463.       copy_callback(tmp,node);
  464.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  465.       data.callback=&callback;
  466.       data.func=(Func)func;
  467.       data.obj=(Callback*)&(node->data_);
  468.       return tmp;
  469.      }
  470.   };
  471.  
  472.  
  473. #endif
  474. #endif
  475.  
  476. template <class R1,class P1,class P2,class P3,class P4,class P5,
  477.           class R2,class Q1,class Q2,class Q3,class Q4,class Q5>
  478. Slot5<R1,P1,P2,P3,P4,P5>
  479.   convert(const Slot5<R2,Q1,Q2,Q3,Q4,Q5> &s,
  480.           R1 (*func)(Callback5<R2,Q1,Q2,Q3,Q4,Q5>*,P1,P2,P3,P4,P5))
  481.   {return AdaptorConvertSlot5_5<R1,P1,P2,P3,P4,P5,
  482.            R2,Q1,Q2,Q3,Q4,Q5>::create(s.obj(),func);
  483.   }
  484.  
  485.  
  486. /****************************************************************
  487. ***** Adaptor Convert Slot 6
  488. ****************************************************************/
  489. template <class R1,class P1,class P2,class P3,class P4,class P5,class P6,
  490.           class R2,class Q1,class Q2,class Q3,class Q4,class Q5,class Q6>
  491. struct AdaptorConvertSlot6_6: public AdaptorSlot_
  492.   {
  493. #ifdef SIGC_CXX_PARTIAL_SPEC
  494.    typedef R1 RType;
  495. #else
  496.    typedef typename Trait<R1>::type RType;
  497. #endif
  498.    typedef Slot6<R1,P1,P2,P3,P4,P5,P6> SlotType;
  499.    typedef Slot6<R2,Q1,Q2,Q3,Q4,Q5,Q6> InSlotType;
  500.    typedef typename InSlotType::Callback Callback;
  501.    typedef RType (*Func)  (Callback*,P1,P2,P3,P4,P5,P6);
  502.    typedef R1    (*InFunc)(Callback*,P1,P2,P3,P4,P5,P6);
  503.    typedef CallDataObj3<typename SlotType::Func,Callback,Func> CallData;
  504.  
  505.    static RType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5,P6 p6)
  506.      {
  507.       CallData* data=(CallData*)d;
  508.       return (data->func)(data->obj,p1,p2,p3,p4,p5,p6);
  509.      }
  510.  
  511.    static SlotData* create(SlotData *s,InFunc func)
  512.      {
  513.       SlotData* tmp=(SlotData*)s;
  514.       AdaptorNode *node=new AdaptorNode();
  515.       copy_callback(tmp,node);
  516.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  517.       data.callback=&callback;
  518.       data.func=(Func)func;
  519.       data.obj=(Callback*)&(node->data_);
  520.       return tmp;
  521.      }
  522.   };
  523.  
  524.  
  525.  
  526. #ifndef SIGC_CXX_VOID_RETURN
  527. #ifdef SIGC_CXX_PARTIAL_SPEC
  528. template <class P1,class P2,class P3,class P4,class P5,class P6,
  529.           class R2,class Q1,class Q2,class Q3,class Q4,class Q5,class Q6>
  530. struct AdaptorConvertSlot6_6
  531.          <void,P1,P2,P3,P4,P5,P6,
  532.           R2,Q1,Q2,Q3,Q4,Q5,Q6>
  533.   : public AdaptorSlot_
  534.   {
  535.    typedef void RType;
  536.    typedef Slot6<void,P1,P2,P3,P4,P5,P6> SlotType;
  537.    typedef Slot6<R2,Q1,Q2,Q3,Q4,Q5,Q6> InSlotType;
  538.    typedef typename InSlotType::Callback Callback;
  539.    typedef RType (*Func)  (Callback*,P1,P2,P3,P4,P5,P6);
  540.    typedef void    (*InFunc)(Callback*,P1,P2,P3,P4,P5,P6);
  541.    typedef CallDataObj3<typename SlotType::Func,Callback,Func> CallData;
  542.  
  543.    static RType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5,P6 p6)
  544.      {
  545.       CallData* data=(CallData*)d;
  546.        (data->func)(data->obj,p1,p2,p3,p4,p5,p6);
  547.      }
  548.  
  549.    static SlotData* create(SlotData *s,InFunc func)
  550.      {
  551.       SlotData* tmp=(SlotData*)s;
  552.       AdaptorNode *node=new AdaptorNode();
  553.       copy_callback(tmp,node);
  554.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  555.       data.callback=&callback;
  556.       data.func=(Func)func;
  557.       data.obj=(Callback*)&(node->data_);
  558.       return tmp;
  559.      }
  560.   };
  561.  
  562.  
  563. #endif
  564. #endif
  565.  
  566. template <class R1,class P1,class P2,class P3,class P4,class P5,class P6,
  567.           class R2,class Q1,class Q2,class Q3,class Q4,class Q5,class Q6>
  568. Slot6<R1,P1,P2,P3,P4,P5,P6>
  569.   convert(const Slot6<R2,Q1,Q2,Q3,Q4,Q5,Q6> &s,
  570.           R1 (*func)(Callback6<R2,Q1,Q2,Q3,Q4,Q5,Q6>*,P1,P2,P3,P4,P5,P6))
  571.   {return AdaptorConvertSlot6_6<R1,P1,P2,P3,P4,P5,P6,
  572.            R2,Q1,Q2,Q3,Q4,Q5,Q6>::create(s.obj(),func);
  573.   }
  574.  
  575.  
  576. /****************************************************************
  577. ***** Adaptor Convert Slot 7
  578. ****************************************************************/
  579. template <class R1,class P1,class P2,class P3,class P4,class P5,class P6,class P7,
  580.           class R2,class Q1,class Q2,class Q3,class Q4,class Q5,class Q6,class Q7>
  581. struct AdaptorConvertSlot7_7: public AdaptorSlot_
  582.   {
  583. #ifdef SIGC_CXX_PARTIAL_SPEC
  584.    typedef R1 RType;
  585. #else
  586.    typedef typename Trait<R1>::type RType;
  587. #endif
  588.    typedef Slot7<R1,P1,P2,P3,P4,P5,P6,P7> SlotType;
  589.    typedef Slot7<R2,Q1,Q2,Q3,Q4,Q5,Q6,Q7> InSlotType;
  590.    typedef typename InSlotType::Callback Callback;
  591.    typedef RType (*Func)  (Callback*,P1,P2,P3,P4,P5,P6,P7);
  592.    typedef R1    (*InFunc)(Callback*,P1,P2,P3,P4,P5,P6,P7);
  593.    typedef CallDataObj3<typename SlotType::Func,Callback,Func> CallData;
  594.  
  595.    static RType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5,P6 p6,P7 p7)
  596.      {
  597.       CallData* data=(CallData*)d;
  598.       return (data->func)(data->obj,p1,p2,p3,p4,p5,p6,p7);
  599.      }
  600.  
  601.    static SlotData* create(SlotData *s,InFunc func)
  602.      {
  603.       SlotData* tmp=(SlotData*)s;
  604.       AdaptorNode *node=new AdaptorNode();
  605.       copy_callback(tmp,node);
  606.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  607.       data.callback=&callback;
  608.       data.func=(Func)func;
  609.       data.obj=(Callback*)&(node->data_);
  610.       return tmp;
  611.      }
  612.   };
  613.  
  614.  
  615.  
  616. #ifndef SIGC_CXX_VOID_RETURN
  617. #ifdef SIGC_CXX_PARTIAL_SPEC
  618. template <class P1,class P2,class P3,class P4,class P5,class P6,class P7,
  619.           class R2,class Q1,class Q2,class Q3,class Q4,class Q5,class Q6,class Q7>
  620. struct AdaptorConvertSlot7_7
  621.          <void,P1,P2,P3,P4,P5,P6,P7,
  622.           R2,Q1,Q2,Q3,Q4,Q5,Q6,Q7>
  623.   : public AdaptorSlot_
  624.   {
  625.    typedef void RType;
  626.    typedef Slot7<void,P1,P2,P3,P4,P5,P6,P7> SlotType;
  627.    typedef Slot7<R2,Q1,Q2,Q3,Q4,Q5,Q6,Q7> InSlotType;
  628.    typedef typename InSlotType::Callback Callback;
  629.    typedef RType (*Func)  (Callback*,P1,P2,P3,P4,P5,P6,P7);
  630.    typedef void    (*InFunc)(Callback*,P1,P2,P3,P4,P5,P6,P7);
  631.    typedef CallDataObj3<typename SlotType::Func,Callback,Func> CallData;
  632.  
  633.    static RType callback(void* d,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5,P6 p6,P7 p7)
  634.      {
  635.       CallData* data=(CallData*)d;
  636.        (data->func)(data->obj,p1,p2,p3,p4,p5,p6,p7);
  637.      }
  638.  
  639.    static SlotData* create(SlotData *s,InFunc func)
  640.      {
  641.       SlotData* tmp=(SlotData*)s;
  642.       AdaptorNode *node=new AdaptorNode();
  643.       copy_callback(tmp,node);
  644.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  645.       data.callback=&callback;
  646.       data.func=(Func)func;
  647.       data.obj=(Callback*)&(node->data_);
  648.       return tmp;
  649.      }
  650.   };
  651.  
  652.  
  653. #endif
  654. #endif
  655.  
  656. template <class R1,class P1,class P2,class P3,class P4,class P5,class P6,class P7,
  657.           class R2,class Q1,class Q2,class Q3,class Q4,class Q5,class Q6,class Q7>
  658. Slot7<R1,P1,P2,P3,P4,P5,P6,P7>
  659.   convert(const Slot7<R2,Q1,Q2,Q3,Q4,Q5,Q6,Q7> &s,
  660.           R1 (*func)(Callback7<R2,Q1,Q2,Q3,Q4,Q5,Q6,Q7>*,P1,P2,P3,P4,P5,P6,P7))
  661.   {return AdaptorConvertSlot7_7<R1,P1,P2,P3,P4,P5,P6,P7,
  662.            R2,Q1,Q2,Q3,Q4,Q5,Q6,Q7>::create(s.obj(),func);
  663.   }
  664.  
  665.  
  666.  
  667. #ifdef SIGC_CXX_NAMESPACES
  668. } // namespace
  669. #endif
  670.  
  671. #endif
  672.