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