1 #ifndef CARMA_CONTROL_HANDLE_METHOD_FUNCTOR_GROUP_H
2 #define CARMA_CONTROL_HANDLE_METHOD_FUNCTOR_GROUP_H
9 #include "carma/control/MethodFunctors.h"
32 template <
typename H >
33 ::std::map< ::std::string, MethodFunctor0< H > >
34 makeHandleMethodFunctorGroup(
35 const ::std::set< H * > & hGroup,
36 void (H::*methodPtr)( ) );
39 template <
typename H,
typename A0 >
40 ::std::map< ::std::string, MethodFunctor1< H, A0 > >
41 makeHandleMethodFunctorGroup(
42 const ::std::set< H * > & hGroup,
43 void (H::*methodPtr)( A0 ),
47 template <
typename H,
typename A0,
typename A1 >
48 ::std::map< ::std::string, MethodFunctor2< H, A0, A1 > >
49 makeHandleMethodFunctorGroup(
50 const ::std::set< H * > & hGroup,
51 void (H::*methodPtr)( A0, A1 ),
56 template <
typename H,
typename A0,
typename A1,
typename A2 >
57 ::std::map< ::std::string, MethodFunctor3< H, A0, A1, A2 > >
58 makeHandleMethodFunctorGroup(
59 const ::std::set< H * > & hGroup,
60 void (H::*methodPtr)( A0, A1, A2 ),
66 template <
typename H,
typename A0,
typename A1,
typename A2,
typename A3 >
67 ::std::map< ::std::string, MethodFunctor4< H, A0, A1, A2, A3 > >
68 makeHandleMethodFunctorGroup(
69 const ::std::set< H * > & hGroup,
70 void (H::*methodPtr)( A0, A1, A2, A3 ),
77 template <
typename H,
83 ::std::map< ::std::string, MethodFunctor5< H, A0, A1, A2, A3, A4 > >
84 makeHandleMethodFunctorGroup(
85 const ::std::set< H * > & hGroup,
86 void (H::*methodPtr)( A0, A1, A2, A3, A4 ),
94 template <
typename H,
101 ::std::map< ::std::string, MethodFunctor6< H, A0, A1, A2, A3, A4, A5 > >
102 makeHandleMethodFunctorGroup(
103 const ::std::set< H * > & hGroup,
104 void (H::*methodPtr)( A0, A1, A2, A3, A4, A5 ),
113 template <
typename H,
121 ::std::map< ::std::string, MethodFunctor7< H, A0, A1, A2, A3, A4, A5, A6 > >
122 makeHandleMethodFunctorGroup(
123 const ::std::set< H * > & hGroup,
124 void (H::*methodPtr)( A0, A1, A2, A3, A4, A5, A6 ),
133 template <
typename H,
142 ::std::map< ::std::string, MethodFunctor8< H, A0, A1, A2, A3, A4, A5, A6, A7 > >
143 makeHandleMethodFunctorGroup(
144 const ::std::set< H * > & hGroup,
145 void (H::*methodPtr)(A0, A1, A2, A3, A4, A5, A6, A7),
155 template <
typename H,
165 ::std::map< ::std::string, MethodFunctor9< H, A0, A1, A2, A3, A4, A5, A6, A7, A8 > >
166 makeHandleMethodFunctorGroup(
167 const ::std::set< H * > & hGroup,
168 void (H::*methodPtr)(A0, A1, A2, A3, A4, A5, A6, A7, A8),
179 template <
typename H,
190 ::std::map< ::std::string, MethodFunctor10< H, A0, A1, A2, A3, A4,
191 A5, A6, A7, A8, A9 > >
192 makeHandleMethodFunctorGroup(
193 const ::std::set< H * > & hGroup,
194 void (H::*methodPtr)( A0, A1, A2, A3, A4,
195 A5, A6, A7, A8, A9 ),
208 template <
typename H,
220 ::std::map< ::std::string, MethodFunctor11< H, A0, A1, A2, A3, A4,
221 A5, A6, A7, A8, A9, A10 > >
222 makeHandleMethodFunctorGroup(
223 const ::std::set< H * > & hGroup,
224 void (H::*methodPtr)( A0, A1, A2, A3, A4,
225 A5, A6, A7, A8, A9, A10 ),
239 template <
typename H,
252 ::std::map< ::std::string, MethodFunctor12< H, A0, A1, A2, A3, A4,
253 A5, A6, A7, A8, A9, A10, A11 > >
254 makeHandleMethodFunctorGroup(
255 const ::std::set< H * > & hGroup,
256 void (H::*methodPtr)(A0, A1, A2, A3, A4,
257 A5, A6, A7, A8, A9, A10, A11),
272 template <
typename H,
293 ::std::map< ::std::string, MethodFunctor19< H, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18 > >
294 makeHandleMethodFunctorGroup(
295 const ::std::set< H * > & hGroup,
296 void (H::*methodPtr)( A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
297 A11, A12, A13, A14, A15, A16, A17, A18 ),
322 template <
typename H >
323 ::std::map< ::std::string, MethodFunctor0< H > >
324 makeHandleMethodFunctorGroup(
325 const ::std::set< H * > & hGroup,
326 void (H::*methodPtr)( ) ) {
327 typedef typename ::std::set< H * >::const_iterator HGroupConstIterator;
328 typedef ::std::map< ::std::string, MethodFunctor0< H > > FunctorGroup;
332 HGroupConstIterator i = hGroup.begin( );
333 const HGroupConstIterator iEnd = hGroup.end( );
335 for ( ; i != iEnd; ++i ) {
353 template <
typename H,
typename A0 >
354 ::std::map< ::std::string, MethodFunctor1< H, A0 > >
355 makeHandleMethodFunctorGroup(
356 const ::std::set< H * > & hGroup,
357 void (H::*methodPtr)( A0 ),
359 typedef typename ::std::set< H * >::const_iterator HGroupConstIterator;
360 typedef ::std::map< ::std::string, MethodFunctor1< H, A0 > > FunctorGroup;
364 HGroupConstIterator i = hGroup.begin( );
365 const HGroupConstIterator iEnd = hGroup.end( );
367 for ( ; i != iEnd; ++i ) {
376 MethodFunctor1< H, A0 >(
386 template <
typename H,
typename A0,
typename A1 >
387 ::std::map< ::std::string, MethodFunctor2< H, A0, A1 > >
388 makeHandleMethodFunctorGroup(
389 const ::std::set< H * > & hGroup,
390 void (H::*methodPtr)( A0, A1 ),
393 typedef typename ::std::set< H * >::const_iterator HGroupConstIterator;
394 typedef ::std::map< ::std::string, MethodFunctor2< H, A0, A1 > > FunctorGroup;
398 HGroupConstIterator i = hGroup.begin( );
399 const HGroupConstIterator iEnd = hGroup.end( );
401 for ( ; i != iEnd; ++i ) {
410 MethodFunctor2< H, A0, A1 >(
421 template <
typename H,
typename A0,
typename A1,
typename A2 >
422 ::std::map< ::std::string, MethodFunctor3< H, A0, A1, A2 > >
423 makeHandleMethodFunctorGroup(
424 const ::std::set< H * > & hGroup,
425 void (H::*methodPtr)( A0, A1, A2 ),
429 typedef typename ::std::set< H * >::const_iterator HGroupConstIterator;
430 typedef ::std::map< ::std::string, MethodFunctor3< H, A0, A1, A2 > > FunctorGroup;
434 HGroupConstIterator i = hGroup.begin( );
435 const HGroupConstIterator iEnd = hGroup.end( );
437 for ( ; i != iEnd; ++i ) {
446 MethodFunctor3< H, A0, A1, A2 >(
458 template <
typename H,
typename A0,
typename A1,
typename A2,
typename A3 >
459 ::std::map< ::std::string, MethodFunctor4< H, A0, A1, A2, A3 > >
460 makeHandleMethodFunctorGroup(
461 const ::std::set< H * > & hGroup,
462 void (H::*methodPtr)( A0, A1, A2, A3 ),
467 typedef typename ::std::set< H * >::const_iterator HGroupConstIterator;
468 typedef ::std::map< ::std::string, MethodFunctor4< H, A0, A1, A2, A3> > FunctorGroup;
472 HGroupConstIterator i = hGroup.begin( );
473 const HGroupConstIterator iEnd = hGroup.end( );
475 for ( ; i != iEnd; ++i ) {
484 MethodFunctor4< H, A0, A1, A2, A3 >(
497 template <
typename H,
503 ::std::map< ::std::string, MethodFunctor5< H, A0, A1, A2, A3, A4 > >
504 makeHandleMethodFunctorGroup(
505 const ::std::set< H * > & hGroup,
506 void (H::*methodPtr)( A0, A1, A2, A3, A4 ),
512 typedef typename ::std::set< H * >::const_iterator HGroupConstIterator;
513 typedef ::std::map< ::std::string, MethodFunctor5< H, A0, A1, A2, A3, A4 > >
518 HGroupConstIterator i = hGroup.begin( );
519 const HGroupConstIterator iEnd = hGroup.end( );
521 for ( ; i != iEnd; ++i ) {
530 MethodFunctor5< H, A0, A1, A2, A3, A4 >(
544 template <
typename H,
551 ::std::map< ::std::string, MethodFunctor6< H, A0, A1, A2, A3, A4, A5 > >
552 makeHandleMethodFunctorGroup(
553 const ::std::set< H * > & hGroup,
554 void (H::*methodPtr)( A0, A1, A2, A3, A4, A5 ),
561 typedef typename ::std::set< H * >::const_iterator HGroupConstIterator;
562 typedef ::std::map< ::std::string,
563 MethodFunctor6< H, A0, A1, A2, A3, A4, A5 > >
568 HGroupConstIterator i = hGroup.begin( );
569 const HGroupConstIterator iEnd = hGroup.end( );
571 for ( ; i != iEnd; ++i ) {
580 MethodFunctor6< H, A0, A1, A2, A3, A4, A5 >(
594 template <
typename H,
602 ::std::map< ::std::string, MethodFunctor7< H, A0, A1, A2, A3, A4, A5, A6 > >
603 makeHandleMethodFunctorGroup(
604 const ::std::set< H * > & hGroup,
605 void (H::*methodPtr)( A0, A1, A2, A3, A4, A5, A6 ),
613 typedef typename ::std::set< H * >::const_iterator HGroupConstIterator;
614 typedef ::std::map< ::std::string,
615 MethodFunctor7< H, A0, A1, A2, A3, A4, A5, A6 > >
619 HGroupConstIterator i = hGroup.begin( );
620 const HGroupConstIterator iEnd = hGroup.end( );
622 for ( ; i != iEnd; ++i ) {
624 if ( h == 0 )
continue;
628 MethodFunctor7< H, A0, A1, A2, A3, A4, A5, A6 >(
642 template <
typename H,
651 ::std::map< ::std::string, MethodFunctor8< H, A0, A1, A2, A3, A4, A5, A6, A7 > >
652 makeHandleMethodFunctorGroup(
653 const ::std::set< H * > & hGroup,
654 void (H::*methodPtr)(A0, A1, A2, A3, A4, A5, A6, A7 ),
663 typedef typename ::std::set< H * >::const_iterator HGroupConstIterator;
664 typedef ::std::map< ::std::string,
665 MethodFunctor8< H, A0, A1, A2, A3, A4, A5, A6, A7 > >
669 HGroupConstIterator i = hGroup.begin( );
670 const HGroupConstIterator iEnd = hGroup.end( );
672 for ( ; i != iEnd; ++i ) {
674 if ( h == 0 )
continue;
678 MethodFunctor8< H, A0, A1, A2, A3, A4, A5, A6, A7 >(
693 template <
typename H,
703 ::std::map< ::std::string, MethodFunctor9< H, A0, A1, A2, A3, A4, A5, A6, A7, A8 > >
704 makeHandleMethodFunctorGroup(
705 const ::std::set< H * > & hGroup,
706 void (H::*methodPtr)(A0, A1, A2, A3, A4, A5, A6, A7, A8),
716 typedef typename ::std::set< H * >::const_iterator HGroupConstIterator;
717 typedef ::std::map< ::std::string,
718 MethodFunctor9< H, A0, A1, A2, A3, A4, A5, A6, A7, A8 > >
722 HGroupConstIterator i = hGroup.begin( );
723 const HGroupConstIterator iEnd = hGroup.end( );
725 for ( ; i != iEnd; ++i ) {
727 if ( h == 0 )
continue;
731 MethodFunctor9< H, A0, A1, A2, A3, A4, A5, A6, A7, A8 >(
747 template <
typename H,
758 ::std::map< ::std::string, MethodFunctor10< H, A0, A1, A2, A3, A4,
759 A5, A6, A7, A8, A9 > >
760 makeHandleMethodFunctorGroup(
761 const ::std::set< H * > & hGroup,
762 void (H::*methodPtr)( A0, A1, A2, A3, A4,
763 A5, A6, A7, A8, A9 ),
774 typedef typename ::std::set< H * >::const_iterator HGroupConstIterator;
775 typedef ::std::map< ::std::string, MethodFunctor10< H, A0, A1, A2, A3, A4,
776 A5, A6, A7, A8, A9 > >
781 HGroupConstIterator i = hGroup.begin( );
782 const HGroupConstIterator iEnd = hGroup.end( );
784 for ( ; i != iEnd; ++i ) {
793 MethodFunctor10< H, A0, A1, A2, A3, A4,
794 A5, A6, A7, A8, A9 >(
812 template <
typename H,
824 ::std::map< ::std::string, MethodFunctor11< H, A0, A1, A2, A3, A4,
825 A5, A6, A7, A8, A9, A10 > >
826 makeHandleMethodFunctorGroup(
827 const ::std::set< H * > & hGroup,
828 void (H::*methodPtr)( A0, A1, A2, A3, A4,
829 A5, A6, A7, A8, A9, A10 ),
840 const A10 & arg10 ) {
841 typedef typename ::std::set< H * >::const_iterator HGroupConstIterator;
842 typedef ::std::map< ::std::string, MethodFunctor11< H, A0, A1, A2, A3, A4,
843 A5, A6, A7, A8, A9, A10 > >
848 HGroupConstIterator i = hGroup.begin( );
849 const HGroupConstIterator iEnd = hGroup.end( );
850 for ( ; i != iEnd; ++i ) {
852 if ( h == 0 )
continue;
857 MethodFunctor11< H, A0, A1, A2, A3, A4,
858 A5, A6, A7, A8, A9, A10 >(
877 template <
typename H,
890 ::std::map< ::std::string, MethodFunctor12< H, A0, A1, A2, A3, A4,
891 A5, A6, A7, A8, A9, A10, A11 > >
892 makeHandleMethodFunctorGroup(
893 const ::std::set< H * > & hGroup,
894 void (H::*methodPtr)(A0, A1, A2, A3, A4,
895 A5, A6, A7, A8, A9, A10, A11),
908 typedef typename ::std::set< H * >::const_iterator HGroupConstIterator;
909 typedef ::std::map< ::std::string, MethodFunctor12< H, A0, A1, A2, A3, A4,
910 A5, A6, A7, A8, A9, A10, A11 > >
913 HGroupConstIterator i = hGroup.begin( );
914 const HGroupConstIterator iEnd = hGroup.end( );
915 for ( ; i != iEnd; ++i ) {
917 if ( h == 0 )
continue;
922 MethodFunctor12< H, A0, A1, A2, A3, A4,
923 A5, A6, A7, A8, A9, A10, A11 >(
942 template <
typename H,
962 ::std::map< ::std::string, MethodFunctor19< H, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18 > >
963 makeHandleMethodFunctorGroup(
964 const ::std::set< H * > & hGroup,
965 void (H::*methodPtr)( A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18 ),
984 const A18 & arg18 ) {
985 typedef typename ::std::set< H * >::const_iterator HGroupConstIterator;
986 typedef ::std::map< ::std::string, MethodFunctor19< H, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18 > >
991 HGroupConstIterator i = hGroup.begin( );
992 const HGroupConstIterator iEnd = hGroup.end( );
994 for ( ; i != iEnd; ++i ) {
1003 MethodFunctor19< H, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18 >(