5 #include <cgv/type/invalid_type.h>
6 #include <cgv/type/func/make_argument.h>
8 #include <cgv/signal/lib_begin.h>
13 class CGV_API functor_base;
20 std::vector<functor_base*> functors;
27 unsigned get_nr_functors()
const;
33 void disconnect(
const tacker* t);
35 void disconnect_all();
43 virtual void put_pointers(
const void* &p1,
const void* &p2)
const = 0;
48 virtual const tacker* get_tacker()
const;
65 typedef std::map<signal_base*, int> map_type;
66 mutable map_type signals;
77 void untack_all()
const;
82 template <
int i,
typename T1 = type::inval
id_type,
typename T2 = type::inval
id_type,
typename T3 = type::inval
id_type,
typename T4 = type::inval
id_type,
typename T5 = type::inval
id_type,
typename T6 = type::inval
id_type,
typename T7 = type::inval
id_type,
typename T8 = type::inval
id_type>
87 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
88 struct signature<0,T1, T2, T3, T4, T5, T6, T7, T8>
95 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
96 struct signature<1,T1, T2, T3, T4, T5, T6, T7, T8>
99 typedef typename type::func::make_argument<T1>::type A1;
105 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
106 struct signature<2,T1, T2, T3, T4, T5, T6, T7, T8>
109 typedef typename type::func::make_argument<T1>::type A1;
111 typedef typename type::func::make_argument<T2>::type A2;
117 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
118 struct signature<3,T1, T2, T3, T4, T5, T6, T7, T8>
121 typedef typename type::func::make_argument<T1>::type A1;
123 typedef typename type::func::make_argument<T2>::type A2;
125 typedef typename type::func::make_argument<T3>::type A3;
131 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
132 struct signature<4,T1, T2, T3, T4, T5, T6, T7, T8>
135 typedef typename type::func::make_argument<T1>::type A1;
137 typedef typename type::func::make_argument<T2>::type A2;
139 typedef typename type::func::make_argument<T3>::type A3;
141 typedef typename type::func::make_argument<T4>::type A4;
147 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
148 struct signature<5,T1, T2, T3, T4, T5, T6, T7, T8>
151 typedef typename type::func::make_argument<T1>::type A1;
153 typedef typename type::func::make_argument<T2>::type A2;
155 typedef typename type::func::make_argument<T3>::type A3;
157 typedef typename type::func::make_argument<T4>::type A4;
159 typedef typename type::func::make_argument<T5>::type A5;
165 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
166 struct signature<6,T1, T2, T3, T4, T5, T6, T7, T8>
169 typedef typename type::func::make_argument<T1>::type A1;
171 typedef typename type::func::make_argument<T2>::type A2;
173 typedef typename type::func::make_argument<T3>::type A3;
175 typedef typename type::func::make_argument<T4>::type A4;
177 typedef typename type::func::make_argument<T5>::type A5;
179 typedef typename type::func::make_argument<T6>::type A6;
185 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
186 struct signature<7,T1, T2, T3, T4, T5, T6, T7, T8>
189 typedef typename type::func::make_argument<T1>::type A1;
191 typedef typename type::func::make_argument<T2>::type A2;
193 typedef typename type::func::make_argument<T3>::type A3;
195 typedef typename type::func::make_argument<T4>::type A4;
197 typedef typename type::func::make_argument<T5>::type A5;
199 typedef typename type::func::make_argument<T6>::type A6;
201 typedef typename type::func::make_argument<T7>::type A7;
207 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
208 struct signature<8,T1, T2, T3, T4, T5, T6, T7, T8>
211 typedef typename type::func::make_argument<T1>::type A1;
213 typedef typename type::func::make_argument<T2>::type A2;
215 typedef typename type::func::make_argument<T3>::type A3;
217 typedef typename type::func::make_argument<T4>::type A4;
219 typedef typename type::func::make_argument<T5>::type A5;
221 typedef typename type::func::make_argument<T6>::type A6;
223 typedef typename type::func::make_argument<T7>::type A7;
225 typedef typename type::func::make_argument<T8>::type A8;
234 #include <cgv/config/lib_end.h>