CARMA C++
MethodFunctors.h
1 #ifndef CARMA_CONTROL_METHOD_FUNCTORS_H
2 #define CARMA_CONTROL_METHOD_FUNCTORS_H
3 
4 
5 namespace carma {
6 namespace control {
7 
8 
9 template < typename T >
10 class MethodFunctor0 {
11  public:
12  MethodFunctor0( T * t,
13  void (T::*methodPtr)( ) );
14 
15  void operator()( );
16 
17  private:
18  T * const t_;
19  void (T::*methodPtr_)( );
20 };
21 
22 
23 template < typename T,
24  typename S0 >
25 class MethodFunctor1 {
26  public:
27  MethodFunctor1( T * t,
28  void (T::*methodPtr)( S0 ),
29  const S0 & s0 );
30 
31  void operator()( );
32 
33  private:
34  T * const t_;
35  void (T::*methodPtr_)( S0 );
36  const S0 s0_;
37 };
38 
39 
40 template < typename T,
41  typename S0,
42  typename S1 >
43 class MethodFunctor2 {
44  public:
45  MethodFunctor2( T * t,
46  void (T::*methodPtr)( S0, S1 ),
47  const S0 & s0,
48  const S1 & s1 );
49 
50  void operator()( );
51 
52  private:
53  T * const t_;
54  void (T::*methodPtr_)( S0, S1 );
55  const S0 s0_;
56  const S1 s1_;
57 };
58 
59 
60 template < typename T,
61  typename S0,
62  typename S1,
63  typename S2 >
64 class MethodFunctor3 {
65  public:
66  MethodFunctor3( T * t,
67  void (T::*methodPtr)( S0, S1, S2 ),
68  const S0 & s0,
69  const S1 & s1,
70  const S2 & s2 );
71 
72  void operator()( );
73 
74  private:
75  T * const t_;
76  void (T::*methodPtr_)( S0, S1, S2 );
77  const S0 s0_;
78  const S1 s1_;
79  const S2 s2_;
80 };
81 
82 
83 template < typename T,
84  typename S0,
85  typename S1,
86  typename S2,
87  typename S3 >
88 class MethodFunctor4 {
89  public:
90  MethodFunctor4( T * t,
91  void (T::*methodPtr)( S0, S1, S2, S3 ),
92  const S0 & s0,
93  const S1 & s1,
94  const S2 & s2,
95  const S3 & s3 );
96 
97  void operator()( );
98 
99  private:
100  T * const t_;
101  void (T::*methodPtr_)( S0, S1, S2, S3 );
102  const S0 s0_;
103  const S1 s1_;
104  const S2 s2_;
105  const S3 s3_;
106 };
107 
108 
109 template < typename T,
110  typename S0,
111  typename S1,
112  typename S2,
113  typename S3,
114  typename S4 >
115 class MethodFunctor5 {
116  public:
117  MethodFunctor5( T * t,
118  void (T::*methodPtr)( S0, S1, S2, S3, S4 ),
119  const S0 & s0,
120  const S1 & s1,
121  const S2 & s2,
122  const S3 & s3,
123  const S4 & s4 );
124 
125  void operator()( );
126 
127  private:
128  T * const t_;
129  void (T::*methodPtr_)( S0, S1, S2, S3, S4 );
130  const S0 s0_;
131  const S1 s1_;
132  const S2 s2_;
133  const S3 s3_;
134  const S4 s4_;
135 };
136 
137 template < typename T,
138  typename S0,
139  typename S1,
140  typename S2,
141  typename S3,
142  typename S4,
143  typename S5 >
144 class MethodFunctor6 {
145  public:
146  MethodFunctor6( T * t,
147  void (T::*methodPtr)( S0, S1, S2, S3, S4, S5 ),
148  const S0 & s0,
149  const S1 & s1,
150  const S2 & s2,
151  const S3 & s3,
152  const S4 & s4,
153  const S5 & s5 );
154 
155  void operator()( );
156 
157  private:
158  T * const t_;
159  void (T::*methodPtr_)( S0, S1, S2, S3, S4, S5 );
160  const S0 s0_;
161  const S1 s1_;
162  const S2 s2_;
163  const S3 s3_;
164  const S4 s4_;
165  const S5 s5_;
166 };
167 
168 template < typename T,
169  typename S0,
170  typename S1,
171  typename S2,
172  typename S3,
173  typename S4,
174  typename S5,
175  typename S6 >
176 class MethodFunctor7 {
177  public:
178  MethodFunctor7( T * t,
179  void (T::*methodPtr)(S0, S1, S2, S3, S4, S5, S6),
180  const S0 & s0,
181  const S1 & s1,
182  const S2 & s2,
183  const S3 & s3,
184  const S4 & s4,
185  const S5 & s5,
186  const S6 & s6 );
187  void operator()( );
188  private:
189  T * const t_;
190  void (T::*methodPtr_)(S0, S1, S2, S3, S4, S5, S6);
191  const S0 s0_;
192  const S1 s1_;
193  const S2 s2_;
194  const S3 s3_;
195  const S4 s4_;
196  const S5 s5_;
197  const S6 s6_;
198 };
199 
200 template < typename T,
201  typename S0,
202  typename S1,
203  typename S2,
204  typename S3,
205  typename S4,
206  typename S5,
207  typename S6,
208  typename S7 >
209 class MethodFunctor8 {
210  public:
211  MethodFunctor8(
212  T* t,
213  void (T::*methodPtr)(S0, S1, S2, S3, S4, S5, S6, S7),
214  const S0 & s0,
215  const S1 & s1,
216  const S2 & s2,
217  const S3 & s3,
218  const S4 & s4,
219  const S5 & s5,
220  const S6 & s6,
221  const S7 & s7);
222  void operator()( );
223  private:
224  T * const t_;
225  void (T::*methodPtr_)(S0, S1, S2, S3, S4, S5, S6, S7);
226  const S0 s0_;
227  const S1 s1_;
228  const S2 s2_;
229  const S3 s3_;
230  const S4 s4_;
231  const S5 s5_;
232  const S6 s6_;
233  const S7 s7_;
234 };
235 
236 template < typename T,
237  typename S0,
238  typename S1,
239  typename S2,
240  typename S3,
241  typename S4,
242  typename S5,
243  typename S6,
244  typename S7,
245  typename S8 >
246 class MethodFunctor9 {
247  public:
248  MethodFunctor9( T * t,
249  void (T::*methodPtr)(S0, S1, S2, S3, S4,
250  S5, S6, S7, S8),
251  const S0 & s0,
252  const S1 & s1,
253  const S2 & s2,
254  const S3 & s3,
255  const S4 & s4,
256  const S5 & s5,
257  const S6 & s6,
258  const S7 & s7,
259  const S8 & s8);
260  void operator()( );
261  private:
262  T * const t_;
263  void (T::*methodPtr_)( S0, S1, S2, S3, S4, S5, S6, S7, S8);
264  const S0 s0_;
265  const S1 s1_;
266  const S2 s2_;
267  const S3 s3_;
268  const S4 s4_;
269  const S5 s5_;
270  const S6 s6_;
271  const S7 s7_;
272  const S8 s8_;
273 };
274 
275 template < typename T,
276  typename S0,
277  typename S1,
278  typename S2,
279  typename S3,
280  typename S4,
281  typename S5,
282  typename S6,
283  typename S7,
284  typename S8,
285  typename S9 >
286 class MethodFunctor10 {
287  public:
288  MethodFunctor10( T * t,
289  void (T::*methodPtr)( S0, S1, S2, S3, S4,
290  S5, S6, S7, S8, S9 ),
291  const S0 & s0,
292  const S1 & s1,
293  const S2 & s2,
294  const S3 & s3,
295  const S4 & s4,
296  const S5 & s5,
297  const S6 & s6,
298  const S7 & s7,
299  const S8 & s8,
300  const S9 & s9 );
301  void operator()( );
302  private:
303  T * const t_;
304  void (T::*methodPtr_)(S0, S1, S2, S3, S4, S5, S6, S7, S8, S9);
305  const S0 s0_;
306  const S1 s1_;
307  const S2 s2_;
308  const S3 s3_;
309  const S4 s4_;
310  const S5 s5_;
311  const S6 s6_;
312  const S7 s7_;
313  const S8 s8_;
314  const S9 s9_;
315 };
316 
317 // MethodFunctor11
318 template < typename T,
319  typename S0,
320  typename S1,
321  typename S2,
322  typename S3,
323  typename S4,
324  typename S5,
325  typename S6,
326  typename S7,
327  typename S8,
328  typename S9,
329  typename S10 >
330 class MethodFunctor11 {
331  public:
332  MethodFunctor11(T * t,
333  void (T::*methodPtr)(S0, S1, S2, S3, S4,
334  S5, S6, S7, S8, S9, S10),
335  const S0 & s0,
336  const S1 & s1,
337  const S2 & s2,
338  const S3 & s3,
339  const S4 & s4,
340  const S5 & s5,
341  const S6 & s6,
342  const S7 & s7,
343  const S8 & s8,
344  const S9 & s9,
345  const S10& s10);
346  void operator()( );
347  private:
348  T * const t_;
349  void (T::*methodPtr_)(S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10);
350  const S0 s0_;
351  const S1 s1_;
352  const S2 s2_;
353  const S3 s3_;
354  const S4 s4_;
355  const S5 s5_;
356  const S6 s6_;
357  const S7 s7_;
358  const S8 s8_;
359  const S9 s9_;
360  const S10 s10_;
361 };
362 
363 // MethodFunctor12
364 template < typename T,
365  typename S0,
366  typename S1,
367  typename S2,
368  typename S3,
369  typename S4,
370  typename S5,
371  typename S6,
372  typename S7,
373  typename S8,
374  typename S9,
375  typename S10,
376  typename S11 >
377 class MethodFunctor12 {
378  public:
379  MethodFunctor12(T* t,
380  void (T::*methodPtr)(S0, S1, S2, S3, S4,
381  S5, S6, S7, S8, S9, S10, S11),
382  const S0 & s0,
383  const S1 & s1,
384  const S2 & s2,
385  const S3 & s3,
386  const S4 & s4,
387  const S5 & s5,
388  const S6 & s6,
389  const S7 & s7,
390  const S8 & s8,
391  const S9 & s9,
392  const S10& s10,
393  const S11& s11);
394  void operator()( );
395  private:
396  T * const t_;
397  void (T::*methodPtr_)(S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11);
398  const S0 s0_;
399  const S1 s1_;
400  const S2 s2_;
401  const S3 s3_;
402  const S4 s4_;
403  const S5 s5_;
404  const S6 s6_;
405  const S7 s7_;
406  const S8 s8_;
407  const S9 s9_;
408  const S10 s10_;
409  const S11 s11_;
410 };
411 
412 template < typename T,
413  typename S0,
414  typename S1,
415  typename S2,
416  typename S3,
417  typename S4,
418  typename S5,
419  typename S6,
420  typename S7,
421  typename S8,
422  typename S9,
423  typename S10,
424  typename S11,
425  typename S12,
426  typename S13,
427  typename S14,
428  typename S15,
429  typename S16,
430  typename S17,
431  typename S18 >
432 class MethodFunctor19 {
433  public:
434  MethodFunctor19( T * t,
435  void (T::*methodPtr)( S0, S1, S2, S3, S4,
436  S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15, S16, S17, S18 ),
437  const S0 & s0,
438  const S1 & s1,
439  const S2 & s2,
440  const S3 & s3,
441  const S4 & s4,
442  const S5 & s5,
443  const S6 & s6,
444  const S7 & s7,
445  const S8 & s8,
446  const S9 & s9,
447  const S10 & s10,
448  const S11 & s11,
449  const S12 & s12,
450  const S13 & s13,
451  const S14 & s14,
452  const S15 & s15,
453  const S16 & s16,
454  const S17 & s17,
455  const S18 & s18 );
456 
457  void operator()( );
458 
459  private:
460  T * const t_;
461  void (T::*methodPtr_)( S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15, S16, S17, S18);
462  const S0 s0_;
463  const S1 s1_;
464  const S2 s2_;
465  const S3 s3_;
466  const S4 s4_;
467  const S5 s5_;
468  const S6 s6_;
469  const S7 s7_;
470  const S8 s8_;
471  const S9 s9_;
472  const S10 s10_;
473  const S11 s11_;
474  const S12 s12_;
475  const S13 s13_;
476  const S14 s14_;
477  const S15 s15_;
478  const S16 s16_;
479  const S17 s17_;
480  const S18 s18_;
481 };
482 
483 // NOTE: Below here is simply implementation
484 
485 
486 template < typename T >
487 MethodFunctor0< T >::MethodFunctor0(
488  T * const t,
489  void (T::*methodPtr)( ) ) :
490 t_( t ),
491 methodPtr_( methodPtr ) {
492 }
493 
494 
495 template < typename T >
496 void
497 MethodFunctor0< T >::operator()( ) {
498  (t_->*methodPtr_)( );
499 }
500 
501 
502 template < typename T, typename S0 >
503 MethodFunctor1< T, S0 >::MethodFunctor1(
504  T * const t,
505  void (T::*methodPtr)( S0 ),
506  const S0 & s0 ) :
507 t_( t ),
508 methodPtr_( methodPtr ),
509 s0_( s0 ) {
510 }
511 
512 
513 template < typename T, typename S0 >
514 void
515 MethodFunctor1< T, S0 >::operator()( ) {
516  (t_->*methodPtr_)( s0_ );
517 }
518 
519 
520 template < typename T, typename S0, typename S1 >
521 MethodFunctor2< T, S0, S1 >::MethodFunctor2(
522  T * const t,
523  void (T::*methodPtr)( S0, S1 ),
524  const S0 & s0,
525  const S1 & s1 ) :
526 t_( t ),
527 methodPtr_( methodPtr ),
528 s0_( s0 ),
529 s1_( s1 ) {
530 }
531 
532 
533 template < typename T,
534  typename S0,
535  typename S1 >
536 void
537 MethodFunctor2< T, S0, S1 >::operator()( ) {
538  (t_->*methodPtr_)( s0_, s1_ );
539 }
540 
541 
542 template < typename T,
543  typename S0,
544  typename S1,
545  typename S2 >
546 MethodFunctor3< T, S0, S1, S2 >::MethodFunctor3(
547  T * const t,
548  void (T::*methodPtr)( S0, S1, S2 ),
549  const S0 & s0,
550  const S1 & s1,
551  const S2 & s2 ) :
552 t_( t ),
553 methodPtr_( methodPtr ),
554 s0_( s0 ),
555 s1_( s1 ),
556 s2_( s2 ) {
557 }
558 
559 
560 template < typename T,
561  typename S0,
562  typename S1,
563  typename S2 >
564 void
565 MethodFunctor3< T, S0, S1, S2 >::operator()( ) {
566  (t_->*methodPtr_)( s0_, s1_, s2_ );
567 }
568 
569 
570 template < typename T,
571  typename S0,
572  typename S1,
573  typename S2,
574  typename S3 >
575 MethodFunctor4< T, S0, S1, S2, S3 >::MethodFunctor4(
576  T * const t,
577  void (T::*methodPtr)( S0, S1, S2, S3 ),
578  const S0 & s0,
579  const S1 & s1,
580  const S2 & s2,
581  const S3 & s3 ) :
582 t_( t ),
583 methodPtr_( methodPtr ),
584 s0_( s0 ),
585 s1_( s1 ),
586 s2_( s2 ),
587 s3_( s3 ) {
588 }
589 
590 
591 template < typename T,
592  typename S0,
593  typename S1,
594  typename S2,
595  typename S3 >
596 void
597 MethodFunctor4< T, S0, S1, S2, S3 >::operator()( ) {
598  (t_->*methodPtr_)( s0_, s1_, s2_, s3_ );
599 }
600 
601 
602 template < typename T,
603  typename S0,
604  typename S1,
605  typename S2,
606  typename S3,
607  typename S4 >
608 MethodFunctor5< T, S0, S1, S2, S3, S4 >::MethodFunctor5(
609  T * const t,
610  void (T::*methodPtr)( S0, S1, S2, S3, S4 ),
611  const S0 & s0,
612  const S1 & s1,
613  const S2 & s2,
614  const S3 & s3,
615  const S4 & s4 ) :
616 t_( t ),
617 methodPtr_( methodPtr ),
618 s0_( s0 ),
619 s1_( s1 ),
620 s2_( s2 ),
621 s3_( s3 ),
622 s4_( s4 ) {
623 }
624 
625 
626 template < typename T,
627  typename S0,
628  typename S1,
629  typename S2,
630  typename S3,
631  typename S4 >
632 void
633 MethodFunctor5< T, S0, S1, S2, S3, S4 >::operator()( ) {
634  (t_->*methodPtr_)( s0_, s1_, s2_, s3_, s4_ );
635 }
636 
637 template < typename T,
638  typename S0,
639  typename S1,
640  typename S2,
641  typename S3,
642  typename S4,
643  typename S5 >
644 MethodFunctor6< T, S0, S1, S2, S3, S4, S5 >::MethodFunctor6(
645  T * const t,
646  void (T::*methodPtr)( S0, S1, S2, S3, S4, S5 ),
647  const S0 & s0,
648  const S1 & s1,
649  const S2 & s2,
650  const S3 & s3,
651  const S4 & s4,
652  const S5 & s5 ) :
653 t_( t ),
654 methodPtr_( methodPtr ),
655 s0_( s0 ),
656 s1_( s1 ),
657 s2_( s2 ),
658 s3_( s3 ),
659 s4_( s4 ),
660 s5_( s5 ) {
661 }
662 
663 template < typename T,
664  typename S0,
665  typename S1,
666  typename S2,
667  typename S3,
668  typename S4,
669  typename S5 >
670 void
671 MethodFunctor6< T, S0, S1, S2, S3, S4, S5 >::operator()( ) {
672  (t_->*methodPtr_)( s0_, s1_, s2_, s3_, s4_, s5_ );
673 }
674 
675 template < typename T,
676  typename S0,
677  typename S1,
678  typename S2,
679  typename S3,
680  typename S4,
681  typename S5,
682  typename S6 >
683 MethodFunctor7< T, S0, S1, S2, S3, S4, S5, S6 >::MethodFunctor7(
684  T * const t,
685  void (T::*methodPtr)( S0, S1, S2, S3, S4, S5, S6 ),
686  const S0 & s0,
687  const S1 & s1,
688  const S2 & s2,
689  const S3 & s3,
690  const S4 & s4,
691  const S5 & s5,
692  const S6 & s6 ) :
693 t_( t ),
694 methodPtr_( methodPtr ),
695 s0_( s0 ),
696 s1_( s1 ),
697 s2_( s2 ),
698 s3_( s3 ),
699 s4_( s4 ),
700 s5_( s5 ),
701 s6_( s6 ) {
702 }
703 
704 template < typename T,
705  typename S0,
706  typename S1,
707  typename S2,
708  typename S3,
709  typename S4,
710  typename S5,
711  typename S6 >
712 void
713 MethodFunctor7< T, S0, S1, S2, S3, S4, S5, S6 >::operator()( ) {
714  (t_->*methodPtr_)( s0_, s1_, s2_, s3_, s4_, s5_, s6_ );
715 }
716 
717 template < typename T,
718  typename S0,
719  typename S1,
720  typename S2,
721  typename S3,
722  typename S4,
723  typename S5,
724  typename S6,
725  typename S7 >
726 MethodFunctor8< T, S0, S1, S2, S3, S4, S5, S6, S7 >::MethodFunctor8(
727  T * t,
728  void (T::*methodPtr)( S0, S1, S2, S3, S4, S5, S6, S7),
729  const S0 & s0,
730  const S1 & s1,
731  const S2 & s2,
732  const S3 & s3,
733  const S4 & s4,
734  const S5 & s5,
735  const S6 & s6,
736  const S7 & s7) :
737 t_( t ),
738 methodPtr_(methodPtr),
739 s0_( s0 ),
740 s1_( s1 ),
741 s2_( s2 ),
742 s3_( s3 ),
743 s4_( s4 ),
744 s5_( s5 ),
745 s6_( s6 ),
746 s7_( s7 ) {
747 }
748 
749 template < typename T,
750  typename S0,
751  typename S1,
752  typename S2,
753  typename S3,
754  typename S4,
755  typename S5,
756  typename S6,
757  typename S7,
758  typename S8 >
759 MethodFunctor9< T, S0, S1, S2, S3, S4, S5, S6, S7, S8 >::MethodFunctor9(
760  T * t,
761  void (T::*methodPtr)( S0, S1, S2, S3, S4, S5, S6, S7, S8),
762  const S0 & s0,
763  const S1 & s1,
764  const S2 & s2,
765  const S3 & s3,
766  const S4 & s4,
767  const S5 & s5,
768  const S6 & s6,
769  const S7 & s7,
770  const S8 & s8) :
771 t_( t ),
772 methodPtr_(methodPtr),
773 s0_( s0 ),
774 s1_( s1 ),
775 s2_( s2 ),
776 s3_( s3 ),
777 s4_( s4 ),
778 s5_( s5 ),
779 s6_( s6 ),
780 s7_( s7 ),
781 s8_(s8) {
782 }
783 
784 template < typename T,
785  typename S0,
786  typename S1,
787  typename S2,
788  typename S3,
789  typename S4,
790  typename S5,
791  typename S6,
792  typename S7,
793  typename S8 >
794 void
795 MethodFunctor9< T, S0, S1, S2, S3, S4, S5, S6, S7, S8 >::operator()( )
796 {
797  (t_->*methodPtr_)(s0_, s1_, s2_, s3_, s4_, s5_, s6_, s7_, s8_);
798 }
799 
800 // MethodFunctor10
801 template < typename T,
802  typename S0,
803  typename S1,
804  typename S2,
805  typename S3,
806  typename S4,
807  typename S5,
808  typename S6,
809  typename S7,
810  typename S8,
811  typename S9 >
812 MethodFunctor10< T, S0, S1, S2, S3, S4, S5, S6, S7, S8, S9 >::MethodFunctor10(
813  T * t,
814  void (T::*methodPtr)( S0, S1, S2, S3, S4, S5, S6, S7, S8, S9 ),
815  const S0 & s0,
816  const S1 & s1,
817  const S2 & s2,
818  const S3 & s3,
819  const S4 & s4,
820  const S5 & s5,
821  const S6 & s6,
822  const S7 & s7,
823  const S8 & s8,
824  const S9 & s9 ) :
825 t_( t ),
826 methodPtr_( methodPtr ),
827 s0_( s0 ),
828 s1_( s1 ),
829 s2_( s2 ),
830 s3_( s3 ),
831 s4_( s4 ),
832 s5_( s5 ),
833 s6_( s6 ),
834 s7_( s7 ),
835 s8_( s8 ),
836 s9_( s9 ) {
837 }
838 
839 template < typename T,
840  typename S0,
841  typename S1,
842  typename S2,
843  typename S3,
844  typename S4,
845  typename S5,
846  typename S6,
847  typename S7,
848  typename S8,
849  typename S9>
850 void
851 MethodFunctor10< T, S0, S1, S2, S3, S4, S5, S6, S7, S8, S9 >::operator()( )
852 {
853  (t_->*methodPtr_)( s0_, s1_, s2_, s3_, s4_, s5_, s6_, s7_, s8_, s9_);
854 }
855 
856 // MethodFunctor11
857 template < typename T,
858  typename S0,
859  typename S1,
860  typename S2,
861  typename S3,
862  typename S4,
863  typename S5,
864  typename S6,
865  typename S7,
866  typename S8,
867  typename S9,
868  typename S10 >
869 MethodFunctor11< T, S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10 >::MethodFunctor11(
870  T * t,
871  void (T::*methodPtr)(S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10),
872  const S0 & s0,
873  const S1 & s1,
874  const S2 & s2,
875  const S3 & s3,
876  const S4 & s4,
877  const S5 & s5,
878  const S6 & s6,
879  const S7 & s7,
880  const S8 & s8,
881  const S9 & s9,
882  const S10& s10 ) :
883 t_( t ),
884 methodPtr_( methodPtr ),
885 s0_( s0 ),
886 s1_( s1 ),
887 s2_( s2 ),
888 s3_( s3 ),
889 s4_( s4 ),
890 s5_( s5 ),
891 s6_( s6 ),
892 s7_( s7 ),
893 s8_( s8 ),
894 s9_( s9 ),
895 s10_(s10) {
896 }
897 
898 template < typename T,
899  typename S0,
900  typename S1,
901  typename S2,
902  typename S3,
903  typename S4,
904  typename S5,
905  typename S6,
906  typename S7,
907  typename S8,
908  typename S9,
909  typename S10 >
910 void
911 MethodFunctor11< T, S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10 >::operator()( )
912 {
913  (t_->*methodPtr_)(s0_, s1_, s2_, s3_, s4_, s5_, s6_, s7_, s8_, s9_, s10_);
914 }
915 
916 // MethodFunctor19
917 template < typename T,
918  typename S0,
919  typename S1,
920  typename S2,
921  typename S3,
922  typename S4,
923  typename S5,
924  typename S6,
925  typename S7,
926  typename S8,
927  typename S9,
928  typename S10,
929  typename S11,
930  typename S12,
931  typename S13,
932  typename S14,
933  typename S15,
934  typename S16,
935  typename S17,
936  typename S18>
937  MethodFunctor19< T, S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15, S16, S17, S18 >::MethodFunctor19(
938  T * t,
939  void (T::*methodPtr)( S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15, S16, S17, S18 ),
940  const S0 & s0,
941  const S1 & s1,
942  const S2 & s2,
943  const S3 & s3,
944  const S4 & s4,
945  const S5 & s5,
946  const S6 & s6,
947  const S7 & s7,
948  const S8 & s8,
949  const S9 & s9,
950  const S10 & s10,
951  const S11 & s11,
952  const S12 & s12,
953  const S13 & s13,
954  const S14 & s14,
955  const S15 & s15,
956  const S16 & s16,
957  const S17 & s17,
958  const S18 & s18 ) :
959 t_( t ),
960 methodPtr_( methodPtr ),
961 s0_( s0 ),
962 s1_( s1 ),
963 s2_( s2 ),
964 s3_( s3 ),
965 s4_( s4 ),
966 s5_( s5 ),
967 s6_( s6 ),
968 s7_( s7 ),
969 s8_( s8 ),
970 s9_( s9 ),
971 s10_( s10 ),
972 s11_( s11 ),
973 s12_( s12 ),
974 s13_( s13 ),
975 s14_( s14 ),
976 s15_( s15 ),
977 s16_( s16 ),
978 s17_( s17 ),
979 s18_( s18 ) {
980 }
981 
982 template < typename T,
983  typename S0,
984  typename S1,
985  typename S2,
986  typename S3,
987  typename S4,
988  typename S5,
989  typename S6,
990  typename S7,
991  typename S8,
992  typename S9,
993  typename S10,
994  typename S11,
995  typename S12,
996  typename S13,
997  typename S14,
998  typename S15,
999  typename S16,
1000  typename S17,
1001  typename S18 >
1002 
1003 void
1004  MethodFunctor19< T, S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15, S16, S17, S18 >::operator()( )
1005 {
1006  (t_->*methodPtr_)( s0_, s1_, s2_, s3_, s4_, s5_, s6_, s7_, s8_, s9_, s10_, s11_, s12_, s13_, s14_, s15_, s16_, s17_, s18_ );
1007 }
1008 
1009 } // namespace carma::control
1010 } // namespace carma
1011 
1012 
1013 #endif