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/func_slot.h.m4 */
  3.  
  4. #ifndef SIGCXX_FUNC_SLOT_H
  5. #define SIGCXX_FUNC_SLOT_H
  6. #include <sigc++/slot.h>
  7.  
  8. /*
  9.   SigC::slot() (function)
  10.   -----------------------
  11.   slot() can be applied to a function to form a Slot with a
  12.   profile equivelent to the function.  To avoid warns be
  13.   sure to pass the address of the function.
  14.  
  15.   Sample usage:
  16.  
  17.     void foo(int,int);
  18.  
  19.     Slot2<void,int,int> s=slot(&foo);
  20.  
  21. */
  22.  
  23. #ifdef SIGC_CXX_NAMESPACES
  24. namespace SigC
  25. {
  26. #endif
  27.  
  28. // From which we build specific Slots and a set of
  29. // functions for creating a slot of this type
  30.  
  31.  
  32.  
  33. /****************************************************************
  34. ***** Function Slot 0
  35. ****************************************************************/
  36. template <class R>
  37. struct FuncSlot0_
  38.   {
  39. #ifdef SIGC_CXX_PARTIAL_SPEC
  40.    typedef R RType;
  41. #else
  42.    typedef typename Trait<R>::type RType;
  43. #endif
  44.    typedef R     (*InFunc)();
  45.    typedef RType (*Func)();
  46.    typedef Slot0<R> SlotType;
  47.  
  48.    typedef CallDataFunc<typename SlotType::Func,Func> CallData;
  49.  
  50.    static RType callback(void* data)
  51.      {
  52.       return (((CallData*)data)->func)();
  53.      }
  54.  
  55.    static SlotData* create(InFunc func)
  56.      {
  57.       SlotData* tmp=manage(new SlotData());
  58.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  59.       data.callback=&callback;
  60.       data.func=(Func)func;
  61.       return tmp;
  62.      }
  63.   };
  64.  
  65.  
  66. #ifndef SIGC_CXX_VOID_RETURN
  67. #ifdef SIGC_CXX_PARTIAL_SPEC
  68. template <>
  69. struct FuncSlot0_<void>
  70.   {
  71.    typedef void RType;
  72.    typedef void     (*InFunc)();
  73.    typedef RType (*Func)();
  74.    typedef Slot0<void> SlotType;
  75.  
  76.    typedef CallDataFunc<SlotType::Func,Func> CallData;
  77.  
  78.    static RType callback(void* data)
  79.      {
  80.        (((CallData*)data)->func)();
  81.      }
  82.  
  83.    static SlotData* create(InFunc func)
  84.      {
  85.       SlotData* tmp=manage(new SlotData());
  86.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  87.       data.callback=&callback;
  88.       data.func=(Func)func;
  89.       return tmp;
  90.      }
  91.   };
  92.  
  93. #endif
  94. #endif
  95.  
  96. template <class R>
  97. inline Slot0<R>
  98.   slot(R (*func)())
  99.   {
  100.    return FuncSlot0_<R>::create(func);
  101.   }
  102.  
  103.  
  104. /****************************************************************
  105. ***** Function Slot 1
  106. ****************************************************************/
  107. template <class R,class P1>
  108. struct FuncSlot1_
  109.   {
  110. #ifdef SIGC_CXX_PARTIAL_SPEC
  111.    typedef R RType;
  112. #else
  113.    typedef typename Trait<R>::type RType;
  114. #endif
  115.    typedef R     (*InFunc)(P1);
  116.    typedef RType (*Func)(P1);
  117.    typedef Slot1<R,P1> SlotType;
  118.  
  119.    typedef CallDataFunc<typename SlotType::Func,Func> CallData;
  120.  
  121.    static RType callback(void* data,P1 p1)
  122.      {
  123.       return (((CallData*)data)->func)(p1);
  124.      }
  125.  
  126.    static SlotData* create(InFunc func)
  127.      {
  128.       SlotData* tmp=manage(new SlotData());
  129.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  130.       data.callback=&callback;
  131.       data.func=(Func)func;
  132.       return tmp;
  133.      }
  134.   };
  135.  
  136.  
  137. #ifndef SIGC_CXX_VOID_RETURN
  138. #ifdef SIGC_CXX_PARTIAL_SPEC
  139. template <class P1>
  140. struct FuncSlot1_<void,P1>
  141.   {
  142.    typedef void RType;
  143.    typedef void     (*InFunc)(P1);
  144.    typedef RType (*Func)(P1);
  145.    typedef Slot1<void,P1> SlotType;
  146.  
  147.    typedef CallDataFunc<typename SlotType::Func,Func> CallData;
  148.  
  149.    static RType callback(void* data,P1 p1)
  150.      {
  151.        (((CallData*)data)->func)(p1);
  152.      }
  153.  
  154.    static SlotData* create(InFunc func)
  155.      {
  156.       SlotData* tmp=manage(new SlotData());
  157.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  158.       data.callback=&callback;
  159.       data.func=(Func)func;
  160.       return tmp;
  161.      }
  162.   };
  163.  
  164. #endif
  165. #endif
  166.  
  167. template <class R,class P1>
  168. inline Slot1<R,P1>
  169.   slot(R (*func)(P1))
  170.   {
  171.    return FuncSlot1_<R,P1>::create(func);
  172.   }
  173.  
  174.  
  175. /****************************************************************
  176. ***** Function Slot 2
  177. ****************************************************************/
  178. template <class R,class P1,class P2>
  179. struct FuncSlot2_
  180.   {
  181. #ifdef SIGC_CXX_PARTIAL_SPEC
  182.    typedef R RType;
  183. #else
  184.    typedef typename Trait<R>::type RType;
  185. #endif
  186.    typedef R     (*InFunc)(P1,P2);
  187.    typedef RType (*Func)(P1,P2);
  188.    typedef Slot2<R,P1,P2> SlotType;
  189.  
  190.    typedef CallDataFunc<typename SlotType::Func,Func> CallData;
  191.  
  192.    static RType callback(void* data,P1 p1,P2 p2)
  193.      {
  194.       return (((CallData*)data)->func)(p1,p2);
  195.      }
  196.  
  197.    static SlotData* create(InFunc func)
  198.      {
  199.       SlotData* tmp=manage(new SlotData());
  200.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  201.       data.callback=&callback;
  202.       data.func=(Func)func;
  203.       return tmp;
  204.      }
  205.   };
  206.  
  207.  
  208. #ifndef SIGC_CXX_VOID_RETURN
  209. #ifdef SIGC_CXX_PARTIAL_SPEC
  210. template <class P1,class P2>
  211. struct FuncSlot2_<void,P1,P2>
  212.   {
  213.    typedef void RType;
  214.    typedef void     (*InFunc)(P1,P2);
  215.    typedef RType (*Func)(P1,P2);
  216.    typedef Slot2<void,P1,P2> SlotType;
  217.  
  218.    typedef CallDataFunc<typename SlotType::Func,Func> CallData;
  219.  
  220.    static RType callback(void* data,P1 p1,P2 p2)
  221.      {
  222.        (((CallData*)data)->func)(p1,p2);
  223.      }
  224.  
  225.    static SlotData* create(InFunc func)
  226.      {
  227.       SlotData* tmp=manage(new SlotData());
  228.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  229.       data.callback=&callback;
  230.       data.func=(Func)func;
  231.       return tmp;
  232.      }
  233.   };
  234.  
  235. #endif
  236. #endif
  237.  
  238. template <class R,class P1,class P2>
  239. inline Slot2<R,P1,P2>
  240.   slot(R (*func)(P1,P2))
  241.   {
  242.    return FuncSlot2_<R,P1,P2>::create(func);
  243.   }
  244.  
  245.  
  246. /****************************************************************
  247. ***** Function Slot 3
  248. ****************************************************************/
  249. template <class R,class P1,class P2,class P3>
  250. struct FuncSlot3_
  251.   {
  252. #ifdef SIGC_CXX_PARTIAL_SPEC
  253.    typedef R RType;
  254. #else
  255.    typedef typename Trait<R>::type RType;
  256. #endif
  257.    typedef R     (*InFunc)(P1,P2,P3);
  258.    typedef RType (*Func)(P1,P2,P3);
  259.    typedef Slot3<R,P1,P2,P3> SlotType;
  260.  
  261.    typedef CallDataFunc<typename SlotType::Func,Func> CallData;
  262.  
  263.    static RType callback(void* data,P1 p1,P2 p2,P3 p3)
  264.      {
  265.       return (((CallData*)data)->func)(p1,p2,p3);
  266.      }
  267.  
  268.    static SlotData* create(InFunc func)
  269.      {
  270.       SlotData* tmp=manage(new SlotData());
  271.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  272.       data.callback=&callback;
  273.       data.func=(Func)func;
  274.       return tmp;
  275.      }
  276.   };
  277.  
  278.  
  279. #ifndef SIGC_CXX_VOID_RETURN
  280. #ifdef SIGC_CXX_PARTIAL_SPEC
  281. template <class P1,class P2,class P3>
  282. struct FuncSlot3_<void,P1,P2,P3>
  283.   {
  284.    typedef void RType;
  285.    typedef void     (*InFunc)(P1,P2,P3);
  286.    typedef RType (*Func)(P1,P2,P3);
  287.    typedef Slot3<void,P1,P2,P3> SlotType;
  288.  
  289.    typedef CallDataFunc<typename SlotType::Func,Func> CallData;
  290.  
  291.    static RType callback(void* data,P1 p1,P2 p2,P3 p3)
  292.      {
  293.        (((CallData*)data)->func)(p1,p2,p3);
  294.      }
  295.  
  296.    static SlotData* create(InFunc func)
  297.      {
  298.       SlotData* tmp=manage(new SlotData());
  299.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  300.       data.callback=&callback;
  301.       data.func=(Func)func;
  302.       return tmp;
  303.      }
  304.   };
  305.  
  306. #endif
  307. #endif
  308.  
  309. template <class R,class P1,class P2,class P3>
  310. inline Slot3<R,P1,P2,P3>
  311.   slot(R (*func)(P1,P2,P3))
  312.   {
  313.    return FuncSlot3_<R,P1,P2,P3>::create(func);
  314.   }
  315.  
  316.  
  317. /****************************************************************
  318. ***** Function Slot 4
  319. ****************************************************************/
  320. template <class R,class P1,class P2,class P3,class P4>
  321. struct FuncSlot4_
  322.   {
  323. #ifdef SIGC_CXX_PARTIAL_SPEC
  324.    typedef R RType;
  325. #else
  326.    typedef typename Trait<R>::type RType;
  327. #endif
  328.    typedef R     (*InFunc)(P1,P2,P3,P4);
  329.    typedef RType (*Func)(P1,P2,P3,P4);
  330.    typedef Slot4<R,P1,P2,P3,P4> SlotType;
  331.  
  332.    typedef CallDataFunc<typename SlotType::Func,Func> CallData;
  333.  
  334.    static RType callback(void* data,P1 p1,P2 p2,P3 p3,P4 p4)
  335.      {
  336.       return (((CallData*)data)->func)(p1,p2,p3,p4);
  337.      }
  338.  
  339.    static SlotData* create(InFunc func)
  340.      {
  341.       SlotData* tmp=manage(new SlotData());
  342.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  343.       data.callback=&callback;
  344.       data.func=(Func)func;
  345.       return tmp;
  346.      }
  347.   };
  348.  
  349.  
  350. #ifndef SIGC_CXX_VOID_RETURN
  351. #ifdef SIGC_CXX_PARTIAL_SPEC
  352. template <class P1,class P2,class P3,class P4>
  353. struct FuncSlot4_<void,P1,P2,P3,P4>
  354.   {
  355.    typedef void RType;
  356.    typedef void     (*InFunc)(P1,P2,P3,P4);
  357.    typedef RType (*Func)(P1,P2,P3,P4);
  358.    typedef Slot4<void,P1,P2,P3,P4> SlotType;
  359.  
  360.    typedef CallDataFunc<typename SlotType::Func,Func> CallData;
  361.  
  362.    static RType callback(void* data,P1 p1,P2 p2,P3 p3,P4 p4)
  363.      {
  364.        (((CallData*)data)->func)(p1,p2,p3,p4);
  365.      }
  366.  
  367.    static SlotData* create(InFunc func)
  368.      {
  369.       SlotData* tmp=manage(new SlotData());
  370.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  371.       data.callback=&callback;
  372.       data.func=(Func)func;
  373.       return tmp;
  374.      }
  375.   };
  376.  
  377. #endif
  378. #endif
  379.  
  380. template <class R,class P1,class P2,class P3,class P4>
  381. inline Slot4<R,P1,P2,P3,P4>
  382.   slot(R (*func)(P1,P2,P3,P4))
  383.   {
  384.    return FuncSlot4_<R,P1,P2,P3,P4>::create(func);
  385.   }
  386.  
  387.  
  388. /****************************************************************
  389. ***** Function Slot 5
  390. ****************************************************************/
  391. template <class R,class P1,class P2,class P3,class P4,class P5>
  392. struct FuncSlot5_
  393.   {
  394. #ifdef SIGC_CXX_PARTIAL_SPEC
  395.    typedef R RType;
  396. #else
  397.    typedef typename Trait<R>::type RType;
  398. #endif
  399.    typedef R     (*InFunc)(P1,P2,P3,P4,P5);
  400.    typedef RType (*Func)(P1,P2,P3,P4,P5);
  401.    typedef Slot5<R,P1,P2,P3,P4,P5> SlotType;
  402.  
  403.    typedef CallDataFunc<typename SlotType::Func,Func> CallData;
  404.  
  405.    static RType callback(void* data,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5)
  406.      {
  407.       return (((CallData*)data)->func)(p1,p2,p3,p4,p5);
  408.      }
  409.  
  410.    static SlotData* create(InFunc func)
  411.      {
  412.       SlotData* tmp=manage(new SlotData());
  413.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  414.       data.callback=&callback;
  415.       data.func=(Func)func;
  416.       return tmp;
  417.      }
  418.   };
  419.  
  420.  
  421. #ifndef SIGC_CXX_VOID_RETURN
  422. #ifdef SIGC_CXX_PARTIAL_SPEC
  423. template <class P1,class P2,class P3,class P4,class P5>
  424. struct FuncSlot5_<void,P1,P2,P3,P4,P5>
  425.   {
  426.    typedef void RType;
  427.    typedef void     (*InFunc)(P1,P2,P3,P4,P5);
  428.    typedef RType (*Func)(P1,P2,P3,P4,P5);
  429.    typedef Slot5<void,P1,P2,P3,P4,P5> SlotType;
  430.  
  431.    typedef CallDataFunc<typename SlotType::Func,Func> CallData;
  432.  
  433.    static RType callback(void* data,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5)
  434.      {
  435.        (((CallData*)data)->func)(p1,p2,p3,p4,p5);
  436.      }
  437.  
  438.    static SlotData* create(InFunc func)
  439.      {
  440.       SlotData* tmp=manage(new SlotData());
  441.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  442.       data.callback=&callback;
  443.       data.func=(Func)func;
  444.       return tmp;
  445.      }
  446.   };
  447.  
  448. #endif
  449. #endif
  450.  
  451. template <class R,class P1,class P2,class P3,class P4,class P5>
  452. inline Slot5<R,P1,P2,P3,P4,P5>
  453.   slot(R (*func)(P1,P2,P3,P4,P5))
  454.   {
  455.    return FuncSlot5_<R,P1,P2,P3,P4,P5>::create(func);
  456.   }
  457.  
  458.  
  459. /****************************************************************
  460. ***** Function Slot 6
  461. ****************************************************************/
  462. template <class R,class P1,class P2,class P3,class P4,class P5,class P6>
  463. struct FuncSlot6_
  464.   {
  465. #ifdef SIGC_CXX_PARTIAL_SPEC
  466.    typedef R RType;
  467. #else
  468.    typedef typename Trait<R>::type RType;
  469. #endif
  470.    typedef R     (*InFunc)(P1,P2,P3,P4,P5,P6);
  471.    typedef RType (*Func)(P1,P2,P3,P4,P5,P6);
  472.    typedef Slot6<R,P1,P2,P3,P4,P5,P6> SlotType;
  473.  
  474.    typedef CallDataFunc<typename SlotType::Func,Func> CallData;
  475.  
  476.    static RType callback(void* data,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5,P6 p6)
  477.      {
  478.       return (((CallData*)data)->func)(p1,p2,p3,p4,p5,p6);
  479.      }
  480.  
  481.    static SlotData* create(InFunc func)
  482.      {
  483.       SlotData* tmp=manage(new SlotData());
  484.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  485.       data.callback=&callback;
  486.       data.func=(Func)func;
  487.       return tmp;
  488.      }
  489.   };
  490.  
  491.  
  492. #ifndef SIGC_CXX_VOID_RETURN
  493. #ifdef SIGC_CXX_PARTIAL_SPEC
  494. template <class P1,class P2,class P3,class P4,class P5,class P6>
  495. struct FuncSlot6_<void,P1,P2,P3,P4,P5,P6>
  496.   {
  497.    typedef void RType;
  498.    typedef void     (*InFunc)(P1,P2,P3,P4,P5,P6);
  499.    typedef RType (*Func)(P1,P2,P3,P4,P5,P6);
  500.    typedef Slot6<void,P1,P2,P3,P4,P5,P6> SlotType;
  501.  
  502.    typedef CallDataFunc<typename SlotType::Func,Func> CallData;
  503.  
  504.    static RType callback(void* data,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5,P6 p6)
  505.      {
  506.        (((CallData*)data)->func)(p1,p2,p3,p4,p5,p6);
  507.      }
  508.  
  509.    static SlotData* create(InFunc func)
  510.      {
  511.       SlotData* tmp=manage(new SlotData());
  512.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  513.       data.callback=&callback;
  514.       data.func=(Func)func;
  515.       return tmp;
  516.      }
  517.   };
  518.  
  519. #endif
  520. #endif
  521.  
  522. template <class R,class P1,class P2,class P3,class P4,class P5,class P6>
  523. inline Slot6<R,P1,P2,P3,P4,P5,P6>
  524.   slot(R (*func)(P1,P2,P3,P4,P5,P6))
  525.   {
  526.    return FuncSlot6_<R,P1,P2,P3,P4,P5,P6>::create(func);
  527.   }
  528.  
  529.  
  530. /****************************************************************
  531. ***** Function Slot 7
  532. ****************************************************************/
  533. template <class R,class P1,class P2,class P3,class P4,class P5,class P6,class P7>
  534. struct FuncSlot7_
  535.   {
  536. #ifdef SIGC_CXX_PARTIAL_SPEC
  537.    typedef R RType;
  538. #else
  539.    typedef typename Trait<R>::type RType;
  540. #endif
  541.    typedef R     (*InFunc)(P1,P2,P3,P4,P5,P6,P7);
  542.    typedef RType (*Func)(P1,P2,P3,P4,P5,P6,P7);
  543.    typedef Slot7<R,P1,P2,P3,P4,P5,P6,P7> SlotType;
  544.  
  545.    typedef CallDataFunc<typename SlotType::Func,Func> CallData;
  546.  
  547.    static RType callback(void* data,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5,P6 p6,P7 p7)
  548.      {
  549.       return (((CallData*)data)->func)(p1,p2,p3,p4,p5,p6,p7);
  550.      }
  551.  
  552.    static SlotData* create(InFunc func)
  553.      {
  554.       SlotData* tmp=manage(new SlotData());
  555.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  556.       data.callback=&callback;
  557.       data.func=(Func)func;
  558.       return tmp;
  559.      }
  560.   };
  561.  
  562.  
  563. #ifndef SIGC_CXX_VOID_RETURN
  564. #ifdef SIGC_CXX_PARTIAL_SPEC
  565. template <class P1,class P2,class P3,class P4,class P5,class P6,class P7>
  566. struct FuncSlot7_<void,P1,P2,P3,P4,P5,P6,P7>
  567.   {
  568.    typedef void RType;
  569.    typedef void     (*InFunc)(P1,P2,P3,P4,P5,P6,P7);
  570.    typedef RType (*Func)(P1,P2,P3,P4,P5,P6,P7);
  571.    typedef Slot7<void,P1,P2,P3,P4,P5,P6,P7> SlotType;
  572.  
  573.    typedef CallDataFunc<typename SlotType::Func,Func> CallData;
  574.  
  575.    static RType callback(void* data,P1 p1,P2 p2,P3 p3,P4 p4,P5 p5,P6 p6,P7 p7)
  576.      {
  577.        (((CallData*)data)->func)(p1,p2,p3,p4,p5,p6,p7);
  578.      }
  579.  
  580.    static SlotData* create(InFunc func)
  581.      {
  582.       SlotData* tmp=manage(new SlotData());
  583.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  584.       data.callback=&callback;
  585.       data.func=(Func)func;
  586.       return tmp;
  587.      }
  588.   };
  589.  
  590. #endif
  591. #endif
  592.  
  593. template <class R,class P1,class P2,class P3,class P4,class P5,class P6,class P7>
  594. inline Slot7<R,P1,P2,P3,P4,P5,P6,P7>
  595.   slot(R (*func)(P1,P2,P3,P4,P5,P6,P7))
  596.   {
  597.    return FuncSlot7_<R,P1,P2,P3,P4,P5,P6,P7>::create(func);
  598.   }
  599.  
  600.  
  601.  
  602. #ifdef SIGC_CXX_NAMESPACES
  603. } // namespace
  604. #endif
  605.  
  606. #endif // SIGCXX_FUNC_SLOT_H
  607.