1 #ifndef CARMA_CONTROL_METHOD_FUNCTORS_H
2 #define CARMA_CONTROL_METHOD_FUNCTORS_H
9 template <
typename T >
10 class MethodFunctor0 {
12 MethodFunctor0( T * t,
13 void (T::*methodPtr)( ) );
19 void (T::*methodPtr_)( );
23 template <
typename T,
25 class MethodFunctor1 {
27 MethodFunctor1( T * t,
28 void (T::*methodPtr)( S0 ),
35 void (T::*methodPtr_)( S0 );
40 template <
typename T,
43 class MethodFunctor2 {
45 MethodFunctor2( T * t,
46 void (T::*methodPtr)( S0, S1 ),
54 void (T::*methodPtr_)( S0, S1 );
60 template <
typename T,
64 class MethodFunctor3 {
66 MethodFunctor3( T * t,
67 void (T::*methodPtr)( S0, S1, S2 ),
76 void (T::*methodPtr_)( S0, S1, S2 );
83 template <
typename T,
88 class MethodFunctor4 {
90 MethodFunctor4( T * t,
91 void (T::*methodPtr)( S0, S1, S2, S3 ),
101 void (T::*methodPtr_)( S0, S1, S2, S3 );
109 template <
typename T,
115 class MethodFunctor5 {
117 MethodFunctor5( T * t,
118 void (T::*methodPtr)( S0, S1, S2, S3, S4 ),
129 void (T::*methodPtr_)( S0, S1, S2, S3, S4 );
137 template <
typename T,
144 class MethodFunctor6 {
146 MethodFunctor6( T * t,
147 void (T::*methodPtr)( S0, S1, S2, S3, S4, S5 ),
159 void (T::*methodPtr_)( S0, S1, S2, S3, S4, S5 );
168 template <
typename T,
176 class MethodFunctor7 {
178 MethodFunctor7( T * t,
179 void (T::*methodPtr)(S0, S1, S2, S3, S4, S5, S6),
190 void (T::*methodPtr_)(S0, S1, S2, S3, S4, S5, S6);
200 template <
typename T,
209 class MethodFunctor8 {
213 void (T::*methodPtr)(S0, S1, S2, S3, S4, S5, S6, S7),
225 void (T::*methodPtr_)(S0, S1, S2, S3, S4, S5, S6, S7);
236 template <
typename T,
246 class MethodFunctor9 {
248 MethodFunctor9( T * t,
249 void (T::*methodPtr)(S0, S1, S2, S3, S4,
263 void (T::*methodPtr_)( S0, S1, S2, S3, S4, S5, S6, S7, S8);
275 template <
typename T,
286 class MethodFunctor10 {
288 MethodFunctor10( T * t,
289 void (T::*methodPtr)( S0, S1, S2, S3, S4,
290 S5, S6, S7, S8, S9 ),
304 void (T::*methodPtr_)(S0, S1, S2, S3, S4, S5, S6, S7, S8, S9);
318 template <
typename T,
330 class MethodFunctor11 {
332 MethodFunctor11(T * t,
333 void (T::*methodPtr)(S0, S1, S2, S3, S4,
334 S5, S6, S7, S8, S9, S10),
349 void (T::*methodPtr_)(S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10);
364 template <
typename T,
377 class MethodFunctor12 {
379 MethodFunctor12(T* t,
380 void (T::*methodPtr)(S0, S1, S2, S3, S4,
381 S5, S6, S7, S8, S9, S10, S11),
397 void (T::*methodPtr_)(S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11);
412 template <
typename T,
432 class MethodFunctor19 {
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 ),
461 void (T::*methodPtr_)( S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15, S16, S17, S18);
486 template <
typename T >
487 MethodFunctor0< T >::MethodFunctor0(
489 void (T::*methodPtr)( ) ) :
491 methodPtr_( methodPtr ) {
495 template <
typename T >
497 MethodFunctor0< T >::operator()( ) {
498 (t_->*methodPtr_)( );
502 template <
typename T,
typename S0 >
503 MethodFunctor1< T, S0 >::MethodFunctor1(
505 void (T::*methodPtr)( S0 ),
508 methodPtr_( methodPtr ),
513 template <
typename T,
typename S0 >
515 MethodFunctor1< T, S0 >::operator()( ) {
516 (t_->*methodPtr_)( s0_ );
520 template <
typename T,
typename S0,
typename S1 >
521 MethodFunctor2< T, S0, S1 >::MethodFunctor2(
523 void (T::*methodPtr)( S0, S1 ),
527 methodPtr_( methodPtr ),
533 template <
typename T,
537 MethodFunctor2< T, S0, S1 >::operator()( ) {
538 (t_->*methodPtr_)( s0_, s1_ );
542 template <
typename T,
546 MethodFunctor3< T, S0, S1, S2 >::MethodFunctor3(
548 void (T::*methodPtr)( S0, S1, S2 ),
553 methodPtr_( methodPtr ),
560 template <
typename T,
565 MethodFunctor3< T, S0, S1, S2 >::operator()( ) {
566 (t_->*methodPtr_)( s0_, s1_, s2_ );
570 template <
typename T,
575 MethodFunctor4< T, S0, S1, S2, S3 >::MethodFunctor4(
577 void (T::*methodPtr)( S0, S1, S2, S3 ),
583 methodPtr_( methodPtr ),
591 template <
typename T,
597 MethodFunctor4< T, S0, S1, S2, S3 >::operator()( ) {
598 (t_->*methodPtr_)( s0_, s1_, s2_, s3_ );
602 template <
typename T,
608 MethodFunctor5< T, S0, S1, S2, S3, S4 >::MethodFunctor5(
610 void (T::*methodPtr)( S0, S1, S2, S3, S4 ),
617 methodPtr_( methodPtr ),
626 template <
typename T,
633 MethodFunctor5< T, S0, S1, S2, S3, S4 >::operator()( ) {
634 (t_->*methodPtr_)( s0_, s1_, s2_, s3_, s4_ );
637 template <
typename T,
644 MethodFunctor6< T, S0, S1, S2, S3, S4, S5 >::MethodFunctor6(
646 void (T::*methodPtr)( S0, S1, S2, S3, S4, S5 ),
654 methodPtr_( methodPtr ),
663 template <
typename T,
671 MethodFunctor6< T, S0, S1, S2, S3, S4, S5 >::operator()( ) {
672 (t_->*methodPtr_)( s0_, s1_, s2_, s3_, s4_, s5_ );
675 template <
typename T,
683 MethodFunctor7< T, S0, S1, S2, S3, S4, S5, S6 >::MethodFunctor7(
685 void (T::*methodPtr)( S0, S1, S2, S3, S4, S5, S6 ),
694 methodPtr_( methodPtr ),
704 template <
typename T,
713 MethodFunctor7< T, S0, S1, S2, S3, S4, S5, S6 >::operator()( ) {
714 (t_->*methodPtr_)( s0_, s1_, s2_, s3_, s4_, s5_, s6_ );
717 template <
typename T,
726 MethodFunctor8< T, S0, S1, S2, S3, S4, S5, S6, S7 >::MethodFunctor8(
728 void (T::*methodPtr)( S0, S1, S2, S3, S4, S5, S6, S7),
738 methodPtr_(methodPtr),
749 template <
typename T,
759 MethodFunctor9< T, S0, S1, S2, S3, S4, S5, S6, S7, S8 >::MethodFunctor9(
761 void (T::*methodPtr)( S0, S1, S2, S3, S4, S5, S6, S7, S8),
772 methodPtr_(methodPtr),
784 template <
typename T,
795 MethodFunctor9< T, S0, S1, S2, S3, S4, S5, S6, S7, S8 >::operator()( )
797 (t_->*methodPtr_)(s0_, s1_, s2_, s3_, s4_, s5_, s6_, s7_, s8_);
801 template <
typename T,
812 MethodFunctor10< T, S0, S1, S2, S3, S4, S5, S6, S7, S8, S9 >::MethodFunctor10(
814 void (T::*methodPtr)( S0, S1, S2, S3, S4, S5, S6, S7, S8, S9 ),
826 methodPtr_( methodPtr ),
839 template <
typename T,
851 MethodFunctor10< T, S0, S1, S2, S3, S4, S5, S6, S7, S8, S9 >::operator()( )
853 (t_->*methodPtr_)( s0_, s1_, s2_, s3_, s4_, s5_, s6_, s7_, s8_, s9_);
857 template <
typename T,
869 MethodFunctor11< T, S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10 >::MethodFunctor11(
871 void (T::*methodPtr)(S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10),
884 methodPtr_( methodPtr ),
898 template <
typename T,
911 MethodFunctor11< T, S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10 >::operator()( )
913 (t_->*methodPtr_)(s0_, s1_, s2_, s3_, s4_, s5_, s6_, s7_, s8_, s9_, s10_);
917 template <
typename T,
937 MethodFunctor19< T, S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15, S16, S17, S18 >::MethodFunctor19(
939 void (T::*methodPtr)( S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15, S16, S17, S18 ),
960 methodPtr_( methodPtr ),
982 template <
typename T,
1004 MethodFunctor19< T, S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15, S16, S17, S18 >::operator()( )
1006 (t_->*methodPtr_)( s0_, s1_, s2_, s3_, s4_, s5_, s6_, s7_, s8_, s9_, s10_, s11_, s12_, s13_, s14_, s15_, s16_, s17_, s18_ );