1 #ifndef CARMA_CONTROL_REMOTE_OBJ_METHOD_FUNCTOR_GROUP_H
2 #define CARMA_CONTROL_REMOTE_OBJ_METHOD_FUNCTOR_GROUP_H
9 #include "carma/control/RemoteObjMethodFunctor.h"
17 makeRemoteObjCallString( const ::std::string & methodName,
18 const ::std::string & paramString );
21 template <
typename T,
typename H >
22 ::std::map< ::std::string, RemoteObjMethodFunctor0< T > >
23 makeRemoteObjMethodFunctorGroup(
24 const ::std::set< H * > & hGroup,
25 const ::std::string & methodName,
26 const ::std::string & paramString,
27 void (T::*methodPtr)( ) );
30 template <
typename T,
typename H,
typename A0 >
31 ::std::map< ::std::string, RemoteObjMethodFunctor1< T, A0 > >
32 makeRemoteObjMethodFunctorGroup(
33 const ::std::set< H * > & hGroup,
34 const ::std::string & methodName,
35 const ::std::string & paramString,
36 void (T::*methodPtr)( A0 ),
40 template <
typename T,
typename H,
typename A0,
typename A1 >
41 ::std::map< ::std::string, RemoteObjMethodFunctor2< T, A0, A1 > >
42 makeRemoteObjMethodFunctorGroup(
43 const ::std::set< H * > & hGroup,
44 const ::std::string & methodName,
45 const ::std::string & paramString,
46 void (T::*methodPtr)( A0, A1 ),
51 template <
typename T,
typename H,
55 ::std::map< ::std::string, RemoteObjMethodFunctor3< T, A0, A1, A2 > >
56 makeRemoteObjMethodFunctorGroup(
57 const ::std::set< H * > & hGroup,
58 const ::std::string & methodName,
59 const ::std::string & paramString,
60 void (T::*methodPtr)( A0, A1, A2 ),
66 template <
typename T,
typename H,
71 ::std::map< ::std::string, RemoteObjMethodFunctor4< T, A0, A1, A2, A3 > >
72 makeRemoteObjMethodFunctorGroup(
73 const ::std::set< H * > & hGroup,
74 const ::std::string & methodName,
75 const ::std::string & paramString,
76 void (T::*methodPtr)( A0, A1, A2, A3 ),
83 template <
typename T,
typename H,
89 ::std::map< ::std::string, RemoteObjMethodFunctor5< T, A0, A1, A2, A3, A4 > >
90 makeRemoteObjMethodFunctorGroup(
91 const ::std::set< H * > & hGroup,
92 const ::std::string & methodName,
93 const ::std::string & paramString,
94 void (T::*methodPtr)( A0, A1, A2, A3, A4 ),
101 template <
typename T,
typename H,
111 ::std::map< ::std::string, RemoteObjMethodFunctor9< T, A0, A1, A2, A3, A4, A5, A6, A7, A8 > >
112 makeRemoteObjMethodFunctorGroup(
113 const ::std::set< H * > & hGroup,
114 const ::std::string & methodName,
115 const ::std::string & paramString,
116 void (T::*methodPtr)( A0, A1, A2, A3, A4, A5, A6, A7, A8 ),
132 template <
typename T,
typename H >
133 ::std::map< ::std::string, RemoteObjMethodFunctor0< T > >
134 makeRemoteObjMethodFunctorGroup(
135 const ::std::set< H * > & hGroup,
136 const ::std::string & methodName,
137 const ::std::string & paramString,
138 void (T::*methodPtr)( ) ) {
139 typedef typename ::std::set< H * >::const_iterator HGroupConstIterator;
140 typedef ::std::map< ::std::string, RemoteObjMethodFunctor0< T > > FunctorGroup;
144 HGroupConstIterator i = hGroup.begin( );
145 const HGroupConstIterator iEnd = hGroup.end( );
147 for ( ; i != iEnd; ++i ) {
148 RemoteObjHandleT< T > *
const h = *i;
156 RemoteObjMethodFunctor0< T >(
158 makeRemoteObjCallString( methodName, paramString ),
166 template <
typename T,
typename H,
typename A0 >
167 ::std::map< ::std::string, RemoteObjMethodFunctor1< T, A0 > >
168 makeRemoteObjMethodFunctorGroup(
169 const ::std::set< H * > & hGroup,
170 const ::std::string & methodName,
171 const ::std::string & paramString,
172 void (T::*methodPtr)( A0 ),
174 typedef typename ::std::set< H * >::const_iterator HGroupConstIterator;
175 typedef ::std::map< ::std::string, RemoteObjMethodFunctor1< T, A0 > > FunctorGroup;
179 HGroupConstIterator i = hGroup.begin( );
180 const HGroupConstIterator iEnd = hGroup.end( );
182 for ( ; i != iEnd; ++i ) {
183 RemoteObjHandleT< T > *
const h = *i;
191 RemoteObjMethodFunctor1< T, A0 >(
193 makeRemoteObjCallString( methodName, paramString ),
202 template <
typename T,
typename H,
typename A0,
typename A1 >
203 ::std::map< ::std::string, RemoteObjMethodFunctor2< T, A0, A1 > >
204 makeRemoteObjMethodFunctorGroup(
205 const ::std::set< H * > & hGroup,
206 const ::std::string & methodName,
207 const ::std::string & paramString,
208 void (T::*methodPtr)( A0, A1 ),
211 typedef typename ::std::set< H * >::const_iterator HGroupConstIterator;
212 typedef ::std::map< ::std::string, RemoteObjMethodFunctor2< T, A0, A1 > > FunctorGroup;
216 HGroupConstIterator i = hGroup.begin( );
217 const HGroupConstIterator iEnd = hGroup.end( );
219 for ( ; i != iEnd; ++i ) {
220 RemoteObjHandleT< T > *
const h = *i;
228 RemoteObjMethodFunctor2< T, A0, A1 >(
230 makeRemoteObjCallString( methodName, paramString ),
240 template <
typename T,
typename H,
244 ::std::map< ::std::string, RemoteObjMethodFunctor3< T, A0, A1, A2 > >
245 makeRemoteObjMethodFunctorGroup(
246 const ::std::set< H * > & hGroup,
247 const ::std::string & methodName,
248 const ::std::string & paramString,
249 void (T::*methodPtr)( A0, A1, A2 ),
253 typedef typename ::std::set< H * >::const_iterator HGroupConstIterator;
254 typedef ::std::map< ::std::string,
255 RemoteObjMethodFunctor3< T, A0, A1, A2 > >
260 HGroupConstIterator i = hGroup.begin( );
261 const HGroupConstIterator iEnd = hGroup.end( );
263 for ( ; i != iEnd; ++i ) {
264 RemoteObjHandleT< T > *
const h = *i;
272 RemoteObjMethodFunctor3< T, A0, A1, A2 >(
274 makeRemoteObjCallString( methodName, paramString ),
285 template <
typename T,
typename H,
290 ::std::map< ::std::string, RemoteObjMethodFunctor4< T, A0, A1, A2, A3 > >
291 makeRemoteObjMethodFunctorGroup(
292 const ::std::set< H * > & hGroup,
293 const ::std::string & methodName,
294 const ::std::string & paramString,
295 void (T::*methodPtr)( A0, A1, A2, A3 ),
300 typedef typename ::std::set< H * >::const_iterator HGroupConstIterator;
301 typedef ::std::map< ::std::string,
302 RemoteObjMethodFunctor4< T, A0, A1, A2, A3 > >
307 HGroupConstIterator i = hGroup.begin( );
308 const HGroupConstIterator iEnd = hGroup.end( );
310 for ( ; i != iEnd; ++i ) {
311 RemoteObjHandleT< T > *
const h = *i;
319 RemoteObjMethodFunctor4< T, A0, A1, A2, A3 >(
321 makeRemoteObjCallString( methodName, paramString ),
333 template <
typename T,
typename H,
339 ::std::map< ::std::string, RemoteObjMethodFunctor5< T, A0, A1, A2, A3, A4 > >
340 makeRemoteObjMethodFunctorGroup(
341 const ::std::set< H * > & hGroup,
342 const ::std::string & methodName,
343 const ::std::string & paramString,
344 void (T::*methodPtr)( A0, A1, A2, A3, A4 ),
350 typedef typename ::std::set< H * >::const_iterator HGroupConstIterator;
351 typedef ::std::map< ::std::string,
352 RemoteObjMethodFunctor5< T, A0, A1, A2, A3, A4 > >
357 HGroupConstIterator i = hGroup.begin( );
358 const HGroupConstIterator iEnd = hGroup.end( );
360 for ( ; i != iEnd; ++i ) {
361 RemoteObjHandleT< T > *
const h = *i;
369 RemoteObjMethodFunctor5< T, A0, A1, A2, A3, A4 >(
371 makeRemoteObjCallString( methodName, paramString ),
384 template <
typename T,
typename H,
394 ::std::map< ::std::string,
395 RemoteObjMethodFunctor9< T, A0, A1, A2, A3, A4, A5, A6, A7, A8 > >
396 makeRemoteObjMethodFunctorGroup(
397 const ::std::set< H * > & hGroup,
398 const ::std::string & methodName,
399 const ::std::string & paramString,
400 void (T::*methodPtr)( A0, A1, A2, A3, A4, A5, A6, A7, A8 ),
410 typedef typename ::std::set< H * >::const_iterator HGroupConstIterator;
411 typedef ::std::map< ::std::string,
412 RemoteObjMethodFunctor9< T, A0, A1, A2, A3, A4, A5, A6, A7, A8 > >
417 HGroupConstIterator i = hGroup.begin( );
418 const HGroupConstIterator iEnd = hGroup.end( );
420 for ( ; i != iEnd; ++i ) {
421 RemoteObjHandleT< T > *
const h = *i;
429 RemoteObjMethodFunctor9< T, A0, A1, A2, A3, A4, A5, A6, A7, A8 >(
431 makeRemoteObjCallString( methodName, paramString ),