|
94 |
}; |
94 |
}; |
95 |
|
95 |
|
96 |
// declare the CallbackImpl class |
96 |
// declare the CallbackImpl class |
97 |
template <typename R, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6> |
97 |
template <typename R, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9> |
98 |
class CallbackImpl; |
98 |
class CallbackImpl; |
99 |
// define CallbackImpl for 0 params |
99 |
// define CallbackImpl for 0 params |
100 |
template <typename R> |
100 |
template <typename R> |
101 |
class CallbackImpl<R,empty,empty,empty,empty,empty,empty> : public CallbackImplBase { |
101 |
class CallbackImpl<R,empty,empty,empty,empty,empty,empty,empty,empty,empty> : public CallbackImplBase { |
102 |
public: |
102 |
public: |
103 |
virtual ~CallbackImpl () {} |
103 |
virtual ~CallbackImpl () {} |
104 |
virtual R operator() (void) = 0; |
104 |
virtual R operator() (void) = 0; |
105 |
}; |
105 |
}; |
106 |
// define CallbackImpl for 1 params |
106 |
// define CallbackImpl for 1 params |
107 |
template <typename R, typename T1> |
107 |
template <typename R, typename T1> |
108 |
class CallbackImpl<R,T1,empty,empty,empty,empty,empty> : public CallbackImplBase { |
108 |
class CallbackImpl<R,T1,empty,empty,empty,empty,empty,empty,empty,empty> : public CallbackImplBase { |
109 |
public: |
109 |
public: |
110 |
virtual ~CallbackImpl () {} |
110 |
virtual ~CallbackImpl () {} |
111 |
virtual R operator() (T1) = 0; |
111 |
virtual R operator() (T1) = 0; |
112 |
}; |
112 |
}; |
113 |
// define CallbackImpl for 2 params |
113 |
// define CallbackImpl for 2 params |
114 |
template <typename R, typename T1, typename T2> |
114 |
template <typename R, typename T1, typename T2> |
115 |
class CallbackImpl<R,T1,T2,empty,empty,empty,empty> : public CallbackImplBase { |
115 |
class CallbackImpl<R,T1,T2,empty,empty,empty,empty,empty,empty,empty> : public CallbackImplBase { |
116 |
public: |
116 |
public: |
117 |
virtual ~CallbackImpl () {} |
117 |
virtual ~CallbackImpl () {} |
118 |
virtual R operator() (T1, T2) = 0; |
118 |
virtual R operator() (T1, T2) = 0; |
119 |
}; |
119 |
}; |
120 |
// define CallbackImpl for 3 params |
120 |
// define CallbackImpl for 3 params |
121 |
template <typename R, typename T1, typename T2, typename T3> |
121 |
template <typename R, typename T1, typename T2, typename T3> |
122 |
class CallbackImpl<R,T1,T2,T3,empty,empty,empty> : public CallbackImplBase { |
122 |
class CallbackImpl<R,T1,T2,T3,empty,empty,empty,empty,empty,empty> : public CallbackImplBase { |
123 |
public: |
123 |
public: |
124 |
virtual ~CallbackImpl () {} |
124 |
virtual ~CallbackImpl () {} |
125 |
virtual R operator() (T1, T2, T3) = 0; |
125 |
virtual R operator() (T1, T2, T3) = 0; |
126 |
}; |
126 |
}; |
127 |
// define CallbackImpl for 4 params |
127 |
// define CallbackImpl for 4 params |
128 |
template <typename R, typename T1, typename T2, typename T3, typename T4> |
128 |
template <typename R, typename T1, typename T2, typename T3, typename T4> |
129 |
class CallbackImpl<R,T1,T2,T3,T4,empty,empty> : public CallbackImplBase { |
129 |
class CallbackImpl<R,T1,T2,T3,T4,empty,empty,empty,empty,empty> : public CallbackImplBase { |
130 |
public: |
130 |
public: |
131 |
virtual ~CallbackImpl () {} |
131 |
virtual ~CallbackImpl () {} |
132 |
virtual R operator() (T1, T2, T3, T4) = 0; |
132 |
virtual R operator() (T1, T2, T3, T4) = 0; |
133 |
}; |
133 |
}; |
134 |
// define CallbackImpl for 5 params |
134 |
// define CallbackImpl for 5 params |
135 |
template <typename R, typename T1, typename T2, typename T3, typename T4, typename T5> |
135 |
template <typename R, typename T1, typename T2, typename T3, typename T4, typename T5> |
136 |
class CallbackImpl<R,T1,T2,T3,T4,T5,empty> : public CallbackImplBase { |
136 |
class CallbackImpl<R,T1,T2,T3,T4,T5,empty,empty,empty,empty> : public CallbackImplBase { |
137 |
public: |
137 |
public: |
138 |
virtual ~CallbackImpl () {} |
138 |
virtual ~CallbackImpl () {} |
139 |
virtual R operator() (T1, T2, T3, T4, T5) = 0; |
139 |
virtual R operator() (T1, T2, T3, T4, T5) = 0; |
140 |
}; |
140 |
}; |
141 |
// define CallbackImpl for 6 params |
141 |
// define CallbackImpl for 6 params |
142 |
template <typename R, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6> |
142 |
template <typename R, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6> |
143 |
class CallbackImpl : public CallbackImplBase { |
143 |
class CallbackImpl<R,T1,T2,T3,T4,T5,T6,empty,empty,empty> : public CallbackImplBase { |
144 |
public: |
144 |
public: |
145 |
virtual ~CallbackImpl () {} |
145 |
virtual ~CallbackImpl () {} |
146 |
virtual R operator() (T1, T2, T3, T4, T5, T6) = 0; |
146 |
virtual R operator() (T1, T2, T3, T4, T5, T6) = 0; |
147 |
}; |
147 |
}; |
|
|
148 |
// define CallbackImpl for 7 params |
149 |
template <typename R, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7> |
150 |
class CallbackImpl<R,T1,T2,T3,T4,T5,T6,T7,empty,empty> : public CallbackImplBase { |
151 |
public: |
152 |
virtual ~CallbackImpl () {} |
153 |
virtual R operator() (T1, T2, T3, T4, T5, T6, T7) = 0; |
154 |
}; |
155 |
// define CallbackImpl for 8 params |
156 |
template <typename R, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8> |
157 |
class CallbackImpl<R,T1,T2,T3,T4,T5,T6,T7,T8,empty> : public CallbackImplBase { |
158 |
public: |
159 |
virtual ~CallbackImpl () {} |
160 |
virtual R operator() (T1, T2, T3, T4, T5, T6, T7, T8) = 0; |
161 |
}; |
162 |
// define CallbackImpl for 9 params |
163 |
template <typename R, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9> |
164 |
class CallbackImpl : public CallbackImplBase { |
165 |
public: |
166 |
virtual ~CallbackImpl () {} |
167 |
virtual R operator() (T1, T2, T3, T4, T5, T6, T7, T8, T9) = 0; |
168 |
}; |
148 |
|
169 |
|
149 |
|
170 |
|
150 |
// an impl for Functors: |
171 |
// an impl for Functors: |
151 |
template <typename T, typename R, typename T1, typename T2, typename T3, typename T4,typename T5, typename T6> |
172 |
template <typename T, typename R, typename T1, typename T2, typename T3, typename T4,typename T5, typename T6, typename T7, typename T8, typename T9> |
152 |
class FunctorCallbackImpl : public CallbackImpl<R,T1,T2,T3,T4,T5,T6> { |
173 |
class FunctorCallbackImpl : public CallbackImpl<R,T1,T2,T3,T4,T5,T6,T7,T8,T9> { |
153 |
public: |
174 |
public: |
154 |
FunctorCallbackImpl (T const &functor) |
175 |
FunctorCallbackImpl (T const &functor) |
155 |
: m_functor (functor) {} |
176 |
: m_functor (functor) {} |
156 |
virtual ~FunctorCallbackImpl () {} |
177 |
virtual ~FunctorCallbackImpl () {} |
157 |
R operator() (void) { |
178 |
R operator() (void) { |
158 |
return m_functor (); |
179 |
return m_functor (); |
159 |
} |
180 |
} |
160 |
R operator() (T1 a1) { |
181 |
R operator() (T1 a1) { |
161 |
return m_functor (a1); |
182 |
return m_functor (a1); |
162 |
} |
183 |
} |
163 |
R operator() (T1 a1,T2 a2) { |
184 |
R operator() (T1 a1,T2 a2) { |
164 |
return m_functor (a1,a2); |
185 |
return m_functor (a1,a2); |
165 |
} |
186 |
} |
166 |
R operator() (T1 a1,T2 a2,T3 a3) { |
187 |
R operator() (T1 a1,T2 a2,T3 a3) { |
167 |
return m_functor (a1,a2,a3); |
188 |
return m_functor (a1,a2,a3); |
168 |
} |
189 |
} |
169 |
R operator() (T1 a1,T2 a2,T3 a3,T4 a4) { |
190 |
R operator() (T1 a1,T2 a2,T3 a3,T4 a4) { |
170 |
return m_functor (a1,a2,a3,a4); |
191 |
return m_functor (a1,a2,a3,a4); |
171 |
} |
192 |
} |
172 |
R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5) { |
193 |
R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5) { |
173 |
return m_functor (a1,a2,a3,a4,a5); |
194 |
return m_functor (a1,a2,a3,a4,a5); |
174 |
} |
195 |
} |
175 |
R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6) { |
196 |
R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6) { |
176 |
return m_functor (a1,a2,a3,a4,a5,a6); |
197 |
return m_functor (a1,a2,a3,a4,a5,a6); |
177 |
} |
198 |
} |
|
|
199 |
R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7) { |
200 |
return m_functor (a1,a2,a3,a4,a5,a6,a7); |
201 |
} |
202 |
R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8) { |
203 |
return m_functor (a1,a2,a3,a4,a5,a6,a7,a8); |
204 |
} |
205 |
R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8,T9 a9) { |
206 |
return m_functor (a1,a2,a3,a4,a5,a6,a7,a8,a9); |
207 |
} |
178 |
virtual bool IsEqual (Ptr<const CallbackImplBase> other) const { |
208 |
virtual bool IsEqual (Ptr<const CallbackImplBase> other) const { |
179 |
FunctorCallbackImpl<T,R,T1,T2,T3,T4,T5,T6> const *otherDerived = |
209 |
FunctorCallbackImpl<T,R,T1,T2,T3,T4,T5,T6,T7,T8,T9> const *otherDerived = |
180 |
dynamic_cast<FunctorCallbackImpl<T,R,T1,T2,T3,T4,T5,T6> const *> (PeekPointer(other)); |
210 |
dynamic_cast<FunctorCallbackImpl<T,R,T1,T2,T3,T4,T5,T6,T7,T8,T9> const *> (PeekPointer(other)); |
181 |
if (otherDerived == 0) |
211 |
if (otherDerived == 0) |
182 |
{ |
212 |
{ |
183 |
return false; |
213 |
return false; |
|
193 |
}; |
223 |
}; |
194 |
|
224 |
|
195 |
// an impl for pointer to member functions |
225 |
// an impl for pointer to member functions |
196 |
template <typename OBJ_PTR, typename MEM_PTR, typename R, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6> |
226 |
template <typename OBJ_PTR, typename MEM_PTR, typename R, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9> |
197 |
class MemPtrCallbackImpl : public CallbackImpl<R,T1,T2,T3,T4,T5,T6> { |
227 |
class MemPtrCallbackImpl : public CallbackImpl<R,T1,T2,T3,T4,T5,T6,T7,T8,T9> { |
198 |
public: |
228 |
public: |
199 |
MemPtrCallbackImpl (OBJ_PTR const&objPtr, MEM_PTR mem_ptr) |
229 |
MemPtrCallbackImpl (OBJ_PTR const&objPtr, MEM_PTR mem_ptr) |
200 |
: m_objPtr (objPtr), m_memPtr (mem_ptr) {} |
230 |
: m_objPtr (objPtr), m_memPtr (mem_ptr) {} |
|
220 |
R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6) { |
250 |
R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6) { |
221 |
return ((CallbackTraits<OBJ_PTR>::GetReference (m_objPtr)).*m_memPtr) (a1, a2, a3, a4, a5, a6); |
251 |
return ((CallbackTraits<OBJ_PTR>::GetReference (m_objPtr)).*m_memPtr) (a1, a2, a3, a4, a5, a6); |
222 |
} |
252 |
} |
|
|
253 |
R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7) { |
254 |
return ((CallbackTraits<OBJ_PTR>::GetReference (m_objPtr)).*m_memPtr) (a1, a2, a3, a4, a5, a6, a7); |
255 |
} |
256 |
R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8) { |
257 |
return ((CallbackTraits<OBJ_PTR>::GetReference (m_objPtr)).*m_memPtr) (a1, a2, a3, a4, a5, a6, a7, a8); |
258 |
} |
259 |
R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8, T9 a9) { |
260 |
return ((CallbackTraits<OBJ_PTR>::GetReference (m_objPtr)).*m_memPtr) (a1, a2, a3, a4, a5, a6, a7, a8, a9); |
261 |
} |
223 |
virtual bool IsEqual (Ptr<const CallbackImplBase> other) const { |
262 |
virtual bool IsEqual (Ptr<const CallbackImplBase> other) const { |
224 |
MemPtrCallbackImpl<OBJ_PTR,MEM_PTR,R,T1,T2,T3,T4,T5,T6> const *otherDerived = |
263 |
MemPtrCallbackImpl<OBJ_PTR,MEM_PTR,R,T1,T2,T3,T4,T5,T6,T7,T8,T9> const *otherDerived = |
225 |
dynamic_cast<MemPtrCallbackImpl<OBJ_PTR,MEM_PTR,R,T1,T2,T3,T4,T5,T6> const *> (PeekPointer (other)); |
264 |
dynamic_cast<MemPtrCallbackImpl<OBJ_PTR,MEM_PTR,R,T1,T2,T3,T4,T5,T6,T7,T8,T9> const *> (PeekPointer (other)); |
226 |
if (otherDerived == 0) |
265 |
if (otherDerived == 0) |
227 |
{ |
266 |
{ |
228 |
return false; |
267 |
return false; |
|
240 |
}; |
279 |
}; |
241 |
|
280 |
|
242 |
// an impl for Bound Functors: |
281 |
// an impl for Bound Functors: |
243 |
template <typename T, typename R, typename TX, typename T1, typename T2, typename T3, typename T4,typename T5> |
282 |
template <typename T, typename R, typename TX, typename T1, typename T2, typename T3, typename T4,typename T5, typename T6, typename T7, typename T8> |
244 |
class BoundFunctorCallbackImpl : public CallbackImpl<R,T1,T2,T3,T4,T5,empty> { |
283 |
class BoundFunctorCallbackImpl : public CallbackImpl<R,T1,T2,T3,T4,T5,T6,T7,T8,empty> { |
245 |
public: |
284 |
public: |
246 |
template <typename FUNCTOR, typename ARG> |
285 |
template <typename FUNCTOR, typename ARG> |
247 |
BoundFunctorCallbackImpl (FUNCTOR functor, ARG a) |
286 |
BoundFunctorCallbackImpl (FUNCTOR functor, ARG a) |
248 |
: m_functor (functor), m_a (a) {} |
287 |
: m_functor (functor), m_a (a) {} |
249 |
virtual ~BoundFunctorCallbackImpl () {} |
288 |
virtual ~BoundFunctorCallbackImpl () {} |
250 |
R operator() (void) { |
289 |
R operator() (void) { |
251 |
return m_functor (m_a); |
290 |
return m_functor (m_a); |
252 |
} |
291 |
} |
253 |
R operator() (T1 a1) { |
292 |
R operator() (T1 a1) { |
254 |
return m_functor (m_a,a1); |
293 |
return m_functor (m_a,a1); |
255 |
} |
294 |
} |
256 |
R operator() (T1 a1,T2 a2) { |
295 |
R operator() (T1 a1,T2 a2) { |
257 |
return m_functor (m_a,a1,a2); |
296 |
return m_functor (m_a,a1,a2); |
258 |
} |
297 |
} |
259 |
R operator() (T1 a1,T2 a2,T3 a3) { |
298 |
R operator() (T1 a1,T2 a2,T3 a3) { |
260 |
return m_functor (m_a,a1,a2,a3); |
299 |
return m_functor (m_a,a1,a2,a3); |
261 |
} |
300 |
} |
262 |
R operator() (T1 a1,T2 a2,T3 a3,T4 a4) { |
301 |
R operator() (T1 a1,T2 a2,T3 a3,T4 a4) { |
263 |
return m_functor (m_a,a1,a2,a3,a4); |
302 |
return m_functor (m_a,a1,a2,a3,a4); |
264 |
} |
303 |
} |
265 |
R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5) { |
304 |
R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5) { |
266 |
return m_functor (m_a,a1,a2,a3,a4,a5); |
305 |
return m_functor (m_a,a1,a2,a3,a4,a5); |
|
|
306 |
} |
307 |
R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6) { |
308 |
return m_functor (m_a,a1,a2,a3,a4,a5,a6); |
309 |
} |
310 |
R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7) { |
311 |
return m_functor (m_a,a1,a2,a3,a4,a5,a6,a7); |
312 |
} |
313 |
R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8) { |
314 |
return m_functor (m_a,a1,a2,a3,a4,a5,a6,a7,a8); |
267 |
} |
315 |
} |
268 |
virtual bool IsEqual (Ptr<const CallbackImplBase> other) const { |
316 |
virtual bool IsEqual (Ptr<const CallbackImplBase> other) const { |
269 |
BoundFunctorCallbackImpl<T,R,TX,T1,T2,T3,T4,T5> const *otherDerived = |
317 |
BoundFunctorCallbackImpl<T,R,TX,T1,T2,T3,T4,T5,T6,T7,T8> const *otherDerived = |
270 |
dynamic_cast<BoundFunctorCallbackImpl<T,R,TX,T1,T2,T3,T4,T5> const *> (PeekPointer (other)); |
318 |
dynamic_cast<BoundFunctorCallbackImpl<T,R,TX,T1,T2,T3,T4,T5,T6,T7,T8> const *> (PeekPointer (other)); |
271 |
if (otherDerived == 0) |
319 |
if (otherDerived == 0) |
272 |
{ |
320 |
{ |
273 |
return false; |
321 |
return false; |
|
324 |
*/ |
372 |
*/ |
325 |
|
373 |
|
326 |
template<typename R, |
374 |
template<typename R, |
327 |
typename T1 = empty, typename T2 = empty, |
375 |
typename T1 = empty, typename T2 = empty, |
328 |
typename T3 = empty, typename T4 = empty, |
376 |
typename T3 = empty, typename T4 = empty, |
329 |
typename T5 = empty, typename T6 = empty> |
377 |
typename T5 = empty, typename T6 = empty, |
|
|
378 |
typename T7 = empty, typename T8 = empty, |
379 |
typename T9 = empty> |
330 |
class Callback : public CallbackBase { |
380 |
class Callback : public CallbackBase { |
331 |
public: |
381 |
public: |
332 |
Callback () {} |
382 |
Callback () {} |
|
335 |
// always properly disambiguited by the c++ compiler |
385 |
// always properly disambiguited by the c++ compiler |
336 |
template <typename FUNCTOR> |
386 |
template <typename FUNCTOR> |
337 |
Callback (FUNCTOR const &functor, bool, bool) |
387 |
Callback (FUNCTOR const &functor, bool, bool) |
338 |
: CallbackBase (Create<FunctorCallbackImpl<FUNCTOR,R,T1,T2,T3,T4,T5,T6> > (functor)) |
388 |
: CallbackBase (Create<FunctorCallbackImpl<FUNCTOR,R,T1,T2,T3,T4,T5,T6,T7,T8,T9> > (functor)) |
339 |
{} |
389 |
{} |
340 |
|
390 |
|
341 |
template <typename OBJ_PTR, typename MEM_PTR> |
391 |
template <typename OBJ_PTR, typename MEM_PTR> |
342 |
Callback (OBJ_PTR const &objPtr, MEM_PTR mem_ptr) |
392 |
Callback (OBJ_PTR const &objPtr, MEM_PTR mem_ptr) |
343 |
: CallbackBase (Create<MemPtrCallbackImpl<OBJ_PTR,MEM_PTR,R,T1,T2,T3,T4,T5,T6> > (objPtr, mem_ptr)) |
393 |
: CallbackBase (Create<MemPtrCallbackImpl<OBJ_PTR,MEM_PTR,R,T1,T2,T3,T4,T5,T6,T7,T8,T9> > (objPtr, mem_ptr)) |
344 |
{} |
394 |
{} |
345 |
|
395 |
|
346 |
Callback (Ptr<CallbackImpl<R,T1,T2,T3,T4,T5,T6> > const &impl) |
396 |
Callback (Ptr<CallbackImpl<R,T1,T2,T3,T4,T5,T6,T7,T8,T9> > const &impl) |
347 |
: CallbackBase (impl) |
397 |
: CallbackBase (impl) |
348 |
{} |
398 |
{} |
349 |
|
399 |
|
350 |
template <typename T> |
400 |
template <typename T> |
351 |
Callback<R,T2,T3,T4,T5,T6> Bind (T a) { |
401 |
Callback<R,T2,T3,T4,T5,T6,T7,T8,T9> Bind (T a) { |
352 |
Ptr<CallbackImpl<R,T2,T3,T4,T5,T6,empty> > impl = |
402 |
Ptr<CallbackImpl<R,T2,T3,T4,T5,T6,T7,T8,T9,empty> > impl = |
353 |
Ptr<CallbackImpl<R,T2,T3,T4,T5,T6,empty> > ( |
403 |
Ptr<CallbackImpl<R,T2,T3,T4,T5,T6,T7,T8,T9,empty> > ( |
354 |
new BoundFunctorCallbackImpl< |
404 |
new BoundFunctorCallbackImpl< |
355 |
Callback<R,T1,T2,T3,T4,T5,T6>, |
405 |
Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9>, |
356 |
R,T1,T2,T3,T4,T5,T6> (*this, a), false); |
406 |
R,T1,T2,T3,T4,T5,T6,T7,T8,T9> (*this, a), false); |
357 |
return Callback<R,T2,T3,T4,T5,T6> (impl); |
407 |
return Callback<R,T2,T3,T4,T5,T6,T7,T8,T9> (impl); |
358 |
} |
408 |
} |
359 |
|
409 |
|
360 |
bool IsNull (void) const { |
410 |
bool IsNull (void) const { |
|
385 |
R operator() (T1 a1, T2 a2, T3 a3, T4 a4,T5 a5,T6 a6) const { |
435 |
R operator() (T1 a1, T2 a2, T3 a3, T4 a4,T5 a5,T6 a6) const { |
386 |
return (*(DoPeekImpl ())) (a1,a2,a3,a4,a5,a6); |
436 |
return (*(DoPeekImpl ())) (a1,a2,a3,a4,a5,a6); |
387 |
} |
437 |
} |
|
|
438 |
R operator() (T1 a1, T2 a2, T3 a3, T4 a4,T5 a5,T6 a6,T7 a7) const { |
439 |
return (*(DoPeekImpl ())) (a1,a2,a3,a4,a5,a6,a7); |
440 |
} |
441 |
R operator() (T1 a1, T2 a2, T3 a3, T4 a4,T5 a5,T6 a6,T7 a7,T8 a8) const { |
442 |
return (*(DoPeekImpl ())) (a1,a2,a3,a4,a5,a6,a7,a8); |
443 |
} |
444 |
R operator() (T1 a1, T2 a2, T3 a3, T4 a4,T5 a5,T6 a6,T7 a7,T8 a8, T9 a9) const { |
445 |
return (*(DoPeekImpl ())) (a1,a2,a3,a4,a5,a6,a7,a8,a9); |
446 |
} |
388 |
|
447 |
|
389 |
bool IsEqual (const CallbackBase &other) const { |
448 |
bool IsEqual (const CallbackBase &other) const { |
390 |
return m_impl->IsEqual (other.GetImpl ()); |
449 |
return m_impl->IsEqual (other.GetImpl ()); |
|
397 |
DoAssign (other.GetImpl ()); |
456 |
DoAssign (other.GetImpl ()); |
398 |
} |
457 |
} |
399 |
private: |
458 |
private: |
400 |
CallbackImpl<R,T1,T2,T3,T4,T5,T6> *DoPeekImpl (void) const { |
459 |
CallbackImpl<R,T1,T2,T3,T4,T5,T6,T7,T8,T9> *DoPeekImpl (void) const { |
401 |
return static_cast<CallbackImpl<R,T1,T2,T3,T4,T5,T6> *> (PeekPointer (m_impl)); |
460 |
return static_cast<CallbackImpl<R,T1,T2,T3,T4,T5,T6,T7,T8,T9> *> (PeekPointer (m_impl)); |
402 |
} |
461 |
} |
403 |
bool DoCheckType (Ptr<const CallbackImplBase> other) const { |
462 |
bool DoCheckType (Ptr<const CallbackImplBase> other) const { |
404 |
if (other != 0 && dynamic_cast<const CallbackImpl<R,T1,T2,T3,T4,T5,T6> *> (PeekPointer (other)) != 0) |
463 |
if (other != 0 && dynamic_cast<const CallbackImpl<R,T1,T2,T3,T4,T5,T6,T7,T8,T9> *> (PeekPointer (other)) != 0) |
405 |
{ |
464 |
{ |
406 |
return true; |
465 |
return true; |
407 |
} |
466 |
} |
|
419 |
{ |
478 |
{ |
420 |
NS_FATAL_ERROR ("Incompatible types. (feed to \"c++filt -t\")" |
479 |
NS_FATAL_ERROR ("Incompatible types. (feed to \"c++filt -t\")" |
421 |
" got=" << typeid (*other).name () << |
480 |
" got=" << typeid (*other).name () << |
422 |
", expected=" << typeid (CallbackImpl<R,T1,T2,T3,T4,T5,T6> *).name ()); |
481 |
", expected=" << typeid (CallbackImpl<R,T1,T2,T3,T4,T5,T6,T7,T8,T9> *).name ()); |
423 |
} |
482 |
} |
424 |
m_impl = const_cast<CallbackImplBase *> (PeekPointer (other)); |
483 |
m_impl = const_cast<CallbackImplBase *> (PeekPointer (other)); |
425 |
} |
484 |
} |
|
428 |
|
487 |
|
429 |
template <typename R, typename T1, typename T2, |
488 |
template <typename R, typename T1, typename T2, |
430 |
typename T3, typename T4, |
489 |
typename T3, typename T4, |
431 |
typename T5, typename T6> |
490 |
typename T5, typename T6, |
432 |
bool operator != (Callback<R,T1,T2,T3,T4,T5,T6> a, Callback<R,T1,T2,T3,T4,T5,T6> b) |
491 |
typename T7, typename T8, |
|
|
492 |
typename T9> |
493 |
bool operator != (Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9> a, Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9> b) |
433 |
{ |
494 |
{ |
434 |
return !a.IsEqual (b); |
495 |
return !a.IsEqual (b); |
435 |
} |
496 |
} |
|
541 |
* \param mem_ptr class method member pointer |
602 |
* \param mem_ptr class method member pointer |
542 |
* \param objPtr class instance |
603 |
* \param objPtr class instance |
543 |
* \return a wrapper Callback |
604 |
* \return a wrapper Callback |
544 |
* Build Callbacks for class method members which takes five arguments |
605 |
* Build Callbacks for class method members which takes six arguments |
545 |
* and potentially return a value. |
606 |
* and potentially return a value. |
546 |
*/ |
607 |
*/ |
547 |
template <typename T, typename OBJ, typename R, typename T1, typename T2, typename T3, typename T4,typename T5,typename T6> |
608 |
template <typename T, typename OBJ, typename R, typename T1, typename T2, typename T3, typename T4,typename T5,typename T6> |
|
551 |
template <typename T, typename OBJ, typename R, typename T1, typename T2, typename T3, typename T4,typename T5, typename T6> |
612 |
template <typename T, typename OBJ, typename R, typename T1, typename T2, typename T3, typename T4,typename T5, typename T6> |
552 |
Callback<R,T1,T2,T3,T4,T5,T6> MakeCallback (R (T::*mem_ptr) (T1,T2,T3,T4,T5,T6) const, OBJ objPtr) { |
613 |
Callback<R,T1,T2,T3,T4,T5,T6> MakeCallback (R (T::*mem_ptr) (T1,T2,T3,T4,T5,T6) const, OBJ objPtr) { |
553 |
return Callback<R,T1,T2,T3,T4,T5,T6> (objPtr, mem_ptr); |
614 |
return Callback<R,T1,T2,T3,T4,T5,T6> (objPtr, mem_ptr); |
|
|
615 |
} |
616 |
|
617 |
/** |
618 |
* \ingroup MakeCallback |
619 |
* \param mem_ptr class method member pointer |
620 |
* \param objPtr class instance |
621 |
* \return a wrapper Callback |
622 |
* Build Callbacks for class method members which takes seven arguments |
623 |
* and potentially return a value. |
624 |
*/ |
625 |
template <typename T, typename OBJ, typename R, typename T1, typename T2, typename T3, typename T4,typename T5,typename T6, typename T7> |
626 |
Callback<R,T1,T2,T3,T4,T5,T6,T7> MakeCallback (R (T::*mem_ptr) (T1,T2,T3,T4,T5,T6,T7), OBJ objPtr) { |
627 |
return Callback<R,T1,T2,T3,T4,T5,T6,T7> (objPtr, mem_ptr); |
628 |
} |
629 |
template <typename T, typename OBJ, typename R, typename T1, typename T2, typename T3, typename T4,typename T5, typename T6, typename T7> |
630 |
Callback<R,T1,T2,T3,T4,T5,T6,T7> MakeCallback (R (T::*mem_ptr) (T1,T2,T3,T4,T5,T6,T7) const, OBJ objPtr) { |
631 |
return Callback<R,T1,T2,T3,T4,T5,T6,T7> (objPtr, mem_ptr); |
632 |
} |
633 |
|
634 |
|
635 |
/** |
636 |
* \ingroup MakeCallback |
637 |
* \param mem_ptr class method member pointer |
638 |
* \param objPtr class instance |
639 |
* \return a wrapper Callback |
640 |
* Build Callbacks for class method members which takes eight arguments |
641 |
* and potentially return a value. |
642 |
*/ |
643 |
template <typename T, typename OBJ, typename R, typename T1, typename T2, typename T3, typename T4,typename T5,typename T6, typename T7, typename T8> |
644 |
Callback<R,T1,T2,T3,T4,T5,T6,T7,T8> MakeCallback (R (T::*mem_ptr) (T1,T2,T3,T4,T5,T6,T7,T8), OBJ objPtr) { |
645 |
return Callback<R,T1,T2,T3,T4,T5,T6,T7,T8> (objPtr, mem_ptr); |
646 |
} |
647 |
template <typename T, typename OBJ, typename R, typename T1, typename T2, typename T3, typename T4,typename T5, typename T6, typename T7, typename T8> |
648 |
Callback<R,T1,T2,T3,T4,T5,T6,T7,T8> MakeCallback (R (T::*mem_ptr) (T1,T2,T3,T4,T5,T6,T7,T8) const, OBJ objPtr) { |
649 |
return Callback<R,T1,T2,T3,T4,T5,T6,T7,T8> (objPtr, mem_ptr); |
650 |
} |
651 |
|
652 |
/** |
653 |
* \ingroup MakeCallback |
654 |
* \param mem_ptr class method member pointer |
655 |
* \param objPtr class instance |
656 |
* \return a wrapper Callback |
657 |
* Build Callbacks for class method members which takes nine arguments |
658 |
* and potentially return a value. |
659 |
*/ |
660 |
template <typename T, typename OBJ, typename R, typename T1, typename T2, typename T3, typename T4,typename T5,typename T6, typename T7, typename T8, typename T9> |
661 |
Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9> MakeCallback (R (T::*mem_ptr) (T1,T2,T3,T4,T5,T6,T7,T8,T9), OBJ objPtr) { |
662 |
return Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9> (objPtr, mem_ptr); |
663 |
} |
664 |
template <typename T, typename OBJ, typename R, typename T1, typename T2, typename T3, typename T4,typename T5, typename T6, typename T7, typename T8, typename T9> |
665 |
Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9> MakeCallback (R (T::*mem_ptr) (T1,T2,T3,T4,T5,T6,T7,T8,T9) const, OBJ objPtr) { |
666 |
return Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9> (objPtr, mem_ptr); |
554 |
} |
667 |
} |
555 |
|
668 |
|
556 |
/** |
669 |
/** |
|
623 |
* \ingroup MakeCallback |
736 |
* \ingroup MakeCallback |
624 |
* \param fnPtr function pointer |
737 |
* \param fnPtr function pointer |
625 |
* \return a wrapper Callback |
738 |
* \return a wrapper Callback |
626 |
* Build Callbacks for functions which takes five arguments |
739 |
* Build Callbacks for functions which takes six arguments |
627 |
* and potentially return a value. |
740 |
* and potentially return a value. |
628 |
*/ |
741 |
*/ |
629 |
template <typename R, typename T1, typename T2,typename T3,typename T4,typename T5,typename T6> |
742 |
template <typename R, typename T1, typename T2,typename T3,typename T4,typename T5,typename T6> |
630 |
Callback<R,T1,T2,T3,T4,T5,T6> MakeCallback (R (*fnPtr) (T1,T2,T3,T4,T5,T6)) { |
743 |
Callback<R,T1,T2,T3,T4,T5,T6> MakeCallback (R (*fnPtr) (T1,T2,T3,T4,T5,T6)) { |
631 |
return Callback<R,T1,T2,T3,T4,T5,T6> (fnPtr, true, true); |
744 |
return Callback<R,T1,T2,T3,T4,T5,T6> (fnPtr, true, true); |
|
|
745 |
} |
746 |
|
747 |
/** |
748 |
* \ingroup MakeCallback |
749 |
* \param fnPtr function pointer |
750 |
* \return a wrapper Callback |
751 |
* Build Callbacks for functions which takes seven arguments |
752 |
* and potentially return a value. |
753 |
*/ |
754 |
template <typename R, typename T1, typename T2,typename T3,typename T4,typename T5,typename T6, typename T7> |
755 |
Callback<R,T1,T2,T3,T4,T5,T6,T7> MakeCallback (R (*fnPtr) (T1,T2,T3,T4,T5,T6,T7)) { |
756 |
return Callback<R,T1,T2,T3,T4,T5,T6,T7> (fnPtr, true, true); |
757 |
} |
758 |
|
759 |
/** |
760 |
* \ingroup MakeCallback |
761 |
* \param fnPtr function pointer |
762 |
* \return a wrapper Callback |
763 |
* Build Callbacks for functions which takes eight arguments |
764 |
* and potentially return a value. |
765 |
*/ |
766 |
template <typename R, typename T1, typename T2,typename T3,typename T4,typename T5,typename T6, typename T7, typename T8> |
767 |
Callback<R,T1,T2,T3,T4,T5,T6,T7,T8> MakeCallback (R (*fnPtr) (T1,T2,T3,T4,T5,T6,T7,T8)) { |
768 |
return Callback<R,T1,T2,T3,T4,T5,T6,T7,T8> (fnPtr, true, true); |
769 |
} |
770 |
|
771 |
/** |
772 |
* \ingroup MakeCallback |
773 |
* \param fnPtr function pointer |
774 |
* \return a wrapper Callback |
775 |
* Build Callbacks for functions which takes nine arguments |
776 |
* and potentially return a value. |
777 |
*/ |
778 |
template <typename R, typename T1, typename T2,typename T3,typename T4,typename T5,typename T6, typename T7, typename T8, typename T9> |
779 |
Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9> MakeCallback (R (*fnPtr) (T1,T2,T3,T4,T5,T6,T7,T8,T9)) { |
780 |
return Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9> (fnPtr, true, true); |
632 |
} |
781 |
} |
633 |
|
782 |
|
634 |
|
783 |
|
|
702 |
* \ingroup MakeCallback |
851 |
* \ingroup MakeCallback |
703 |
* \overload Callback<R> MakeNullCallback (void) |
852 |
* \overload Callback<R> MakeNullCallback (void) |
704 |
* \return a wrapper Callback |
853 |
* \return a wrapper Callback |
705 |
* Build a null callback which takes five arguments |
854 |
* Build a null callback which takes six arguments |
706 |
* and potentially return a value. |
855 |
* and potentially return a value. |
707 |
*/ |
856 |
*/ |
708 |
template <typename R, typename T1, typename T2,typename T3,typename T4,typename T5,typename T6> |
857 |
template <typename R, typename T1, typename T2,typename T3,typename T4,typename T5,typename T6> |
709 |
Callback<R,T1,T2,T3,T4,T5,T6> MakeNullCallback (void) { |
858 |
Callback<R,T1,T2,T3,T4,T5,T6> MakeNullCallback (void) { |
710 |
return Callback<R,T1,T2,T3,T4,T5,T6> (); |
859 |
return Callback<R,T1,T2,T3,T4,T5,T6> (); |
|
|
860 |
} |
861 |
|
862 |
/** |
863 |
* \ingroup MakeCallback |
864 |
* \overload Callback<R> MakeNullCallback (void) |
865 |
* \return a wrapper Callback |
866 |
* Build a null callback which takes seven arguments |
867 |
* and potentially return a value. |
868 |
*/ |
869 |
template <typename R, typename T1, typename T2,typename T3,typename T4,typename T5,typename T6, typename T7> |
870 |
Callback<R,T1,T2,T3,T4,T5,T6,T7> MakeNullCallback (void) { |
871 |
return Callback<R,T1,T2,T3,T4,T5,T6,T7> (); |
872 |
} |
873 |
|
874 |
/** |
875 |
* \ingroup MakeCallback |
876 |
* \overload Callback<R> MakeNullCallback (void) |
877 |
* \return a wrapper Callback |
878 |
* Build a null callback which takes eight arguments |
879 |
* and potentially return a value. |
880 |
*/ |
881 |
template <typename R, typename T1, typename T2,typename T3,typename T4,typename T5,typename T6, typename T7, typename T8> |
882 |
Callback<R,T1,T2,T3,T4,T5,T6,T7,T8> MakeNullCallback (void) { |
883 |
return Callback<R,T1,T2,T3,T4,T5,T6,T7,T8> (); |
884 |
} |
885 |
|
886 |
/** |
887 |
* \ingroup MakeCallback |
888 |
* \overload Callback<R> MakeNullCallback (void) |
889 |
* \return a wrapper Callback |
890 |
* Build a null callback which takes nine arguments |
891 |
* and potentially return a value. |
892 |
*/ |
893 |
template <typename R, typename T1, typename T2,typename T3,typename T4,typename T5,typename T6, typename T7, typename T8, typename T9> |
894 |
Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9> MakeNullCallback (void) { |
895 |
return Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9> (); |
711 |
} |
896 |
} |
712 |
|
897 |
|
713 |
|
898 |
|
|
719 |
|
904 |
|
720 |
template <typename R, typename TX, typename ARG> |
905 |
template <typename R, typename TX, typename ARG> |
721 |
Callback<R> MakeBoundCallback (R (*fnPtr) (TX), ARG a) { |
906 |
Callback<R> MakeBoundCallback (R (*fnPtr) (TX), ARG a) { |
722 |
Ptr<CallbackImpl<R,empty,empty,empty,empty,empty,empty> > impl = |
907 |
Ptr<CallbackImpl<R,empty,empty,empty,empty,empty,empty,empty,empty,empty> > impl = |
723 |
Create<BoundFunctorCallbackImpl<R (*) (TX),R,TX,empty,empty,empty,empty,empty> >(fnPtr, a); |
908 |
Create<BoundFunctorCallbackImpl<R (*) (TX),R,TX,empty,empty,empty,empty,empty,empty,empty,empty> >(fnPtr, a); |
724 |
return Callback<R> (impl); |
909 |
return Callback<R> (impl); |
725 |
} |
910 |
} |
726 |
|
911 |
|
727 |
template <typename R, typename TX, typename ARG, |
912 |
template <typename R, typename TX, typename ARG, |
728 |
typename T1> |
913 |
typename T1> |
729 |
Callback<R,T1> MakeBoundCallback (R (*fnPtr) (TX,T1), ARG a) { |
914 |
Callback<R,T1> MakeBoundCallback (R (*fnPtr) (TX,T1), ARG a) { |
730 |
Ptr<CallbackImpl<R,T1,empty,empty,empty,empty,empty> > impl = |
915 |
Ptr<CallbackImpl<R,T1,empty,empty,empty,empty,empty,empty,empty,empty> > impl = |
731 |
Create<BoundFunctorCallbackImpl<R (*) (TX,T1),R,TX,T1,empty,empty,empty,empty> > (fnPtr, a); |
916 |
Create<BoundFunctorCallbackImpl<R (*) (TX,T1),R,TX,T1,empty,empty,empty,empty,empty,empty,empty> > (fnPtr, a); |
732 |
return Callback<R,T1> (impl); |
917 |
return Callback<R,T1> (impl); |
733 |
} |
918 |
} |
734 |
template <typename R, typename TX, typename ARG, |
919 |
template <typename R, typename TX, typename ARG, |
735 |
typename T1, typename T2> |
920 |
typename T1, typename T2> |
736 |
Callback<R,T1,T2> MakeBoundCallback (R (*fnPtr) (TX,T1,T2), ARG a) { |
921 |
Callback<R,T1,T2> MakeBoundCallback (R (*fnPtr) (TX,T1,T2), ARG a) { |
737 |
Ptr<CallbackImpl<R,T1,T2,empty,empty,empty,empty> > impl = |
922 |
Ptr<CallbackImpl<R,T1,T2,empty,empty,empty,empty,empty,empty,empty> > impl = |
738 |
Create<BoundFunctorCallbackImpl<R (*) (TX,T1,T2),R,TX,T1,T2,empty,empty,empty> > (fnPtr, a); |
923 |
Create<BoundFunctorCallbackImpl<R (*) (TX,T1,T2),R,TX,T1,T2,empty,empty,empty,empty,empty,empty> > (fnPtr, a); |
739 |
return Callback<R,T1,T2> (impl); |
924 |
return Callback<R,T1,T2> (impl); |
740 |
} |
925 |
} |
741 |
template <typename R, typename TX, typename ARG, |
926 |
template <typename R, typename TX, typename ARG, |
742 |
typename T1, typename T2,typename T3> |
927 |
typename T1, typename T2,typename T3> |
743 |
Callback<R,T1,T2,T3> MakeBoundCallback (R (*fnPtr) (TX,T1,T2,T3), ARG a) { |
928 |
Callback<R,T1,T2,T3> MakeBoundCallback (R (*fnPtr) (TX,T1,T2,T3), ARG a) { |
744 |
Ptr<CallbackImpl<R,T1,T2,T3,empty,empty,empty> > impl = |
929 |
Ptr<CallbackImpl<R,T1,T2,T3,empty,empty,empty,empty,empty,empty> > impl = |
745 |
Create<BoundFunctorCallbackImpl<R (*) (TX,T1,T2,T3),R,TX,T1,T2,T3,empty,empty> > (fnPtr, a); |
930 |
Create<BoundFunctorCallbackImpl<R (*) (TX,T1,T2,T3),R,TX,T1,T2,T3,empty,empty,empty,empty,empty> > (fnPtr, a); |
746 |
return Callback<R,T1,T2,T3> (impl); |
931 |
return Callback<R,T1,T2,T3> (impl); |
747 |
} |
932 |
} |
748 |
template <typename R, typename TX, typename ARG, |
933 |
template <typename R, typename TX, typename ARG, |
749 |
typename T1, typename T2,typename T3,typename T4> |
934 |
typename T1, typename T2,typename T3,typename T4> |
750 |
Callback<R,T1,T2,T3,T4> MakeBoundCallback (R (*fnPtr) (TX,T1,T2,T3,T4), ARG a) { |
935 |
Callback<R,T1,T2,T3,T4> MakeBoundCallback (R (*fnPtr) (TX,T1,T2,T3,T4), ARG a) { |
751 |
Ptr<CallbackImpl<R,T1,T2,T3,T4,empty,empty> > impl = |
936 |
Ptr<CallbackImpl<R,T1,T2,T3,T4,empty,empty,empty,empty,empty> > impl = |
752 |
Create<BoundFunctorCallbackImpl<R (*) (TX,T1,T2,T3,T4),R,TX,T1,T2,T3,T4,empty> > (fnPtr, a); |
937 |
Create<BoundFunctorCallbackImpl<R (*) (TX,T1,T2,T3,T4),R,TX,T1,T2,T3,T4,empty,empty,empty,empty> > (fnPtr, a); |
753 |
return Callback<R,T1,T2,T3,T4> (impl); |
938 |
return Callback<R,T1,T2,T3,T4> (impl); |
754 |
} |
939 |
} |
755 |
template <typename R, typename TX, typename ARG, |
940 |
template <typename R, typename TX, typename ARG, |
756 |
typename T1, typename T2,typename T3,typename T4,typename T5> |
941 |
typename T1, typename T2,typename T3,typename T4,typename T5> |
757 |
Callback<R,T1,T2,T3,T4,T5> MakeBoundCallback (R (*fnPtr) (TX,T1,T2,T3,T4,T5), ARG a) { |
942 |
Callback<R,T1,T2,T3,T4,T5> MakeBoundCallback (R (*fnPtr) (TX,T1,T2,T3,T4,T5), ARG a) { |
758 |
Ptr<CallbackImpl<R,T1,T2,T3,T4,T5,empty> > impl = |
943 |
Ptr<CallbackImpl<R,T1,T2,T3,T4,T5,empty,empty,empty,empty> > impl = |
759 |
Create<BoundFunctorCallbackImpl<R (*) (TX,T1,T2,T3,T4,T5),R,TX,T1,T2,T3,T4,T5> > (fnPtr, a); |
944 |
Create<BoundFunctorCallbackImpl<R (*) (TX,T1,T2,T3,T4,T5),R,TX,T1,T2,T3,T4,T5,empty,empty,empty> > (fnPtr, a); |
760 |
return Callback<R,T1,T2,T3,T4,T5> (impl); |
945 |
return Callback<R,T1,T2,T3,T4,T5> (impl); |
|
|
946 |
} |
947 |
template <typename R, typename TX, typename ARG, |
948 |
typename T1, typename T2,typename T3,typename T4,typename T5, typename T6> |
949 |
Callback<R,T1,T2,T3,T4,T5,T6> MakeBoundCallback (R (*fnPtr) (TX,T1,T2,T3,T4,T5,T6), ARG a) { |
950 |
Ptr<CallbackImpl<R,T1,T2,T3,T4,T5,T6,empty,empty,empty> > impl = |
951 |
Create<BoundFunctorCallbackImpl<R (*) (TX,T1,T2,T3,T4,T5,T6),R,TX,T1,T2,T3,T4,T5,T6,empty,empty> > (fnPtr, a); |
952 |
return Callback<R,T1,T2,T3,T4,T5,T6> (impl); |
953 |
} |
954 |
template <typename R, typename TX, typename ARG, |
955 |
typename T1, typename T2,typename T3,typename T4,typename T5, typename T6, typename T7> |
956 |
Callback<R,T1,T2,T3,T4,T5,T6,T7> MakeBoundCallback (R (*fnPtr) (TX,T1,T2,T3,T4,T5,T6,T7), ARG a) { |
957 |
Ptr<CallbackImpl<R,T1,T2,T3,T4,T5,T6,T7,empty,empty> > impl = |
958 |
Create<BoundFunctorCallbackImpl<R (*) (TX,T1,T2,T3,T4,T5,T6,T7),R,TX,T1,T2,T3,T4,T5,T6,T7,empty> > (fnPtr, a); |
959 |
return Callback<R,T1,T2,T3,T4,T5,T6,T7> (impl); |
960 |
} |
961 |
template <typename R, typename TX, typename ARG, |
962 |
typename T1, typename T2,typename T3,typename T4,typename T5, typename T6, typename T7, typename T8> |
963 |
Callback<R,T1,T2,T3,T4,T5,T6,T7,T8> MakeBoundCallback (R (*fnPtr) (TX,T1,T2,T3,T4,T5,T6,T7,T8), ARG a) { |
964 |
Ptr<CallbackImpl<R,T1,T2,T3,T4,T5,T6,T7,T8,empty> > impl = |
965 |
Create<BoundFunctorCallbackImpl<R (*) (TX,T1,T2,T3,T4,T5,T6,T7,T8),R,TX,T1,T2,T3,T4,T5,T6,T7,T8> > (fnPtr, a); |
966 |
return Callback<R,T1,T2,T3,T4,T5,T6,T7,T8> (impl); |
761 |
} |
967 |
} |
762 |
} // namespace ns3 |
968 |
} // namespace ns3 |
763 |
|
969 |
|