Subversion Repositories Kolibri OS

Rev

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

  1. // -*- c++ -*-
  2. /* This is a generated file, do not edit.  Generated from ../sigc++/macros/class_slot.h.m4 */
  3.  
  4. #ifndef SIGCXX_CLASS_SLOT_H
  5. #define SIGCXX_CLASS_SLOT_H
  6.  
  7. /*
  8.   SigC::slot_class() (class)
  9.   -----------------------
  10.   slot_class() can be applied to a class method to form a Slot with a
  11.   profile equivelent to the method.  At the same time an instance
  12.   of that class must be specified.  This is an unsafe interface.
  13.  
  14.   This does NOT require that the class be derived from SigC::Object.
  15.   However, the object should be static with regards to the signal system.
  16.   (allocated within the global scope.)  If it is not and a connected
  17.   slot is call it will result in a seg fault.  If the object must
  18.   be destroyed before the connected slots, all connections must
  19.   be disconnected by hand.
  20.  
  21.   Sample usage:
  22.  
  23.     struct A
  24.       {
  25.        void foo(int,int);
  26.       } a;
  27.  
  28.     Slot2<void,int,int> s=slot_class(a,&A::foo);
  29.  
  30. */
  31.  
  32.  
  33. #include <sigc++/object_slot.h>
  34.  
  35. #ifdef SIGC_CXX_NAMESPACES
  36. namespace SigC
  37. {
  38. #endif
  39.  
  40.  
  41. /****************************************************************
  42. ***** Class Slot 0
  43. ****************************************************************/
  44. template <class R,class Obj>
  45. struct ClassSlot0_:public ObjectSlot0_<R,Obj>
  46.   {
  47.    typedef ObjectSlot0_<R,Obj> Base;
  48.    typedef typename Base::InFunc InFunc;
  49.  
  50.    static SlotData* create(Obj* obj,InFunc func)
  51.      {
  52.       if (!obj) return 0;
  53.       SlotData* tmp=manage(new SlotData());
  54.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  55.       data.callback=&callback;
  56.       data.obj=obj;
  57.       data.func=(Func)func;
  58.       return tmp;
  59.      }
  60.   };
  61.  
  62. template <class R,class Obj>
  63. Slot0<R>
  64.   slot_class(Obj &obj,R (Obj::*func)())
  65.   {return ClassSlot0_<R,Obj>::create(&obj,func);
  66.   }
  67.  
  68. template <class R,class Obj>
  69. Slot0<R>
  70.   slot_class(Obj *obj,R (Obj::*func)())
  71.   {return ClassSlot0_<R,Obj>::create(obj,func);
  72.   }
  73.  
  74.  
  75. /****************************************************************
  76. ***** Class Slot 1
  77. ****************************************************************/
  78. template <class R,class P1,class Obj>
  79. struct ClassSlot1_:public ObjectSlot1_<R,P1,Obj>
  80.   {
  81.    typedef ObjectSlot1_<R,P1,Obj> Base;
  82.    typedef typename Base::InFunc InFunc;
  83.  
  84.    static SlotData* create(Obj* obj,InFunc func)
  85.      {
  86.       if (!obj) return 0;
  87.       SlotData* tmp=manage(new SlotData());
  88.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  89.       data.callback=&callback;
  90.       data.obj=obj;
  91.       data.func=(Func)func;
  92.       return tmp;
  93.      }
  94.   };
  95.  
  96. template <class R,class P1,class Obj>
  97. Slot1<R,P1>
  98.   slot_class(Obj &obj,R (Obj::*func)(P1))
  99.   {return ClassSlot1_<R,P1,Obj>::create(&obj,func);
  100.   }
  101.  
  102. template <class R,class P1,class Obj>
  103. Slot1<R,P1>
  104.   slot_class(Obj *obj,R (Obj::*func)(P1))
  105.   {return ClassSlot1_<R,P1,Obj>::create(obj,func);
  106.   }
  107.  
  108.  
  109. /****************************************************************
  110. ***** Class Slot 2
  111. ****************************************************************/
  112. template <class R,class P1,class P2,class Obj>
  113. struct ClassSlot2_:public ObjectSlot2_<R,P1,P2,Obj>
  114.   {
  115.    typedef ObjectSlot2_<R,P1,P2,Obj> Base;
  116.    typedef typename Base::InFunc InFunc;
  117.  
  118.    static SlotData* create(Obj* obj,InFunc func)
  119.      {
  120.       if (!obj) return 0;
  121.       SlotData* tmp=manage(new SlotData());
  122.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  123.       data.callback=&callback;
  124.       data.obj=obj;
  125.       data.func=(Func)func;
  126.       return tmp;
  127.      }
  128.   };
  129.  
  130. template <class R,class P1,class P2,class Obj>
  131. Slot2<R,P1,P2>
  132.   slot_class(Obj &obj,R (Obj::*func)(P1,P2))
  133.   {return ClassSlot2_<R,P1,P2,Obj>::create(&obj,func);
  134.   }
  135.  
  136. template <class R,class P1,class P2,class Obj>
  137. Slot2<R,P1,P2>
  138.   slot_class(Obj *obj,R (Obj::*func)(P1,P2))
  139.   {return ClassSlot2_<R,P1,P2,Obj>::create(obj,func);
  140.   }
  141.  
  142.  
  143. /****************************************************************
  144. ***** Class Slot 3
  145. ****************************************************************/
  146. template <class R,class P1,class P2,class P3,class Obj>
  147. struct ClassSlot3_:public ObjectSlot3_<R,P1,P2,P3,Obj>
  148.   {
  149.    typedef ObjectSlot3_<R,P1,P2,P3,Obj> Base;
  150.    typedef typename Base::InFunc InFunc;
  151.  
  152.    static SlotData* create(Obj* obj,InFunc func)
  153.      {
  154.       if (!obj) return 0;
  155.       SlotData* tmp=manage(new SlotData());
  156.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  157.       data.callback=&callback;
  158.       data.obj=obj;
  159.       data.func=(Func)func;
  160.       return tmp;
  161.      }
  162.   };
  163.  
  164. template <class R,class P1,class P2,class P3,class Obj>
  165. Slot3<R,P1,P2,P3>
  166.   slot_class(Obj &obj,R (Obj::*func)(P1,P2,P3))
  167.   {return ClassSlot3_<R,P1,P2,P3,Obj>::create(&obj,func);
  168.   }
  169.  
  170. template <class R,class P1,class P2,class P3,class Obj>
  171. Slot3<R,P1,P2,P3>
  172.   slot_class(Obj *obj,R (Obj::*func)(P1,P2,P3))
  173.   {return ClassSlot3_<R,P1,P2,P3,Obj>::create(obj,func);
  174.   }
  175.  
  176.  
  177. /****************************************************************
  178. ***** Class Slot 4
  179. ****************************************************************/
  180. template <class R,class P1,class P2,class P3,class P4,class Obj>
  181. struct ClassSlot4_:public ObjectSlot4_<R,P1,P2,P3,P4,Obj>
  182.   {
  183.    typedef ObjectSlot4_<R,P1,P2,P3,P4,Obj> Base;
  184.    typedef typename Base::InFunc InFunc;
  185.  
  186.    static SlotData* create(Obj* obj,InFunc func)
  187.      {
  188.       if (!obj) return 0;
  189.       SlotData* tmp=manage(new SlotData());
  190.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  191.       data.callback=&callback;
  192.       data.obj=obj;
  193.       data.func=(Func)func;
  194.       return tmp;
  195.      }
  196.   };
  197.  
  198. template <class R,class P1,class P2,class P3,class P4,class Obj>
  199. Slot4<R,P1,P2,P3,P4>
  200.   slot_class(Obj &obj,R (Obj::*func)(P1,P2,P3,P4))
  201.   {return ClassSlot4_<R,P1,P2,P3,P4,Obj>::create(&obj,func);
  202.   }
  203.  
  204. template <class R,class P1,class P2,class P3,class P4,class Obj>
  205. Slot4<R,P1,P2,P3,P4>
  206.   slot_class(Obj *obj,R (Obj::*func)(P1,P2,P3,P4))
  207.   {return ClassSlot4_<R,P1,P2,P3,P4,Obj>::create(obj,func);
  208.   }
  209.  
  210.  
  211. /****************************************************************
  212. ***** Class Slot 5
  213. ****************************************************************/
  214. template <class R,class P1,class P2,class P3,class P4,class P5,class Obj>
  215. struct ClassSlot5_:public ObjectSlot5_<R,P1,P2,P3,P4,P5,Obj>
  216.   {
  217.    typedef ObjectSlot5_<R,P1,P2,P3,P4,P5,Obj> Base;
  218.    typedef typename Base::InFunc InFunc;
  219.  
  220.    static SlotData* create(Obj* obj,InFunc func)
  221.      {
  222.       if (!obj) return 0;
  223.       SlotData* tmp=manage(new SlotData());
  224.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  225.       data.callback=&callback;
  226.       data.obj=obj;
  227.       data.func=(Func)func;
  228.       return tmp;
  229.      }
  230.   };
  231.  
  232. template <class R,class P1,class P2,class P3,class P4,class P5,class Obj>
  233. Slot5<R,P1,P2,P3,P4,P5>
  234.   slot_class(Obj &obj,R (Obj::*func)(P1,P2,P3,P4,P5))
  235.   {return ClassSlot5_<R,P1,P2,P3,P4,P5,Obj>::create(&obj,func);
  236.   }
  237.  
  238. template <class R,class P1,class P2,class P3,class P4,class P5,class Obj>
  239. Slot5<R,P1,P2,P3,P4,P5>
  240.   slot_class(Obj *obj,R (Obj::*func)(P1,P2,P3,P4,P5))
  241.   {return ClassSlot5_<R,P1,P2,P3,P4,P5,Obj>::create(obj,func);
  242.   }
  243.  
  244.  
  245. /****************************************************************
  246. ***** Class Slot 6
  247. ****************************************************************/
  248. template <class R,class P1,class P2,class P3,class P4,class P5,class P6,class Obj>
  249. struct ClassSlot6_:public ObjectSlot6_<R,P1,P2,P3,P4,P5,P6,Obj>
  250.   {
  251.    typedef ObjectSlot6_<R,P1,P2,P3,P4,P5,P6,Obj> Base;
  252.    typedef typename Base::InFunc InFunc;
  253.  
  254.    static SlotData* create(Obj* obj,InFunc func)
  255.      {
  256.       if (!obj) return 0;
  257.       SlotData* tmp=manage(new SlotData());
  258.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  259.       data.callback=&callback;
  260.       data.obj=obj;
  261.       data.func=(Func)func;
  262.       return tmp;
  263.      }
  264.   };
  265.  
  266. template <class R,class P1,class P2,class P3,class P4,class P5,class P6,class Obj>
  267. Slot6<R,P1,P2,P3,P4,P5,P6>
  268.   slot_class(Obj &obj,R (Obj::*func)(P1,P2,P3,P4,P5,P6))
  269.   {return ClassSlot6_<R,P1,P2,P3,P4,P5,P6,Obj>::create(&obj,func);
  270.   }
  271.  
  272. template <class R,class P1,class P2,class P3,class P4,class P5,class P6,class Obj>
  273. Slot6<R,P1,P2,P3,P4,P5,P6>
  274.   slot_class(Obj *obj,R (Obj::*func)(P1,P2,P3,P4,P5,P6))
  275.   {return ClassSlot6_<R,P1,P2,P3,P4,P5,P6,Obj>::create(obj,func);
  276.   }
  277.  
  278.  
  279. /****************************************************************
  280. ***** Class Slot 7
  281. ****************************************************************/
  282. template <class R,class P1,class P2,class P3,class P4,class P5,class P6,class P7,class Obj>
  283. struct ClassSlot7_:public ObjectSlot7_<R,P1,P2,P3,P4,P5,P6,P7,Obj>
  284.   {
  285.    typedef ObjectSlot7_<R,P1,P2,P3,P4,P5,P6,P7,Obj> Base;
  286.    typedef typename Base::InFunc InFunc;
  287.  
  288.    static SlotData* create(Obj* obj,InFunc func)
  289.      {
  290.       if (!obj) return 0;
  291.       SlotData* tmp=manage(new SlotData());
  292.       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
  293.       data.callback=&callback;
  294.       data.obj=obj;
  295.       data.func=(Func)func;
  296.       return tmp;
  297.      }
  298.   };
  299.  
  300. template <class R,class P1,class P2,class P3,class P4,class P5,class P6,class P7,class Obj>
  301. Slot7<R,P1,P2,P3,P4,P5,P6,P7>
  302.   slot_class(Obj &obj,R (Obj::*func)(P1,P2,P3,P4,P5,P6,P7))
  303.   {return ClassSlot7_<R,P1,P2,P3,P4,P5,P6,P7,Obj>::create(&obj,func);
  304.   }
  305.  
  306. template <class R,class P1,class P2,class P3,class P4,class P5,class P6,class P7,class Obj>
  307. Slot7<R,P1,P2,P3,P4,P5,P6,P7>
  308.   slot_class(Obj *obj,R (Obj::*func)(P1,P2,P3,P4,P5,P6,P7))
  309.   {return ClassSlot7_<R,P1,P2,P3,P4,P5,P6,P7,Obj>::create(obj,func);
  310.   }
  311.  
  312.  
  313.  
  314. #ifdef SIGC_CXX_NAMESPACES
  315. } // namespace
  316. #endif
  317.  
  318. #endif
  319.