Ocean
Loading...
Searching...
No Matches
Callback.h
Go to the documentation of this file.
1/*
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 */
7
8#ifndef META_OCEAN_BASE_CALLBACK_H
9#define META_OCEAN_BASE_CALLBACK_H
10
11#include "ocean/base/Base.h"
12#include "ocean/base/Lock.h"
13
14#include <vector>
15
16namespace Ocean
17{
18
19/**
20 * Definition of a class holding no objects.
21 * This class can do nothing, but can be used as default class types.
22 * @ingroup base
23 */
24typedef class {} NullClass;
25
26// Forward declaration.
27template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19> class Callback;
28
29// Forward declaration.
30template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19> class MemberFunction;
31
32// Forward declaration.
33template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19> class StaticFunction;
34
35// Forward declaration.
36template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19> class MemberFunctionCaller;
37
38// Forward declaration.
39template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19> class StaticFunctionCaller;
40
41// Forward declaration.
42template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19> class ParameterizedMemberFunction;
43
44// Forward declaration.
45template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19> class ParameterizedMemberFunctionConst;
46
47// Forward declaration.
48template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19> class ParameterizedStaticFunction;
49
50// Forward declaration.
51template <typename RT> class Caller;
52
53/**
54 * This class implements a helper class providing a definition of a member function pointer only.
55 * Because of being a helper class there is no need to use it directly.<br>
56 * The template parameters define the function's owner class type (CT), the return type (RT) and twenty possible function parameters (PT0 - PT19).<br>
57 * @tparam CT Specifies the type of the member object
58 * @tparam RT Specifies the return type of the callback function
59 * @tparam PT0 Specifies the 1st possible function parameter type
60 * @tparam PT1 Specifies the 2nd possible function parameter type
61 * @tparam PT2 Specifies the 3rd possible function parameter type
62 * @tparam PT3 Specifies the 4th possible function parameter type
63 * @tparam PT4 Specifies the 5th possible function parameter type
64 * @tparam PT5 Specifies the 6th possible function parameter type
65 * @tparam PT6 Specifies the 7th possible function parameter type
66 * @tparam PT7 Specifies the 8th possible function parameter type
67 * @tparam PT8 Specifies the 9th possible function parameter type
68 * @tparam PT9 Specifies the 10th possible function parameter type
69 * @tparam PT10 Specifies the 11th possible function parameter type
70 * @tparam PT11 Specifies the 12th possible function parameter type
71 * @tparam PT12 Specifies the 13th possible function parameter type
72 * @tparam PT13 Specifies the 14th possible function parameter type
73 * @tparam PT14 Specifies the 15th possible function parameter type
74 * @tparam PT15 Specifies the 16th possible function parameter type
75 * @tparam PT16 Specifies the 17th possible function parameter type
76 * @tparam PT17 Specifies the 18th possible function parameter type
77 * @tparam PT18 Specifies the 19th possible function parameter type
78 * @tparam PT19 Specifies the 20th possible function parameter type
79 * @ingroup base
80 */
81template <typename CT, typename RT, typename PT0 = NullClass, typename PT1 = NullClass, typename PT2 = NullClass, typename PT3 = NullClass, typename PT4 = NullClass, typename PT5 = NullClass, typename PT6 = NullClass, typename PT7 = NullClass, typename PT8 = NullClass, typename PT9 = NullClass, typename PT10 = NullClass, typename PT11 = NullClass, typename PT12 = NullClass, typename PT13 = NullClass, typename PT14 = NullClass, typename PT15 = NullClass, typename PT16 = NullClass, typename PT17 = NullClass, typename PT18 = NullClass, typename PT19 = NullClass>
83{
84 public:
85
86 /**
87 * Definition of a function pointer with twenty parameters.
88 */
89 typedef RT (CT::*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19);
90
91 /**
92 * Definition of a const function pointer with twenty parameters.
93 */
94 typedef RT (CT::*TypeConst)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19) const;
95};
96
97/**
98 * This class is a specialization of the original helper class providing a definition of a member function pointer only.
99 * @see MemberFunctionPointerMaker
100 */
101template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18>
102class MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18>
103{
104 public:
105
106 /**
107 * Definition of a function pointer with nineteen parameters.
108 */
109 typedef RT (CT::*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18);
110
111 /**
112 * Definition of a const function pointer with nineteen parameters.
113 */
114 typedef RT (CT::*TypeConst)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18) const;
115};
116
117/**
118 * This class is a specialization of the original helper class providing a definition of a member function pointer only.
119 * @see MemberFunctionPointerMaker
120 */
121template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17>
122class MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17>
123{
124 public:
125
126 /**
127 * Definition of a function pointer with eighteen parameters.
128 */
129 typedef RT (CT::*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17);
130
131 /**
132 * Definition of a const function pointer with eighteen parameters.
133 */
134 typedef RT (CT::*TypeConst)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17) const;
135};
136
137/**
138 * This class is a specialization of the original helper class providing a definition of a member function pointer only.
139 * @see MemberFunctionPointerMaker
140 */
141template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16>
142class MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16>
143{
144 public:
145
146 /**
147 * Definition of a function pointer with seventeen parameters.
148 */
149 typedef RT (CT::*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16);
150
151 /**
152 * Definition of a const function pointer with seventeen parameters.
153 */
154 typedef RT (CT::*TypeConst)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16) const;
155};
156
157/**
158 * This class is a specialization of the original helper class providing a definition of a member function pointer only.
159 * @see MemberFunctionPointerMaker
160 */
161template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15>
162class MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15>
163{
164 public:
165
166 /**
167 * Definition of a function pointer with sixteen parameters.
168 */
169 typedef RT (CT::*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15);
170
171 /**
172 * Definition of a const function pointer with sixteen parameters.
173 */
174 typedef RT (CT::*TypeConst)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15) const;
175};
176
177/**
178 * This class is a specialization of the original helper class providing a definition of a member function pointer only.
179 * @see MemberFunctionPointerMaker
180 */
181template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14>
182class MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14>
183{
184 public:
185
186 /**
187 * Definition of a function pointer with fifteen parameters.
188 */
189 typedef RT (CT::*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14);
190
191 /**
192 * Definition of a const function pointer with fifteen parameters.
193 */
194 typedef RT (CT::*TypeConst)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14) const;
195};
196
197/**
198 * This class is a specialization of the original helper class providing a definition of a member function pointer only.
199 * @see MemberFunctionPointerMaker
200 */
201template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13>
202class MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13>
203{
204 public:
205
206 /**
207 * Definition of a function pointer with fourteen parameters.
208 */
209 typedef RT (CT::*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13);
210
211 /**
212 * Definition of a const function pointer with fourteen parameters.
213 */
214 typedef RT (CT::*TypeConst)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13) const;
215};
216
217/**
218 * This class is a specialization of the original helper class providing a definition of a member function pointer only.
219 * @see MemberFunctionPointerMaker
220 */
221template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12>
222class MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12>
223{
224 public:
225
226 /**
227 * Definition of a function pointer with thirteen parameters.
228 */
229 typedef RT (CT::*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12);
230
231 /**
232 * Definition of a const function pointer with thirteen parameters.
233 */
234 typedef RT (CT::*TypeConst)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12) const;
235};
236
237/**
238 * This class is a specialization of the original helper class providing a definition of a member function pointer only.
239 * @see MemberFunctionPointerMaker
240 */
241template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11>
242class MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11>
243{
244 public:
245
246 /**
247 * Definition of a function pointer with twelve parameters.
248 */
249 typedef RT (CT::*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11);
250
251 /**
252 * Definition of a const function pointer with twelve parameters.
253 */
254 typedef RT (CT::*TypeConst)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11) const;
255};
256
257/**
258 * This class is a specialization of the original helper class providing a definition of a member function pointer only.
259 * @see MemberFunctionPointerMaker
260 */
261template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10>
262class MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10>
263{
264 public:
265
266 /**
267 * Definition of a function pointer with eleven parameters.
268 */
269 typedef RT (CT::*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10);
270
271 /**
272 * Definition of a const function pointer with eleven parameters.
273 */
274 typedef RT (CT::*TypeConst)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10) const;
275};
276
277/**
278 * This class is a specialization of the original helper class providing a definition of a member function pointer only.
279 * @see MemberFunctionPointerMaker
280 */
281template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9>
282class MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9>
283{
284 public:
285
286 /**
287 * Definition of a function pointer with ten parameters.
288 */
289 typedef RT (CT::*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9);
290
291 /**
292 * Definition of a const function pointer with ten parameters.
293 */
294 typedef RT (CT::*TypeConst)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9) const;
295};
296
297/**
298 * This class is a specialization of the original helper class providing a definition of a member function pointer only.
299 * @see MemberFunctionPointerMaker
300 */
301template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8>
302class MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, NullClass>
303{
304 public:
305
306 /**
307 * Definition of a function pointer with nine parameters.
308 */
309 typedef RT (CT::*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8);
310
311 /**
312 * Definition of a const function pointer with nine parameters.
313 */
314 typedef RT (CT::*TypeConst)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8) const;
315};
316
317/**
318 * This class is a specialization of the original helper class providing a definition of a member function pointer only.
319 * @see MemberFunctionPointerMaker
320 */
321template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7>
323{
324 public:
325
326 /**
327 * Definition of a function pointer with eight parameters.
328 */
329 typedef RT (CT::*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7);
330
331 /**
332 * Definition of a const function pointer with eight parameters.
333 */
334 typedef RT (CT::*TypeConst)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7) const;
335};
336
337/**
338 * This class is a specialization of the original helper class providing a definition of a member function pointer only.
339 * @see MemberFunctionPointerMaker
340 */
341template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6>
343{
344 public:
345
346 /**
347 * Definition of a function pointer with seven parameters.
348 */
349 typedef RT (CT::*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6);
350
351 /**
352 * Definition of a const function pointer with seven parameters.
353 */
354 typedef RT (CT::*TypeConst)(PT0, PT1, PT2, PT3, PT4, PT5, PT6) const;
355};
356
357/**
358 * This class is a specialization of the original helper class providing a definition of a member function pointer only.
359 * @see MemberFunctionPointerMaker
360 */
361template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5>
363{
364 public:
365
366 /**
367 * Definition of a function pointer with six parameters.
368 */
369 typedef RT (CT::*Type)(PT0, PT1, PT2, PT3, PT4, PT5);
370
371 /**
372 * Definition of a const function pointer with six parameters.
373 */
374 typedef RT (CT::*TypeConst)(PT0, PT1, PT2, PT3, PT4, PT5) const;
375};
376
377/**
378 * This class is a specialization of the original helper class providing a definition of a member function pointer only.
379 * @see MemberFunctionPointerMaker
380 */
381template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4>
383{
384 public:
385
386 /**
387 * Definition of a function pointer with five parameters.
388 */
389 typedef RT (CT::*Type)(PT0, PT1, PT2, PT3, PT4);
390
391 /**
392 * Definition of a const function pointer with five parameters.
393 */
394 typedef RT (CT::*TypeConst)(PT0, PT1, PT2, PT3, PT4) const;
395};
396
397/**
398 * This class is a specialization of the original helper class providing a definition of a member function pointer only.
399 * @see MemberFunctionPointerMaker
400 */
401template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3>
403{
404 public:
405
406 /**
407 * Definition of a function pointer with four parameters.
408 */
409 typedef RT (CT::*Type)(PT0, PT1, PT2, PT3);
410
411 /**
412 * Definition of a const function pointer with four parameters.
413 */
414 typedef RT (CT::*TypeConst)(PT0, PT1, PT2, PT3) const;
415};
416
417/**
418 * This class is a specialization of the original helper class providing a definition of a member function pointer only.
419 * @see MemberFunctionPointerMaker
420 */
421template <typename CT, typename RT, typename PT0, typename PT1, typename PT2>
423{
424 public:
425
426 /**
427 * Definition of a function pointer with three parameters.
428 */
429 typedef RT (CT::*Type)(PT0, PT1, PT2);
430
431 /**
432 * Definition of a const function pointer with three parameters.
433 */
434 typedef RT (CT::*TypeConst)(PT0, PT1, PT2) const;
435};
436
437/**
438 * This class is a specialization of the original helper class providing a definition of a member function pointer only.
439 * @see MemberFunctionPointerMaker
440 */
441template <typename CT, typename RT, typename PT0, typename PT1>
443{
444 public:
445
446 /**
447 * Definition of a function pointer with two parameters.
448 */
449 typedef RT (CT::*Type)(PT0, PT1);
450
451 /**
452 * Definition of a const function pointer with two parameters.
453 */
454 typedef RT (CT::*TypeConst)(PT0, PT1) const;
455};
456
457/**
458 * This class is a specialization of the original helper class providing a definition of a member function pointer only.
459 * @see MemberFunctionPointerMaker
460 */
461template <typename CT, typename RT, typename PT0>
463{
464 public:
465
466 /**
467 * Definition of a function pointer with one parameter.
468 */
469 typedef RT (CT::*Type)(PT0);
470
471 /**
472 * Definition of a const function pointer with one parameter.
473 */
474 typedef RT (CT::*TypeConst)(PT0) const;
475};
476
477/**
478 * This class is a specialization of the original helper class providing a definition of a member function pointer only.
479 * @see MemberFunctionPointerMaker
480 */
481template <typename CT, typename RT>
483{
484 public:
485
486 /**
487 * Definition of a function pointer with no parameter.
488 */
489 typedef RT (CT::*Type)();
490
491 /**
492 * Definition of a const function pointer with no parameter.
493 */
494 typedef RT (CT::*TypeConst)() const;
495};
496
497/**
498 * This class is a helper class providing a definition of a static function pointer only.
499 * @tparam RT Specifies the return type of the callback function
500 * @tparam PT0 Specifies the 1st possible function parameter type
501 * @tparam PT1 Specifies the 2rd possible function parameter type
502 * @tparam PT2 Specifies the 3rd possible function parameter type
503 * @tparam PT3 Specifies the 4th possible function parameter type
504 * @tparam PT4 Specifies the 5th possible function parameter type
505 * @tparam PT5 Specifies the 6th possible function parameter type
506 * @tparam PT6 Specifies the 7th possible function parameter type
507 * @tparam PT7 Specifies the 8th possible function parameter type
508 * @tparam PT8 Specifies the 9th possible function parameter type
509 * @tparam PT9 Specifies the 10th possible function parameter type
510 * @tparam PT10 Specifies the 11th possible function parameter type
511 * @tparam PT11 Specifies the 12th possible function parameter type
512 * @tparam PT12 Specifies the 13th possible function parameter type
513 * @tparam PT13 Specifies the 14th possible function parameter type
514 * @tparam PT14 Specifies the 15th possible function parameter type
515 * @tparam PT15 Specifies the 16th possible function parameter type
516 * @tparam PT16 Specifies the 17th possible function parameter type
517 * @tparam PT17 Specifies the 18th possible function parameter type
518 * @tparam PT18 Specifies the 19th possible function parameter type
519 * @tparam PT19 Specifies the 20th possible function parameter type
520 * @ingroup base
521 */
522template <typename RT, typename PT0 = NullClass, typename PT1 = NullClass, typename PT2 = NullClass, typename PT3 = NullClass, typename PT4 = NullClass, typename PT5 = NullClass, typename PT6 = NullClass, typename PT7 = NullClass, typename PT8 = NullClass, typename PT9 = NullClass, typename PT10 = NullClass, typename PT11 = NullClass, typename PT12 = NullClass, typename PT13 = NullClass, typename PT14 = NullClass, typename PT15 = NullClass, typename PT16 = NullClass, typename PT17 = NullClass, typename PT18 = NullClass, typename PT19 = NullClass>
524{
525 public:
526
527 /**
528 * Definition of a function pointer with twenty parameters.
529 */
530 typedef RT (*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19);
531};
532
533/**
534 * This class is a specialization of the original helper class providing a definition of a static function pointer only.
535 * @see StaticFunctionPointerMaker
536 */
537template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18>
538class StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, NullClass>
539{
540 public:
541
542 /**
543 * Definition of a function pointer with nineteen parameters.
544 */
545 typedef RT (*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18);
546};
547
548/**
549 * This class is a specialization of the original helper class providing a definition of a static function pointer only.
550 * @see StaticFunctionPointerMaker
551 */
552template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17>
553class StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, NullClass, NullClass>
554{
555 public:
556
557 /**
558 * Definition of a function pointer with eighteen parameters.
559 */
560 typedef RT (*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17);
561};
562
563/**
564 * This class is a specialization of the original helper class providing a definition of a static function pointer only.
565 * @see StaticFunctionPointerMaker
566 */
567template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16>
568class StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, NullClass, NullClass, NullClass>
569{
570 public:
571
572 /**
573 * Definition of a function pointer with seventeen parameters.
574 */
575 typedef RT (*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16);
576};
577
578/**
579 * This class is a specialization of the original helper class providing a definition of a static function pointer only.
580 * @see StaticFunctionPointerMaker
581 */
582template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15>
583class StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, NullClass, NullClass, NullClass, NullClass>
584{
585 public:
586
587 /**
588 * Definition of a function pointer with sixteen parameters.
589 */
590 typedef RT (*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15);
591};
592
593/**
594 * This class is a specialization of the original helper class providing a definition of a static function pointer only.
595 * @see StaticFunctionPointerMaker
596 */
597template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14>
598class StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, NullClass, NullClass, NullClass, NullClass, NullClass>
599{
600 public:
601
602 /**
603 * Definition of a function pointer with fifteen parameters.
604 */
605 typedef RT (*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14);
606};
607
608/**
609 * This class is a specialization of the original helper class providing a definition of a static function pointer only.
610 * @see StaticFunctionPointerMaker
611 */
612template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13>
613class StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>
614{
615 public:
616
617 /**
618 * Definition of a function pointer with fourteen parameters.
619 */
620 typedef RT (*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13);
621};
622
623/**
624 * This class is a specialization of the original helper class providing a definition of a static function pointer only.
625 * @see StaticFunctionPointerMaker
626 */
627template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12>
628class StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>
629{
630 public:
631
632 /**
633 * Definition of a function pointer with thirteen parameters.
634 */
635 typedef RT (*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12);
636};
637
638/**
639 * This class is a specialization of the original helper class providing a definition of a static function pointer only.
640 * @see StaticFunctionPointerMaker
641 */
642template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11>
643class StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>
644{
645 public:
646
647 /**
648 * Definition of a function pointer with twelve parameters.
649 */
650 typedef RT (*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11);
651};
652
653/**
654 * This class is a specialization of the original helper class providing a definition of a static function pointer only.
655 * @see StaticFunctionPointerMaker
656 */
657template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10>
658class StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>
659{
660 public:
661
662 /**
663 * Definition of a function pointer with elven parameters.
664 */
665 typedef RT (*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10);
666};
667
668/**
669 * This class is a specialization of the original helper class providing a definition of a static function pointer only.
670 * @see StaticFunctionPointerMaker
671 */
672template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9>
673class StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>
674{
675 public:
676
677 /**
678 * Definition of a function pointer with ten parameters.
679 */
680 typedef RT (*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9);
681};
682
683/**
684 * This class is a specialization of the original helper class providing a definition of a static function pointer only.
685 * @see StaticFunctionPointerMaker
686 */
687template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8>
689{
690 public:
691
692 /**
693 * Definition of a function pointer with nine parameters.
694 */
695 typedef RT (*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8);
696};
697
698/**
699 * This class is a specialization of the original helper class providing a definition of a static function pointer only.
700 * @see StaticFunctionPointerMaker
701 */
702template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7>
704{
705 public:
706
707 /**
708 * Definition of a function pointer with eight parameters.
709 */
710 typedef RT (*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7);
711};
712
713/**
714 * This class is a specialization of the original helper class providing a definition of a static function pointer only.
715 * @see StaticFunctionPointerMaker
716 */
717template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6>
719{
720 public:
721
722 /**
723 * Definition of a function pointer with seven parameters.
724 */
725 typedef RT (*Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6);
726};
727
728/**
729 * This class is a specialization of the original helper class providing a definition of a static function pointer only.
730 * @see StaticFunctionPointerMaker
731 */
732template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5>
734{
735 public:
736
737 /**
738 * Definition of a function pointer with six parameters.
739 */
740 typedef RT (*Type)(PT0, PT1, PT2, PT3, PT4, PT5);
741};
742
743/**
744 * This class is a specialization of the original helper class providing a definition of a static function pointer only.
745 * @see StaticFunctionPointerMaker
746 */
747template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4>
749{
750 public:
751
752 /**
753 * Definition of a function pointer with five parameters.
754 */
755 typedef RT (*Type)(PT0, PT1, PT2, PT3, PT4);
756};
757
758/**
759 * This class is a specialization of the original helper class providing a definition of a static function pointer only.
760 * @see StaticFunctionPointerMaker
761 */
762template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3>
764{
765 public:
766
767 /**
768 * Definition of a function pointer with four parameters.
769 */
770 typedef RT (*Type)(PT0, PT1, PT2, PT3);
771};
772
773/**
774 * This class is a specialization of the original helper class providing a definition of a static function pointer only.
775 * @see StaticFunctionPointerMaker
776 */
777template <typename RT, typename PT0, typename PT1, typename PT2>
779{
780 public:
781
782 /**
783 * Definition of a function pointer with three parameters.
784 */
785 typedef RT (*Type)(PT0, PT1, PT2);
786};
787
788/**
789 * This class is a specialization of the original helper class providing a definition of a static function pointer only.
790 * @see StaticFunctionPointerMaker
791 */
792template <typename RT, typename PT0, typename PT1>
794{
795 public:
796
797 /**
798 * Definition of a function pointer with two parameters.
799 */
800 typedef RT (*Type)(PT0, PT1);
801};
802
803/**
804 * This class is a specialization of the original helper class providing a definition of a static function pointer only.
805 * @see StaticFunctionPointerMaker
806 */
807template <typename RT, typename PT0>
809{
810 public:
811
812 /**
813 * Definition of a function pointer with one parameter.
814 */
815 typedef RT (*Type)(PT0);
816};
817
818/**
819 * This class is a specialization of the original helper class providing a definition of a static function pointer only.
820 * @see StaticFunctionPointerMaker
821 */
822template <typename RT>
824{
825 public:
826
827 /**
828 * Definition of a function pointer with no parameter.
829 */
830 typedef RT (*Type)();
831};
832
833/**
834 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
835 * @tparam CT Specifies the type of the member object
836 * @tparam RT Specifies the return type of the callback function
837 * @tparam PT0 Specifies the 1st possible function parameter type
838 * @tparam PT1 Specifies the 2rd possible function parameter type
839 * @tparam PT2 Specifies the 3rd possible function parameter type
840 * @tparam PT3 Specifies the 4th possible function parameter type
841 * @tparam PT4 Specifies the 5th possible function parameter type
842 * @tparam PT5 Specifies the 6th possible function parameter type
843 * @tparam PT6 Specifies the 7th possible function parameter type
844 * @tparam PT7 Specifies the 8th possible function parameter type
845 * @tparam PT8 Specifies the 9th possible function parameter type
846 * @tparam PT9 Specifies the 10th possible function parameter type
847 * @tparam PT10 Specifies the 11th possible function parameter type
848 * @tparam PT11 Specifies the 12th possible function parameter type
849 * @tparam PT12 Specifies the 13th possible function parameter type
850 * @tparam PT13 Specifies the 14th possible function parameter type
851 * @tparam PT14 Specifies the 15th possible function parameter type
852 * @tparam PT15 Specifies the 16th possible function parameter type
853 * @tparam PT16 Specifies the 17th possible function parameter type
854 * @tparam PT17 Specifies the 18th possible function parameter type
855 * @tparam PT18 Specifies the 19th possible function parameter type
856 * @tparam PT19 Specifies the 20th possible function parameter type
857 * @ingroup base
858 */
859template <typename CT, typename RT, typename PT0 = NullClass, typename PT1 = NullClass, typename PT2 = NullClass, typename PT3 = NullClass, typename PT4 = NullClass, typename PT5 = NullClass, typename PT6 = NullClass, typename PT7 = NullClass, typename PT8 = NullClass, typename PT9 = NullClass, typename PT10 = NullClass, typename PT11 = NullClass, typename PT12 = NullClass, typename PT13 = NullClass, typename PT14 = NullClass, typename PT15 = NullClass, typename PT16 = NullClass, typename PT17 = NullClass, typename PT18 = NullClass, typename PT19 = NullClass>
861{
862 friend class MemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>;
863 friend class ParameterizedMemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>;
864 friend class ParameterizedMemberFunctionConst<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>;
865
866 protected:
867
868 /**
869 * Calls a function defined by the function pointer the class object and the function parameters.
870 * @param functionClass Class object holding the member function to call
871 * @param functionPointer Pointer of the member function to call
872 * @param param0 First function parameter
873 * @param param1 Second function parameter
874 * @param param2 Third function parameter
875 * @param param3 Fourth function parameter
876 * @param param4 Fifth function parameter
877 * @param param5 Sixth function parameter
878 * @param param6 Seventh function parameter
879 * @param param7 Eighth function parameter
880 * @param param8 Ninth function parameter
881 * @param param9 10th function parameter
882 * @param param10 11th function parameter
883 * @param param11 12th function parameter
884 * @param param12 13th function parameter
885 * @param param13 14th function parameter
886 * @param param14 15th function parameter
887 * @param param15 16th function parameter
888 * @param param16 17th function parameter
889 * @param param17 18th function parameter
890 * @param param18 19th function parameter
891 * @param param19 20th function parameter
892 * @return Return value
893 */
894 static inline RT call(CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, PT18 param18, PT19 param19);
895
896 /**
897 * Calls a const function defined by the function pointer the class object and the function parameters.
898 * @param functionClass Class object holding the member function to call
899 * @param functionPointer Pointer of the member function to call
900 * @param param0 First function parameter
901 * @param param1 Second function parameter
902 * @param param2 Third function parameter
903 * @param param3 Fourth function parameter
904 * @param param4 Fifth function parameter
905 * @param param5 Sixth function parameter
906 * @param param6 Seventh function parameter
907 * @param param7 Eighth function parameter
908 * @param param8 Ninth function parameter
909 * @param param9 10th function parameter
910 * @param param10 11th function parameter
911 * @param param11 12th function parameter
912 * @param param12 13th function parameter
913 * @param param13 14th function parameter
914 * @param param14 15th function parameter
915 * @param param15 16th function parameter
916 * @param param16 17th function parameter
917 * @param param17 18th function parameter
918 * @param param18 19th function parameter
919 * @param param19 20th function parameter
920 * @return Return value
921 */
922 static inline RT call(const CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>::TypeConst functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, PT18 param18, PT19 param19);
923};
924
925/**
926 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
927 * @see MemberFunctionCaller.
928 */
929template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18>
930class MemberFunctionCaller<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, NullClass>
931{
932 friend class MemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, NullClass>;
933 friend class ParameterizedMemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, NullClass>;
934 friend class ParameterizedMemberFunctionConst<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, NullClass>;
935
936 protected:
937
938 /**
939 * Calls a function defined by the function pointer the class object and the function parameters.
940 * @param functionClass Class object holding the member function to call
941 * @param functionPointer Pointer of the member function to call
942 * @param param0 First function parameter
943 * @param param1 Second function parameter
944 * @param param2 Third function parameter
945 * @param param3 Fourth function parameter
946 * @param param4 Fifth function parameter
947 * @param param5 Sixth function parameter
948 * @param param6 Seventh function parameter
949 * @param param7 Eighth function parameter
950 * @param param8 Ninth function parameter
951 * @param param9 10th function parameter
952 * @param param10 11th function parameter
953 * @param param11 12th function parameter
954 * @param param12 13th function parameter
955 * @param param13 14th function parameter
956 * @param param14 15th function parameter
957 * @param param15 16th function parameter
958 * @param param16 17th function parameter
959 * @param param17 18th function parameter
960 * @param param18 19th function parameter
961 * @return Return value
962 */
963 static inline RT call(CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, PT18 param18, NullClass);
964
965 /**
966 * Calls a const function defined by the function pointer the class object and the function parameters.
967 * @param functionClass Class object holding the member function to call
968 * @param functionPointer Pointer of the member function to call
969 * @param param0 First function parameter
970 * @param param1 Second function parameter
971 * @param param2 Third function parameter
972 * @param param3 Fourth function parameter
973 * @param param4 Fifth function parameter
974 * @param param5 Sixth function parameter
975 * @param param6 Seventh function parameter
976 * @param param7 Eighth function parameter
977 * @param param8 Ninth function parameter
978 * @param param9 10th function parameter
979 * @param param10 11th function parameter
980 * @param param11 12th function parameter
981 * @param param12 13th function parameter
982 * @param param13 14th function parameter
983 * @param param14 15th function parameter
984 * @param param15 16th function parameter
985 * @param param16 17th function parameter
986 * @param param17 18th function parameter
987 * @param param18 19th function parameter
988 * @return Return value
989 */
990 static inline RT call(const CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, NullClass>::TypeConst functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, PT18 param18, NullClass);
991};
992
993/**
994 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
995 * @see MemberFunctionCaller.
996 */
997template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17>
998class MemberFunctionCaller<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, NullClass, NullClass>
999{
1000 friend class MemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, NullClass, NullClass>;
1001 friend class ParameterizedMemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, NullClass, NullClass>;
1002 friend class ParameterizedMemberFunctionConst<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, NullClass, NullClass>;
1003
1004 protected:
1005
1006 /**
1007 * Calls a function defined by the function pointer the class object and the function parameters.
1008 * @param functionClass Class object holding the member function to call
1009 * @param functionPointer Pointer of the member function to call
1010 * @param param0 First function parameter
1011 * @param param1 Second function parameter
1012 * @param param2 Third function parameter
1013 * @param param3 Fourth function parameter
1014 * @param param4 Fifth function parameter
1015 * @param param5 Sixth function parameter
1016 * @param param6 Seventh function parameter
1017 * @param param7 Eighth function parameter
1018 * @param param8 Ninth function parameter
1019 * @param param9 10th function parameter
1020 * @param param10 11th function parameter
1021 * @param param11 12th function parameter
1022 * @param param12 13th function parameter
1023 * @param param13 14th function parameter
1024 * @param param14 15th function parameter
1025 * @param param15 16th function parameter
1026 * @param param16 17th function parameter
1027 * @param param17 18th function parameter
1028 * @return Return value
1029 */
1030 static inline RT call(CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, NullClass, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, NullClass, NullClass);
1031
1032 /**
1033 * Calls a const function defined by the function pointer the class object and the function parameters.
1034 * @param functionClass Class object holding the member function to call
1035 * @param functionPointer Pointer of the member function to call
1036 * @param param0 First function parameter
1037 * @param param1 Second function parameter
1038 * @param param2 Third function parameter
1039 * @param param3 Fourth function parameter
1040 * @param param4 Fifth function parameter
1041 * @param param5 Sixth function parameter
1042 * @param param6 Seventh function parameter
1043 * @param param7 Eighth function parameter
1044 * @param param8 Ninth function parameter
1045 * @param param9 10th function parameter
1046 * @param param10 11th function parameter
1047 * @param param11 12th function parameter
1048 * @param param12 13th function parameter
1049 * @param param13 14th function parameter
1050 * @param param14 15th function parameter
1051 * @param param15 16th function parameter
1052 * @param param16 17th function parameter
1053 * @param param17 18th function parameter
1054 * @return Return value
1055 */
1056 static inline RT call(const CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, NullClass, NullClass>::TypeConst functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, NullClass, NullClass);
1057};
1058
1059/**
1060 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
1061 * @see MemberFunctionCaller.
1062 */
1063template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16>
1064class MemberFunctionCaller<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, NullClass, NullClass, NullClass>
1065{
1066 friend class MemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, NullClass, NullClass, NullClass>;
1067 friend class ParameterizedMemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, NullClass, NullClass, NullClass>;
1068 friend class ParameterizedMemberFunctionConst<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, NullClass, NullClass, NullClass>;
1069
1070 protected:
1071
1072 /**
1073 * Calls a function defined by the function pointer the class object and the function parameters.
1074 * @param functionClass Class object holding the member function to call
1075 * @param functionPointer Pointer of the member function to call
1076 * @param param0 First function parameter
1077 * @param param1 Second function parameter
1078 * @param param2 Third function parameter
1079 * @param param3 Fourth function parameter
1080 * @param param4 Fifth function parameter
1081 * @param param5 Sixth function parameter
1082 * @param param6 Seventh function parameter
1083 * @param param7 Eighth function parameter
1084 * @param param8 Ninth function parameter
1085 * @param param9 10th function parameter
1086 * @param param10 11th function parameter
1087 * @param param11 12th function parameter
1088 * @param param12 13th function parameter
1089 * @param param13 14th function parameter
1090 * @param param14 15th function parameter
1091 * @param param15 16th function parameter
1092 * @param param16 17th function parameter
1093 * @return Return value
1094 */
1095 static inline RT call(CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, NullClass, NullClass, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, NullClass, NullClass, NullClass);
1096
1097 /**
1098 * Calls a const function defined by the function pointer the class object and the function parameters.
1099 * @param functionClass Class object holding the member function to call
1100 * @param functionPointer Pointer of the member function to call
1101 * @param param0 First function parameter
1102 * @param param1 Second function parameter
1103 * @param param2 Third function parameter
1104 * @param param3 Fourth function parameter
1105 * @param param4 Fifth function parameter
1106 * @param param5 Sixth function parameter
1107 * @param param6 Seventh function parameter
1108 * @param param7 Eighth function parameter
1109 * @param param8 Ninth function parameter
1110 * @param param9 10th function parameter
1111 * @param param10 11th function parameter
1112 * @param param11 12th function parameter
1113 * @param param12 13th function parameter
1114 * @param param13 14th function parameter
1115 * @param param14 15th function parameter
1116 * @param param15 16th function parameter
1117 * @param param16 17th function parameter
1118 * @return Return value
1119 */
1120 static inline RT call(const CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, NullClass, NullClass, NullClass>::TypeConst functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, NullClass, NullClass, NullClass);
1121};
1122
1123/**
1124 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
1125 * @see MemberFunctionCaller.
1126 */
1127template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15>
1128class MemberFunctionCaller<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, NullClass, NullClass, NullClass, NullClass>
1129{
1130 friend class MemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, NullClass, NullClass, NullClass, NullClass>;
1131 friend class ParameterizedMemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, NullClass, NullClass, NullClass, NullClass>;
1132 friend class ParameterizedMemberFunctionConst<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, NullClass, NullClass, NullClass, NullClass>;
1133
1134 protected:
1135
1136 /**
1137 * Calls a function defined by the function pointer the class object and the function parameters.
1138 * @param functionClass Class object holding the member function to call
1139 * @param functionPointer Pointer of the member function to call
1140 * @param param0 First function parameter
1141 * @param param1 Second function parameter
1142 * @param param2 Third function parameter
1143 * @param param3 Fourth function parameter
1144 * @param param4 Fifth function parameter
1145 * @param param5 Sixth function parameter
1146 * @param param6 Seventh function parameter
1147 * @param param7 Eighth function parameter
1148 * @param param8 Ninth function parameter
1149 * @param param9 10th function parameter
1150 * @param param10 11th function parameter
1151 * @param param11 12th function parameter
1152 * @param param12 13th function parameter
1153 * @param param13 14th function parameter
1154 * @param param14 15th function parameter
1155 * @param param15 16th function parameter
1156 * @return Return value
1157 */
1158 static inline RT call(CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, NullClass, NullClass, NullClass, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, NullClass, NullClass, NullClass, NullClass);
1159
1160 /**
1161 * Calls a const function defined by the function pointer the class object and the function parameters.
1162 * @param functionClass Class object holding the member function to call
1163 * @param functionPointer Pointer of the member function to call
1164 * @param param0 First function parameter
1165 * @param param1 Second function parameter
1166 * @param param2 Third function parameter
1167 * @param param3 Fourth function parameter
1168 * @param param4 Fifth function parameter
1169 * @param param5 Sixth function parameter
1170 * @param param6 Seventh function parameter
1171 * @param param7 Eighth function parameter
1172 * @param param8 Ninth function parameter
1173 * @param param9 10th function parameter
1174 * @param param10 11th function parameter
1175 * @param param11 12th function parameter
1176 * @param param12 13th function parameter
1177 * @param param13 14th function parameter
1178 * @param param14 15th function parameter
1179 * @param param15 16th function parameter
1180 * @return Return value
1181 */
1182 static inline RT call(const CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, NullClass, NullClass, NullClass, NullClass>::TypeConst functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, NullClass, NullClass, NullClass, NullClass);
1183};
1184
1185/**
1186 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
1187 * @see MemberFunctionCaller.
1188 */
1189template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14>
1190class MemberFunctionCaller<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, NullClass, NullClass, NullClass, NullClass, NullClass>
1191{
1192 friend class MemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, NullClass, NullClass, NullClass, NullClass, NullClass>;
1193 friend class ParameterizedMemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, NullClass, NullClass, NullClass, NullClass, NullClass>;
1194 friend class ParameterizedMemberFunctionConst<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, NullClass, NullClass, NullClass, NullClass, NullClass>;
1195
1196 protected:
1197
1198 /**
1199 * Calls a function defined by the function pointer the class object and the function parameters.
1200 * @param functionClass Class object holding the member function to call
1201 * @param functionPointer Pointer of the member function to call
1202 * @param param0 First function parameter
1203 * @param param1 Second function parameter
1204 * @param param2 Third function parameter
1205 * @param param3 Fourth function parameter
1206 * @param param4 Fifth function parameter
1207 * @param param5 Sixth function parameter
1208 * @param param6 Seventh function parameter
1209 * @param param7 Eighth function parameter
1210 * @param param8 Ninth function parameter
1211 * @param param9 10th function parameter
1212 * @param param10 11th function parameter
1213 * @param param11 12th function parameter
1214 * @param param12 13th function parameter
1215 * @param param13 14th function parameter
1216 * @param param14 15th function parameter
1217 * @return Return value
1218 */
1219 static inline RT call(CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, NullClass, NullClass, NullClass, NullClass, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, NullClass, NullClass, NullClass, NullClass, NullClass);
1220
1221 /**
1222 * Calls a const function defined by the function pointer the class object and the function parameters.
1223 * @param functionClass Class object holding the member function to call
1224 * @param functionPointer Pointer of the member function to call
1225 * @param param0 First function parameter
1226 * @param param1 Second function parameter
1227 * @param param2 Third function parameter
1228 * @param param3 Fourth function parameter
1229 * @param param4 Fifth function parameter
1230 * @param param5 Sixth function parameter
1231 * @param param6 Seventh function parameter
1232 * @param param7 Eighth function parameter
1233 * @param param8 Ninth function parameter
1234 * @param param9 10th function parameter
1235 * @param param10 11th function parameter
1236 * @param param11 12th function parameter
1237 * @param param12 13th function parameter
1238 * @param param13 14th function parameter
1239 * @param param14 15th function parameter
1240 * @return Return value
1241 */
1242 static inline RT call(const CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, NullClass, NullClass, NullClass, NullClass, NullClass>::TypeConst functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, NullClass, NullClass, NullClass, NullClass, NullClass);
1243};
1244
1245/**
1246 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
1247 * @see MemberFunctionCaller.
1248 */
1249template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13>
1250class MemberFunctionCaller<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>
1251{
1252 friend class MemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
1253 friend class ParameterizedMemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
1254 friend class ParameterizedMemberFunctionConst<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
1255
1256 protected:
1257
1258 /**
1259 * Calls a function defined by the function pointer the class object and the function parameters.
1260 * @param functionClass Class object holding the member function to call
1261 * @param functionPointer Pointer of the member function to call
1262 * @param param0 First function parameter
1263 * @param param1 Second function parameter
1264 * @param param2 Third function parameter
1265 * @param param3 Fourth function parameter
1266 * @param param4 Fifth function parameter
1267 * @param param5 Sixth function parameter
1268 * @param param6 Seventh function parameter
1269 * @param param7 Eighth function parameter
1270 * @param param8 Ninth function parameter
1271 * @param param9 10th function parameter
1272 * @param param10 11th function parameter
1273 * @param param11 12th function parameter
1274 * @param param12 13th function parameter
1275 * @param param13 14th function parameter
1276 * @return Return value
1277 */
1278 static inline RT call(CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass);
1279
1280 /**
1281 * Calls a const function defined by the function pointer the class object and the function parameters.
1282 * @param functionClass Class object holding the member function to call
1283 * @param functionPointer Pointer of the member function to call
1284 * @param param0 First function parameter
1285 * @param param1 Second function parameter
1286 * @param param2 Third function parameter
1287 * @param param3 Fourth function parameter
1288 * @param param4 Fifth function parameter
1289 * @param param5 Sixth function parameter
1290 * @param param6 Seventh function parameter
1291 * @param param7 Eighth function parameter
1292 * @param param8 Ninth function parameter
1293 * @param param9 10th function parameter
1294 * @param param10 11th function parameter
1295 * @param param11 12th function parameter
1296 * @param param12 13th function parameter
1297 * @param param13 14th function parameter
1298 * @return Return value
1299 */
1300 static inline RT call(const CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::TypeConst functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass);
1301};
1302
1303/**
1304 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
1305 * @see MemberFunctionCaller.
1306 */
1307template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12>
1308class MemberFunctionCaller<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>
1309{
1310 friend class MemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
1311 friend class ParameterizedMemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
1312 friend class ParameterizedMemberFunctionConst<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
1313
1314 protected:
1315
1316 /**
1317 * Calls a function defined by the function pointer the class object and the function parameters.
1318 * @param functionClass Class object holding the member function to call
1319 * @param functionPointer Pointer of the member function to call
1320 * @param param0 First function parameter
1321 * @param param1 Second function parameter
1322 * @param param2 Third function parameter
1323 * @param param3 Fourth function parameter
1324 * @param param4 Fifth function parameter
1325 * @param param5 Sixth function parameter
1326 * @param param6 Seventh function parameter
1327 * @param param7 Eighth function parameter
1328 * @param param8 Ninth function parameter
1329 * @param param9 10th function parameter
1330 * @param param10 11th function parameter
1331 * @param param11 12th function parameter
1332 * @param param12 13th function parameter
1333 * @return Return value
1334 */
1335 static inline RT call(CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass);
1336
1337 /**
1338 * Calls a const function defined by the function pointer the class object and the function parameters.
1339 * @param functionClass Class object holding the member function to call
1340 * @param functionPointer Pointer of the member function to call
1341 * @param param0 First function parameter
1342 * @param param1 Second function parameter
1343 * @param param2 Third function parameter
1344 * @param param3 Fourth function parameter
1345 * @param param4 Fifth function parameter
1346 * @param param5 Sixth function parameter
1347 * @param param6 Seventh function parameter
1348 * @param param7 Eighth function parameter
1349 * @param param8 Ninth function parameter
1350 * @param param9 10th function parameter
1351 * @param param10 11th function parameter
1352 * @param param11 12th function parameter
1353 * @param param12 13th function parameter
1354 * @return Return value
1355 */
1356 static inline RT call(const CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::TypeConst functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass);
1357};
1358
1359/**
1360 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
1361 * @see MemberFunctionCaller.
1362 */
1363template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11>
1364class MemberFunctionCaller<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>
1365{
1366 friend class MemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
1367 friend class ParameterizedMemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
1368 friend class ParameterizedMemberFunctionConst<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
1369
1370 protected:
1371
1372 /**
1373 * Calls a function defined by the function pointer the class object and the function parameters.
1374 * @param functionClass Class object holding the member function to call
1375 * @param functionPointer Pointer of the member function to call
1376 * @param param0 First function parameter
1377 * @param param1 Second function parameter
1378 * @param param2 Third function parameter
1379 * @param param3 Fourth function parameter
1380 * @param param4 Fifth function parameter
1381 * @param param5 Sixth function parameter
1382 * @param param6 Seventh function parameter
1383 * @param param7 Eighth function parameter
1384 * @param param8 Ninth function parameter
1385 * @param param9 10th function parameter
1386 * @param param10 11th function parameter
1387 * @param param11 12th function parameter
1388 * @return Return value
1389 */
1390 static inline RT call(CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass);
1391
1392 /**
1393 * Calls a const function defined by the function pointer the class object and the function parameters.
1394 * @param functionClass Class object holding the member function to call
1395 * @param functionPointer Pointer of the member function to call
1396 * @param param0 First function parameter
1397 * @param param1 Second function parameter
1398 * @param param2 Third function parameter
1399 * @param param3 Fourth function parameter
1400 * @param param4 Fifth function parameter
1401 * @param param5 Sixth function parameter
1402 * @param param6 Seventh function parameter
1403 * @param param7 Eighth function parameter
1404 * @param param8 Ninth function parameter
1405 * @param param9 10th function parameter
1406 * @param param10 11th function parameter
1407 * @param param11 12th function parameter
1408 * @return Return value
1409 */
1410 static inline RT call(const CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::TypeConst functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass);
1411};
1412
1413/**
1414 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
1415 * @see MemberFunctionCaller.
1416 */
1417template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10>
1418class MemberFunctionCaller<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>
1419{
1420 friend class MemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
1421 friend class ParameterizedMemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
1422 friend class ParameterizedMemberFunctionConst<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
1423
1424 protected:
1425
1426 /**
1427 * Calls a function defined by the function pointer the class object and the function parameters.
1428 * @param functionClass Class object holding the member function to call
1429 * @param functionPointer Pointer of the member function to call
1430 * @param param0 First function parameter
1431 * @param param1 Second function parameter
1432 * @param param2 Third function parameter
1433 * @param param3 Fourth function parameter
1434 * @param param4 Fifth function parameter
1435 * @param param5 Sixth function parameter
1436 * @param param6 Seventh function parameter
1437 * @param param7 Eighth function parameter
1438 * @param param8 Ninth function parameter
1439 * @param param9 10th function parameter
1440 * @param param10 11th function parameter
1441 * @return Return value
1442 */
1443 static inline RT call(CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass);
1444
1445 /**
1446 * Calls a const function defined by the function pointer the class object and the function parameters.
1447 * @param functionClass Class object holding the member function to call
1448 * @param functionPointer Pointer of the member function to call
1449 * @param param0 First function parameter
1450 * @param param1 Second function parameter
1451 * @param param2 Third function parameter
1452 * @param param3 Fourth function parameter
1453 * @param param4 Fifth function parameter
1454 * @param param5 Sixth function parameter
1455 * @param param6 Seventh function parameter
1456 * @param param7 Eighth function parameter
1457 * @param param8 Ninth function parameter
1458 * @param param9 10th function parameter
1459 * @param param10 11th function parameter
1460 * @return Return value
1461 */
1462 static inline RT call(const CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::TypeConst functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass);
1463};
1464
1465/**
1466 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
1467 * @see MemberFunctionCaller.
1468 */
1469template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9>
1470class MemberFunctionCaller<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>
1471{
1472 friend class MemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
1473 friend class ParameterizedMemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
1474 friend class ParameterizedMemberFunctionConst<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
1475
1476 protected:
1477
1478 /**
1479 * Calls a function defined by the function pointer the class object and the function parameters.
1480 * @param functionClass Class object holding the member function to call
1481 * @param functionPointer Pointer of the member function to call
1482 * @param param0 First function parameter
1483 * @param param1 Second function parameter
1484 * @param param2 Third function parameter
1485 * @param param3 Fourth function parameter
1486 * @param param4 Fifth function parameter
1487 * @param param5 Sixth function parameter
1488 * @param param6 Seventh function parameter
1489 * @param param7 Eighth function parameter
1490 * @param param8 Ninth function parameter
1491 * @param param9 10th function parameter
1492 * @return Return value
1493 */
1494 static inline RT call(CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass);
1495
1496 /**
1497 * Calls a const function defined by the function pointer the class object and the function parameters.
1498 * @param functionClass Class object holding the member function to call
1499 * @param functionPointer Pointer of the member function to call
1500 * @param param0 First function parameter
1501 * @param param1 Second function parameter
1502 * @param param2 Third function parameter
1503 * @param param3 Fourth function parameter
1504 * @param param4 Fifth function parameter
1505 * @param param5 Sixth function parameter
1506 * @param param6 Seventh function parameter
1507 * @param param7 Eighth function parameter
1508 * @param param8 Ninth function parameter
1509 * @param param9 10th function parameter
1510 * @return Return value
1511 */
1512 static inline RT call(const CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::TypeConst functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass);
1513};
1514
1515/**
1516 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
1517 * @see MemberFunctionCaller.
1518 */
1519template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8>
1521{
1522 friend class MemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
1523 friend class ParameterizedMemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
1524 friend class ParameterizedMemberFunctionConst<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
1525
1526 protected:
1527
1528 /**
1529 * Calls a function defined by the function pointer the class object and the function parameters.
1530 * @param functionClass Class object holding the member function to call
1531 * @param functionPointer Pointer of the member function to call
1532 * @param param0 First function parameter
1533 * @param param1 Second function parameter
1534 * @param param2 Third function parameter
1535 * @param param3 Fourth function parameter
1536 * @param param4 Fifth function parameter
1537 * @param param5 Sixth function parameter
1538 * @param param6 Seventh function parameter
1539 * @param param7 Eighth function parameter
1540 * @param param8 Ninth function parameter
1541 * @return Return value
1542 */
1544
1545 /**
1546 * Calls a const function defined by the function pointer the class object and the function parameters.
1547 * @param functionClass Class object holding the member function to call
1548 * @param functionPointer Pointer of the member function to call
1549 * @param param0 First function parameter
1550 * @param param1 Second function parameter
1551 * @param param2 Third function parameter
1552 * @param param3 Fourth function parameter
1553 * @param param4 Fifth function parameter
1554 * @param param5 Sixth function parameter
1555 * @param param6 Seventh function parameter
1556 * @param param7 Eighth function parameter
1557 * @param param8 Ninth function parameter
1558 * @return Return value
1559 */
1561};
1562
1563/**
1564 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
1565 * @see MemberFunctionCaller.
1566 */
1567template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7>
1569{
1570 friend class MemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
1571 friend class ParameterizedMemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
1573
1574 protected:
1575
1576 /**
1577 * Calls a function defined by the function pointer the class object and the function parameters.
1578 * @param functionClass Class object holding the member function to call
1579 * @param functionPointer Pointer of the member function to call
1580 * @param param0 First function parameter
1581 * @param param1 Second function parameter
1582 * @param param2 Third function parameter
1583 * @param param3 Fourth function parameter
1584 * @param param4 Fifth function parameter
1585 * @param param5 Sixth function parameter
1586 * @param param6 Seventh function parameter
1587 * @param param7 Eighth function parameter
1588 * @return Return value
1589 */
1591
1592 /**
1593 * Calls a const function defined by the function pointer the class object and the function parameters.
1594 * @param functionClass Class object holding the member function to call
1595 * @param functionPointer Pointer of the member function to call
1596 * @param param0 First function parameter
1597 * @param param1 Second function parameter
1598 * @param param2 Third function parameter
1599 * @param param3 Fourth function parameter
1600 * @param param4 Fifth function parameter
1601 * @param param5 Sixth function parameter
1602 * @param param6 Seventh function parameter
1603 * @param param7 Eighth function parameter
1604 * @return Return value
1605 */
1607};
1608
1609/**
1610 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
1611 * @see MemberFunctionCaller.
1612 */
1613template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6>
1615{
1616 friend class MemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
1619
1620 protected:
1621
1622 /**
1623 * Calls a function defined by the function pointer the class object and the function parameters.
1624 * @param functionClass Class object holding the member function to call
1625 * @param functionPointer Pointer of the member function to call
1626 * @param param0 First function parameter
1627 * @param param1 Second function parameter
1628 * @param param2 Third function parameter
1629 * @param param3 Fourth function parameter
1630 * @param param4 Fifth function parameter
1631 * @param param5 Sixth function parameter
1632 * @param param6 Seventh function parameter
1633 * @return Return value
1634 */
1636
1637 /**
1638 * Calls a const function defined by the function pointer the class object and the function parameters.
1639 * @param functionClass Class object holding the member function to call
1640 * @param functionPointer Pointer of the member function to call
1641 * @param param0 First function parameter
1642 * @param param1 Second function parameter
1643 * @param param2 Third function parameter
1644 * @param param3 Fourth function parameter
1645 * @param param4 Fifth function parameter
1646 * @param param5 Sixth function parameter
1647 * @param param6 Seventh function parameter
1648 * @return Return value
1649 */
1651};
1652
1653/**
1654 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
1655 * @see MemberFunctionCaller.
1656 */
1657template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5>
1659{
1663
1664 protected:
1665
1666 /**
1667 * Calls a function defined by the function pointer the class object and the function parameters.
1668 * @param functionClass Class object holding the member function to call
1669 * @param functionPointer Pointer of the member function to call
1670 * @param param0 First function parameter
1671 * @param param1 Second function parameter
1672 * @param param2 Third function parameter
1673 * @param param3 Fourth function parameter
1674 * @param param4 Fifth function parameter
1675 * @param param5 Sixth function parameter
1676 * @return Return value
1677 */
1679
1680 /**
1681 * Calls a const function defined by the function pointer the class object and the function parameters.
1682 * @param functionClass Class object holding the member function to call
1683 * @param functionPointer Pointer of the member function to call
1684 * @param param0 First function parameter
1685 * @param param1 Second function parameter
1686 * @param param2 Third function parameter
1687 * @param param3 Fourth function parameter
1688 * @param param4 Fifth function parameter
1689 * @param param5 Sixth function parameter
1690 * @return Return value
1691 */
1693};
1694
1695/**
1696 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
1697 * @see MemberFunctionCaller.
1698 */
1699template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4>
1701{
1705
1706 protected:
1707
1708 /**
1709 * Calls a function defined by the function pointer the class object and the function parameters.
1710 * @param functionClass Class object holding the member function to call
1711 * @param functionPointer Pointer of the member function to call
1712 * @param param0 First function parameter
1713 * @param param1 Second function parameter
1714 * @param param2 Third function parameter
1715 * @param param3 Fourth function parameter
1716 * @param param4 Fifth function parameter
1717 * @return Return value
1718 */
1720
1721 /**
1722 * Calls a const function defined by the function pointer the class object and the function parameters.
1723 * @param functionClass Class object holding the member function to call
1724 * @param functionPointer Pointer of the member function to call
1725 * @param param0 First function parameter
1726 * @param param1 Second function parameter
1727 * @param param2 Third function parameter
1728 * @param param3 Fourth function parameter
1729 * @param param4 Fifth function parameter
1730 * @return Return value
1731 */
1733};
1734
1735/**
1736 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
1737 * @see MemberFunctionCaller.
1738 */
1739template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3>
1741{
1745
1746 protected:
1747
1748 /**
1749 * Calls a function defined by the function pointer the class object and the function parameters.
1750 * @param functionClass Class object holding the member function to call
1751 * @param functionPointer Pointer of the member function to call
1752 * @param param0 First function parameter
1753 * @param param1 Second function parameter
1754 * @param param2 Third function parameter
1755 * @param param3 Fourth function parameter
1756 * @return Return value
1757 */
1759
1760 /**
1761 * Calls a const function defined by the function pointer the class object and the function parameters.
1762 * @param functionClass Class object holding the member function to call
1763 * @param functionPointer Pointer of the member function to call
1764 * @param param0 First function parameter
1765 * @param param1 Second function parameter
1766 * @param param2 Third function parameter
1767 * @param param3 Fourth function parameter
1768 * @return Return value
1769 */
1771};
1772
1773/**
1774 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
1775 * @see MemberFunctionCaller.
1776 */
1777template <typename CT, typename RT, typename PT0, typename PT1, typename PT2>
1779{
1783
1784 protected:
1785
1786 /**
1787 * Calls a function defined by the function pointer the class object and the function parameters.
1788 * @param functionClass Class object holding the member function to call
1789 * @param functionPointer Pointer of the member function to call
1790 * @param param0 First function parameter
1791 * @param param1 Second function parameter
1792 * @param param2 Third function parameter
1793 * @return Return value
1794 */
1796
1797 /**
1798 * Calls a const function defined by the function pointer the class object and the function parameters.
1799 * @param functionClass Class object holding the member function to call
1800 * @param functionPointer Pointer of the member function to call
1801 * @param param0 First function parameter
1802 * @param param1 Second function parameter
1803 * @param param2 Third function parameter
1804 * @return Return value
1805 */
1807};
1808
1809/**
1810 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
1811 * @see MemberFunctionCaller.
1812 */
1813template <typename CT, typename RT, typename PT0, typename PT1>
1815{
1819
1820 protected:
1821
1822 /**
1823 * Calls a function defined by the function pointer the class object and the function parameters.
1824 * @param functionClass Class object holding the member function to call
1825 * @param functionPointer Pointer of the member function to call
1826 * @param param0 First function parameter
1827 * @param param1 Second function parameter
1828 * @return Return value
1829 */
1831
1832 /**
1833 * Calls a const function defined by the function pointer the class object and the function parameters.
1834 * @param functionClass Class object holding the member function to call
1835 * @param functionPointer Pointer of the member function to call
1836 * @param param0 First function parameter
1837 * @param param1 Second function parameter
1838 * @return Return value
1839 */
1841};
1842
1843/**
1844 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
1845 * @see MemberFunctionCaller.
1846 */
1847template <typename CT, typename RT, typename PT0>
1849{
1853
1854 protected:
1855
1856 /**
1857 * Calls a function defined by the function pointer the class object and the function parameters.
1858 * @param functionClass Class object holding the member function to call
1859 * @param functionPointer Pointer of the member function to call
1860 * @param param0 First function parameter
1861 * @return Return value
1862 */
1864
1865 /**
1866 * Calls a const function defined by the function pointer the class object and the function parameters.
1867 * @param functionClass Class object holding the member function to call
1868 * @param functionPointer Pointer of the member function to call
1869 * @param param0 First function parameter
1870 * @return Return value
1871 */
1873};
1874
1875/**
1876 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
1877 * @see MemberFunctionCaller.
1878 */
1879template <typename CT, typename RT>
1881{
1885
1886 protected:
1887
1888 /**
1889 * Calls a function defined by the function pointer the class object and the function parameters.
1890 * @param functionClass Class object holding the member function to call
1891 * @param functionPointer Pointer of the member function to call
1892 * @return Return value
1893 */
1895
1896 /**
1897 * Calls a const function defined by the function pointer the class object and the function parameters.
1898 * @param functionClass Class object holding the member function to call
1899 * @param functionPointer Pointer of the member function to call
1900 * @return Return value
1901 */
1903};
1904
1905template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
1906inline RT MemberFunctionCaller<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>::call(CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, PT18 param18, PT19 param19)
1907{
1908 ocean_assert(functionClass && functionPointer);
1909 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18, param19);
1910}
1911
1912template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
1913inline RT MemberFunctionCaller<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>::call(const CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>::TypeConst functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, PT18 param18, PT19 param19)
1914{
1915 ocean_assert(functionClass && functionPointer);
1916 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18, param19);
1917}
1918
1919template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18>
1920inline RT MemberFunctionCaller<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, NullClass>::call(CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, PT18 param18, NullClass)
1921{
1922 ocean_assert(functionClass && functionPointer);
1923 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18);
1924}
1925
1926template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18>
1927inline RT MemberFunctionCaller<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, NullClass>::call(const CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, NullClass>::TypeConst functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, PT18 param18, NullClass)
1928{
1929 ocean_assert(functionClass && functionPointer);
1930 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18);
1931}
1932
1933template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17>
1934inline RT MemberFunctionCaller<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, NullClass, NullClass>::call(CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, NullClass, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, NullClass, NullClass)
1935{
1936 ocean_assert(functionClass && functionPointer);
1937 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17);
1938}
1939
1940template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17>
1941inline RT MemberFunctionCaller<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, NullClass, NullClass>::call(const CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, NullClass, NullClass>::TypeConst functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, NullClass, NullClass)
1942{
1943 ocean_assert(functionClass && functionPointer);
1944 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17);
1945}
1946
1947template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16>
1948inline RT MemberFunctionCaller<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, NullClass, NullClass, NullClass>::call(CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, NullClass, NullClass, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, NullClass, NullClass, NullClass)
1949{
1950 ocean_assert(functionClass && functionPointer);
1951 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16);
1952}
1953
1954template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16>
1955inline RT MemberFunctionCaller<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, NullClass, NullClass, NullClass>::call(const CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, NullClass, NullClass, NullClass>::TypeConst functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, NullClass, NullClass, NullClass)
1956{
1957 ocean_assert(functionClass && functionPointer);
1958 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16);
1959}
1960
1961template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15>
1962inline RT MemberFunctionCaller<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, NullClass, NullClass, NullClass, NullClass>::call(CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, NullClass, NullClass, NullClass, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, NullClass, NullClass, NullClass, NullClass)
1963{
1964 ocean_assert(functionClass && functionPointer);
1965 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15);
1966}
1967
1968template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15>
1969inline RT MemberFunctionCaller<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, NullClass, NullClass, NullClass, NullClass>::call(const CT* functionClass, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, NullClass, NullClass, NullClass, NullClass>::TypeConst functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, NullClass, NullClass, NullClass, NullClass)
1970{
1971 ocean_assert(functionClass && functionPointer);
1972 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15);
1973}
1974
1975template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14>
1977{
1978 ocean_assert(functionClass && functionPointer);
1979 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14);
1980}
1981
1982template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14>
1984{
1985 ocean_assert(functionClass && functionPointer);
1986 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14);
1987}
1988
1989template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13>
1991{
1992 ocean_assert(functionClass && functionPointer);
1993 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13);
1994}
1995
1996template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13>
1998{
1999 ocean_assert(functionClass && functionPointer);
2000 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13);
2001}
2002
2003template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12>
2005{
2006 ocean_assert(functionClass && functionPointer);
2007 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12);
2008}
2009
2010template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12>
2012{
2013 ocean_assert(functionClass && functionPointer);
2014 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12);
2015}
2016
2017template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11>
2019{
2020 ocean_assert(functionClass && functionPointer);
2021 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11);
2022}
2023
2024template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11>
2026{
2027 ocean_assert(functionClass && functionPointer);
2028 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11);
2029}
2030
2031template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10>
2033{
2034 ocean_assert(functionClass && functionPointer);
2035 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10);
2036}
2037
2038template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10>
2040{
2041 ocean_assert(functionClass && functionPointer);
2042 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10);
2043}
2044
2045template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9>
2047{
2048 ocean_assert(functionClass && functionPointer);
2049 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9);
2050}
2051
2052template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9>
2054{
2055 ocean_assert(functionClass && functionPointer);
2056 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9);
2057}
2058
2059template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8>
2061{
2062 ocean_assert(functionClass && functionPointer);
2063 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7, param8);
2064}
2065
2066template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8>
2068{
2069 ocean_assert(functionClass && functionPointer);
2070 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7, param8);
2071}
2072
2073template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7>
2079
2080template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7>
2082{
2083 ocean_assert(functionClass && functionPointer);
2084 return (functionClass->*functionPointer)(param0, param1, param2, param3, param4, param5, param6, param7);
2085}
2086
2087template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6>
2093
2094template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6>
2100
2101template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5>
2107
2108template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5>
2114
2115template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4>
2121
2122template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4>
2128
2129template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3>
2135
2136template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3>
2142
2143template <typename CT, typename RT, typename PT0, typename PT1, typename PT2>
2149
2150template <typename CT, typename RT, typename PT0, typename PT1, typename PT2>
2156
2157template <typename CT, typename RT, typename PT0, typename PT1>
2163
2164template <typename CT, typename RT, typename PT0, typename PT1>
2170
2171template <typename CT, typename RT, typename PT0>
2177
2178template <typename CT, typename RT, typename PT0>
2184
2185template <typename CT, typename RT>
2191
2192template <typename CT, typename RT>
2198
2199/**
2200 * This class implements a helper class providing a functionality to call a static function defined by a function pointer.
2201 * Because of being a helper class there is no need to use it directly.<br>
2202 * The template parameters define the function's return type (RT) and twenty possible function parameters (PT0 - PT19).<br>
2203 * Therefore, functions with at most eight function parameters are supported.<br>
2204 * @tparam RT Specifies the return type of the callback function
2205 * @tparam PT0 Specifies the 1st possible function parameter type
2206 * @tparam PT1 Specifies the 2rd possible function parameter type
2207 * @tparam PT2 Specifies the 3rd possible function parameter type
2208 * @tparam PT3 Specifies the 4th possible function parameter type
2209 * @tparam PT4 Specifies the 5th possible function parameter type
2210 * @tparam PT5 Specifies the 6th possible function parameter type
2211 * @tparam PT6 Specifies the 7th possible function parameter type
2212 * @tparam PT7 Specifies the 8th possible function parameter type
2213 * @tparam PT8 Specifies the 9th possible function parameter type
2214 * @tparam PT9 Specifies the 10th possible function parameter type
2215 * @tparam PT10 Specifies the 11th possible function parameter type
2216 * @tparam PT11 Specifies the 12th possible function parameter type
2217 * @tparam PT12 Specifies the 13th possible function parameter type
2218 * @tparam PT13 Specifies the 14th possible function parameter type
2219 * @tparam PT14 Specifies the 15th possible function parameter type
2220 * @tparam PT15 Specifies the 16th possible function parameter type
2221 * @tparam PT16 Specifies the 17th possible function parameter type
2222 * @tparam PT17 Specifies the 18th possible function parameter type
2223 * @tparam PT18 Specifies the 19th possible function parameter type
2224 * @tparam PT19 Specifies the 20th possible function parameter type
2225 * @ingroup base
2226 */
2227template <typename RT, typename PT0 = NullClass, typename PT1 = NullClass, typename PT2 = NullClass, typename PT3 = NullClass, typename PT4 = NullClass, typename PT5 = NullClass, typename PT6 = NullClass, typename PT7 = NullClass, typename PT8 = NullClass, typename PT9 = NullClass, typename PT10 = NullClass, typename PT11 = NullClass, typename PT12 = NullClass, typename PT13 = NullClass, typename PT14 = NullClass, typename PT15 = NullClass, typename PT16 = NullClass, typename PT17 = NullClass, typename PT18 = NullClass, typename PT19 = NullClass>
2229{
2230 friend class StaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>;
2231 friend class ParameterizedStaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>;
2232
2233 protected:
2234
2235 /**
2236 * Calls a function defined by the function pointer the class object and the function parameters.
2237 * @param functionPointer Pointer of the member function to call
2238 * @param param0 First function parameter
2239 * @param param1 Second function parameter
2240 * @param param2 Third function parameter
2241 * @param param3 Fourth function parameter
2242 * @param param4 Fifth function parameter
2243 * @param param5 Six function parameter
2244 * @param param6 Seventh function parameter
2245 * @param param7 Eighth function parameter
2246 * @param param8 Ninth function parameter
2247 * @param param9 Tenth function parameter
2248 * @param param10 11th function parameter
2249 * @param param11 12th function parameter
2250 * @param param12 13th function parameter
2251 * @param param13 14th function parameter
2252 * @param param14 15th function parameter
2253 * @param param15 16th function parameter
2254 * @param param16 17th function parameter
2255 * @param param17 18th function parameter
2256 * @param param18 19th function parameter
2257 * @param param19 20th function parameter
2258 * @return Return value
2259 */
2260 static inline RT call(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, PT18 param18, PT19 param19);
2261};
2262
2263
2264/**
2265 * This class implements a helper class providing a functionality to call a static function defined by a function pointer.
2266 * Because of being a helper class there is no need to use it directly.<br>
2267 * The template parameters define the function's return type (RT) and 19 possible function parameters (PT0 - PT18).<br>
2268 * Therefore, functions with at most eight function parameters are supported.<br>
2269 */
2270template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18>
2271class StaticFunctionCaller<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, NullClass>
2272{
2273 friend class StaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, NullClass>;
2274 friend class ParameterizedStaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, NullClass>;
2275
2276 protected:
2277
2278 /**
2279 * Calls a function defined by the function pointer the class object and the function parameters.
2280 * @param functionPointer Pointer of the member function to call
2281 * @param param0 First function parameter
2282 * @param param1 Second function parameter
2283 * @param param2 Third function parameter
2284 * @param param3 Fourth function parameter
2285 * @param param4 Fifth function parameter
2286 * @param param5 Six function parameter
2287 * @param param6 Seventh function parameter
2288 * @param param7 Eighth function parameter
2289 * @param param8 Ninth function parameter
2290 * @param param9 Tenth function parameter
2291 * @param param10 11th function parameter
2292 * @param param11 12th function parameter
2293 * @param param12 13th function parameter
2294 * @param param13 14th function parameter
2295 * @param param14 15th function parameter
2296 * @param param15 16th function parameter
2297 * @param param16 17th function parameter
2298 * @param param17 18th function parameter
2299 * @param param18 19th function parameter
2300 * @return Return value
2301 */
2302 static inline RT call(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, PT18 param18, NullClass);
2303};
2304
2305/**
2306 * This class implements a helper class providing a functionality to call a static function defined by a function pointer.
2307 * Because of being a helper class there is no need to use it directly.<br>
2308 * The template parameters define the function's return type (RT) and 18 possible function parameters (PT0 - PT17).<br>
2309 * Therefore, functions with at most eight function parameters are supported.<br>
2310 */
2311template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17>
2312class StaticFunctionCaller<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, NullClass, NullClass>
2313{
2314 friend class StaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, NullClass, NullClass>;
2315 friend class ParameterizedStaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, NullClass, NullClass>;
2316
2317 protected:
2318
2319 /**
2320 * Calls a function defined by the function pointer the class object and the function parameters.
2321 * @param functionPointer Pointer of the member function to call
2322 * @param param0 First function parameter
2323 * @param param1 Second function parameter
2324 * @param param2 Third function parameter
2325 * @param param3 Fourth function parameter
2326 * @param param4 Fifth function parameter
2327 * @param param5 Six function parameter
2328 * @param param6 Seventh function parameter
2329 * @param param7 Eighth function parameter
2330 * @param param8 Ninth function parameter
2331 * @param param9 Tenth function parameter
2332 * @param param10 11th function parameter
2333 * @param param11 12th function parameter
2334 * @param param12 13th function parameter
2335 * @param param13 14th function parameter
2336 * @param param14 15th function parameter
2337 * @param param15 16th function parameter
2338 * @param param16 17th function parameter
2339 * @param param17 18th function parameter
2340 * @return Return value
2341 */
2342 static inline RT call(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, NullClass, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, NullClass, NullClass);
2343};
2344
2345/**
2346 * This class implements a helper class providing a functionality to call a static function defined by a function pointer.
2347 * Because of being a helper class there is no need to use it directly.<br>
2348 * The template parameters define the function's return type (RT) and 17 possible function parameters (PT0 - PT16).<br>
2349 * Therefore, functions with at most eight function parameters are supported.<br>
2350 */
2351template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16>
2352class StaticFunctionCaller<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, NullClass, NullClass, NullClass>
2353{
2354 friend class StaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, NullClass, NullClass, NullClass>;
2355 friend class ParameterizedStaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, NullClass, NullClass, NullClass>;
2356
2357 protected:
2358
2359 /**
2360 * Calls a function defined by the function pointer the class object and the function parameters.
2361 * @param functionPointer Pointer of the member function to call
2362 * @param param0 First function parameter
2363 * @param param1 Second function parameter
2364 * @param param2 Third function parameter
2365 * @param param3 Fourth function parameter
2366 * @param param4 Fifth function parameter
2367 * @param param5 Six function parameter
2368 * @param param6 Seventh function parameter
2369 * @param param7 Eighth function parameter
2370 * @param param8 Ninth function parameter
2371 * @param param9 Tenth function parameter
2372 * @param param10 11th function parameter
2373 * @param param11 12th function parameter
2374 * @param param12 13th function parameter
2375 * @param param13 14th function parameter
2376 * @param param14 15th function parameter
2377 * @param param15 16th function parameter
2378 * @param param16 17th function parameter
2379 * @return Return value
2380 */
2381 static inline RT call(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, NullClass, NullClass, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, NullClass, NullClass, NullClass);
2382};
2383
2384/**
2385 * This class implements a helper class providing a functionality to call a static function defined by a function pointer.
2386 * Because of being a helper class there is no need to use it directly.<br>
2387 * The template parameters define the function's return type (RT) and 16 possible function parameters (PT0 - PT15).<br>
2388 * Therefore, functions with at most eight function parameters are supported.<br>
2389 */
2390template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15>
2391class StaticFunctionCaller<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, NullClass, NullClass, NullClass, NullClass>
2392{
2393 friend class StaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, NullClass, NullClass, NullClass, NullClass>;
2394 friend class ParameterizedStaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, NullClass, NullClass, NullClass, NullClass>;
2395
2396 protected:
2397
2398 /**
2399 * Calls a function defined by the function pointer the class object and the function parameters.
2400 * @param functionPointer Pointer of the member function to call
2401 * @param param0 First function parameter
2402 * @param param1 Second function parameter
2403 * @param param2 Third function parameter
2404 * @param param3 Fourth function parameter
2405 * @param param4 Fifth function parameter
2406 * @param param5 Six function parameter
2407 * @param param6 Seventh function parameter
2408 * @param param7 Eighth function parameter
2409 * @param param8 Ninth function parameter
2410 * @param param9 Tenth function parameter
2411 * @param param10 11th function parameter
2412 * @param param11 12th function parameter
2413 * @param param12 13th function parameter
2414 * @param param13 14th function parameter
2415 * @param param14 15th function parameter
2416 * @param param15 16th function parameter
2417 * @return Return value
2418 */
2419 static inline RT call(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, NullClass, NullClass, NullClass, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, NullClass, NullClass, NullClass, NullClass);
2420};
2421
2422/**
2423 * This class implements a helper class providing a functionality to call a static function defined by a function pointer.
2424 * Because of being a helper class there is no need to use it directly.<br>
2425 * The template parameters define the function's return type (RT) and 15 possible function parameters (PT0 - PT14).<br>
2426 * Therefore, functions with at most eight function parameters are supported.<br>
2427 */
2428template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14>
2429class StaticFunctionCaller<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, NullClass, NullClass, NullClass, NullClass, NullClass>
2430{
2431 friend class StaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, NullClass, NullClass, NullClass, NullClass, NullClass>;
2432 friend class ParameterizedStaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, NullClass, NullClass, NullClass, NullClass, NullClass>;
2433
2434 protected:
2435
2436 /**
2437 * Calls a function defined by the function pointer the class object and the function parameters.
2438 * @param functionPointer Pointer of the member function to call
2439 * @param param0 First function parameter
2440 * @param param1 Second function parameter
2441 * @param param2 Third function parameter
2442 * @param param3 Fourth function parameter
2443 * @param param4 Fifth function parameter
2444 * @param param5 Six function parameter
2445 * @param param6 Seventh function parameter
2446 * @param param7 Eighth function parameter
2447 * @param param8 Ninth function parameter
2448 * @param param9 Tenth function parameter
2449 * @param param10 11th function parameter
2450 * @param param11 12th function parameter
2451 * @param param12 13th function parameter
2452 * @param param13 14th function parameter
2453 * @param param14 15th function parameter
2454 * @return Return value
2455 */
2456 static inline RT call(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, NullClass, NullClass, NullClass, NullClass, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, NullClass, NullClass, NullClass, NullClass, NullClass);
2457};
2458
2459/**
2460 * This class implements a helper class providing a functionality to call a static function defined by a function pointer.
2461 * Because of being a helper class there is no need to use it directly.<br>
2462 * The template parameters define the function's return type (RT) and 14 possible function parameters (PT0 - PT13).<br>
2463 * Therefore, functions with at most eight function parameters are supported.<br>
2464 */
2465template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13>
2466class StaticFunctionCaller<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>
2467{
2468 friend class StaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
2469 friend class ParameterizedStaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
2470
2471 protected:
2472
2473 /**
2474 * Calls a function defined by the function pointer the class object and the function parameters.
2475 * @param functionPointer Pointer of the member function to call
2476 * @param param0 First function parameter
2477 * @param param1 Second function parameter
2478 * @param param2 Third function parameter
2479 * @param param3 Fourth function parameter
2480 * @param param4 Fifth function parameter
2481 * @param param5 Six function parameter
2482 * @param param6 Seventh function parameter
2483 * @param param7 Eighth function parameter
2484 * @param param8 Ninth function parameter
2485 * @param param9 Tenth function parameter
2486 * @param param10 11th function parameter
2487 * @param param11 12th function parameter
2488 * @param param12 13th function parameter
2489 * @param param13 14th function parameter
2490 * @return Return value
2491 */
2492 static inline RT call(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass);
2493};
2494
2495/**
2496 * This class implements a helper class providing a functionality to call a static function defined by a function pointer.
2497 * Because of being a helper class there is no need to use it directly.<br>
2498 * The template parameters define the function's return type (RT) and 13 possible function parameters (PT0 - PT12).<br>
2499 * Therefore, functions with at most eight function parameters are supported.<br>
2500 */
2501template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12>
2502class StaticFunctionCaller<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>
2503{
2504 friend class StaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
2505 friend class ParameterizedStaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
2506
2507 protected:
2508
2509 /**
2510 * Calls a function defined by the function pointer the class object and the function parameters.
2511 * @param functionPointer Pointer of the member function to call
2512 * @param param0 First function parameter
2513 * @param param1 Second function parameter
2514 * @param param2 Third function parameter
2515 * @param param3 Fourth function parameter
2516 * @param param4 Fifth function parameter
2517 * @param param5 Six function parameter
2518 * @param param6 Seventh function parameter
2519 * @param param7 Eighth function parameter
2520 * @param param8 Ninth function parameter
2521 * @param param9 Tenth function parameter
2522 * @param param10 11th function parameter
2523 * @param param11 12th function parameter
2524 * @param param12 13th function parameter
2525 * @return Return value
2526 */
2527 static inline RT call(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass);
2528};
2529
2530/**
2531 * This class implements a helper class providing a functionality to call a static function defined by a function pointer.
2532 * Because of being a helper class there is no need to use it directly.<br>
2533 * The template parameters define the function's return type (RT) and 12 possible function parameters (PT0 - PT11).<br>
2534 * Therefore, functions with at most eight function parameters are supported.<br>
2535 */
2536template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11>
2537class StaticFunctionCaller<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>
2538{
2539 friend class StaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
2540 friend class ParameterizedStaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
2541
2542 protected:
2543
2544 /**
2545 * Calls a function defined by the function pointer the class object and the function parameters.
2546 * @param functionPointer Pointer of the member function to call
2547 * @param param0 First function parameter
2548 * @param param1 Second function parameter
2549 * @param param2 Third function parameter
2550 * @param param3 Fourth function parameter
2551 * @param param4 Fifth function parameter
2552 * @param param5 Six function parameter
2553 * @param param6 Seventh function parameter
2554 * @param param7 Eighth function parameter
2555 * @param param8 Ninth function parameter
2556 * @param param9 Tenth function parameter
2557 * @param param10 11th function parameter
2558 * @param param11 12th function parameter
2559 * @return Return value
2560 */
2561 static inline RT call(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass);
2562};
2563
2564/**
2565 * This class implements a helper class providing a functionality to call a static function defined by a function pointer.
2566 * Because of being a helper class there is no need to use it directly.<br>
2567 * The template parameters define the function's return type (RT) and 11 possible function parameters (PT0 - PT10).<br>
2568 * Therefore, functions with at most eight function parameters are supported.<br>
2569 */
2570template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10>
2571class StaticFunctionCaller<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>
2572{
2573 friend class StaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
2574 friend class ParameterizedStaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
2575
2576 protected:
2577
2578 /**
2579 * Calls a function defined by the function pointer the class object and the function parameters.
2580 * @param functionPointer Pointer of the member function to call
2581 * @param param0 First function parameter
2582 * @param param1 Second function parameter
2583 * @param param2 Third function parameter
2584 * @param param3 Fourth function parameter
2585 * @param param4 Fifth function parameter
2586 * @param param5 Six function parameter
2587 * @param param6 Seventh function parameter
2588 * @param param7 Eighth function parameter
2589 * @param param8 Ninth function parameter
2590 * @param param9 Tenth function parameter
2591 * @param param10 11th function parameter
2592 * @return Return value
2593 */
2594 static inline RT call(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass);
2595};
2596
2597/**
2598 * This class implements a helper class providing a functionality to call a static function defined by a function pointer.
2599 * Because of being a helper class there is no need to use it directly.<br>
2600 * The template parameters define the function's return type (RT) and 10 possible function parameters (PT0 - PT9).<br>
2601 * Therefore, functions with at most eight function parameters are supported.<br>
2602 */
2603template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9>
2604class StaticFunctionCaller<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>
2605{
2606 friend class StaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
2607 friend class ParameterizedStaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
2608
2609 protected:
2610
2611 /**
2612 * Calls a function defined by the function pointer the class object and the function parameters.
2613 * @param functionPointer Pointer of the member function to call
2614 * @param param0 First function parameter
2615 * @param param1 Second function parameter
2616 * @param param2 Third function parameter
2617 * @param param3 Fourth function parameter
2618 * @param param4 Fifth function parameter
2619 * @param param5 Six function parameter
2620 * @param param6 Seventh function parameter
2621 * @param param7 Eighth function parameter
2622 * @param param8 Ninth function parameter
2623 * @param param9 Tenth function parameter
2624 * @return Return value
2625 */
2627};
2628
2629/**
2630 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
2631 * @see StaticFunctionCaller.
2632 */
2633template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8>
2635{
2636 friend class StaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
2637 friend class ParameterizedStaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
2638
2639 protected:
2640
2641 /**
2642 * Calls a function defined by the function pointer the class object and the function parameters.
2643 * @param functionPointer Pointer of the member function to call
2644 * @param param0 First function parameter
2645 * @param param1 Second function parameter
2646 * @param param2 Third function parameter
2647 * @param param3 Fourth function parameter
2648 * @param param4 Fifth function parameter
2649 * @param param5 Sixth function parameter
2650 * @param param6 Seventh function parameter
2651 * @param param7 Eighth function parameter
2652 * @param param8 Ninth function parameter
2653 * @return Return value
2654 */
2656};
2657
2658
2659/**
2660 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
2661 * @see StaticFunctionCaller.
2662 */
2663template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7>
2665{
2666 friend class StaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>;
2668
2669 protected:
2670
2671 /**
2672 * Calls a function defined by the function pointer the class object and the function parameters.
2673 * @param functionPointer Pointer of the member function to call
2674 * @param param0 First function parameter
2675 * @param param1 Second function parameter
2676 * @param param2 Third function parameter
2677 * @param param3 Fourth function parameter
2678 * @param param4 Fifth function parameter
2679 * @param param5 Sixth function parameter
2680 * @param param6 Seventh function parameter
2681 * @param param7 Eighth function parameter
2682 * @return Return value
2683 */
2685};
2686
2687
2688/**
2689 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
2690 * @see StaticFunctionCaller.
2691 */
2692template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6>
2694{
2697
2698 protected:
2699
2700 /**
2701 * Calls a function defined by the function pointer the class object and the function parameters.
2702 * @param functionPointer Pointer of the member function to call
2703 * @param param0 First function parameter
2704 * @param param1 Second function parameter
2705 * @param param2 Third function parameter
2706 * @param param3 Fourth function parameter
2707 * @param param4 Fifth function parameter
2708 * @param param5 Sixth function parameter
2709 * @param param6 Seventh function parameter
2710 * @return Return value
2711 */
2713};
2714
2715/**
2716 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
2717 * @see StaticFunctionCaller.
2718 */
2719template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5>
2721{
2724
2725 protected:
2726
2727 /**
2728 * Calls a function defined by the function pointer the class object and the function parameters.
2729 * @param functionPointer Pointer of the member function to call
2730 * @param param0 First function parameter
2731 * @param param1 Second function parameter
2732 * @param param2 Third function parameter
2733 * @param param3 Fourth function parameter
2734 * @param param4 Fifth function parameter
2735 * @param param5 Sixth function parameter
2736 * @return Return value
2737 */
2739};
2740
2741/**
2742 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
2743 * @see StaticFunctionCaller.
2744 */
2745template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4>
2747{
2750
2751 protected:
2752
2753 /**
2754 * Calls a function defined by the function pointer the class object and the function parameters.
2755 * @param functionPointer Pointer of the member function to call
2756 * @param param0 First function parameter
2757 * @param param1 Second function parameter
2758 * @param param2 Third function parameter
2759 * @param param3 Fourth function parameter
2760 * @param param4 Fifth function parameter
2761 * @return Return value
2762 */
2764};
2765
2766/**
2767 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
2768 * @see StaticFunctionCaller.
2769 */
2770template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3>
2772{
2775
2776 protected:
2777
2778 /**
2779 * Calls a function defined by the function pointer the class object and the function parameters.
2780 * @param functionPointer Pointer of the member function to call
2781 * @param param0 First function parameter
2782 * @param param1 Second function parameter
2783 * @param param2 Third function parameter
2784 * @param param3 Fourth function parameter
2785 * @return Return value
2786 */
2788};
2789
2790/**
2791 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
2792 * @see StaticFunctionCaller.
2793 */
2794template <typename RT, typename PT0, typename PT1, typename PT2>
2796{
2799
2800 protected:
2801
2802 /**
2803 * Calls a function defined by the function pointer the class object and the function parameters.
2804 * @param functionPointer Pointer of the member function to call
2805 * @param param0 First function parameter
2806 * @param param1 Second function parameter
2807 * @param param2 Third function parameter
2808 * @return Return value
2809 */
2811};
2812
2813/**
2814 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
2815 * @see StaticFunctionCaller.
2816 */
2817template <typename RT, typename PT0, typename PT1>
2819{
2822
2823 protected:
2824
2825 /**
2826 * Calls a function defined by the function pointer the class object and the function parameters.
2827 * @param functionPointer Pointer of the member function to call
2828 * @param param0 First function parameter
2829 * @param param1 Second function parameter
2830 * @return Return value
2831 */
2833};
2834
2835/**
2836 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
2837 * @see StaticFunctionCaller.
2838 */
2839template <typename RT, typename PT0>
2841{
2844
2845 protected:
2846
2847 /**
2848 * Calls a function defined by the function pointer the class object and the function parameters.
2849 * @param functionPointer Pointer of the member function to call
2850 * @param param0 First function parameter
2851 * @return Return value
2852 */
2854};
2855
2856/**
2857 * This class implements a helper class providing a functionality to call a member function defined by the owner class and a local function pointer.
2858 * @see StaticFunctionCaller.
2859 */
2860template <typename RT>
2862{
2865
2866 protected:
2867
2868 /**
2869 * Calls a function defined by the function pointer the class object and the function parameters.
2870 * @param functionPointer Pointer of the member function to call
2871 * @return Return value
2872 */
2874};
2875
2876template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
2877inline RT StaticFunctionCaller<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>::call(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, PT18 param18, PT19 param19)
2878{
2879 ocean_assert(functionPointer);
2880 return functionPointer(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18, param19);
2881}
2882
2883template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18>
2884inline RT StaticFunctionCaller<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, NullClass>::call(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, PT18 param18, NullClass)
2885{
2886 ocean_assert(functionPointer);
2887 return functionPointer(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18);
2888}
2889
2890template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17>
2891inline RT StaticFunctionCaller<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, NullClass, NullClass>::call(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, NullClass, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, NullClass, NullClass)
2892{
2893 ocean_assert(functionPointer);
2894 return functionPointer(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17);
2895}
2896
2897template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16>
2898inline RT StaticFunctionCaller<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, NullClass, NullClass, NullClass>::call(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, NullClass, NullClass, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, NullClass, NullClass, NullClass)
2899{
2900 ocean_assert(functionPointer);
2901 return functionPointer(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16);
2902}
2903
2904template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15>
2905inline RT StaticFunctionCaller<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, NullClass, NullClass, NullClass, NullClass>::call(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, NullClass, NullClass, NullClass, NullClass>::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, NullClass, NullClass, NullClass, NullClass)
2906{
2907 ocean_assert(functionPointer);
2908 return functionPointer(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15);
2909}
2910
2911template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14>
2913{
2914 ocean_assert(functionPointer);
2915 return functionPointer(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14);
2916}
2917
2918template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13>
2920{
2921 ocean_assert(functionPointer);
2922 return functionPointer(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13);
2923}
2924
2925template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12>
2927{
2928 ocean_assert(functionPointer);
2929 return functionPointer(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12);
2930}
2931
2932template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11>
2934{
2935 ocean_assert(functionPointer);
2936 return functionPointer(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11);
2937}
2938
2939template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10>
2941{
2942 ocean_assert(functionPointer);
2943 return functionPointer(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10);
2944}
2945
2946template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9>
2948{
2949 ocean_assert(functionPointer);
2950 return functionPointer(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9);
2951}
2952
2953template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8>
2959
2960template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7>
2966
2967template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6>
2973
2974template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5>
2980
2981template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4>
2987
2988template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3>
2994
2995template <typename RT, typename PT0, typename PT1, typename PT2>
3001
3002template <typename RT, typename PT0, typename PT1>
3008
3009template <typename RT, typename PT0>
3015
3016template <typename RT>
3022
3023/**
3024 * This class is the base class for an unparameterized function container.
3025 * This base function container holds no function parameters and therefore can call the encapsulated function with explicit parameters only.<br>
3026 * The template parameters define the function's return type (RT) and twenty possible function parameters (PT0 - PT19).<br>
3027 * @tparam RT Specifies the return type of the callback function
3028 * @tparam PT0 Specifies the 1st possible function parameter type
3029 * @tparam PT1 Specifies the 2rd possible function parameter type
3030 * @tparam PT2 Specifies the 3rd possible function parameter type
3031 * @tparam PT3 Specifies the 4th possible function parameter type
3032 * @tparam PT4 Specifies the 5th possible function parameter type
3033 * @tparam PT5 Specifies the 6th possible function parameter type
3034 * @tparam PT6 Specifies the 7th possible function parameter type
3035 * @tparam PT7 Specifies the 8th possible function parameter type
3036 * @tparam PT8 Specifies the 9th possible function parameter type
3037 * @tparam PT9 Specifies the 10th possible function parameter type
3038 * @tparam PT10 Specifies the 11th possible function parameter type
3039 * @tparam PT11 Specifies the 12th possible function parameter type
3040 * @tparam PT12 Specifies the 13th possible function parameter type
3041 * @tparam PT13 Specifies the 14th possible function parameter type
3042 * @tparam PT14 Specifies the 15th possible function parameter type
3043 * @tparam PT15 Specifies the 16th possible function parameter type
3044 * @tparam PT16 Specifies the 17th possible function parameter type
3045 * @tparam PT17 Specifies the 18th possible function parameter type
3046 * @tparam PT18 Specifies the 19th possible function parameter type
3047 * @tparam PT19 Specifies the 20th possible function parameter type
3048 * @ingroup base
3049 */
3050template <typename RT, typename PT0 = NullClass, typename PT1 = NullClass, typename PT2 = NullClass, typename PT3 = NullClass, typename PT4 = NullClass, typename PT5 = NullClass, typename PT6 = NullClass, typename PT7 = NullClass, typename PT8 = NullClass, typename PT9 = NullClass, typename PT10 = NullClass, typename PT11 = NullClass, typename PT12 = NullClass, typename PT13 = NullClass, typename PT14 = NullClass, typename PT15 = NullClass, typename PT16 = NullClass, typename PT17 = NullClass, typename PT18 = NullClass, typename PT19 = NullClass>
3052{
3053 public:
3054
3055 /**
3056 * Destructs the object.
3057 */
3058 virtual ~FunctionBase();
3059
3060 /**
3061 * Calls the internal encapsulated function by given parameters.
3062 * @param param0 First parameter
3063 * @param param1 Second parameter
3064 * @param param2 Third parameter
3065 * @param param3 Fourth parameter
3066 * @param param4 Fifth parameter
3067 * @param param5 Sixth parameter
3068 * @param param6 Seventh parameter
3069 * @param param7 Eighth parameter
3070 * @param param8 Ninth parameter
3071 * @param param9 Tenth parameter
3072 * @param param10 11th function parameter
3073 * @param param11 12th function parameter
3074 * @param param12 13th function parameter
3075 * @param param13 14th function parameter
3076 * @param param14 15th function parameter
3077 * @param param15 16th function parameter
3078 * @param param16 17th function parameter
3079 * @param param17 18th function parameter
3080 * @param param18 19th function parameter
3081 * @param param19 20th function parameter
3082 * @return Return value
3083 */
3084 virtual RT call(PT0 param0 = PT0(), PT1 param1 = PT1(), PT2 param2 = PT2(), PT3 param3 = PT3(), PT4 param4 = PT4(), PT5 param5 = PT5(), PT6 param6 = PT6(), PT7 param7 = PT7(), PT8 param8 = PT8(), PT9 param9 = PT9(), PT10 param10 = PT10(), PT11 param11 = PT11(), PT12 param12 = PT12(), PT13 param13 = PT13(), PT14 param14 = PT14(), PT15 param15 = PT15(), PT16 param16 = PT16(), PT17 param17 = PT17(), PT18 param18 = PT18(), PT19 param19 = PT19()) const = 0;
3085
3086 /**
3087 * Creates a copy of the entire derived object.
3088 * @return Instance copy
3089 */
3090 virtual FunctionBase* copy() const = 0;
3091
3092 /**
3093 * Returns whether two functions are equal.
3094 * @param functionBase Right callback to check
3095 * @return True, if so
3096 */
3098};
3099
3100template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
3105
3106/**
3107 * This class implements an unparameterized member function container.
3108 * This function container holds no function parameters and therefore can call the encapsulated function with explicit parameters only.
3109 * The template parameters define the function's owner class type (CT), the return type (RT) and twenty possible function parameters (PT0 - PT19).<br>
3110 * This class is a helper class only and used to allow callback functions to be independent from the member function's class type.
3111 * @tparam RT Specifies the return type of the callback function
3112 * @tparam PT0 Specifies the 1st possible function parameter type
3113 * @tparam PT1 Specifies the 2rd possible function parameter type
3114 * @tparam PT2 Specifies the 3rd possible function parameter type
3115 * @tparam PT3 Specifies the 4th possible function parameter type
3116 * @tparam PT4 Specifies the 5th possible function parameter type
3117 * @tparam PT5 Specifies the 6th possible function parameter type
3118 * @tparam PT6 Specifies the 7th possible function parameter type
3119 * @tparam PT7 Specifies the 8th possible function parameter type
3120 * @tparam PT8 Specifies the 9th possible function parameter type
3121 * @tparam PT9 Specifies the 10th possible function parameter type
3122 * @tparam PT10 Specifies the 11th possible function parameter type
3123 * @tparam PT11 Specifies the 12th possible function parameter type
3124 * @tparam PT12 Specifies the 13th possible function parameter type
3125 * @tparam PT13 Specifies the 14th possible function parameter type
3126 * @tparam PT14 Specifies the 15th possible function parameter type
3127 * @tparam PT15 Specifies the 16th possible function parameter type
3128 * @tparam PT16 Specifies the 17th possible function parameter type
3129 * @tparam PT17 Specifies the 18th possible function parameter type
3130 * @tparam PT18 Specifies the 19th possible function parameter type
3131 * @tparam PT19 Specifies the 20th possible function parameter type
3132 * @see StaticFunction, Callback.
3133 * @ingroup base
3134 */
3135template <typename CT, typename RT, typename PT0 = NullClass, typename PT1 = NullClass, typename PT2 = NullClass, typename PT3 = NullClass, typename PT4 = NullClass, typename PT5 = NullClass, typename PT6 = NullClass, typename PT7 = NullClass, typename PT8 = NullClass, typename PT9 = NullClass, typename PT10 = NullClass, typename PT11 = NullClass, typename PT12 = NullClass, typename PT13 = NullClass, typename PT14 = NullClass, typename PT15 = NullClass, typename PT16 = NullClass, typename PT17 = NullClass, typename PT18 = NullClass, typename PT19 = NullClass>
3136class MemberFunction : public FunctionBase<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>
3137{
3138 friend class Callback<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>;
3139
3140 protected:
3141
3142 /**
3143 * Definition of a function pointer for the encapsulated function.
3144 */
3146
3147 protected:
3148
3149 /**
3150 * Creates a new member function object.
3151 * @param object Class object holding the member function
3152 * @param function Local member function pointer
3153 */
3154 inline MemberFunction(CT& object, FunctionType function);
3155
3156 /**
3157 * Calls the encapsulated function.
3158 * @param param0 First function parameter
3159 * @param param1 Second function parameter
3160 * @param param2 Third function parameter
3161 * @param param3 Fourth function parameter
3162 * @param param4 Fifth function parameter
3163 * @param param5 Sixth function parameter
3164 * @param param6 Seventh function parameter
3165 * @param param7 Eighth function parameter
3166 * @param param8 Ninth function parameter
3167 * @param param9 Tenth function parameter
3168 * @param param10 11th function parameter
3169 * @param param11 12th function parameter
3170 * @param param12 13th function parameter
3171 * @param param13 14th function parameter
3172 * @param param14 15th function parameter
3173 * @param param15 16th function parameter
3174 * @param param16 17th function parameter
3175 * @param param17 18th function parameter
3176 * @param param18 19th function parameter
3177 * @param param19 20th function parameter
3178 * @return Return value
3179 */
3180 virtual RT call(PT0 param0 = PT0(), PT1 param1 = PT1(), PT2 param2 = PT2(), PT3 param3 = PT3(), PT4 param4 = PT4(), PT5 param5 = PT5(), PT6 param6 = PT6(), PT7 param7 = PT7(), PT8 param8 = PT8(), PT9 param9 = PT9(), PT10 param10 = PT10(), PT11 param11 = PT11(), PT12 param12 = PT12(), PT13 param13 = PT13(), PT14 param14 = PT14(), PT15 param15 = PT15(), PT16 param16 = PT16(), PT17 param17 = PT17(), PT18 param18 = PT18(), PT19 param19 = PT19()) const;
3181
3182 /**
3183 * Creates a copy of this element.
3184 * @return Instance copy
3185 */
3187
3188 /**
3189 * Returns whether two functions are equal.
3190 * @param functionBase Right callback to check
3191 * @return True, if so
3192 */
3194
3195 protected:
3196
3197 /// Class object holding the member function.
3199
3200 /// Function pointer of the member function.
3202};
3203
3204template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
3206 functionClass(&object),
3207 functionPointer(function)
3208{
3209 // nothing to do here
3210}
3211
3212template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
3213RT MemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>::call(PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, PT18 param18, PT19 param19) const
3214{
3215 ocean_assert(functionClass != nullptr);
3216 ocean_assert(functionPointer != 0);
3217 return MemberFunctionCaller<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>::call(functionClass, functionPointer, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18, param19);
3218}
3219
3220template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
3227
3228template <typename CT, typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
3234
3235/**
3236 * This class implements an unparameterized static function container.
3237 * This function container holds no function parameters and therefore can call the encapsulated function with explicit parameters only.
3238 * The template parameters define the function's return type (RT) and twenty possible function parameters (PT0 - PT19).<br>
3239 * This class is a helper class only and used to allow callback functions to be independent from the member function's class type.
3240 * @tparam RT Specifies the return type of the callback function
3241 * @tparam PT0 Specifies the 1st possible function parameter type
3242 * @tparam PT1 Specifies the 2rd possible function parameter type
3243 * @tparam PT2 Specifies the 3rd possible function parameter type
3244 * @tparam PT3 Specifies the 4th possible function parameter type
3245 * @tparam PT4 Specifies the 5th possible function parameter type
3246 * @tparam PT5 Specifies the 6th possible function parameter type
3247 * @tparam PT6 Specifies the 7th possible function parameter type
3248 * @tparam PT7 Specifies the 8th possible function parameter type
3249 * @tparam PT8 Specifies the 9th possible function parameter type
3250 * @tparam PT9 Specifies the 10th possible function parameter type
3251 * @tparam PT10 Specifies the 11th possible function parameter type
3252 * @tparam PT11 Specifies the 12th possible function parameter type
3253 * @tparam PT12 Specifies the 13th possible function parameter type
3254 * @tparam PT13 Specifies the 14th possible function parameter type
3255 * @tparam PT14 Specifies the 15th possible function parameter type
3256 * @tparam PT15 Specifies the 16th possible function parameter type
3257 * @tparam PT16 Specifies the 17th possible function parameter type
3258 * @tparam PT17 Specifies the 18th possible function parameter type
3259 * @tparam PT18 Specifies the 19th possible function parameter type
3260 * @tparam PT19 Specifies the 20th possible function parameter type
3261 * @see MemberFunction, Callback.
3262 * @ingroup base
3263 */
3264template < typename RT, typename PT0 = NullClass, typename PT1 = NullClass, typename PT2 = NullClass, typename PT3 = NullClass, typename PT4 = NullClass, typename PT5 = NullClass, typename PT6 = NullClass, typename PT7 = NullClass, typename PT8 = NullClass, typename PT9 = NullClass, typename PT10 = NullClass, typename PT11 = NullClass, typename PT12 = NullClass, typename PT13 = NullClass, typename PT14 = NullClass, typename PT15 = NullClass, typename PT16 = NullClass, typename PT17 = NullClass, typename PT18 = NullClass, typename PT19 = NullClass>
3265class StaticFunction : public FunctionBase<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>
3266{
3267 friend class Callback<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>;
3268
3269 protected:
3270
3271 /**
3272 * Definition of a function pointer for the encapsulated function.
3273 */
3275
3276 protected:
3277
3278 /**
3279 * Creates a new member function object.
3280 * @param function Local member function pointer
3281 */
3282 inline StaticFunction(FunctionType function);
3283
3284 /**
3285 * Calls the encapsulated function.
3286 * @param param0 First function parameter
3287 * @param param1 Second function parameter
3288 * @param param2 Third function parameter
3289 * @param param3 Fourth function parameter
3290 * @param param4 Fifth function parameter
3291 * @param param5 Sixth function parameter
3292 * @param param6 Seventh function parameter
3293 * @param param7 Eight function parameter
3294 * @param param8 Ninth function parameter
3295 * @param param9 Tenth function parameter
3296 * @param param10 11th function parameter
3297 * @param param11 12th function parameter
3298 * @param param12 13th function parameter
3299 * @param param13 14th function parameter
3300 * @param param14 15th function parameter
3301 * @param param15 16th function parameter
3302 * @param param16 17th function parameter
3303 * @param param17 18th function parameter
3304 * @param param18 19th function parameter
3305 * @param param19 20th function parameter
3306 * @return Return value
3307 */
3308 virtual RT call(PT0 param0 = PT0(), PT1 param1 = PT1(), PT2 param2 = PT2(), PT3 param3 = PT3(), PT4 param4 = PT4(), PT5 param5 = PT5(), PT6 param6 = PT6(), PT7 param7 = PT7(), PT8 param8 = PT8(), PT9 param9 = PT9(), PT10 param10 = PT10(), PT11 param11 = PT11(), PT12 param12 = PT12(), PT13 param13 = PT13(), PT14 param14 = PT14(), PT15 param15 = PT15(), PT16 param16 = PT16(), PT17 param17 = PT17(), PT18 param18 = PT18(), PT19 param19 = PT19()) const;
3309
3310 /**
3311 * Creates a copy of this element.
3312 * @return Instance copy
3313 */
3315
3316 /**
3317 * Returns whether two functions are equal.
3318 * @param functionBase Right callback to check
3319 * @return True, if so
3320 */
3322
3323 protected:
3324
3325 /// Function pointer of the member function.
3327};
3328
3329template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
3335
3336template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
3337RT StaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>::call(PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, PT18 param18, PT19 param19) const
3338{
3339 ocean_assert(functionPointer != nullptr);
3340 return StaticFunctionCaller<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>::call(functionPointer, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18, param19);
3341}
3342
3343template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
3349
3350template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
3356
3357/**
3358 * This class implements a container for callback functions.
3359 * Use this callback container to encapsulate callback functions to static functions or member functions (of classes).<br>
3360 * For member functions, this class is independent from the function's owner (class) and therefore can be stored without the definition of the class type.<br>
3361 * This template class holds several template parameters, all specifying return and function parameter types.<br>
3362 * @tparam RT Specifies the return type of the callback function
3363 * @tparam PT0 Specifies the 1st possible function parameter type
3364 * @tparam PT1 Specifies the 2rd possible function parameter type
3365 * @tparam PT2 Specifies the 3rd possible function parameter type
3366 * @tparam PT3 Specifies the 4th possible function parameter type
3367 * @tparam PT4 Specifies the 5th possible function parameter type
3368 * @tparam PT5 Specifies the 6th possible function parameter type
3369 * @tparam PT6 Specifies the 7th possible function parameter type
3370 * @tparam PT7 Specifies the 8th possible function parameter type
3371 * @tparam PT8 Specifies the 9th possible function parameter type
3372 * @tparam PT9 Specifies the 10th possible function parameter type
3373 * @tparam PT10 Specifies the 11th possible function parameter type
3374 * @tparam PT11 Specifies the 12th possible function parameter type
3375 * @tparam PT12 Specifies the 13th possible function parameter type
3376 * @tparam PT13 Specifies the 14th possible function parameter type
3377 * @tparam PT14 Specifies the 15th possible function parameter type
3378 * @tparam PT15 Specifies the 16th possible function parameter type
3379 * @tparam PT16 Specifies the 17th possible function parameter type
3380 * @tparam PT17 Specifies the 18th possible function parameter type
3381 * @tparam PT18 Specifies the 19th possible function parameter type
3382 * @tparam PT19 Specifies the 20th possible function parameter type
3383 * @see Callbacks, ConcurrentCallbacks.
3384 *
3385 * See the following code tutorial:<br>
3386 * @code
3387 * // The best way to use the callback function container is to combine it with a typedef.
3388 *
3389 * #include "ocean/base/Callback.h"
3390 *
3391 * // Some class with a member function
3392 * class TestClass
3393 * {
3394 * public:
3395 *
3396 * // First member function later handled by the callback
3397 * void firstMemberFunction();
3398 *
3399 * // Second member function later handled by the callback
3400 * bool secondMemberFunction(int param0, const unsigned char* param1);
3401 *
3402 * // Static function later handled by the callback
3403 * static std::string staticFunction(short param);
3404 * }
3405 *
3406 * static void globalFunction()
3407 * {
3408 * // do anything
3409 * }
3410 *
3411 * // Definition of a callback function with not return value and no function parameter
3412 * typedef Callback<void> FirstCallback;
3413 *
3414 * // Definition of a callback function with 'bool' as return type and 'int' and 'unsigned char*' as function parameter
3415 * typedef Callback<bool, int, const unsigned char*> SecondCallback;
3416 *
3417 * // Definition of a callback function with 'std::string' as return type and 'short' as function parameter
3418 * typedef Callback<std::string, short> ThirdCallback;
3419 *
3420 * // Any function using the callback
3421 * void main()
3422 * {
3423 * // Instance of the test class
3424 * TestClass testClassObject;
3425 *
3426 * // Instance of the first callback function to the member function 'firstMemberFunction' of the above created instance of TestClass
3427 * FirstCallback firstCallback(testClassObject, &TestClass::firstMemberFunction);
3428 *
3429 * // Instance of the second callback function to the member function 'secondMemberFunction' of the above created instance of TestClass
3430 * SecondCallback secondCallback(testClassObject, &TestClass::secondMemberFunction);
3431 *
3432 * // Instance of the third callback function to the static function 'staticFunction' of the above created instance of TestClass
3433 * ThirdCallback thirdCallback(&TestClass::staticFunction);
3434 *
3435 * // Instance of the fourth callback function to the global function
3436 * FirstCallback fourthCallback(&globalFunction);
3437 *
3438 * // Usage of the first callback
3439 * firstCallback();
3440 *
3441 * // Usage of the second callback
3442 * bool resultBool = secondCallback(5, "test");
3443 *
3444 * // Usage of the third callback
3445 * std::string resultString = thirdCallback(3);
3446 *
3447 * // Usage of the fourth callback
3448 * fourthCallback();
3449 * }
3450 * @endcode
3451 *
3452 * @ingroup base
3453 */
3454template <typename RT, typename PT0 = NullClass, typename PT1 = NullClass, typename PT2 = NullClass, typename PT3 = NullClass, typename PT4 = NullClass, typename PT5 = NullClass, typename PT6 = NullClass, typename PT7 = NullClass, typename PT8 = NullClass, typename PT9 = NullClass, typename PT10 = NullClass, typename PT11 = NullClass, typename PT12 = NullClass, typename PT13 = NullClass, typename PT14 = NullClass, typename PT15 = NullClass, typename PT16 = NullClass, typename PT17 = NullClass, typename PT18 = NullClass, typename PT19 = NullClass>
3456{
3457 public:
3458
3459 /**
3460 * Definition of the return type of this callback object.
3461 */
3462 typedef RT ReturnType;
3463
3464 /**
3465 * Definition of the 1st parameter type of this callback object.
3466 */
3467 typedef PT0 ParameterType0;
3468
3469 /**
3470 * Definition of the 2rd parameter type of this callback object.
3471 */
3472 typedef PT1 ParameterType1;
3473
3474 /**
3475 * Definition of the 3rd parameter type of this callback object.
3476 */
3477 typedef PT2 ParameterType2;
3478
3479 /**
3480 * Definition of the 4th parameter type of this callback object.
3481 */
3482 typedef PT3 ParameterType3;
3483
3484 /**
3485 * Definition of the 5th parameter type of this callback object.
3486 */
3487 typedef PT4 ParameterType4;
3488
3489 /**
3490 * Definition of the 6th parameter type of this callback object.
3491 */
3492 typedef PT5 ParameterType5;
3493
3494 /**
3495 * Definition of the 7th parameter type of this callback object.
3496 */
3497 typedef PT6 ParameterType6;
3498
3499 /**
3500 * Definition of the 8th parameter type of this callback object.
3501 */
3502 typedef PT7 ParameterType7;
3503
3504 /**
3505 * Definition of the 9th parameter type of this callback object.
3506 */
3507 typedef PT8 ParameterType8;
3508
3509 /**
3510 * Definition of the 10th parameter type of this callback object.
3511 */
3512 typedef PT9 ParameterType9;
3513
3514 /**
3515 * Definition of the 11th parameter type of this callback object.
3516 */
3517 typedef PT10 ParameterType10;
3518
3519 /**
3520 * Definition of the 12th parameter type of this callback object.
3521 */
3522 typedef PT11 ParameterType11;
3523
3524 /**
3525 * Definition of the 13th parameter type of this callback object.
3526 */
3527 typedef PT12 ParameterType12;
3528
3529 /**
3530 * Definition of the 14th parameter type of this callback object.
3531 */
3532 typedef PT13 ParameterType13;
3533
3534 /**
3535 * Definition of the 15th parameter type of this callback object.
3536 */
3537 typedef PT14 ParameterType14;
3538
3539 /**
3540 * Definition of the 16th parameter type of this callback object.
3541 */
3542 typedef PT15 ParameterType15;
3543
3544 /**
3545 * Definition of the 17th parameter type of this callback object.
3546 */
3547 typedef PT16 ParameterType16;
3548
3549 /**
3550 * Definition of the 18th parameter type of this callback object.
3551 */
3552 typedef PT17 ParameterType17;
3553
3554 /**
3555 * Definition of the 19th parameter type of this callback object.
3556 */
3557 typedef PT18 ParameterType18;
3558
3559 /**
3560 * Definition of the 20th parameter type of this callback object.
3561 */
3562 typedef PT19 ParameterType19;
3563
3564 public:
3565
3566 /**
3567 * Creates an empty callback container.
3568 */
3569 inline Callback();
3570
3571 /**
3572 * Copies a callback container.
3573 * @param callback The callback container to copy
3574 */
3575 inline Callback(const Callback& callback);
3576
3577 /**
3578 * Creates a new callback container for a member function.
3579 * @param object Class object holding the member function
3580 * @param function Local function pointer of the member function
3581 */
3583
3584 /**
3585 * Creates a new callback container for a static function.
3586 * @param function Local function pointer of the static function
3587 */
3589
3590 /**
3591 * Destructs a callback container object.
3592 */
3593 virtual ~Callback();
3594
3595 /**
3596 * Creates a new callback container for a member function.
3597 * @param object Class object holding the member function
3598 * @param function Local function pointer of the member function
3599 * @return New callback container
3600 */
3601 template<typename CT>
3603
3604 /**
3605 * Creates a new callback container for a static function.
3606 * @param function Local function pointer of the static function
3607 * @return New callback container
3608 */
3610
3611
3612 /**
3613 * Returns whether this container holds no function.
3614 * @return True, if so
3615 */
3616 inline bool isNull() const;
3617
3618 /**
3619 * Calls the encapsulated callback function.
3620 * @param param0 Possible first function parameter
3621 * @param param1 Possible second function parameter
3622 * @param param2 Possible third function parameter
3623 * @param param3 Possible fourth function parameter
3624 * @param param4 Possible fifth function parameter
3625 * @param param5 Possible sixth function parameter
3626 * @param param6 Possible seventh function parameter
3627 * @param param7 Possible eighth function parameter
3628 * @param param8 Possible ninth function parameter
3629 * @param param9 Possible tenth function parameter
3630 * @param param10 11th function parameter
3631 * @param param11 12th function parameter
3632 * @param param12 13th function parameter
3633 * @param param13 14th function parameter
3634 * @param param14 15th function parameter
3635 * @param param15 16th function parameter
3636 * @param param16 17th function parameter
3637 * @param param17 18th function parameter
3638 * @param param18 19th function parameter
3639 * @param param19 20th function parameter
3640 * @return Return value
3641 */
3642 inline RT operator()(PT0 param0 = PT0(), PT1 param1 = PT1(), PT2 param2 = PT2(), PT3 param3 = PT3(), PT4 param4 = PT4(), PT5 param5 = PT5(), PT6 param6 = PT6(), PT7 param7 = PT7(), PT8 param8 = PT8(), PT9 param9 = PT9(), PT10 param10 = PT10(), PT11 param11 = PT11(), PT12 param12 = PT12(), PT13 param13 = PT13(), PT14 param14 = PT14(), PT15 param15 = PT15(), PT16 param16 = PT16(), PT17 param17 = PT17(), PT18 param18 = PT18(), PT19 param19 = PT19()) const;
3643
3644 /**
3645 * Assigns a callback container.
3646 * @param callback The callback container to assign
3647 * @return Reference to this object
3648 */
3649 inline Callback& operator=(const Callback& callback);
3650
3651 /**
3652 * Returns whether two callback container addressing the same class object and the same local member function.
3653 * @param callback Right callback to check
3654 * @return True, if so
3655 */
3656 inline bool operator==(const Callback& callback) const;
3657
3658 /**
3659 * Returns whether two callback container addressing not the same class object or not the same local member function.
3660 * @param callback Right callback to check
3661 * @return True, if so
3662 */
3663 inline bool operator!=(const Callback& callback) const;
3664
3665 /**
3666 * Returns whether this container holds an encapsulated function.
3667 * @return True, if so
3668 */
3669 explicit inline operator bool() const;
3670
3671 private:
3672
3673 /**
3674 * Creates a new function container by a given base function.
3675 * @param base The base function to create a new container form
3676 */
3678
3679 private:
3680
3681 /// Base function container.
3683};
3684
3685template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
3691
3692template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
3694 callbackFunction(callback.callbackFunction ? callback.callbackFunction->copy() : nullptr)
3695{
3696 // nothing to do here
3697}
3698
3699template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
3700template<typename CT>
3702 callbackFunction(new MemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>(object, function))
3703{
3704 // nothing to do here
3705}
3706
3707template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
3709 callbackFunction(new StaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>(function))
3710{
3711 // nothing to do here
3712}
3713
3714template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
3720
3721template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
3726
3727template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
3728template<typename CT>
3733
3734template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
3739
3740template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
3745
3746template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
3747inline RT Callback<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>::operator()(PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, PT18 param18, PT19 param19) const
3748{
3749 ocean_assert(callbackFunction != nullptr);
3750
3751 return callbackFunction->call(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18, param19);
3752}
3753
3754template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
3762
3763template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
3765{
3766 if (callbackFunction == nullptr && callback.callbackFunction == nullptr)
3767 return true;
3768
3769 if (callbackFunction == nullptr || callback.callbackFunction == nullptr)
3770 {
3771 ocean_assert((callbackFunction != nullptr && callback.callbackFunction == nullptr) || (callbackFunction == nullptr && callback.callbackFunction != nullptr));
3772
3773 return false;
3774 }
3775
3776 return *callbackFunction == *callback.callbackFunction;
3777}
3778
3779template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
3784
3785template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11, typename PT12, typename PT13, typename PT14, typename PT15, typename PT16, typename PT17, typename PT18, typename PT19>
3790
3791/**
3792 * This class implements a vector holding several callbacks with the same type.
3793 * The class is thread-safe but does not allow to remove or add new callbacks while a callback is currently invoked (by the same thread).<br>
3794 * @see ConcurrentCallbacks, Callback.
3795 * @tparam T Type of the callbacks to be stored
3796 * @ingroup base
3797 */
3798template <typename T>
3800{
3801 public:
3802
3803 /**
3804 * Definition of the return type of the callback object.
3805 */
3806 typedef typename T::ReturnType ReturnType;
3807
3808 /**
3809 * Definition of the 1st function parameter of the callback object.
3810 */
3811 typedef typename T::ParameterType0 ParameterType0;
3812
3813 /**
3814 * Definition of the 2nd function parameter of the callback object.
3815 */
3816 typedef typename T::ParameterType1 ParameterType1;
3817
3818 /**
3819 * Definition of the 3rd function parameter of the callback object.
3820 */
3821 typedef typename T::ParameterType2 ParameterType2;
3822
3823 /**
3824 * Definition of the 4th function parameter of the callback object.
3825 */
3826 typedef typename T::ParameterType3 ParameterType3;
3827
3828 /**
3829 * Definition of the 5th function parameter of the callback object.
3830 */
3831 typedef typename T::ParameterType4 ParameterType4;
3832
3833 /**
3834 * Definition of the 6th function parameter of the callback object.
3835 */
3836 typedef typename T::ParameterType5 ParameterType5;
3837
3838 /**
3839 * Definition of the 7th function parameter of the callback object.
3840 */
3841 typedef typename T::ParameterType6 ParameterType6;
3842
3843 /**
3844 * Definition of the 8th function parameter of the callback object.
3845 */
3846 typedef typename T::ParameterType7 ParameterType7;
3847
3848 /**
3849 * Definition of the 9th function parameter of the callback object.
3850 */
3851 typedef typename T::ParameterType8 ParameterType8;
3852
3853 /**
3854 * Definition of the 10th function parameter of the callback object.
3855 */
3856 typedef typename T::ParameterType9 ParameterType9;
3857
3858 /**
3859 * Definition of the 11th function parameter of the callback object.
3860 */
3861 typedef typename T::ParameterType10 ParameterType10;
3862
3863 /**
3864 * Definition of the 12th function parameter of the callback object.
3865 */
3866 typedef typename T::ParameterType11 ParameterType11;
3867
3868 /**
3869 * Definition of the 13th function parameter of the callback object.
3870 */
3871 typedef typename T::ParameterType12 ParameterType12;
3872
3873 /**
3874 * Definition of the 14th function parameter of the callback object.
3875 */
3876 typedef typename T::ParameterType13 ParameterType13;
3877
3878 /**
3879 * Definition of the 15th function parameter of the callback object.
3880 */
3881 typedef typename T::ParameterType14 ParameterType14;
3882
3883 /**
3884 * Definition of the 16th function parameter of the callback object.
3885 */
3886 typedef typename T::ParameterType15 ParameterType15;
3887
3888 /**
3889 * Definition of the 17th function parameter of the callback object.
3890 */
3891 typedef typename T::ParameterType16 ParameterType16;
3892
3893 /**
3894 * Definition of the 18th function parameter of the callback object.
3895 */
3896 typedef typename T::ParameterType17 ParameterType17;
3897
3898 /**
3899 * Definition of the 19th function parameter of the callback object.
3900 */
3901 typedef typename T::ParameterType18 ParameterType18;
3902
3903 /**
3904 * Definition of the 20th function parameter of the callback object.
3905 */
3906 typedef typename T::ParameterType19 ParameterType19;
3907
3908 protected:
3909
3910 /**
3911 * Definition of a vector holding callback objects.
3912 */
3913 typedef std::vector<T> CallbackObjects;
3914
3915 public:
3916
3917 /**
3918 * Creates a new object without any initial callback function.
3919 */
3920 inline Callbacks();
3921
3922 /**
3923 * Copy constructor.
3924 * @param callbacks The callbacks object to copy
3925 */
3926 inline Callbacks(const Callbacks<T>& callbacks);
3927
3928 /**
3929 * Move constructor.
3930 * @param callbacks The callbacks object to move
3931 */
3932 inline Callbacks(Callbacks<T>&& callbacks) noexcept;
3933
3934 /**
3935 * Destructs this object.
3936 */
3937 inline ~Callbacks();
3938
3939 /**
3940 * Adds a new callback object.
3941 * @param callback The callback to be added
3942 */
3943 void addCallback(const T& callback);
3944
3945 /**
3946 * Removes a callback object.
3947 * @param callback The callback to be removed
3948 */
3949 void removeCallback(const T& callback);
3950
3951 /**
3952 * Calls all encapsulated callback functions.
3953 * @param param0 Possible first function parameter
3954 * @param param1 Possible second function parameter
3955 * @param param2 Possible third function parameter
3956 * @param param3 Possible fourth function parameter
3957 * @param param4 Possible fifth function parameter
3958 * @param param5 Possible sixth function parameter
3959 * @param param6 Possible seventh function parameter
3960 * @param param7 Possible eighth function parameter
3961 * @param param8 Possible ninth function parameter
3962 * @param param9 Possible tenth function parameter
3963 * @param param10 11th function parameter
3964 * @param param11 12th function parameter
3965 * @param param12 13th function parameter
3966 * @param param13 14th function parameter
3967 * @param param14 15th function parameter
3968 * @param param15 16th function parameter
3969 * @param param16 17th function parameter
3970 * @param param17 18th function parameter
3971 * @param param18 19th function parameter
3972 * @param param19 20th function parameter
3973 * @return Return value of the last callback object
3974 */
3976
3977 /**
3978 * Returns whether no callback is stored.
3979 * @return True, if so
3980 */
3981 inline bool isEmpty() const;
3982
3983 /**
3984 * Returns whether at least one callback is stored.
3985 * @return True, if so
3986 */
3987 explicit inline operator bool() const;
3988
3989 /**
3990 * Assign operator.
3991 * @param callbacks The callbacks object to assign
3992 */
3993 inline Callbacks<T>& operator=(const Callbacks<T>& callbacks);
3994
3995 /**
3996 * Move operator.
3997 * @param callbacks The callbacks object to move
3998 */
3999 inline Callbacks<T>& operator=(Callbacks<T>&& callbacks) noexcept;
4000
4001 protected:
4002
4003 /// The callback objects.
4005
4006 /// Callback lock.
4008};
4009
4010template <typename T>
4012{
4013 // nothing to do here
4014}
4015
4016template <typename T>
4017inline Callbacks<T>::Callbacks(const Callbacks<T>& callbacks) :
4018 callbackObjects(callbacks.callbackObjects)
4019{
4020 // nothing to do here
4021}
4022
4023template <typename T>
4024inline Callbacks<T>::Callbacks(Callbacks<T>&& callbacks) noexcept :
4025 callbackObjects(std::move(callbacks.callbackObjects))
4026{
4027 // nothing to do here
4028}
4029
4030template <typename T>
4032{
4033 ocean_assert(callbackObjects.empty());
4034}
4035
4036template <typename T>
4037void Callbacks<T>::addCallback(const T& callback)
4038{
4039 const ScopedLock scopedLock(callbackLock);
4040
4041#ifdef OCEAN_DEBUG
4042 for (typename CallbackObjects::const_iterator i = callbackObjects.begin(); i != callbackObjects.end(); ++i)
4043 ocean_assert(*i != callback && "The callback has been added already!");
4044#endif // OCEAN_DEBUG
4045
4046 callbackObjects.push_back(callback);
4047}
4048
4049template <typename T>
4050void Callbacks<T>::removeCallback(const T& callback)
4051{
4052 const ScopedLock scopedLock(callbackLock);
4053
4054 for (typename CallbackObjects::iterator i = callbackObjects.begin(); i != callbackObjects.end(); ++i)
4055 if (*i == callback)
4056 {
4057 callbackObjects.erase(i);
4058 return;
4059 }
4060
4061 ocean_assert(false && "Unknown callback!");
4062}
4063
4064template <typename T>
4066{
4067 const ScopedLock scopedLock(callbackLock);
4068
4069 if (callbackObjects.empty())
4070 {
4071 return ReturnType();
4072 }
4073
4074 for (int n = 0; n < int(callbackObjects.size()) - 1; ++n)
4075 {
4076 callbackObjects[n](param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18, param19);
4077 }
4078
4079 return callbackObjects.back()(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18, param19);
4080}
4081
4082template <typename T>
4083inline bool Callbacks<T>::isEmpty() const
4084{
4085 const ScopedLock scopedLock(callbackLock);
4086 return callbackObjects.empty();
4087}
4088
4089template <typename T>
4091{
4092 callbackObjects = callbacks.callbackObjects;
4093
4094 return *this;
4095}
4096
4097template <typename T>
4099{
4100 if (this != &callbacks)
4101 {
4102 callbackObjects = std::move(callbacks.callbackObjects);
4103 }
4104
4105 return *this;
4106}
4107
4108template <typename T>
4109inline Callbacks<T>::operator bool() const
4110{
4111 const ScopedLock scopedLock(callbackLock);
4112 return !callbackObjects.empty();
4113}
4114
4115/**
4116 * This class implements an extended callbacks object and is also thread-safe.
4117 * This implementation allows to remove or add callback objects while the callbacks are invoked (by the same thread).<br>
4118 * @see Callbacks, Callback.
4119 * @tparam T Type of the callbacks to be stored
4120 * @ingroup base
4121 */
4122template <typename T>
4124{
4125 public:
4126
4127 /**
4128 * Definition of the 1st function parameter of the callback object.
4129 */
4130 typedef typename T::ParameterType0 ParameterType0;
4131
4132 /**
4133 * Definition of the 2nd function parameter of the callback object.
4134 */
4135 typedef typename T::ParameterType1 ParameterType1;
4136
4137 /**
4138 * Definition of the 3rd function parameter of the callback object.
4139 */
4140 typedef typename T::ParameterType2 ParameterType2;
4141
4142 /**
4143 * Definition of the 4th function parameter of the callback object.
4144 */
4145 typedef typename T::ParameterType3 ParameterType3;
4146
4147 /**
4148 * Definition of the 5th function parameter of the callback object.
4149 */
4150 typedef typename T::ParameterType4 ParameterType4;
4151
4152 /**
4153 * Definition of the 6th function parameter of the callback object.
4154 */
4155 typedef typename T::ParameterType5 ParameterType5;
4156
4157 /**
4158 * Definition of the 7th function parameter of the callback object.
4159 */
4160 typedef typename T::ParameterType6 ParameterType6;
4161
4162 /**
4163 * Definition of the 8th function parameter of the callback object.
4164 */
4165 typedef typename T::ParameterType7 ParameterType7;
4166
4167 /**
4168 * Definition of the 9th function parameter of the callback object.
4169 */
4170 typedef typename T::ParameterType8 ParameterType8;
4171
4172 /**
4173 * Definition of the 10th function parameter of the callback object.
4174 */
4175 typedef typename T::ParameterType9 ParameterType9;
4176
4177 /**
4178 * Definition of the 11th function parameter of the callback object.
4179 */
4180 typedef typename T::ParameterType10 ParameterType10;
4181
4182 /**
4183 * Definition of the 12th function parameter of the callback object.
4184 */
4185 typedef typename T::ParameterType11 ParameterType11;
4186
4187 /**
4188 * Definition of the 13th function parameter of the callback object.
4189 */
4190 typedef typename T::ParameterType12 ParameterType12;
4191
4192 /**
4193 * Definition of the 14th function parameter of the callback object.
4194 */
4195 typedef typename T::ParameterType13 ParameterType13;
4196
4197 /**
4198 * Definition of the 15th function parameter of the callback object.
4199 */
4200 typedef typename T::ParameterType14 ParameterType14;
4201
4202 /**
4203 * Definition of the 16th function parameter of the callback object.
4204 */
4205 typedef typename T::ParameterType15 ParameterType15;
4206
4207 /**
4208 * Definition of the 17th function parameter of the callback object.
4209 */
4210 typedef typename T::ParameterType16 ParameterType16;
4211
4212 /**
4213 * Definition of the 18th function parameter of the callback object.
4214 */
4215 typedef typename T::ParameterType17 ParameterType17;
4216
4217 /**
4218 * Definition of the 19th function parameter of the callback object.
4219 */
4220 typedef typename T::ParameterType18 ParameterType18;
4221
4222 /**
4223 * Definition of the 20th function parameter of the callback object.
4224 */
4225 typedef typename T::ParameterType19 ParameterType19;
4226
4227 public:
4228
4229 /**
4230 * Creates a new callbacks object.
4231 */
4233
4234 /**
4235 * Destructs a callbacks object.
4236 */
4238
4239 /**
4240 * Adds a new callback object.
4241 * @param callback The callback to be added
4242 */
4243 void addCallback(const T& callback);
4244
4245 /**
4246 * Removes a callback object.
4247 * @param callback The callback to be removed
4248 */
4249 void removeCallback(const T& callback);
4250
4251 /**
4252 * Calls all encapsulated callback functions.
4253 * @param param0 Possible first function parameter
4254 * @param param1 Possible second function parameter
4255 * @param param2 Possible third function parameter
4256 * @param param3 Possible fourth function parameter
4257 * @param param4 Possible fifth function parameter
4258 * @param param5 Possible sixth function parameter
4259 * @param param6 Possible seventh function parameter
4260 * @param param7 Possible eighth function parameter
4261 * @param param8 Possible ninth function parameter
4262 * @param param9 Possible tenth function parameter
4263 * @param param10 11th function parameter
4264 * @param param11 12th function parameter
4265 * @param param12 13th function parameter
4266 * @param param13 14th function parameter
4267 * @param param14 15th function parameter
4268 * @param param15 16th function parameter
4269 * @param param16 17th function parameter
4270 * @param param17 18th function parameter
4271 * @param param18 19th function parameter
4272 * @param param19 20th function parameter
4273 */
4275
4276 private:
4277
4278 /// Intermediate callbacks to be removed.
4280
4281 /// Intermediate callbacks to be added.
4283
4284 /// State that the callbacks are currently invoked.
4285 mutable bool callbacksInvoked;
4286};
4287
4288template <typename T>
4290 callbacksInvoked(false)
4291{
4292 // nothing to do here
4293}
4294
4295template <typename T>
4297{
4298 ocean_assert(intermediateRemoveCallbacks.empty());
4299 ocean_assert(intermediateAddCallbacks.empty());
4300 ocean_assert(!callbacksInvoked);
4301}
4302
4303template <typename T>
4305{
4306 ocean_assert(callback);
4307
4308 const ScopedLock scopedLock(Callbacks<T>::callbackLock);
4309
4310 if (callbacksInvoked)
4311 {
4312
4313#ifdef OCEAN_DEBUG
4315 ocean_assert(*i != callback && "The callback has been added already!");
4316 for (typename Callbacks<T>::CallbackObjects::const_iterator i = intermediateAddCallbacks.begin(); i != intermediateAddCallbacks.end(); ++i)
4317 ocean_assert(*i != callback && "The callback has been added already!");
4318#endif // OCEAN_DEBUG
4319
4320 intermediateAddCallbacks.push_back(callback);
4321 }
4322 else
4323 {
4324 Callbacks<T>::addCallback(callback);
4325 }
4326}
4327
4328template <typename T>
4330{
4331 const ScopedLock scopedLock(Callbacks<T>::callbackLock);
4332
4333 if (callbacksInvoked)
4334 {
4335
4336#ifdef OCEAN_DEBUG
4337
4338 bool exists = false;
4340 {
4341 if (*i == callback)
4342 {
4343 exists = true;
4344 break;
4345 }
4346 }
4347
4348 ocean_assert(exists && "The callback does not exist!");
4349
4350 for (typename Callbacks<T>::CallbackObjects::const_iterator i = intermediateRemoveCallbacks.begin(); i != intermediateRemoveCallbacks.end(); ++i)
4351 {
4352 ocean_assert(*i != callback && "The callback has been removed already!");
4353 }
4354
4355#endif // OCEAN_DEBUG
4356
4357 intermediateRemoveCallbacks.push_back(callback);
4358 }
4359 else
4360 {
4362 }
4363}
4364
4365template <typename T>
4367{
4368 const ScopedLock scopedLock(Callbacks<T>::callbackLock);
4369
4370 callbacksInvoked = true;
4371
4372 Callbacks<T>::operator()(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18, param19);
4373
4374 callbacksInvoked = false;
4375
4376 if (!intermediateRemoveCallbacks.empty())
4377 {
4378 for (typename Callbacks<T>::CallbackObjects::const_iterator i = intermediateRemoveCallbacks.begin(); i != intermediateRemoveCallbacks.end(); ++i)
4379 {
4381 }
4382
4383 intermediateRemoveCallbacks.clear();
4384 }
4385
4386 if (!intermediateAddCallbacks.empty())
4387 {
4388 for (typename Callbacks<T>::CallbackObjects::const_iterator i = intermediateAddCallbacks.begin(); i != intermediateAddCallbacks.end(); ++i)
4389 {
4391 }
4392
4393 intermediateAddCallbacks.clear();
4394 }
4395}
4396
4397}
4398
4399#endif // META_OCEAN_BASE_CALLBACK_H
This class implements a container for callback functions.
Definition Callback.h:3456
PT13 ParameterType13
Definition of the 14th parameter type of this callback object.
Definition Callback.h:3532
PT10 ParameterType10
Definition of the 11th parameter type of this callback object.
Definition Callback.h:3517
static Callback< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19 > create(CT &object, typename MemberFunctionPointerMaker< CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19 >::Type function)
Creates a new callback container for a member function.
Definition Callback.h:3729
PT4 ParameterType4
Definition of the 5th parameter type of this callback object.
Definition Callback.h:3487
PT7 ParameterType7
Definition of the 8th parameter type of this callback object.
Definition Callback.h:3502
Callback(typename StaticFunctionPointerMaker< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19 >::Type function)
Creates a new callback container for a static function.
Definition Callback.h:3708
PT3 ParameterType3
Definition of the 4th parameter type of this callback object.
Definition Callback.h:3482
static Callback< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19 > createStatic(typename StaticFunctionPointerMaker< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19 >::Type function)
Creates a new callback container for a static function.
Definition Callback.h:3735
PT17 ParameterType17
Definition of the 18th parameter type of this callback object.
Definition Callback.h:3552
PT9 ParameterType9
Definition of the 10th parameter type of this callback object.
Definition Callback.h:3512
PT2 ParameterType2
Definition of the 3rd parameter type of this callback object.
Definition Callback.h:3477
PT1 ParameterType1
Definition of the 2rd parameter type of this callback object.
Definition Callback.h:3472
virtual ~Callback()
Destructs a callback container object.
Definition Callback.h:3722
PT12 ParameterType12
Definition of the 13th parameter type of this callback object.
Definition Callback.h:3527
Callback()
Creates an empty callback container.
Definition Callback.h:3686
PT0 ParameterType0
Definition of the 1st parameter type of this callback object.
Definition Callback.h:3467
PT14 ParameterType14
Definition of the 15th parameter type of this callback object.
Definition Callback.h:3537
FunctionBase< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19 > * callbackFunction
Base function container.
Definition Callback.h:3682
PT15 ParameterType15
Definition of the 16th parameter type of this callback object.
Definition Callback.h:3542
Callback(CT &object, typename MemberFunctionPointerMaker< CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19 >::Type function)
Creates a new callback container for a member function.
Definition Callback.h:3701
PT6 ParameterType6
Definition of the 7th parameter type of this callback object.
Definition Callback.h:3497
bool operator!=(const Callback &callback) const
Returns whether two callback container addressing not the same class object or not the same local mem...
Definition Callback.h:3780
PT19 ParameterType19
Definition of the 20th parameter type of this callback object.
Definition Callback.h:3562
bool operator==(const Callback &callback) const
Returns whether two callback container addressing the same class object and the same local member fun...
Definition Callback.h:3764
PT8 ParameterType8
Definition of the 9th parameter type of this callback object.
Definition Callback.h:3507
PT16 ParameterType16
Definition of the 17th parameter type of this callback object.
Definition Callback.h:3547
PT18 ParameterType18
Definition of the 19th parameter type of this callback object.
Definition Callback.h:3557
Callback & operator=(const Callback &callback)
Assigns a callback container.
Definition Callback.h:3755
RT ReturnType
Definition of the return type of this callback object.
Definition Callback.h:3462
PT11 ParameterType11
Definition of the 12th parameter type of this callback object.
Definition Callback.h:3522
PT5 ParameterType5
Definition of the 6th parameter type of this callback object.
Definition Callback.h:3492
Callback(FunctionBase< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19 > *base)
Creates a new function container by a given base function.
Definition Callback.h:3715
Callback(const Callback &callback)
Copies a callback container.
Definition Callback.h:3693
bool isNull() const
Returns whether this container holds no function.
Definition Callback.h:3741
RT operator()(PT0 param0=PT0(), PT1 param1=PT1(), PT2 param2=PT2(), PT3 param3=PT3(), PT4 param4=PT4(), PT5 param5=PT5(), PT6 param6=PT6(), PT7 param7=PT7(), PT8 param8=PT8(), PT9 param9=PT9(), PT10 param10=PT10(), PT11 param11=PT11(), PT12 param12=PT12(), PT13 param13=PT13(), PT14 param14=PT14(), PT15 param15=PT15(), PT16 param16=PT16(), PT17 param17=PT17(), PT18 param18=PT18(), PT19 param19=PT19()) const
Calls the encapsulated callback function.
Definition Callback.h:3747
This class implements a vector holding several callbacks with the same type.
Definition Callback.h:3800
bool isEmpty() const
Returns whether no callback is stored.
Definition Callback.h:4083
Callbacks()
Creates a new object without any initial callback function.
Definition Callback.h:4011
Callbacks< T > & operator=(Callbacks< T > &&callbacks) noexcept
Move operator.
Definition Callback.h:4098
Callbacks(Callbacks< T > &&callbacks) noexcept
Move constructor.
Definition Callback.h:4024
T::ParameterType10 ParameterType10
Definition of the 11th function parameter of the callback object.
Definition Callback.h:3861
T::ParameterType2 ParameterType2
Definition of the 3rd function parameter of the callback object.
Definition Callback.h:3821
Callbacks(const Callbacks< T > &callbacks)
Copy constructor.
Definition Callback.h:4017
T::ParameterType7 ParameterType7
Definition of the 8th function parameter of the callback object.
Definition Callback.h:3846
T::ParameterType15 ParameterType15
Definition of the 16th function parameter of the callback object.
Definition Callback.h:3886
T::ParameterType1 ParameterType1
Definition of the 2nd function parameter of the callback object.
Definition Callback.h:3816
T::ParameterType6 ParameterType6
Definition of the 7th function parameter of the callback object.
Definition Callback.h:3841
CallbackObjects callbackObjects
The callback objects.
Definition Callback.h:4004
T::ReturnType ReturnType
Definition of the return type of the callback object.
Definition Callback.h:3806
T::ParameterType18 ParameterType18
Definition of the 19th function parameter of the callback object.
Definition Callback.h:3901
T::ParameterType17 ParameterType17
Definition of the 18th function parameter of the callback object.
Definition Callback.h:3896
void addCallback(const T &callback)
Adds a new callback object.
Definition Callback.h:4037
T::ParameterType13 ParameterType13
Definition of the 14th function parameter of the callback object.
Definition Callback.h:3876
T::ParameterType3 ParameterType3
Definition of the 4th function parameter of the callback object.
Definition Callback.h:3826
T::ParameterType5 ParameterType5
Definition of the 6th function parameter of the callback object.
Definition Callback.h:3836
T::ParameterType16 ParameterType16
Definition of the 17th function parameter of the callback object.
Definition Callback.h:3891
T::ParameterType14 ParameterType14
Definition of the 15th function parameter of the callback object.
Definition Callback.h:3881
T::ParameterType12 ParameterType12
Definition of the 13th function parameter of the callback object.
Definition Callback.h:3871
void removeCallback(const T &callback)
Removes a callback object.
Definition Callback.h:4050
Callbacks< T > & operator=(const Callbacks< T > &callbacks)
Assign operator.
Definition Callback.h:4090
Lock callbackLock
Callback lock.
Definition Callback.h:4007
T::ParameterType8 ParameterType8
Definition of the 9th function parameter of the callback object.
Definition Callback.h:3851
T::ParameterType9 ParameterType9
Definition of the 10th function parameter of the callback object.
Definition Callback.h:3856
~Callbacks()
Destructs this object.
Definition Callback.h:4031
T::ParameterType0 ParameterType0
Definition of the 1st function parameter of the callback object.
Definition Callback.h:3811
std::vector< T > CallbackObjects
Definition of a vector holding callback objects.
Definition Callback.h:3913
ReturnType operator()(ParameterType0 param0=ParameterType0(), ParameterType1 param1=ParameterType1(), ParameterType2 param2=ParameterType2(), ParameterType3 param3=ParameterType3(), ParameterType4 param4=ParameterType4(), ParameterType5 param5=ParameterType5(), ParameterType6 param6=ParameterType6(), ParameterType7 param7=ParameterType7(), ParameterType8 param8=ParameterType8(), ParameterType9 param9=ParameterType9(), ParameterType10 param10=ParameterType10(), ParameterType11 param11=ParameterType11(), ParameterType12 param12=ParameterType12(), ParameterType13 param13=ParameterType13(), ParameterType14 param14=ParameterType14(), ParameterType15 param15=ParameterType15(), ParameterType16 param16=ParameterType16(), ParameterType17 param17=ParameterType17(), ParameterType18 param18=ParameterType18(), ParameterType19 param19=ParameterType19()) const
Calls all encapsulated callback functions.
Definition Callback.h:4065
T::ParameterType19 ParameterType19
Definition of the 20th function parameter of the callback object.
Definition Callback.h:3906
T::ParameterType11 ParameterType11
Definition of the 12th function parameter of the callback object.
Definition Callback.h:3866
T::ParameterType4 ParameterType4
Definition of the 5th function parameter of the callback object.
Definition Callback.h:3831
This class implements a callback function container using defined function parameters.
Definition Caller.h:1565
This class implements an extended callbacks object and is also thread-safe.
Definition Callback.h:4124
T::ParameterType19 ParameterType19
Definition of the 20th function parameter of the callback object.
Definition Callback.h:4225
T::ParameterType15 ParameterType15
Definition of the 16th function parameter of the callback object.
Definition Callback.h:4205
T::ParameterType16 ParameterType16
Definition of the 17th function parameter of the callback object.
Definition Callback.h:4210
T::ParameterType7 ParameterType7
Definition of the 8th function parameter of the callback object.
Definition Callback.h:4165
T::ParameterType5 ParameterType5
Definition of the 6th function parameter of the callback object.
Definition Callback.h:4155
T::ParameterType17 ParameterType17
Definition of the 18th function parameter of the callback object.
Definition Callback.h:4215
T::ParameterType13 ParameterType13
Definition of the 14th function parameter of the callback object.
Definition Callback.h:4195
T::ParameterType14 ParameterType14
Definition of the 15th function parameter of the callback object.
Definition Callback.h:4200
T::ParameterType2 ParameterType2
Definition of the 3rd function parameter of the callback object.
Definition Callback.h:4140
T::ParameterType10 ParameterType10
Definition of the 11th function parameter of the callback object.
Definition Callback.h:4180
T::ParameterType12 ParameterType12
Definition of the 13th function parameter of the callback object.
Definition Callback.h:4190
Callbacks< T >::CallbackObjects intermediateRemoveCallbacks
Intermediate callbacks to be removed.
Definition Callback.h:4279
T::ParameterType9 ParameterType9
Definition of the 10th function parameter of the callback object.
Definition Callback.h:4175
bool callbacksInvoked
State that the callbacks are currently invoked.
Definition Callback.h:4285
T::ParameterType1 ParameterType1
Definition of the 2nd function parameter of the callback object.
Definition Callback.h:4135
T::ParameterType6 ParameterType6
Definition of the 7th function parameter of the callback object.
Definition Callback.h:4160
void addCallback(const T &callback)
Adds a new callback object.
Definition Callback.h:4304
T::ParameterType11 ParameterType11
Definition of the 12th function parameter of the callback object.
Definition Callback.h:4185
T::ParameterType4 ParameterType4
Definition of the 5th function parameter of the callback object.
Definition Callback.h:4150
T::ParameterType18 ParameterType18
Definition of the 19th function parameter of the callback object.
Definition Callback.h:4220
T::ParameterType8 ParameterType8
Definition of the 9th function parameter of the callback object.
Definition Callback.h:4170
ConcurrentCallbacks()
Creates a new callbacks object.
Definition Callback.h:4289
~ConcurrentCallbacks()
Destructs a callbacks object.
Definition Callback.h:4296
T::ParameterType3 ParameterType3
Definition of the 4th function parameter of the callback object.
Definition Callback.h:4145
void removeCallback(const T &callback)
Removes a callback object.
Definition Callback.h:4329
void operator()(ParameterType0 param0=ParameterType0(), ParameterType1 param1=ParameterType1(), ParameterType2 param2=ParameterType2(), ParameterType3 param3=ParameterType3(), ParameterType4 param4=ParameterType4(), ParameterType5 param5=ParameterType5(), ParameterType6 param6=ParameterType6(), ParameterType7 param7=ParameterType7(), ParameterType8 param8=ParameterType8(), ParameterType9 param9=ParameterType9(), ParameterType10 param10=ParameterType10(), ParameterType11 param11=ParameterType11(), ParameterType12 param12=ParameterType12(), ParameterType13 param13=ParameterType13(), ParameterType14 param14=ParameterType14(), ParameterType15 param15=ParameterType15(), ParameterType16 param16=ParameterType16(), ParameterType17 param17=ParameterType17(), ParameterType18 param18=ParameterType18(), ParameterType19 param19=ParameterType19())
Calls all encapsulated callback functions.
Definition Callback.h:4366
Callbacks< T >::CallbackObjects intermediateAddCallbacks
Intermediate callbacks to be added.
Definition Callback.h:4282
T::ParameterType0 ParameterType0
Definition of the 1st function parameter of the callback object.
Definition Callback.h:4130
This class is the base class for an unparameterized function container.
Definition Callback.h:3052
virtual RT call(PT0 param0=PT0(), PT1 param1=PT1(), PT2 param2=PT2(), PT3 param3=PT3(), PT4 param4=PT4(), PT5 param5=PT5(), PT6 param6=PT6(), PT7 param7=PT7(), PT8 param8=PT8(), PT9 param9=PT9(), PT10 param10=PT10(), PT11 param11=PT11(), PT12 param12=PT12(), PT13 param13=PT13(), PT14 param14=PT14(), PT15 param15=PT15(), PT16 param16=PT16(), PT17 param17=PT17(), PT18 param18=PT18(), PT19 param19=PT19()) const =0
Calls the internal encapsulated function by given parameters.
virtual ~FunctionBase()
Destructs the object.
Definition Callback.h:3101
virtual FunctionBase * copy() const =0
Creates a copy of the entire derived object.
virtual bool operator==(const FunctionBase< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19 > &functionBase) const =0
Returns whether two functions are equal.
This class implements a recursive lock object.
Definition Lock.h:31
This class implements a helper class providing a functionality to call a member function defined by t...
Definition Callback.h:861
static RT call(CT *functionClass, typename MemberFunctionPointerMaker< CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19 >::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, PT18 param18, PT19 param19)
Calls a function defined by the function pointer the class object and the function parameters.
Definition Callback.h:1906
This class implements an unparameterized member function container.
Definition Callback.h:3137
FunctionType functionPointer
Function pointer of the member function.
Definition Callback.h:3201
MemberFunction(CT &object, FunctionType function)
Creates a new member function object.
Definition Callback.h:3205
virtual RT call(PT0 param0=PT0(), PT1 param1=PT1(), PT2 param2=PT2(), PT3 param3=PT3(), PT4 param4=PT4(), PT5 param5=PT5(), PT6 param6=PT6(), PT7 param7=PT7(), PT8 param8=PT8(), PT9 param9=PT9(), PT10 param10=PT10(), PT11 param11=PT11(), PT12 param12=PT12(), PT13 param13=PT13(), PT14 param14=PT14(), PT15 param15=PT15(), PT16 param16=PT16(), PT17 param17=PT17(), PT18 param18=PT18(), PT19 param19=PT19()) const
Calls the encapsulated function.
Definition Callback.h:3213
virtual bool operator==(const FunctionBase< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19 > &functionBase) const
Returns whether two functions are equal.
Definition Callback.h:3229
CT * functionClass
Class object holding the member function.
Definition Callback.h:3198
virtual FunctionBase< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19 > * copy() const
Creates a copy of this element.
Definition Callback.h:3221
MemberFunctionPointerMaker< CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19 >::Type FunctionType
Definition of a function pointer for the encapsulated function.
Definition Callback.h:3145
This class implements a helper class providing a definition of a member function pointer only.
Definition Callback.h:83
RT(CT::* TypeConst)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19) const
Definition of a const function pointer with twenty parameters.
Definition Callback.h:94
RT(CT::* Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19)
Definition of a function pointer with twenty parameters.
Definition Callback.h:89
Definition of a class holding no objects.
Definition Callback.h:24
This class implements an parameterized const member function container.
Definition Caller.h:1283
This class implements an parameterized member function container.
Definition Caller.h:1127
This class implements an parameterized static function container.
Definition Caller.h:1438
This class implements a scoped lock object for recursive lock objects.
Definition Lock.h:135
This class implements a helper class providing a functionality to call a static function defined by a...
Definition Callback.h:2229
static RT call(typename StaticFunctionPointerMaker< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19 >::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, PT18 param18, PT19 param19)
Calls a function defined by the function pointer the class object and the function parameters.
Definition Callback.h:2877
This class implements an unparameterized static function container.
Definition Callback.h:3266
virtual bool operator==(const FunctionBase< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19 > &functionBase) const
Returns whether two functions are equal.
Definition Callback.h:3351
virtual RT call(PT0 param0=PT0(), PT1 param1=PT1(), PT2 param2=PT2(), PT3 param3=PT3(), PT4 param4=PT4(), PT5 param5=PT5(), PT6 param6=PT6(), PT7 param7=PT7(), PT8 param8=PT8(), PT9 param9=PT9(), PT10 param10=PT10(), PT11 param11=PT11(), PT12 param12=PT12(), PT13 param13=PT13(), PT14 param14=PT14(), PT15 param15=PT15(), PT16 param16=PT16(), PT17 param17=PT17(), PT18 param18=PT18(), PT19 param19=PT19()) const
Calls the encapsulated function.
Definition Callback.h:3337
FunctionType functionPointer
Function pointer of the member function.
Definition Callback.h:3326
virtual FunctionBase< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19 > * copy() const
Creates a copy of this element.
Definition Callback.h:3344
StaticFunctionPointerMaker< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19 >::Type FunctionType
Definition of a function pointer for the encapsulated function.
Definition Callback.h:3274
StaticFunction(FunctionType function)
Creates a new member function object.
Definition Callback.h:3330
This class is a helper class providing a definition of a static function pointer only.
Definition Callback.h:524
RT(* Type)(PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19)
Definition of a function pointer with twenty parameters.
Definition Callback.h:530
The namespace covering the entire Ocean framework.
Definition Accessor.h:15