root/trunk/whisperlib/common/base/callback/callback1.h

Revision 7, 37.4 kB (checked in by whispercastorg, 2 years ago)

version 0.2.0

Line 
1 // Copyright (c) 2009, Whispersoft s.r.l.
2 // All rights reserved.
3 //
4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are
6 // met:
7 //
8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above
11 // copyright notice, this list of conditions and the following disclaimer
12 // in the documentation and/or other materials provided with the
13 // distribution.
14 // * Neither the name of Whispersoft s.r.l. nor the names of its
15 // contributors may be used to endorse or promote products derived from
16 // this software without specific prior written permission.
17 //
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 //
30
31 #ifndef __COMMON_BASE_CALLBACK_CALLBACK1_H__
32 #define __COMMON_BASE_CALLBACK_CALLBACK1_H__
33
34 #include <whisperlib/common/base/callback/callback.h>
35
36 template<typename X0>
37 class Callback1 : public Callback {
38 public:
39   Callback1(bool is_permanent)
40     : Callback(),
41       is_permanent_(is_permanent) {
42   }
43   virtual ~Callback1() {
44   }
45   void Run(X0 x0) {
46     const bool permanent = is_permanent();
47     RunInternal(x0);
48     if ( !permanent ) {
49       delete this;
50     }
51   }
52   bool is_permanent() const { return is_permanent_; }
53 protected:
54   virtual void RunInternal(X0 x0) = 0;
55 private:
56   const bool is_permanent_;
57 };
58
59 //////////////////////////////////////////////////////////////////////
60
61 template<typename X0>
62 class Callback1_0 : public Callback1<X0> {
63 public:
64   typedef void (*Fun)(X0);
65   Callback1_0(bool is_permanent, Fun fun)
66     : Callback1<X0>(is_permanent),
67       fun_(fun) {
68   }
69 protected:
70   virtual void RunInternal(X0 x0) {
71     (*fun_)(x0);
72   }
73 private:
74   Fun fun_;
75 };
76 template<typename X0>
77 Callback1_0<X0>* NewCallback(void (*fun)(X0)) {
78   return new Callback1_0<X0>(false, fun);
79 }
80 template<typename X0>
81 Callback1_0<X0>* NewPermanentCallback(void (*fun)(X0)) {
82   return new Callback1_0<X0>(true, fun);
83 }
84
85
86 template<typename C, typename X0>
87 class MemberCallback1_0 : public Callback1<X0> {
88 public:
89   typedef void (C::*Fun)(X0);
90   MemberCallback1_0 (bool is_permanent, C* c, Fun fun)
91     : Callback1<X0>(is_permanent),
92       c_(c),
93       fun_(fun) {
94   }
95 protected:
96   virtual void RunInternal(X0 x0) {
97     (c_->*fun_)(x0);
98   }
99 private:
100   C* c_;
101   Fun fun_;
102 };
103
104 template<typename C, typename X0>
105 MemberCallback1_0<C, X0>* NewCallback(C* c, void (C::*fun)(X0)) {
106   return new MemberCallback1_0<C, X0>(false, c, fun);
107 }
108 template<typename C, typename X0>
109 MemberCallback1_0<C, X0>* NewPermanentCallback(C* c, void (C::*fun)(X0)) {
110   return new MemberCallback1_0<C, X0>(true, c, fun);
111 }
112
113 template<typename C, typename X0>
114 class ConstMemberCallback1_0 : public Callback1<X0> {
115 public:
116   typedef void (C::*Fun)(X0) const;
117   ConstMemberCallback1_0 (bool is_permanent, const C* c, Fun fun)
118     : Callback1<X0>(is_permanent),
119       c_(c),
120       fun_(fun) {
121   }
122 protected:
123   virtual void RunInternal(X0 x0) {
124     (c_->*fun_)(x0);
125   }
126 private:
127   const C* c_;
128   Fun fun_;
129 };
130
131 template<typename C, typename X0>
132 ConstMemberCallback1_0<C, X0>* NewCallback(const C* c, void (C::*fun)(X0) const) {
133   return new ConstMemberCallback1_0<C, X0>(false, c, fun);
134 }
135 template<typename C, typename X0>
136 ConstMemberCallback1_0<C, X0>* NewPermanentCallback(const C* c, void (C::*fun)(X0) const) {
137   return new ConstMemberCallback1_0<C, X0>(true, c, fun);
138 }
139
140 //////////////////////////////////////////////////////////////////////
141 //
142 // Autogenerated callback classes (w/ print_callback.py)
143 //
144
145 template<typename T0, typename X0>
146 class Callback1_1 : public Callback1<X0> {
147 public:
148   typedef void (*Fun)(T0, X0);
149   Callback1_1(bool is_permanent, Fun fun, T0 p0)
150     : Callback1<X0>(is_permanent),
151       p0_(p0),
152       fun_(fun) {
153   }
154 protected:
155   virtual void RunInternal(X0 x0) {
156     (*fun_)(p0_, x0);
157   }
158 private:
159   T0 p0_;
160   Fun fun_;
161 };
162 template<typename T0, typename X0>
163 Callback1_1<T0, X0>* NewCallback(void (*fun)(T0, X0), T0 p0) {
164   return new Callback1_1<T0, X0>(false, fun, p0);
165 }
166 template<typename T0, typename X0>
167 Callback1_1<T0, X0>* NewPermanentCallback(void (*fun)(T0, X0), T0 p0) {
168   return new Callback1_1<T0, X0>(true, fun, p0);
169 }
170
171 template<typename C, typename T0, typename X0>
172 class ConstMemberCallback1_1 : public Callback1<X0> {
173 public:
174   typedef void (C::*Fun)(T0, X0) const;
175   ConstMemberCallback1_1 (bool is_permanent, const C* c, Fun fun, T0 p0)
176     : Callback1<X0>(is_permanent),
177       c_(c),
178       p0_(p0),
179       fun_(fun) {
180   }
181 protected:
182   virtual void RunInternal(X0 x0) {
183     (c_->*fun_)(p0_, x0);
184   }
185 private:
186   const C* c_;
187   T0 p0_;
188   Fun fun_;
189 };
190
191 template<typename C, typename T0, typename X0>
192 ConstMemberCallback1_1<C, T0, X0>* NewCallback(const C* c, void (C::*fun)(T0, X0) const, T0 p0) {
193   return new ConstMemberCallback1_1<C, T0, X0>(false, c, fun, p0);
194 }
195 template<typename C, typename T0, typename X0>
196 ConstMemberCallback1_1<C, T0, X0>* NewPermanentCallback(const C* c, void (C::*fun)(T0, X0) const, T0 p0) {
197   return new ConstMemberCallback1_1<C, T0, X0>(true, c, fun, p0);
198 }
199
200 template<typename C, typename T0, typename X0>
201 class MemberCallback1_1 : public Callback1<X0> {
202 public:
203   typedef void (C::*Fun)(T0, X0);
204   MemberCallback1_1 (bool is_permanent, C* c, Fun fun, T0 p0)
205     : Callback1<X0>(is_permanent),
206       c_(c),
207       p0_(p0),
208       fun_(fun) {
209   }
210 protected:
211   virtual void RunInternal(X0 x0) {
212     (c_->*fun_)(p0_, x0);
213   }
214 private:
215   C* c_;
216   T0 p0_;
217   Fun fun_;
218 };
219
220 template<typename C, typename T0, typename X0>
221 MemberCallback1_1<C, T0, X0>* NewCallback(C* c, void (C::*fun)(T0, X0), T0 p0) {
222   return new MemberCallback1_1<C, T0, X0>(false, c, fun, p0);
223 }
224 template<typename C, typename T0, typename X0>
225 MemberCallback1_1<C, T0, X0>* NewPermanentCallback(C* c, void (C::*fun)(T0, X0), T0 p0) {
226   return new MemberCallback1_1<C, T0, X0>(true, c, fun, p0);
227 }
228
229 template<typename T0, typename T1, typename X0>
230 class Callback1_2 : public Callback1<X0> {
231 public:
232   typedef void (*Fun)(T0, T1, X0);
233   Callback1_2(bool is_permanent, Fun fun, T0 p0, T1 p1)
234     : Callback1<X0>(is_permanent),
235       p0_(p0),
236       p1_(p1),
237       fun_(fun) {
238   }
239 protected:
240   virtual void RunInternal(X0 x0) {
241     (*fun_)(p0_, p1_, x0);
242   }
243 private:
244   T0 p0_;
245   T1 p1_;
246   Fun fun_;
247 };
248 template<typename T0, typename T1, typename X0>
249 Callback1_2<T0, T1, X0>* NewCallback(void (*fun)(T0, T1, X0), T0 p0, T1 p1) {
250   return new Callback1_2<T0, T1, X0>(false, fun, p0, p1);
251 }
252 template<typename T0, typename T1, typename X0>
253 Callback1_2<T0, T1, X0>* NewPermanentCallback(void (*fun)(T0, T1, X0), T0 p0, T1 p1) {
254   return new Callback1_2<T0, T1, X0>(true, fun, p0, p1);
255 }
256
257 template<typename C, typename T0, typename T1, typename X0>
258 class ConstMemberCallback1_2 : public Callback1<X0> {
259 public:
260   typedef void (C::*Fun)(T0, T1, X0) const;
261   ConstMemberCallback1_2 (bool is_permanent, const C* c, Fun fun, T0 p0, T1 p1)
262     : Callback1<X0>(is_permanent),
263       c_(c),
264       p0_(p0),
265       p1_(p1),
266       fun_(fun) {
267   }
268 protected:
269   virtual void RunInternal(X0 x0) {
270     (c_->*fun_)(p0_, p1_, x0);
271   }
272 private:
273   const C* c_;
274   T0 p0_;
275   T1 p1_;
276   Fun fun_;
277 };
278
279 template<typename C, typename T0, typename T1, typename X0>
280 ConstMemberCallback1_2<C, T0, T1, X0>* NewCallback(const C* c, void (C::*fun)(T0, T1, X0) const, T0 p0, T1 p1) {
281   return new ConstMemberCallback1_2<C, T0, T1, X0>(false, c, fun, p0, p1);
282 }
283 template<typename C, typename T0, typename T1, typename X0>
284 ConstMemberCallback1_2<C, T0, T1, X0>* NewPermanentCallback(const C* c, void (C::*fun)(T0, T1, X0) const, T0 p0, T1 p1) {
285   return new ConstMemberCallback1_2<C, T0, T1, X0>(true, c, fun, p0, p1);
286 }
287
288 template<typename C, typename T0, typename T1, typename X0>
289 class MemberCallback1_2 : public Callback1<X0> {
290 public:
291   typedef void (C::*Fun)(T0, T1, X0);
292   MemberCallback1_2 (bool is_permanent, C* c, Fun fun, T0 p0, T1 p1)
293     : Callback1<X0>(is_permanent),
294       c_(c),
295     p0_(p0),
296       p1_(p1),
297       fun_(fun) {
298   }
299 protected:
300   virtual void RunInternal(X0 x0) {
301     (c_->*fun_)(p0_, p1_, x0);
302   }
303 private:
304   C* c_;
305   T0 p0_;
306   T1 p1_;
307   Fun fun_;
308 };
309
310 template<typename C, typename T0, typename T1, typename X0>
311 MemberCallback1_2<C, T0, T1, X0>* NewCallback(C* c, void (C::*fun)(T0, T1, X0), T0 p0, T1 p1) {
312   return new MemberCallback1_2<C, T0, T1, X0>(false, c, fun, p0, p1);
313 }
314 template<typename C, typename T0, typename T1, typename X0>
315 MemberCallback1_2<C, T0, T1, X0>* NewPermanentCallback(C* c, void (C::*fun)(T0, T1, X0), T0 p0, T1 p1) {
316   return new MemberCallback1_2<C, T0, T1, X0>(true, c, fun, p0, p1);
317 }
318
319 template<typename T0, typename T1, typename T2, typename X0>
320 class Callback1_3 : public Callback1<X0> {
321 public:
322   typedef void (*Fun)(T0, T1, T2, X0);
323   Callback1_3(bool is_permanent, Fun fun, T0 p0, T1 p1, T2 p2)
324     : Callback1<X0>(is_permanent),
325       p0_(p0),
326       p1_(p1),
327       p2_(p2),
328       fun_(fun) {
329   }
330 protected:
331   virtual void RunInternal(X0 x0) {
332     (*fun_)(p0_, p1_, p2_, x0);
333   }
334 private:
335   T0 p0_;
336   T1 p1_;
337   T2 p2_;
338   Fun fun_;
339 };
340 template<typename T0, typename T1, typename T2, typename X0>
341 Callback1_3<T0, T1, T2, X0>* NewCallback(void (*fun)(T0, T1, T2, X0), T0 p0, T1 p1, T2 p2) {
342   return new Callback1_3<T0, T1, T2, X0>(false, fun, p0, p1, p2);
343 }
344 template<typename T0, typename T1, typename T2, typename X0>
345 Callback1_3<T0, T1, T2, X0>* NewPermanentCallback(void (*fun)(T0, T1, T2, X0), T0 p0, T1 p1, T2 p2) {
346   return new Callback1_3<T0, T1, T2, X0>(true, fun, p0, p1, p2);
347 }
348
349
350 template<typename C, typename T0, typename T1, typename T2, typename X0>
351 class ConstMemberCallback1_3 : public Callback1<X0> {
352 public:
353   typedef void (C::*Fun)(T0, T1, T2, X0) const;
354   ConstMemberCallback1_3 (bool is_permanent, const C* c, Fun fun, T0 p0, T1 p1, T2 p2)
355     : Callback1<X0>(is_permanent),
356       c_(c),
357       p0_(p0),
358       p1_(p1),
359       p2_(p2),
360       fun_(fun) {
361   }
362 protected:
363   virtual void RunInternal(X0 x0) {
364       (c_->*fun_)(p0_, p1_, p2_, x0);
365   }
366 private:
367   const C* c_;
368   T0 p0_;
369   T1 p1_;
370   T2 p2_;
371   Fun fun_;
372 };
373
374 template<typename C, typename T0, typename T1, typename T2, typename X0>
375 ConstMemberCallback1_3<C, T0, T1, T2, X0>* NewCallback(const C* c, void (C::*fun)(T0, T1, T2, X0) const, T0 p0, T1 p1, T2 p2) {
376   return new ConstMemberCallback1_3<C, T0, T1, T2, X0>(false, c, fun, p0, p1, p2);
377 }
378 template<typename C, typename T0, typename T1, typename T2, typename X0>
379 ConstMemberCallback1_3<C, T0, T1, T2, X0>* NewPermanentCallback(const C* c, void (C::*fun)(T0, T1, T2, X0) const, T0 p0, T1 p1, T2 p2) {
380   return new ConstMemberCallback1_3<C, T0, T1, T2, X0>(true, c, fun, p0, p1, p2);
381 }
382
383 template<typename C, typename T0, typename T1, typename T2, typename X0>
384 class MemberCallback1_3 : public Callback1<X0> {
385 public:
386   typedef void (C::*Fun)(T0, T1, T2, X0);
387   MemberCallback1_3 (bool is_permanent, C* c, Fun fun, T0 p0, T1 p1, T2 p2)
388     : Callback1<X0>(is_permanent),
389       c_(c),
390       p0_(p0),
391       p1_(p1),
392       p2_(p2),
393       fun_(fun) {
394   }
395 protected:
396   virtual void RunInternal(X0 x0) {
397     (c_->*fun_)(p0_, p1_, p2_, x0);
398   }
399 private:
400   C* c_;
401   T0 p0_;
402   T1 p1_;
403   T2 p2_;
404   Fun fun_;
405 };
406
407 template<typename C, typename T0, typename T1, typename T2, typename X0>
408 MemberCallback1_3<C, T0, T1, T2, X0>* NewCallback(C* c, void (C::*fun)(T0, T1, T2, X0), T0 p0, T1 p1, T2 p2) {
409   return new MemberCallback1_3<C, T0, T1, T2, X0>(false, c, fun, p0, p1, p2);
410 }
411 template<typename C, typename T0, typename T1, typename T2, typename X0>
412 MemberCallback1_3<C, T0, T1, T2, X0>* NewPermanentCallback(C* c, void (C::*fun)(T0, T1, T2, X0), T0 p0, T1 p1, T2 p2) {
413   return new MemberCallback1_3<C, T0, T1, T2, X0>(true, c, fun, p0, p1, p2);
414 }
415
416
417
418 template<typename T0, typename T1, typename T2, typename T3, typename X0>
419 class Callback1_4 : public Callback1<X0> {
420 public:
421   typedef void (*Fun)(T0, T1, T2, T3, X0);
422   Callback1_4(bool is_permanent, Fun fun, T0 p0, T1 p1, T2 p2, T3 p3)
423     : Callback1<X0>(is_permanent),
424       p0_(p0),
425       p1_(p1),
426       p2_(p2),
427       p3_(p3),
428       fun_(fun) {
429   }
430 protected:
431   virtual void RunInternal(X0 x0) {
432     (*fun_)(p0_, p1_, p2_, p3_, x0);
433   }
434 private:
435   T0 p0_;
436   T1 p1_;
437   T2 p2_;
438   T3 p3_;
439   Fun fun_;
440 };
441 template<typename T0, typename T1, typename T2, typename T3, typename X0>
442 Callback1_4<T0, T1, T2, T3, X0>* NewCallback(void (*fun)(T0, T1, T2, T3, X0), T0 p0, T1 p1, T2 p2, T3 p3) {
443   return new Callback1_4<T0, T1, T2, T3, X0>(false, fun, p0, p1, p2, p3);
444 }
445 template<typename T0, typename T1, typename T2, typename T3, typename X0>
446 Callback1_4<T0, T1, T2, T3, X0>* NewPermanentCallback(void (*fun)(T0, T1, T2, T3, X0), T0 p0, T1 p1, T2 p2, T3 p3) {
447   return new Callback1_4<T0, T1, T2, T3, X0>(true, fun, p0, p1, p2, p3);
448 }
449
450
451 template<typename C, typename T0, typename T1, typename T2, typename T3, typename X0>
452 class ConstMemberCallback1_4 : public Callback1<X0> {
453 public:
454   typedef void (C::*Fun)(T0, T1, T2, T3, X0) const;
455   ConstMemberCallback1_4 (bool is_permanent, const C* c, Fun fun, T0 p0, T1 p1, T2 p2, T3 p3)
456     : Callback1<X0>(is_permanent),
457       c_(c),
458       p0_(p0),
459       p1_(p1),
460       p2_(p2),
461       p3_(p3),
462       fun_(fun) {
463   }
464 protected:
465   virtual void RunInternal(X0 x0) {
466     (c_->*fun_)(p0_, p1_, p2_, p3_, x0);
467   }
468 private:
469   const C* c_;
470   T0 p0_;
471   T1 p1_;
472   T2 p2_;
473   T3 p3_;
474   Fun fun_;
475 };
476
477 template<typename C, typename T0, typename T1, typename T2, typename T3, typename X0>
478 ConstMemberCallback1_4<C, T0, T1, T2, T3, X0>* NewCallback(const C* c, void (C::*fun)(T0, T1, T2, T3, X0) const, T0 p0, T1 p1, T2 p2, T3 p3) {
479   return new ConstMemberCallback1_4<C, T0, T1, T2, T3, X0>(false, c, fun, p0, p1, p2, p3);
480 }
481 template<typename C, typename T0, typename T1, typename T2, typename T3, typename X0>
482 ConstMemberCallback1_4<C, T0, T1, T2, T3, X0>* NewPermanentCallback(const C* c, void (C::*fun)(T0, T1, T2, T3, X0) const, T0 p0, T1 p1, T2 p2, T3 p3) {
483   return new ConstMemberCallback1_4<C, T0, T1, T2, T3, X0>(true, c, fun, p0, p1, p2, p3);
484 }
485
486 template<typename C, typename T0, typename T1, typename T2, typename T3, typename X0>
487 class MemberCallback1_4 : public Callback1<X0> {
488 public:
489   typedef void (C::*Fun)(T0, T1, T2, T3, X0);
490   MemberCallback1_4 (bool is_permanent, C* c, Fun fun, T0 p0, T1 p1, T2 p2, T3 p3)
491     : Callback1<X0>(is_permanent),
492       c_(c),
493       p0_(p0),
494       p1_(p1),
495       p2_(p2),
496       p3_(p3),
497       fun_(fun) {
498   }
499 protected:
500   virtual void RunInternal(X0 x0) {
501     (c_->*fun_)(p0_, p1_, p2_, p3_, x0);
502   }
503 private:
504   C* c_;
505   T0 p0_;
506   T1 p1_;
507   T2 p2_;
508   T3 p3_;
509   Fun fun_;
510 };
511
512 template<typename C, typename T0, typename T1, typename T2, typename T3, typename X0>
513 MemberCallback1_4<C, T0, T1, T2, T3, X0>* NewCallback(C* c, void (C::*fun)(T0, T1, T2, T3, X0), T0 p0, T1 p1, T2 p2, T3 p3) {
514   return new MemberCallback1_4<C, T0, T1, T2, T3, X0>(false, c, fun, p0, p1, p2, p3);
515 }
516 template<typename C, typename T0, typename T1, typename T2, typename T3, typename X0>
517 MemberCallback1_4<C, T0, T1, T2, T3, X0>* NewPermanentCallback(C* c, void (C::*fun)(T0, T1, T2, T3, X0), T0 p0, T1 p1, T2 p2, T3 p3) {
518   return new MemberCallback1_4<C, T0, T1, T2, T3, X0>(true, c, fun, p0, p1, p2, p3);
519 }
520
521
522
523 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename X0>
524 class Callback1_5 : public Callback1<X0> {
525 public:
526   typedef void (*Fun)(T0, T1, T2, T3, T4, X0);
527   Callback1_5(bool is_permanent, Fun fun, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4)
528     : Callback1<X0>(is_permanent),
529       p0_(p0),
530       p1_(p1),
531       p2_(p2),
532       p3_(p3),
533       p4_(p4),
534       fun_(fun) {
535   }
536 protected:
537   virtual void RunInternal(X0 x0) {
538     (*fun_)(p0_, p1_, p2_, p3_, p4_, x0);
539   }
540 private:
541   T0 p0_;
542   T1 p1_;
543   T2 p2_;
544   T3 p3_;
545   T4 p4_;
546   Fun fun_;
547 };
548 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename X0>
549 Callback1_5<T0, T1, T2, T3, T4, X0>* NewCallback(void (*fun)(T0, T1, T2, T3, T4, X0), T0 p0, T1 p1, T2 p2, T3 p3, T4 p4) {
550   return new Callback1_5<T0, T1, T2, T3, T4, X0>(false, fun, p0, p1, p2, p3, p4);
551 }
552 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename X0>
553 Callback1_5<T0, T1, T2, T3, T4, X0>* NewPermanentCallback(void (*fun)(T0, T1, T2, T3, T4, X0), T0 p0, T1 p1, T2 p2, T3 p3, T4 p4) {
554   return new Callback1_5<T0, T1, T2, T3, T4, X0>(true, fun, p0, p1, p2, p3, p4);
555 }
556
557
558 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename X0>
559 class ConstMemberCallback1_5 : public Callback1<X0> {
560 public:
561   typedef void (C::*Fun)(T0, T1, T2, T3, T4, X0) const;
562   ConstMemberCallback1_5 (bool is_permanent, const C* c, Fun fun, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4)
563     : Callback1<X0>(is_permanent),
564     c_(c),
565       p0_(p0),
566 p1_(p1),
567 p2_(p2),
568 p3_(p3),
569 p4_(p4),
570       fun_(fun) {
571   }
572 protected:
573   virtual void RunInternal(X0 x0) {
574     (c_->*fun_)(p0_, p1_, p2_, p3_, p4_, x0);
575   }
576 private:
577   const C* c_;
578   T0 p0_;
579   T1 p1_;
580   T2 p2_;
581   T3 p3_;
582   T4 p4_;
583   Fun fun_;
584 };
585
586 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename X0>
587 ConstMemberCallback1_5<C, T0, T1, T2, T3, T4, X0>* NewCallback(const C* c, void (C::*fun)(T0, T1, T2, T3, T4, X0) const, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4) {
588   return new ConstMemberCallback1_5<C, T0, T1, T2, T3, T4, X0>(false, c, fun, p0, p1, p2, p3, p4);
589 }
590 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename X0>
591 ConstMemberCallback1_5<C, T0, T1, T2, T3, T4, X0>* NewPermanentCallback(const C* c, void (C::*fun)(T0, T1, T2, T3, T4, X0) const, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4) {
592   return new ConstMemberCallback1_5<C, T0, T1, T2, T3, T4, X0>(true, c, fun, p0, p1, p2, p3, p4);
593 }
594
595
596
597 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename X0>
598 class MemberCallback1_5 : public Callback1<X0> {
599 public:
600   typedef void (C::*Fun)(T0, T1, T2, T3, T4, X0);
601   MemberCallback1_5 (bool is_permanent, C* c, Fun fun, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4)
602     : Callback1<X0>(is_permanent),
603       c_(c),
604       p0_(p0),
605       p1_(p1),
606       p2_(p2),
607       p3_(p3),
608       p4_(p4),
609       fun_(fun) {
610   }
611 protected:
612   virtual void RunInternal(X0 x0) {
613     (c_->*fun_)(p0_, p1_, p2_, p3_, p4_, x0);
614   }
615 private:
616   C* c_;
617   T0 p0_;
618   T1 p1_;
619   T2 p2_;
620   T3 p3_;
621   T4 p4_;
622   Fun fun_;
623 };
624
625 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename X0>
626 MemberCallback1_5<C, T0, T1, T2, T3, T4, X0>* NewCallback(C* c, void (C::*fun)(T0, T1, T2, T3, T4, X0), T0 p0, T1 p1, T2 p2, T3 p3, T4 p4) {
627   return new MemberCallback1_5<C, T0, T1, T2, T3, T4, X0>(false, c, fun, p0, p1, p2, p3, p4);
628 }
629 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename X0>
630 MemberCallback1_5<C, T0, T1, T2, T3, T4, X0>* NewPermanentCallback(C* c, void (C::*fun)(T0, T1, T2, T3, T4, X0), T0 p0, T1 p1, T2 p2, T3 p3, T4 p4) {
631   return new MemberCallback1_5<C, T0, T1, T2, T3, T4, X0>(true, c, fun, p0, p1, p2, p3, p4);
632 }
633
634
635
636
637 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename X0>
638 class Callback1_6 : public Callback1<X0> {
639 public:
640   typedef void (*Fun)(T0, T1, T2, T3, T4, T5, X0);
641   Callback1_6(bool is_permanent, Fun fun, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5)
642     : Callback1<X0>(is_permanent),
643     p0_(p0),
644 p1_(p1),
645 p2_(p2),
646 p3_(p3),
647 p4_(p4),
648 p5_(p5),
649       fun_(fun) {
650   }
651 protected:
652   virtual void RunInternal(X0 x0) {
653     (*fun_)(p0_, p1_, p2_, p3_, p4_, p5_, x0);
654   }
655 private:
656   T0 p0_;
657 T1 p1_;
658 T2 p2_;
659 T3 p3_;
660 T4 p4_;
661 T5 p5_;
662   Fun fun_;
663 };
664 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename X0>
665 Callback1_6<T0, T1, T2, T3, T4, T5, X0>* NewCallback(void (*fun)(T0, T1, T2, T3, T4, T5, X0), T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5) {
666   return new Callback1_6<T0, T1, T2, T3, T4, T5, X0>(false, fun, p0, p1, p2, p3, p4, p5);
667 }
668 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename X0>
669 Callback1_6<T0, T1, T2, T3, T4, T5, X0>* NewPermanentCallback(void (*fun)(T0, T1, T2, T3, T4, T5, X0), T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5) {
670   return new Callback1_6<T0, T1, T2, T3, T4, T5, X0>(true, fun, p0, p1, p2, p3, p4, p5);
671 }
672
673
674 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename X0>
675 class ConstMemberCallback1_6 : public Callback1<X0> {
676 public:
677   typedef void (C::*Fun)(T0, T1, T2, T3, T4, T5, X0) const;
678   ConstMemberCallback1_6 (bool is_permanent, const C* c, Fun fun, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5)
679     : Callback1<X0>(is_permanent),
680     c_(c),
681     p0_(p0),
682 p1_(p1),
683 p2_(p2),
684 p3_(p3),
685 p4_(p4),
686 p5_(p5),
687       fun_(fun) {
688   }
689 protected:
690   virtual void RunInternal(X0 x0) {
691       (c_->*fun_)(p0_, p1_, p2_, p3_, p4_, p5_, x0);
692   }
693 private:
694   const C* c_;
695   T0 p0_;
696 T1 p1_;
697 T2 p2_;
698 T3 p3_;
699 T4 p4_;
700 T5 p5_;
701   Fun fun_;
702 };
703
704 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename X0>
705 ConstMemberCallback1_6<C, T0, T1, T2, T3, T4, T5, X0>* NewCallback(const C* c, void (C::*fun)(T0, T1, T2, T3, T4, T5, X0) const, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5) {
706   return new ConstMemberCallback1_6<C, T0, T1, T2, T3, T4, T5, X0>(false, c, fun, p0, p1, p2, p3, p4, p5);
707 }
708 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename X0>
709 ConstMemberCallback1_6<C, T0, T1, T2, T3, T4, T5, X0>* NewPermanentCallback(const C* c, void (C::*fun)(T0, T1, T2, T3, T4, T5, X0) const, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5) {
710   return new ConstMemberCallback1_6<C, T0, T1, T2, T3, T4, T5, X0>(true, c, fun, p0, p1, p2, p3, p4, p5);
711 }
712
713
714
715 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename X0>
716 class MemberCallback1_6 : public Callback1<X0> {
717 public:
718   typedef void (C::*Fun)(T0, T1, T2, T3, T4, T5, X0);
719   MemberCallback1_6 (bool is_permanent, C* c, Fun fun, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5)
720     : Callback1<X0>(is_permanent),
721     c_(c),
722     p0_(p0),
723 p1_(p1),
724 p2_(p2),
725 p3_(p3),
726 p4_(p4),
727 p5_(p5),
728       fun_(fun) {
729   }
730 protected:
731   virtual void RunInternal(X0 x0) {
732       (c_->*fun_)(p0_, p1_, p2_, p3_, p4_, p5_, x0);
733   }
734 private:
735   C* c_;
736   T0 p0_;
737 T1 p1_;
738 T2 p2_;
739 T3 p3_;
740 T4 p4_;
741 T5 p5_;
742   Fun fun_;
743 };
744
745 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename X0>
746 MemberCallback1_6<C, T0, T1, T2, T3, T4, T5, X0>* NewCallback(C* c, void (C::*fun)(T0, T1, T2, T3, T4, T5, X0), T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5) {
747   return new MemberCallback1_6<C, T0, T1, T2, T3, T4, T5, X0>(false, c, fun, p0, p1, p2, p3, p4, p5);
748 }
749 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename X0>
750 MemberCallback1_6<C, T0, T1, T2, T3, T4, T5, X0>* NewPermanentCallback(C* c, void (C::*fun)(T0, T1, T2, T3, T4, T5, X0), T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5) {
751   return new MemberCallback1_6<C, T0, T1, T2, T3, T4, T5, X0>(true, c, fun, p0, p1, p2, p3, p4, p5);
752 }
753
754
755
756 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename X0>
757 class Callback1_7 : public Callback1<X0> {
758 public:
759   typedef void (*Fun)(T0, T1, T2, T3, T4, T5, T6, X0);
760   Callback1_7(bool is_permanent, Fun fun, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6)
761     : Callback1<X0>(is_permanent),
762     p0_(p0),
763 p1_(p1),
764 p2_(p2),
765 p3_(p3),
766 p4_(p4),
767 p5_(p5),
768 p6_(p6),
769       fun_(fun) {
770   }
771 protected:
772   virtual void RunInternal(X0 x0) {
773     (*fun_)(p0_, p1_, p2_, p3_, p4_, p5_, p6_, x0);
774   }
775 private:
776   T0 p0_;
777 T1 p1_;
778 T2 p2_;
779 T3 p3_;
780 T4 p4_;
781 T5 p5_;
782 T6 p6_;
783   Fun fun_;
784 };
785 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename X0>
786 Callback1_7<T0, T1, T2, T3, T4, T5, T6, X0>* NewCallback(void (*fun)(T0, T1, T2, T3, T4, T5, T6, X0), T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6) {
787   return new Callback1_7<T0, T1, T2, T3, T4, T5, T6, X0>(false, fun, p0, p1, p2, p3, p4, p5, p6);
788 }
789 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename X0>
790 Callback1_7<T0, T1, T2, T3, T4, T5, T6, X0>* NewPermanentCallback(void (*fun)(T0, T1, T2, T3, T4, T5, T6, X0), T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6) {
791   return new Callback1_7<T0, T1, T2, T3, T4, T5, T6, X0>(true, fun, p0, p1, p2, p3, p4, p5, p6);
792 }
793
794
795 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename X0>
796 class ConstMemberCallback1_7 : public Callback1<X0> {
797 public:
798   typedef void (C::*Fun)(T0, T1, T2, T3, T4, T5, T6, X0) const;
799   ConstMemberCallback1_7 (bool is_permanent, const C* c, Fun fun, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6)
800     : Callback1<X0>(is_permanent),
801     c_(c),
802     p0_(p0),
803 p1_(p1),
804 p2_(p2),
805 p3_(p3),
806 p4_(p4),
807 p5_(p5),
808 p6_(p6),
809       fun_(fun) {
810   }
811 protected:
812   virtual void RunInternal(X0 x0) {
813       (c_->*fun_)(p0_, p1_, p2_, p3_, p4_, p5_, p6_, x0);
814   }
815 private:
816   const C* c_;
817   T0 p0_;
818 T1 p1_;
819 T2 p2_;
820 T3 p3_;
821 T4 p4_;
822 T5 p5_;
823 T6 p6_;
824   Fun fun_;
825 };
826
827 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename X0>
828 ConstMemberCallback1_7<C, T0, T1, T2, T3, T4, T5, T6, X0>* NewCallback(const C* c, void (C::*fun)(T0, T1, T2, T3, T4, T5, T6, X0) const, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6) {
829   return new ConstMemberCallback1_7<C, T0, T1, T2, T3, T4, T5, T6, X0>(false, c, fun, p0, p1, p2, p3, p4, p5, p6);
830 }
831 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename X0>
832 ConstMemberCallback1_7<C, T0, T1, T2, T3, T4, T5, T6, X0>* NewPermanentCallback(const C* c, void (C::*fun)(T0, T1, T2, T3, T4, T5, T6, X0) const, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6) {
833   return new ConstMemberCallback1_7<C, T0, T1, T2, T3, T4, T5, T6, X0>(true, c, fun, p0, p1, p2, p3, p4, p5, p6);
834 }
835
836
837
838 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename X0>
839 class MemberCallback1_7 : public Callback1<X0> {
840 public:
841   typedef void (C::*Fun)(T0, T1, T2, T3, T4, T5, T6, X0);
842   MemberCallback1_7 (bool is_permanent, C* c, Fun fun, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6)
843     : Callback1<X0>(is_permanent),
844     c_(c),
845     p0_(p0),
846 p1_(p1),
847 p2_(p2),
848 p3_(p3),
849 p4_(p4),
850 p5_(p5),
851 p6_(p6),
852       fun_(fun) {
853   }
854 protected:
855   virtual void RunInternal(X0 x0) {
856       (c_->*fun_)(p0_, p1_, p2_, p3_, p4_, p5_, p6_, x0);
857   }
858 private:
859   C* c_;
860   T0 p0_;
861 T1 p1_;
862 T2 p2_;
863 T3 p3_;
864 T4 p4_;
865 T5 p5_;
866 T6 p6_;
867   Fun fun_;
868 };
869
870 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename X0>
871 MemberCallback1_7<C, T0, T1, T2, T3, T4, T5, T6, X0>* NewCallback(C* c, void (C::*fun)(T0, T1, T2, T3, T4, T5, T6, X0), T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6) {
872   return new MemberCallback1_7<C, T0, T1, T2, T3, T4, T5, T6, X0>(false, c, fun, p0, p1, p2, p3, p4, p5, p6);
873 }
874 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename X0>
875 MemberCallback1_7<C, T0, T1, T2, T3, T4, T5, T6, X0>* NewPermanentCallback(C* c, void (C::*fun)(T0, T1, T2, T3, T4, T5, T6, X0), T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6) {
876   return new MemberCallback1_7<C, T0, T1, T2, T3, T4, T5, T6, X0>(true, c, fun, p0, p1, p2, p3, p4, p5, p6);
877 }
878
879
880
881 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename X0>
882 class Callback1_8 : public Callback1<X0> {
883 public:
884   typedef void (*Fun)(T0, T1, T2, T3, T4, T5, T6, T7, X0);
885   Callback1_8(bool is_permanent, Fun fun, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7)
886     : Callback1<X0>(is_permanent),
887     p0_(p0),
888 p1_(p1),
889 p2_(p2),
890 p3_(p3),
891 p4_(p4),
892 p5_(p5),
893 p6_(p6),
894 p7_(p7),
895       fun_(fun) {
896   }
897 protected:
898   virtual void RunInternal(X0 x0) {
899     (*fun_)(p0_, p1_, p2_, p3_, p4_, p5_, p6_, p7_, x0);
900   }
901 private:
902   T0 p0_;
903 T1 p1_;
904 T2 p2_;
905 T3 p3_;
906 T4 p4_;
907 T5 p5_;
908 T6 p6_;
909 T7 p7_;
910   Fun fun_;
911 };
912 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename X0>
913 Callback1_8<T0, T1, T2, T3, T4, T5, T6, T7, X0>* NewCallback(void (*fun)(T0, T1, T2, T3, T4, T5, T6, T7, X0), T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7) {
914   return new Callback1_8<T0, T1, T2, T3, T4, T5, T6, T7, X0>(false, fun, p0, p1, p2, p3, p4, p5, p6, p7);
915 }
916 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename X0>
917 Callback1_8<T0, T1, T2, T3, T4, T5, T6, T7, X0>* NewPermanentCallback(void (*fun)(T0, T1, T2, T3, T4, T5, T6, T7, X0), T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7) {
918   return new Callback1_8<T0, T1, T2, T3, T4, T5, T6, T7, X0>(true, fun, p0, p1, p2, p3, p4, p5, p6, p7);
919 }
920
921
922 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename X0>
923 class ConstMemberCallback1_8 : public Callback1<X0> {
924 public:
925   typedef void (C::*Fun)(T0, T1, T2, T3, T4, T5, T6, T7, X0) const;
926   ConstMemberCallback1_8 (bool is_permanent, const C* c, Fun fun, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7)
927     : Callback1<X0>(is_permanent),
928     c_(c),
929     p0_(p0),
930 p1_(p1),
931 p2_(p2),
932 p3_(p3),
933 p4_(p4),
934 p5_(p5),
935 p6_(p6),
936 p7_(p7),
937       fun_(fun) {
938   }
939 protected:
940   virtual void RunInternal(X0 x0) {
941       (c_->*fun_)(p0_, p1_, p2_, p3_, p4_, p5_, p6_, p7_, x0);
942   }
943 private:
944   const C* c_;
945   T0 p0_;
946 T1 p1_;
947 T2 p2_;
948 T3 p3_;
949 T4 p4_;
950 T5 p5_;
951 T6 p6_;
952 T7 p7_;
953   Fun fun_;
954 };
955
956 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename X0>
957 ConstMemberCallback1_8<C, T0, T1, T2, T3, T4, T5, T6, T7, X0>* NewCallback(const C* c, void (C::*fun)(T0, T1, T2, T3, T4, T5, T6, T7, X0) const, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7) {
958   return new ConstMemberCallback1_8<C, T0, T1, T2, T3, T4, T5, T6, T7, X0>(false, c, fun, p0, p1, p2, p3, p4, p5, p6, p7);
959 }
960 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename X0>
961 ConstMemberCallback1_8<C, T0, T1, T2, T3, T4, T5, T6, T7, X0>* NewPermanentCallback(const C* c, void (C::*fun)(T0, T1, T2, T3, T4, T5, T6, T7, X0) const, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7) {
962   return new ConstMemberCallback1_8<C, T0, T1, T2, T3, T4, T5, T6, T7, X0>(true, c, fun, p0, p1, p2, p3, p4, p5, p6, p7);
963 }
964
965
966
967 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename X0>
968 class MemberCallback1_8 : public Callback1<X0> {
969 public:
970   typedef void (C::*Fun)(T0, T1, T2, T3, T4, T5, T6, T7, X0);
971   MemberCallback1_8 (bool is_permanent, C* c, Fun fun, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7)
972     : Callback1<X0>(is_permanent),
973     c_(c),
974     p0_(p0),
975 p1_(p1),
976 p2_(p2),
977 p3_(p3),
978 p4_(p4),
979 p5_(p5),
980 p6_(p6),
981 p7_(p7),
982       fun_(fun) {
983   }
984 protected:
985   virtual void RunInternal(X0 x0) {
986       (c_->*fun_)(p0_, p1_, p2_, p3_, p4_, p5_, p6_, p7_, x0);
987   }
988 private:
989   C* c_;
990   T0 p0_;
991 T1 p1_;
992 T2 p2_;
993 T3 p3_;
994 T4 p4_;
995 T5 p5_;
996 T6 p6_;
997 T7 p7_;
998   Fun fun_;
999 };
1000
1001 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename X0>
1002 MemberCallback1_8<C, T0, T1, T2, T3, T4, T5, T6, T7, X0>* NewCallback(C* c, void (C::*fun)(T0, T1, T2, T3, T4, T5, T6, T7, X0), T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7) {
1003   return new MemberCallback1_8<C, T0, T1, T2, T3, T4, T5, T6, T7, X0>(false, c, fun, p0, p1, p2, p3, p4, p5, p6, p7);
1004 }
1005 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename X0>
1006 MemberCallback1_8<C, T0, T1, T2, T3, T4, T5, T6, T7, X0>* NewPermanentCallback(C* c, void (C::*fun)(T0, T1, T2, T3, T4, T5, T6, T7, X0), T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7) {
1007   return new MemberCallback1_8<C, T0, T1, T2, T3, T4, T5, T6, T7, X0>(true, c, fun, p0, p1, p2, p3, p4, p5, p6, p7);
1008 }
1009
1010
1011
1012 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename X0>
1013 class Callback1_9 : public Callback1<X0> {
1014 public:
1015   typedef void (*Fun)(T0, T1, T2, T3, T4, T5, T6, T7, T8, X0);
1016   Callback1_9(bool is_permanent, Fun fun, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8)
1017     : Callback1<X0>(is_permanent),
1018     p0_(p0),
1019 p1_(p1),
1020 p2_(p2),
1021 p3_(p3),
1022 p4_(p4),
1023 p5_(p5),
1024 p6_(p6),
1025 p7_(p7),
1026 p8_(p8),
1027       fun_(fun) {
1028   }
1029 protected:
1030   virtual void RunInternal(X0 x0) {
1031     (*fun_)(p0_, p1_, p2_, p3_, p4_, p5_, p6_, p7_, p8_, x0);
1032   }
1033 private:
1034   T0 p0_;
1035 T1 p1_;
1036 T2 p2_;
1037 T3 p3_;
1038 T4 p4_;
1039 T5 p5_;
1040 T6 p6_;
1041 T7 p7_;
1042 T8 p8_;
1043   Fun fun_;
1044 };
1045 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename X0>
1046 Callback1_9<T0, T1, T2, T3, T4, T5, T6, T7, T8, X0>* NewCallback(void (*fun)(T0, T1, T2, T3, T4, T5, T6, T7, T8, X0), T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8) {
1047   return new Callback1_9<T0, T1, T2, T3, T4, T5, T6, T7, T8, X0>(false, fun, p0, p1, p2, p3, p4, p5, p6, p7, p8);
1048 }
1049 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename X0>
1050 Callback1_9<T0, T1, T2, T3, T4, T5, T6, T7, T8, X0>* NewPermanentCallback(void (*fun)(T0, T1, T2, T3, T4, T5, T6, T7, T8, X0), T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8) {
1051   return new Callback1_9<T0, T1, T2, T3, T4, T5, T6, T7, T8, X0>(true, fun, p0, p1, p2, p3, p4, p5, p6, p7, p8);
1052 }
1053
1054
1055 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename X0>
1056 class ConstMemberCallback1_9 : public Callback1<X0> {
1057 public:
1058   typedef void (C::*Fun)(T0, T1, T2, T3, T4, T5, T6, T7, T8, X0) const;
1059   ConstMemberCallback1_9 (bool is_permanent, const C* c, Fun fun, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8)
1060     : Callback1<X0>(is_permanent),
1061     c_(c),
1062     p0_(p0),
1063 p1_(p1),
1064 p2_(p2),
1065 p3_(p3),
1066 p4_(p4),
1067 p5_(p5),
1068 p6_(p6),
1069 p7_(p7),
1070 p8_(p8),
1071       fun_(fun) {
1072   }
1073 protected:
1074   virtual void RunInternal(X0 x0) {
1075       (c_->*fun_)(p0_, p1_, p2_, p3_, p4_, p5_, p6_, p7_, p8_, x0);
1076   }
1077 private:
1078   const C* c_;
1079   T0 p0_;
1080 T1 p1_;
1081 T2 p2_;
1082 T3 p3_;
1083 T4 p4_;
1084 T5 p5_;
1085 T6 p6_;
1086 T7 p7_;
1087 T8 p8_;
1088   Fun fun_;
1089 };
1090
1091 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename X0>
1092 ConstMemberCallback1_9<C, T0, T1, T2, T3, T4, T5, T6, T7, T8, X0>* NewCallback(const C* c, void (C::*fun)(T0, T1, T2, T3, T4, T5, T6, T7, T8, X0) const, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8) {
1093   return new ConstMemberCallback1_9<C, T0, T1, T2, T3, T4, T5, T6, T7, T8, X0>(false, c, fun, p0, p1, p2, p3, p4, p5, p6, p7, p8);
1094 }
1095 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename X0>
1096 ConstMemberCallback1_9<C, T0, T1, T2, T3, T4, T5, T6, T7, T8, X0>* NewPermanentCallback(const C* c, void (C::*fun)(T0, T1, T2, T3, T4, T5, T6, T7, T8, X0) const, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8) {
1097   return new ConstMemberCallback1_9<C, T0, T1, T2, T3, T4, T5, T6, T7, T8, X0>(true, c, fun, p0, p1, p2, p3, p4, p5, p6, p7, p8);
1098 }
1099
1100
1101
1102 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename X0>
1103 class MemberCallback1_9 : public Callback1<X0> {
1104 public:
1105   typedef void (C::*Fun)(T0, T1, T2, T3, T4, T5, T6, T7, T8, X0);
1106   MemberCallback1_9 (bool is_permanent, C* c, Fun fun, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8)
1107     : Callback1<X0>(is_permanent),
1108     c_(c),
1109     p0_(p0),
1110 p1_(p1),
1111 p2_(p2),
1112 p3_(p3),
1113 p4_(p4),
1114 p5_(p5),
1115 p6_(p6),
1116 p7_(p7),
1117 p8_(p8),
1118       fun_(fun) {
1119   }
1120 protected:
1121   virtual void RunInternal(X0 x0) {
1122       (c_->*fun_)(p0_, p1_, p2_, p3_, p4_, p5_, p6_, p7_, p8_, x0);
1123   }
1124 private:
1125   C* c_;
1126   T0 p0_;
1127 T1 p1_;
1128 T2 p2_;
1129 T3 p3_;
1130 T4 p4_;
1131 T5 p5_;
1132 T6 p6_;
1133 T7 p7_;
1134 T8 p8_;
1135   Fun fun_;
1136 };
1137
1138 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename X0>
1139 MemberCallback1_9<C, T0, T1, T2, T3, T4, T5, T6, T7, T8, X0>* NewCallback(C* c, void (C::*fun)(T0, T1, T2, T3, T4, T5, T6, T7, T8, X0), T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8) {
1140   return new MemberCallback1_9<C, T0, T1, T2, T3, T4, T5, T6, T7, T8, X0>(false, c, fun, p0, p1, p2, p3, p4, p5, p6, p7, p8);
1141 }
1142 template<typename C, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename X0>
1143 MemberCallback1_9<C, T0, T1, T2, T3, T4, T5, T6, T7, T8, X0>* NewPermanentCallback(C* c, void (C::*fun)(T0, T1, T2, T3, T4, T5, T6, T7, T8, X0), T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8) {
1144   return new MemberCallback1_9<C, T0, T1, T2, T3, T4, T5, T6, T7, T8, X0>(true, c, fun, p0, p1, p2, p3, p4, p5, p6, p7, p8);
1145 }
1146
1147 #endif //  __COMMON_BASE_CALLBACK_CALLBACK1_H__
Note: See TracBrowser for help on using the browser.