Ocean
Caller.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_CALLER_H
9 #define META_OCEAN_BASE_CALLER_H
10 
11 #include "ocean/base/Base.h"
12 #include "ocean/base/Callback.h"
13 
14 #ifdef OCEAN_SUPPORT_RTTI
15  #include <typeinfo>
16 #endif
17 
18 namespace Ocean
19 {
20 
21 /**
22  * This class implements a helper class providing the number of parameters of a parameterized function.<br>
23  * As this class is a helper class, there is no need to use it directly.<br>
24  * The template parameters define the function's ten possible function parameters (PT0 - PT19).<br>
25  * Therefore, functions with at most ten function parameters are supported.<br>
26  * @tparam RT Return type
27  * @tparam PT0 Data type of the 1st parameter
28  * @tparam PT1 Data type of the 2nd parameter
29  * @tparam PT2 Data type of the 3rd parameter
30  * @tparam PT3 Data type of the 4th parameter
31  * @tparam PT4 Data type of the 5th parameter
32  * @tparam PT5 Data type of the 6th parameter
33  * @tparam PT6 Data type of the 7th parameter
34  * @tparam PT7 Data type of the 8th parameter
35  * @tparam PT8 Data type of the 9th parameter
36  * @tparam PT9 Data type of the 10th parameter
37  * @tparam PT10 Data type of the 11th parameter
38  * @tparam PT11 Data type of the 12th parameter
39  * @tparam PT12 Data type of the 13th parameter
40  * @tparam PT13 Data type of the 14th parameter
41  * @tparam PT14 Data type of the 15th parameter
42  * @tparam PT15 Data type of the 16th parameter
43  * @tparam PT16 Data type of the 17th parameter
44  * @tparam PT17 Data type of the 18th parameter
45  * @tparam PT18 Data type of the 19th parameter
46  * @tparam PT19 Data type of the 20th parameter
47  * @ingroup base
48  */
49 template <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>
51 {
52  public:
53 
54  /**
55  * Returns the number of parameters for a given function type.
56  * @return Parameter number
57  */
58  static inline unsigned int parameters();
59 };
60 
61 
62 /**
63  * This class implements a helper class providing the number of parameters of a parameterized function.<br>
64  * @see ParameterCounter.
65  */
66 template <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>
67 class ParameterCounter<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, NullClass>
68 {
69  public:
70 
71  /**
72  * Returns the number of parameters for a given function type.
73  * @return Parameter number
74  */
75  static inline unsigned int parameters();
76 };
77 
78 /**
79  * This class implements a helper class providing the number of parameters of a parameterized function.<br>
80  * @see ParameterCounter.
81  */
82 template <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>
83 class ParameterCounter<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, NullClass, NullClass>
84 {
85  public:
86 
87  /**
88  * Returns the number of parameters for a given function type.
89  * @return Parameter number
90  */
91  static inline unsigned int parameters();
92 };
93 
94 /**
95  * This class implements a helper class providing the number of parameters of a parameterized function.<br>
96  * @see ParameterCounter.
97  */
98 template <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>
99 class ParameterCounter<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, NullClass, NullClass, NullClass>
100 {
101  public:
102 
103  /**
104  * Returns the number of parameters for a given function type.
105  * @return Parameter number
106  */
107  static inline unsigned int parameters();
108 };
109 
110 /**
111  * This class implements a helper class providing the number of parameters of a parameterized function.<br>
112  * @see ParameterCounter.
113  */
114 template <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>
115 class ParameterCounter<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, NullClass, NullClass, NullClass, NullClass>
116 {
117  public:
118 
119  /**
120  * Returns the number of parameters for a given function type.
121  * @return Parameter number
122  */
123  static inline unsigned int parameters();
124 };
125 
126 /**
127  * This class implements a helper class providing the number of parameters of a parameterized function.<br>
128  * @see ParameterCounter.
129  */
130 template <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>
131 class ParameterCounter<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, NullClass, NullClass, NullClass, NullClass, NullClass>
132 {
133  public:
134 
135  /**
136  * Returns the number of parameters for a given function type.
137  * @return Parameter number
138  */
139  static inline unsigned int parameters();
140 };
141 
142 /**
143  * This class implements a helper class providing the number of parameters of a parameterized function.<br>
144  * @see ParameterCounter.
145  */
146 template <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>
147 class ParameterCounter<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>
148 {
149  public:
150 
151  /**
152  * Returns the number of parameters for a given function type.
153  * @return Parameter number
154  */
155  static inline unsigned int parameters();
156 };
157 
158 /**
159  * This class implements a helper class providing the number of parameters of a parameterized function.<br>
160  * @see ParameterCounter.
161  */
162 template <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>
163 class ParameterCounter<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>
164 {
165  public:
166 
167  /**
168  * Returns the number of parameters for a given function type.
169  * @return Parameter number
170  */
171  static inline unsigned int parameters();
172 };
173 
174 /**
175  * This class implements a helper class providing the number of parameters of a parameterized function.<br>
176  * @see ParameterCounter.
177  */
178 template <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>
179 class ParameterCounter<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>
180 {
181  public:
182 
183  /**
184  * Returns the number of parameters for a given function type.
185  * @return Parameter number
186  */
187  static inline unsigned int parameters();
188 };
189 
190 /**
191  * This class implements a helper class providing the number of parameters of a parameterized function.<br>
192  * @see ParameterCounter.
193  */
194 template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10>
195 class ParameterCounter<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>
196 {
197  public:
198 
199  /**
200  * Returns the number of parameters for a given function type.
201  * @return Parameter number
202  */
203  static inline unsigned int parameters();
204 };
205 
206 /**
207  * This class implements a helper class providing the number of parameters of a parameterized function.<br>
208  * @see ParameterCounter.
209  */
210 template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9>
211 class ParameterCounter<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>
212 {
213  public:
214 
215  /**
216  * Returns the number of parameters for a given function type.
217  * @return Parameter number
218  */
219  static inline unsigned int parameters();
220 };
221 
222 /**
223  * This class implements a helper class providing the number of parameters of a parameterized function.<br>
224  * @see ParameterCounter.
225  */
226 template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8>
228 {
229  public:
230 
231  /**
232  * Returns the number of parameters for a given function type.
233  * @return Parameter number
234  */
235  static inline unsigned int parameters();
236 };
237 
238 /**
239  * This class implements a helper class providing the number of parameters of a parameterized function.<br>
240  * @see ParameterCounter.
241  */
242 template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7>
244 {
245  public:
246 
247  /**
248  * Returns the number of parameters for a given function type.
249  * @return Parameter number
250  */
251  static inline unsigned int parameters();
252 };
253 
254 /**
255  * This class implements a helper class providing the number of parameters of a parameterized function.<br>
256  * @see ParameterCounter.
257  */
258 template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6>
260 {
261  public:
262 
263  /**
264  * Returns the number of parameters for a given function type.
265  * @return Parameter number
266  */
267  static inline unsigned int parameters();
268 };
269 
270 /**
271  * This class implements a helper class providing the number of parameters of a parameterized function.<br>
272  * @see ParameterCounter.
273  */
274 template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5>
276 {
277  public:
278 
279  /**
280  * Returns the number of parameters for a given function type.
281  * @return Parameter number
282  */
283  static inline unsigned int parameters();
284 };
285 
286 /**
287  * This class implements a helper class providing the number of parameters of a parameterized function.<br>
288  * @see ParameterCounter.
289  */
290 template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4>
292 {
293  public:
294 
295  /**
296  * Returns the number of parameters for a given function type.
297  * @return Parameter number
298  */
299  static inline unsigned int parameters();
300 };
301 
302 /**
303  * This class implements a helper class providing the number of parameters of a parameterized function.<br>
304  * @see ParameterCounter.
305  */
306 template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3>
308 {
309  public:
310 
311  /**
312  * Returns the number of parameters for a given function type.
313  * @return Parameter number
314  */
315  static inline unsigned int parameters();
316 };
317 
318 /**
319  * This class implements a helper class providing the number of parameters of a parameterized function.<br>
320  * @see ParameterCounter.
321  */
322 template <typename RT, typename PT0, typename PT1, typename PT2>
324 {
325  public:
326 
327  /**
328  * Returns the number of parameters for a given function type.
329  * @return Parameter number
330  */
331  static inline unsigned int parameters();
332 };
333 
334 /**
335  * This class implements a helper class providing the number of parameters of a parameterized function.<br>
336  * @see ParameterCounter.
337  */
338 template <typename RT, typename PT0, typename PT1>
340 {
341  public:
342 
343  /**
344  * Returns the number of parameters for a given function type.
345  * @return Parameter number
346  */
347  static inline unsigned int parameters();
348 };
349 
350 /**
351  * This class implements a helper class providing the number of parameters of a parameterized function.<br>
352  * @see ParameterCounter.
353  */
354 template <typename RT, typename PT0>
356 {
357  public:
358 
359  /**
360  * Returns the number of parameters for a given function type.
361  * @return Parameter number
362  */
363  static inline unsigned int parameters();
364 };
365 
366 /**
367  * This class implements a helper class providing the number of parameters of a parameterized function.<br>
368  * @see ParameterCounter.
369  */
370 template <typename RT>
372 {
373  public:
374 
375  /**
376  * Returns the number of parameters for a given function type.
377  * @return Parameter number
378  */
379  static inline unsigned int parameters();
380 };
381 
382 template <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>
384 {
385  return 20u;
386 }
387 
388 template <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>
390 {
391  return 19u;
392 }
393 
394 template <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>
396 {
397  return 18u;
398 }
399 
400 template <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>
402 {
403  return 17u;
404 }
405 
406 template <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>
408 {
409  return 16u;
410 }
411 
412 template <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>
414 {
415  return 15u;
416 }
417 
418 template <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>
420 {
421  return 14u;
422 }
423 
424 template <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>
426 {
427  return 13u;
428 }
429 
430 template <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>
432 {
433  return 12u;
434 }
435 
436 template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10>
438 {
439  return 11u;
440 }
441 
442 template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9>
444 {
445  return 10u;
446 }
447 
448 template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8>
450 {
451  return 9u;
452 }
453 
454 template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7>
456 {
457  return 8u;
458 }
459 
460 template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6>
462 {
463  return 7u;
464 }
465 
466 template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5>
468 {
469  return 6u;
470 }
471 
472 template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4>
474 {
475  return 5u;
476 }
477 
478 template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3>
480 {
481  return 4u;
482 }
483 
484 template <typename RT, typename PT0, typename PT1, typename PT2>
486 {
487  return 3u;
488 }
489 
490 template <typename RT, typename PT0, typename PT1>
492 {
493  return 2u;
494 }
495 
496 template <typename RT, typename PT0>
498 {
499  return 1u;
500 }
501 
502 template <typename RT>
504 {
505  return 0u;
506 }
507 
508 /**
509  * This class implements a simple helper class allowing to access the value of an arbitrary data type.
510  * The assignment will be applied for any non-reference parameter only.
511  * @tparam tIsReference True, if the target data type is a reference (so that nothing happens); False, if the target data type will receive the value of the source parameter
512  * @ingroup base
513  */
514 template <bool tIsReference>
516 {
517  public:
518 
519  /**
520  * Assigns the value of a source parameter to a target parameter.
521  * @param target The target parameter receiving the value of the source parameter
522  * @param source The address of the source parameter
523  * @tparam T The data type of the source and target parameter
524  */
525  template <typename T>
526  static inline void assign(typename std::add_lvalue_reference<T>::type target, const void* source);
527 
528  /**
529  * Receives the address of a specified parameter.
530  * The address will be nullptr if the provided parameter is a reference.
531  * @param parameter The parameter for which the address is requested
532  * @return The resulting type-less address of the specified parameter, nullptr if tIsReference is True
533  * @tparam T The data type of the source and target parameter
534  */
535  template <typename T>
536  static inline void* address(typename std::add_lvalue_reference<T>::type parameter);
537 };
538 
539 template <bool tTargetIsReference>
540 template <typename T>
541 inline void FunctionParameterAccessor<tTargetIsReference>::assign(typename std::add_lvalue_reference<T>::type target, const void* source)
542 {
543  typedef typename std::add_const<T>::type SourceType;
544 
545  target = *reinterpret_cast<SourceType*>(source);
546 }
547 
548 template <bool tTargetIsReference>
549 template <typename T>
550 void* FunctionParameterAccessor<tTargetIsReference>::address(typename std::add_lvalue_reference<T>::type parameter)
551 {
552  return reinterpret_cast<void *>(&parameter);
553 }
554 
555 template <>
556 template <typename T>
557 inline void FunctionParameterAccessor<true>::assign(typename std::add_lvalue_reference<T>::type /*target*/, const void* /*source*/)
558 {
559  ocean_assert(false && "Must not be called!");
560 }
561 
562 template <>
563 template <>
564 inline void FunctionParameterAccessor<true>::assign<NullClass>(NullClass& /*target*/, const void* /*source*/)
565 {
566  ocean_assert(false && "Must not be called!");
567 }
568 
569 template <>
570 template <>
571 inline void FunctionParameterAccessor<false>::assign<NullClass>(NullClass& /*target*/, const void* /*source*/)
572 {
573  ocean_assert(false && "Must not be called!");
574 }
575 
576 template <>
577 template <typename T>
578 inline void* FunctionParameterAccessor<true>::address(typename std::add_lvalue_reference<T>::type /*parameter*/)
579 {
580  ocean_assert(false && "Must not be called!");
581  return nullptr;
582 }
583 
584 template <>
585 template <>
587 {
588  ocean_assert(false && "Must not be called!");
589  return nullptr;
590 }
591 
592 template <>
593 template <>
595 {
596  ocean_assert(false && "Must not be called!");
597  return nullptr;
598 }
599 
600 /**
601  * This class is the base class for a parameterized function container.
602  * This base function cantainer allows the specification of parameters and therefore can call the encapsulated function without explicit parameters.
603  * @tparam RT Defines the return data type
604  * @ingroup base
605  */
606 template <typename RT>
608 {
609  public:
610 
611  /**
612  * Destructs a parameterized function object.
613  */
614  virtual ~ParameterizedFunctionBase();
615 
616  /**
617  * Calls the internal encapsulated function and uses the specified parameters.
618  * @return Return value
619  */
620  virtual RT call() const = 0;
621 
622  /**
623  * Creates a copy of the entire derivated object.
624  * @return Instance copy
625  */
626  virtual ParameterizedFunctionBase* copy() const = 0;
627 
628  /**
629  * Returns the number of function parameters.
630  * @return Parameter number
631  */
632  virtual unsigned int parameters() const = 0;
633 
634  /**
635  * Returns a specified parameter as a void pointer to the parameter's pointer.
636  * @param index Index of the parameter to change
637  * @return Requested parameter pointer
638  */
639  virtual void* parameter(const unsigned int index) = 0;
640 
641  /**
642  * Sets a specified parameter.
643  * @param index Index of the parameter to change
644  * @param value New parameter value
645  */
646  virtual void setParameter(const unsigned int index, const void* value) = 0;
647 
648 #ifdef OCEAN_SUPPORT_RTTI
649 
650  /**
651  * Returns the parameter type of a specific parameter.
652  * @param index Index of the parameter
653  * @return Type information
654  */
655  virtual const std::type_info& type(const unsigned int index) const = 0;
656 
657 #endif
658 };
659 
660 template <typename RT>
662 {
663  // nothing to do here
664 }
665 
666 /**
667  * This class implements an parameterized function container.
668  * This function cantainer holds function parameters and therefore can call the encapsulated function without explicit parameters.<br>
669  * The template parameters define the return type (RT) and twenty possible function parameters (PT0 - PT19).<br>
670  * This class is a helper class only and used to allow caller functions to be independent from the member function's class type.
671  * @tparam RT Return type
672  * @tparam PT0 Data type of the 1st parameter
673  * @tparam PT1 Data type of the 2nd parameter
674  * @tparam PT2 Data type of the 3rd parameter
675  * @tparam PT3 Data type of the 4th parameter
676  * @tparam PT4 Data type of the 5th parameter
677  * @tparam PT5 Data type of the 6th parameter
678  * @tparam PT6 Data type of the 7th parameter
679  * @tparam PT7 Data type of the 8th parameter
680  * @tparam PT8 Data type of the 9th parameter
681  * @tparam PT9 Data type of the 10th parameter
682  * @tparam PT10 Data type of the 11th parameter
683  * @tparam PT11 Data type of the 12th parameter
684  * @tparam PT12 Data type of the 13th parameter
685  * @tparam PT13 Data type of the 14th parameter
686  * @tparam PT14 Data type of the 15th parameter
687  * @tparam PT15 Data type of the 16th parameter
688  * @tparam PT16 Data type of the 17th parameter
689  * @tparam PT17 Data type of the 18th parameter
690  * @tparam PT18 Data type of the 19th parameter
691  * @tparam PT19 Data type of the 20th parameter
692  * @ingroup base
693  */
694 template <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>
696 {
697  protected:
698 
699  /**
700  * Creates a new function object.
701  * @param param0 First function parameter
702  * @param param1 Second function parameter
703  * @param param2 Third function parameter
704  * @param param3 Fourth function parameter
705  * @param param4 Fifth function parameter
706  * @param param5 Sixth function parameter
707  * @param param6 Seventh function parameter
708  * @param param7 Eighth function parameter
709  * @param param8 Ninth function parameter
710  * @param param9 Tenth function parameter
711  * @param param10 11th function parameter
712  * @param param11 12th function parameter
713  * @param param12 13th function parameter
714  * @param param13 14th function parameter
715  * @param param14 15th function parameter
716  * @param param15 16th function parameter
717  * @param param16 17th function parameter
718  * @param param17 18th function parameter
719  * @param param18 19th function parameter
720  * @param param19 20th function parameter
721  */
722  inline ParameterizedFunction(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());
723 
724  /**
725  * Destructs a parameter function.
726  */
728 
729  /**
730  * Returns the number of function parameters.
731  * @return Parameter number
732  */
733  virtual unsigned int parameters() const;
734 
735  /**
736  * Returns a specified parameter as a void pointer to the parameter's pointer.
737  * @param index Index of the parameter to change
738  * @return Requested parameter pointer
739  */
740  virtual void* parameter(const unsigned int index);
741 
742  /**
743  * Sets a specified parameter as long as the parameter is not a reference.
744  * @param index Index of the (non-reference) parameter to change
745  * @param value New parameter value
746  */
747  virtual void setParameter(const unsigned int index, const void* value);
748 
749 #ifdef OCEAN_SUPPORT_RTTI
750 
751  /**
752  * Returns the parameter type of a specific parameter.
753  * @param index Index of the parameter
754  * @return Type information
755  */
756  virtual const std::type_info& type(const unsigned int index) const;
757 
758 #endif
759 
760  protected:
761 
762  /// First function parameter.
764 
765  /// Second function parameter.
767 
768  /// Third function parameter.
770 
771  /// Fourth function parameter.
773 
774  /// Fifth function parameter.
776 
777  /// Sixth function parameter.
779 
780  /// Seventh function parameter.
782 
783  /// Eighth function parameter.
785 
786  /// Ninth function parameter.
788 
789  /// Tenth function parameter.
791 
792  /// Eleventh function parameter.
794 
795  /// Twelfth function parameter.
797 
798  /// 13th function parameter.
800 
801  /// 14th function parameter.
803 
804  /// 15th function parameter.
806 
807  /// 16th function parameter.
809 
810  /// 17th function parameter.
812 
813  /// 18th function parameter.
815 
816  /// 19th function parameter.
818 
819  /// 20th function parameter.
821 };
822 
823 template <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>
824 inline ParameterizedFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>::ParameterizedFunction(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) :
825  functionParam0(param0),
826  functionParam1(param1),
827  functionParam2(param2),
828  functionParam3(param3),
829  functionParam4(param4),
830  functionParam5(param5),
831  functionParam6(param6),
832  functionParam7(param7),
833  functionParam8(param8),
834  functionParam9(param9),
835  functionParam10(param10),
836  functionParam11(param11),
837  functionParam12(param12),
838  functionParam13(param13),
839  functionParam14(param14),
840  functionParam15(param15),
841  functionParam16(param16),
842  functionParam17(param17),
843  functionParam18(param18),
844  functionParam19(param19)
845 {
846  // nothing to do here
847 }
848 
849 template <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>
851 {
852  // nothing to do here
853 }
854 
855 template <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>
857 {
859 }
860 
861 template <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>
863 {
864  switch (index)
865  {
866  case 0u:
867  return FunctionParameterAccessor<std::is_lvalue_reference<PT0>::value>:: template address<PT0>(functionParam0);
868 
869  case 1u:
870  return FunctionParameterAccessor<std::is_lvalue_reference<PT1>::value>:: template address<PT1>(functionParam1);
871 
872  case 2u:
873  return FunctionParameterAccessor<std::is_lvalue_reference<PT2>::value>:: template address<PT2>(functionParam2);
874 
875  case 3u:
876  return FunctionParameterAccessor<std::is_lvalue_reference<PT3>::value>:: template address<PT3>(functionParam3);
877 
878  case 4u:
879  return FunctionParameterAccessor<std::is_lvalue_reference<PT4>::value>:: template address<PT4>(functionParam4);
880 
881  case 5u:
882  return FunctionParameterAccessor<std::is_lvalue_reference<PT5>::value>:: template address<PT5>(functionParam5);
883 
884  case 6u:
885  return FunctionParameterAccessor<std::is_lvalue_reference<PT6>::value>:: template address<PT6>(functionParam6);
886 
887  case 7u:
888  return FunctionParameterAccessor<std::is_lvalue_reference<PT7>::value>:: template address<PT7>(functionParam7);
889 
890  case 8u:
891  return FunctionParameterAccessor<std::is_lvalue_reference<PT8>::value>:: template address<PT8>(functionParam8);
892 
893  case 9u:
894  return FunctionParameterAccessor<std::is_lvalue_reference<PT9>::value>:: template address<PT9>(functionParam9);
895 
896  case 10u:
897  return FunctionParameterAccessor<std::is_lvalue_reference<PT10>::value>:: template address<PT10>(functionParam10);
898 
899  case 11u:
900  return FunctionParameterAccessor<std::is_lvalue_reference<PT11>::value>:: template address<PT11>(functionParam11);
901 
902  case 12u:
903  return FunctionParameterAccessor<std::is_lvalue_reference<PT12>::value>:: template address<PT12>(functionParam12);
904 
905  case 13u:
906  return FunctionParameterAccessor<std::is_lvalue_reference<PT13>::value>:: template address<PT13>(functionParam13);
907 
908  case 14u:
909  return FunctionParameterAccessor<std::is_lvalue_reference<PT14>::value>:: template address<PT14>(functionParam14);
910 
911  case 15u:
912  return FunctionParameterAccessor<std::is_lvalue_reference<PT15>::value>:: template address<PT15>(functionParam15);
913 
914  case 16u:
915  return FunctionParameterAccessor<std::is_lvalue_reference<PT16>::value>:: template address<PT16>(functionParam16);
916 
917  case 17u:
918  return FunctionParameterAccessor<std::is_lvalue_reference<PT17>::value>:: template address<PT17>(functionParam17);
919 
920  case 18u:
921  return FunctionParameterAccessor<std::is_lvalue_reference<PT18>::value>:: template address<PT18>(functionParam18);
922 
923  case 19u:
924  return FunctionParameterAccessor<std::is_lvalue_reference<PT19>::value>:: template address<PT19>(functionParam19);
925 
926  default:
927  ocean_assert(false && "Missing implementation!");
928  return nullptr;
929  }
930 }
931 
932 template <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>
934 {
935  switch (index)
936  {
937  case 0u:
938  FunctionParameterAccessor<std::is_lvalue_reference<PT0>::value>:: template assign<PT0>(functionParam0, value);
939  break;
940 
941  case 1u:
942  FunctionParameterAccessor<std::is_lvalue_reference<PT1>::value>:: template assign<PT1>(functionParam1, value);
943  break;
944 
945  case 2u:
946  FunctionParameterAccessor<std::is_lvalue_reference<PT2>::value>:: template assign<PT2>(functionParam2, value);
947  break;
948 
949  case 3u:
950  FunctionParameterAccessor<std::is_lvalue_reference<PT3>::value>:: template assign<PT3>(functionParam3, value);
951  break;
952 
953  case 4u:
954  FunctionParameterAccessor<std::is_lvalue_reference<PT4>::value>:: template assign<PT4>(functionParam4, value);
955  break;
956 
957  case 5u:
958  FunctionParameterAccessor<std::is_lvalue_reference<PT5>::value>:: template assign<PT5>(functionParam5, value);
959  break;
960 
961  case 6u:
962  FunctionParameterAccessor<std::is_lvalue_reference<PT6>::value>:: template assign<PT6>(functionParam6, value);
963  break;
964 
965  case 7u:
966  FunctionParameterAccessor<std::is_lvalue_reference<PT7>::value>:: template assign<PT7>(functionParam7, value);
967  break;
968 
969  case 8u:
970  FunctionParameterAccessor<std::is_lvalue_reference<PT8>::value>:: template assign<PT8>(functionParam8, value);
971  break;
972 
973  case 9u:
974  FunctionParameterAccessor<std::is_lvalue_reference<PT9>::value>:: template assign<PT9>(functionParam9, value);
975  break;
976 
977  case 10u:
978  FunctionParameterAccessor<std::is_lvalue_reference<PT10>::value>:: template assign<PT10>(functionParam10, value);
979  break;
980 
981  case 11u:
982  FunctionParameterAccessor<std::is_lvalue_reference<PT11>::value>:: template assign<PT11>(functionParam11, value);
983  break;
984 
985  case 12u:
986  FunctionParameterAccessor<std::is_lvalue_reference<PT12>::value>:: template assign<PT12>(functionParam12, value);
987  break;
988 
989  case 13u:
990  FunctionParameterAccessor<std::is_lvalue_reference<PT13>::value>:: template assign<PT13>(functionParam13, value);
991  break;
992 
993  case 14u:
994  FunctionParameterAccessor<std::is_lvalue_reference<PT14>::value>:: template assign<PT14>(functionParam14, value);
995  break;
996 
997  case 15u:
998  FunctionParameterAccessor<std::is_lvalue_reference<PT15>::value>:: template assign<PT15>(functionParam15, value);
999  break;
1000 
1001  case 16u:
1002  FunctionParameterAccessor<std::is_lvalue_reference<PT16>::value>:: template assign<PT16>(functionParam16, value);
1003  break;
1004 
1005  case 17u:
1006  FunctionParameterAccessor<std::is_lvalue_reference<PT17>::value>:: template assign<PT17>(functionParam17, value);
1007  break;
1008 
1009  case 18u:
1010  FunctionParameterAccessor<std::is_lvalue_reference<PT18>::value>:: template assign<PT18>(functionParam18, value);
1011  break;
1012 
1013  case 19u:
1014  FunctionParameterAccessor<std::is_lvalue_reference<PT19>::value>:: template assign<PT19>(functionParam19, value);
1015  break;
1016 
1017  default:
1018  ocean_assert(false && "Missing implementation!");
1019  }
1020 }
1021 
1022 #ifdef OCEAN_SUPPORT_RTTI
1023 
1024 template <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>
1026 {
1027  switch (index)
1028  {
1029  case 0:
1030  return typeid(PT0);
1031 
1032  case 1:
1033  return typeid(PT1);
1034 
1035  case 2:
1036  return typeid(PT2);
1037 
1038  case 3:
1039  return typeid(PT3);
1040 
1041  case 4:
1042  return typeid(PT4);
1043 
1044  case 5:
1045  return typeid(PT5);
1046 
1047  case 6:
1048  return typeid(PT6);
1049 
1050  case 7:
1051  return typeid(PT7);
1052 
1053  case 8:
1054  return typeid(PT8);
1055 
1056  case 9:
1057  return typeid(PT9);
1058 
1059  case 10:
1060  return typeid(PT10);
1061 
1062  case 11:
1063  return typeid(PT11);
1064 
1065  case 12:
1066  return typeid(PT12);
1067 
1068  case 13:
1069  return typeid(PT13);
1070 
1071  case 14:
1072  return typeid(PT14);
1073 
1074  case 15:
1075  return typeid(PT15);
1076 
1077  case 16:
1078  return typeid(PT16);
1079 
1080  case 17:
1081  return typeid(PT17);
1082 
1083  case 18:
1084  return typeid(PT18);
1085 
1086  case 19:
1087  return typeid(PT19);
1088  }
1089 
1090  ocean_assert(false && "Invalid index!");
1091  return typeid(PT0);
1092 }
1093 
1094 #endif // OCEAN_SUPPORT_RTTI
1095 
1096 /**
1097  * This class implements an parameterized member function container.
1098  * This function cantainer holds function parameters and therefore can call the encapsulated function without explicit parameters.<br>
1099  * The template parameters define the function's owner class type (CT), the return type (RT) and ten possible function parameters (PT0 - PT9).<br>
1100  * This class is a helper class only and used to allow caller functions to be independent from the member function's class type.
1101  * @tparam CT Type of the member object
1102  * @tparam RT Return type
1103  * @tparam PT0 Data type of the 1st parameter
1104  * @tparam PT1 Data type of the 2nd parameter
1105  * @tparam PT2 Data type of the 3rd parameter
1106  * @tparam PT3 Data type of the 4th parameter
1107  * @tparam PT4 Data type of the 5th parameter
1108  * @tparam PT5 Data type of the 6th parameter
1109  * @tparam PT6 Data type of the 7th parameter
1110  * @tparam PT7 Data type of the 8th parameter
1111  * @tparam PT8 Data type of the 9th parameter
1112  * @tparam PT9 Data type of the 10th parameter
1113  * @tparam PT10 Data type of the 11th parameter
1114  * @tparam PT11 Data type of the 12th parameter
1115  * @tparam PT12 Data type of the 13th parameter
1116  * @tparam PT13 Data type of the 14th parameter
1117  * @tparam PT14 Data type of the 15th parameter
1118  * @tparam PT15 Data type of the 16th parameter
1119  * @tparam PT16 Data type of the 17th parameter
1120  * @tparam PT17 Data type of the 18th parameter
1121  * @tparam PT18 Data type of the 19th parameter
1122  * @tparam PT19 Data type of the 20th parameter
1123  * @ingroup base
1124  */
1125 template <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>
1126 class ParameterizedMemberFunction : public ParameterizedFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>
1127 {
1128  friend class Caller<RT>;
1129 
1130  protected:
1131 
1132  /**
1133  * Definition of a function pointer for the encapsulated function.
1134  */
1136 
1137  protected:
1138 
1139  /**
1140  * Creates a new function object.
1141  * @param object Class object holding the member function
1142  * @param function Local member function pointer
1143  * @param param0 First function parameter
1144  * @param param1 Second function parameter
1145  * @param param2 Third function parameter
1146  * @param param3 Fourth function parameter
1147  * @param param4 Fifth function parameter
1148  * @param param5 Sixth function parameter
1149  * @param param6 Seventh function parameter
1150  * @param param7 Eighth function parameter
1151  * @param param8 Ninth function parameter
1152  * @param param9 Tenth function parameter
1153  * @param param10 11th function parameter
1154  * @param param11 12th function parameter
1155  * @param param12 13th function parameter
1156  * @param param13 14th function parameter
1157  * @param param14 15th function parameter
1158  * @param param15 16th function parameter
1159  * @param param16 17th function parameter
1160  * @param param17 18th function parameter
1161  * @param param18 19th function parameter
1162  * @param param19 20th function parameter
1163  */
1164  inline ParameterizedMemberFunction(CT &object, FunctionType function, 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());
1165 
1166  /**
1167  * Calls the internal encapsulated function by the used of the previously defined parameters.
1168  * @return Return value
1169  */
1170  virtual RT call() const;
1171 
1172  /**
1173  * Creates a copy of this function container.
1174  * @return Instance copy
1175  */
1176  virtual ParameterizedFunctionBase<RT>* copy() const;
1177 
1178  protected:
1179 
1180  /// Class object holding the member function.
1182 
1183  /// Function pointer of the member function.
1185 };
1186 
1187 template <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>
1188 inline ParameterizedMemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>::ParameterizedMemberFunction(CT &object, FunctionType function, 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) :
1189  ParameterizedFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18, param19),
1190  functionClass(&object),
1191  functionPointer(function)
1192 {
1193  // nothing to do here
1194 }
1195 
1196 template <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>
1198 {
1199  ocean_assert(functionClass != nullptr);
1200  ocean_assert(functionPointer != nullptr);
1222 }
1223 
1224 template <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>
1226 {
1227  ocean_assert(functionClass != nullptr);
1228  ocean_assert(functionPointer != nullptr);
1250 }
1251 
1252 /**
1253  * This class implements an parameterized const member function container.
1254  * This function cantainer holds function parameters and therefore can call the encapsulated function without explicit parameters.<br>
1255  * The template parameters define the function's owner class type (CT), the return type (RT) and twenty possible function parameters (PT0 - PT19).<br>
1256  * This class is a helper class only and used to allow caller functions to be independent from the member function's class type.
1257  * @tparam CT Type of the member object
1258  * @tparam RT Return type
1259  * @tparam PT0 Data type of the 1st parameter
1260  * @tparam PT1 Data type of the 2nd parameter
1261  * @tparam PT2 Data type of the 3rd parameter
1262  * @tparam PT3 Data type of the 4th parameter
1263  * @tparam PT4 Data type of the 5th parameter
1264  * @tparam PT5 Data type of the 6th parameter
1265  * @tparam PT6 Data type of the 7th parameter
1266  * @tparam PT7 Data type of the 8th parameter
1267  * @tparam PT8 Data type of the 9th parameter
1268  * @tparam PT9 Data type of the 10th parameter
1269  * @tparam PT10 Data type of the 11th parameter
1270  * @tparam PT11 Data type of the 12th parameter
1271  * @tparam PT12 Data type of the 13th parameter
1272  * @tparam PT13 Data type of the 14th parameter
1273  * @tparam PT14 Data type of the 15th parameter
1274  * @tparam PT15 Data type of the 16th parameter
1275  * @tparam PT16 Data type of the 17th parameter
1276  * @tparam PT17 Data type of the 18th parameter
1277  * @tparam PT18 Data type of the 19th parameter
1278  * @tparam PT19 Data type of the 20th parameter
1279  * @ingroup base
1280  */
1281 template <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>
1282 class ParameterizedMemberFunctionConst : public ParameterizedFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>
1283 {
1284  friend class Caller<RT>;
1285 
1286  protected:
1287 
1288  /**
1289  * Definition of a const function pointer for the encapsulated function.
1290  */
1292 
1293  protected:
1294 
1295  /**
1296  * Creates a new const function object.
1297  * @param object Class object holding the member function
1298  * @param function Local member function pointer
1299  * @param param0 First function parameter
1300  * @param param1 Second function parameter
1301  * @param param2 Third function parameter
1302  * @param param3 Fourth function parameter
1303  * @param param4 Fifth function parameter
1304  * @param param5 Sixth function parameter
1305  * @param param6 Seventh function parameter
1306  * @param param7 Eighth function parameter
1307  * @param param8 Ninth function parameter
1308  * @param param9 Tenth function parameter
1309  * @param param10 11th function parameter
1310  * @param param11 12th function parameter
1311  * @param param12 13th function parameter
1312  * @param param13 14th function parameter
1313  * @param param14 15th function parameter
1314  * @param param15 16th function parameter
1315  * @param param16 17th function parameter
1316  * @param param17 18th function parameter
1317  * @param param18 19th function parameter
1318  * @param param19 20th function parameter
1319  */
1320  inline ParameterizedMemberFunctionConst(const CT &object, FunctionType function, 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());
1321 
1322  /**
1323  * Calls the internal encapsulated function by the used of the previously defined parameters.
1324  * @return Return value
1325  */
1326  virtual RT call() const;
1327 
1328  /**
1329  * Creates a copy of this function container.
1330  * @return Instance copy
1331  */
1332  virtual ParameterizedFunctionBase<RT>* copy() const;
1333 
1334  protected:
1335 
1336  /// Class object holding the member function.
1337  const CT* functionClass;
1338 
1339  /// Function pointer of the member function.
1341 };
1342 
1343 template <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>
1344 inline ParameterizedMemberFunctionConst<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>::ParameterizedMemberFunctionConst(const CT &object, FunctionType function, 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) :
1345  ParameterizedFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18, param19),
1346  functionClass(&object),
1347  functionPointer(function)
1348 {
1349  // nothing to do here
1350 }
1351 
1352 template <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>
1354 {
1355  ocean_assert(functionClass != nullptr);
1356  ocean_assert(functionPointer != nullptr);
1378 }
1379 
1380 template <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>
1382 {
1383  ocean_assert(functionClass != nullptr);
1384  ocean_assert(functionPointer != nullptr);
1406 }
1407 
1408 /**
1409  * This class implements an parameterized static function container.
1410  * This function cantainer holds function parameters and therefore can call the encapsulated function without explicit parameters.<br>
1411  * The template parameters define the function's return type (RT) and twenty possible function parameters (PT0 - PT19).<br>
1412  * This class is a helper class only and used to allow caller functions to be independent from the member function's class type.
1413  * @tparam RT Return type
1414  * @tparam PT0 Data type of the 1st parameter
1415  * @tparam PT1 Data type of the 2nd parameter
1416  * @tparam PT2 Data type of the 3rd parameter
1417  * @tparam PT3 Data type of the 4th parameter
1418  * @tparam PT4 Data type of the 5th parameter
1419  * @tparam PT5 Data type of the 6th parameter
1420  * @tparam PT6 Data type of the 7th parameter
1421  * @tparam PT7 Data type of the 8th parameter
1422  * @tparam PT8 Data type of the 9th parameter
1423  * @tparam PT9 Data type of the 10th parameter
1424  * @tparam PT10 Data type of the 11th parameter
1425  * @tparam PT11 Data type of the 12th parameter
1426  * @tparam PT12 Data type of the 13th parameter
1427  * @tparam PT13 Data type of the 14th parameter
1428  * @tparam PT14 Data type of the 15th parameter
1429  * @tparam PT15 Data type of the 16th parameter
1430  * @tparam PT16 Data type of the 17th parameter
1431  * @tparam PT17 Data type of the 18th parameter
1432  * @tparam PT18 Data type of the 19th parameter
1433  * @tparam PT19 Data type of the 20th parameter
1434  * @ingroup base
1435  */
1436 template <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>
1437 class ParameterizedStaticFunction : public ParameterizedFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>
1438 {
1439  friend class Caller<RT>;
1440 
1441  protected:
1442 
1443  /**
1444  * Definition of a function pointer for the encapsulated function.
1445  */
1447 
1448  protected:
1449 
1450  /**
1451  * Creates a new function object.
1452  * @param function Local member function pointer
1453  * @param param0 First function parameter
1454  * @param param1 Second function parameter
1455  * @param param2 Third function parameter
1456  * @param param3 Fourth function parameter
1457  * @param param4 Fifth function parameter
1458  * @param param5 Sixth function parameter
1459  * @param param6 Seventh function parameter
1460  * @param param7 Eighth function parameter
1461  * @param param8 Ninth function parameter
1462  * @param param9 Tenth function parameter
1463  * @param param10 11th function parameter
1464  * @param param11 12th function parameter
1465  * @param param12 13th function parameter
1466  * @param param13 14th function parameter
1467  * @param param14 15th function parameter
1468  * @param param15 16th function parameter
1469  * @param param16 17th function parameter
1470  * @param param17 18th function parameter
1471  * @param param18 19th function parameter
1472  * @param param19 20th function parameter
1473  */
1474  inline ParameterizedStaticFunction(FunctionType function, 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());
1475 
1476  /**
1477  * Calls the internal encapsulated function by the used of the previously defined parameters.
1478  * @return Return value
1479  */
1480  virtual RT call() const;
1481 
1482  /**
1483  * Creates a copy of this function container.
1484  * @return Instance copy
1485  */
1486  virtual ParameterizedFunctionBase<RT>* copy() const;
1487 
1488  protected:
1489 
1490  /// Function pointer of the member function.
1492 };
1493 
1494 template <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>
1495 inline ParameterizedStaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>::ParameterizedStaticFunction(FunctionType function, 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) :
1496  ParameterizedFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18, param19),
1497  functionPointer(function)
1498 {
1499  // nothing to do here
1500 }
1501 
1502 template <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>
1504 {
1505  ocean_assert(functionPointer != nullptr);
1527 }
1528 
1529 template <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>
1531 {
1532  ocean_assert(functionPointer != nullptr);
1554 }
1555 
1556 /**
1557  * This class implements a callback function container using defined function parameters.
1558  * Use this callback container to encapsulate callback functions to member functions of class objects.<br>
1559  * This class is independent from the class type and therefore can be stored without the knowledge of the class type.<br>
1560  * @tparam RT Specifies the return type of the encapsulated function
1561  * @ingroup base
1562  */
1563 template <typename RT>
1564 class Caller
1565 {
1566  public:
1567 
1568  /**
1569  * Creates an empty caller container.
1570  */
1571  inline Caller();
1572 
1573  /**
1574  * Copies a caller container.
1575  * @param caller Caller container to copy
1576  */
1577  inline Caller(const Caller& caller);
1578 
1579  /**
1580  * Movies a caller container.
1581  * @param caller Caller container to move
1582  */
1583  inline Caller(Caller&& caller);
1584 
1585  /**
1586  * Creates a new caller container for a static function with no function parameter.
1587  * @param function Local function pointer of the member function
1588  * @return Resulting static caller function
1589  */
1591 
1592  /**
1593  * Creates a new caller container for a static function and specifies the later used function parameter.
1594  * @param function Local function pointer of the member function
1595  * @param param0 First function parameter used for each function call
1596  * @return Resulting static caller function
1597  */
1598  template <typename PT0>
1600 
1601  /**
1602  * Creates a new caller container for a static function and specifies the later used function parameters.
1603  * @param function Local function pointer of the member function
1604  * @param param0 First function parameter used for each function call
1605  * @param param1 Second function parameter used for each function call
1606  * @return Resulting static caller function
1607  */
1608  template <typename PT0, typename PT1>
1610 
1611  /**
1612  * Creates a new caller container for a static function and specifies the later used function parameters.
1613  * @param function Local function pointer of the member function
1614  * @param param0 First function parameter used for each function call
1615  * @param param1 Second function parameter used for each function call
1616  * @param param2 Third function parameter used for each function call
1617  * @return Resulting static caller function
1618  */
1619  template <typename PT0, typename PT1, typename PT2>
1621 
1622  /**
1623  * Creates a new caller container for a static function and specifies the later used function parameters.
1624  * @param function Local function pointer of the member function
1625  * @param param0 First function parameter used for each function call
1626  * @param param1 Second function parameter used for each function call
1627  * @param param2 Third function parameter used for each function call
1628  * @param param3 Fourth function parameter used for each function call
1629  * @return Resulting static caller function
1630  */
1631  template <typename PT0, typename PT1, typename PT2, typename PT3>
1633 
1634  /**
1635  * Creates a new caller container for a static function and specifies the later used function parameters.
1636  * @param function Local function pointer of the member function
1637  * @param param0 First function parameter used for each function call
1638  * @param param1 Second function parameter used for each function call
1639  * @param param2 Third function parameter used for each function call
1640  * @param param3 Fourth function parameter used for each function call
1641  * @param param4 Fifth function parameter used for each function call
1642  * @return Resulting static caller function
1643  */
1644  template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4>
1646 
1647  /**
1648  * Creates a new caller container for a static function and specifies the later used function parameters.
1649  * @param function Local function pointer of the member function
1650  * @param param0 First function parameter used for each function call
1651  * @param param1 Second function parameter used for each function call
1652  * @param param2 Third function parameter used for each function call
1653  * @param param3 Fourth function parameter used for each function call
1654  * @param param4 Fifth function parameter used for each function call
1655  * @param param5 Sixth function parameter used for each function call
1656  * @return Resulting static caller function
1657  */
1658  template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5>
1660 
1661  /**
1662  * Creates a new caller container for a static function and specifies the later used function parameters.
1663  * @param function Local function pointer of the member function
1664  * @param param0 First function parameter used for each function call
1665  * @param param1 Second function parameter used for each function call
1666  * @param param2 Third function parameter used for each function call
1667  * @param param3 Fourth function parameter used for each function call
1668  * @param param4 Fifth function parameter used for each function call
1669  * @param param5 Sixth function parameter used for each function call
1670  * @param param6 Seventh function parameter used for each function call
1671  * @return Resulting static caller function
1672  */
1673  template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6>
1675 
1676  /**
1677  * Creates a new caller container for a static function and specifies the later used function parameters.
1678  * @param function Local function pointer of the member function
1679  * @param param0 First function parameter used for each function call
1680  * @param param1 Second function parameter used for each function call
1681  * @param param2 Third function parameter used for each function call
1682  * @param param3 Fourth function parameter used for each function call
1683  * @param param4 Fifth function parameter used for each function call
1684  * @param param5 Sixth function parameter used for each function call
1685  * @param param6 Seventh function parameter used for each function call
1686  * @param param7 Eighth function parameter used for each function call
1687  * @return Resulting static caller function
1688  */
1689  template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7>
1691 
1692  /**
1693  * Creates a new caller container for a static function and specifies the later used function parameters.
1694  * @param function Local function pointer of the member function
1695  * @param param0 First function parameter used for each function call
1696  * @param param1 Second function parameter used for each function call
1697  * @param param2 Third function parameter used for each function call
1698  * @param param3 Fourth function parameter used for each function call
1699  * @param param4 Fifth function parameter used for each function call
1700  * @param param5 Sixth function parameter used for each function call
1701  * @param param6 Seventh function parameter used for each function call
1702  * @param param7 Eighth function parameter used for each function call
1703  * @param param8 Ninth function parameter used for each function call
1704  * @return Resulting static caller function
1705  */
1706  template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8>
1708 
1709  /**
1710  * Creates a new caller container for a static function and specifies the later used function parameters.
1711  * @param function Local function pointer of the member function
1712  * @param param0 First function parameter used for each function call
1713  * @param param1 Second function parameter used for each function call
1714  * @param param2 Third function parameter used for each function call
1715  * @param param3 Fourth function parameter used for each function call
1716  * @param param4 Fifth function parameter used for each function call
1717  * @param param5 Sixth function parameter used for each function call
1718  * @param param6 Seventh function parameter used for each function call
1719  * @param param7 Eighth function parameter used for each function call
1720  * @param param8 Ninth function parameter used for each function call
1721  * @param param9 Tenth function parameter used for each function call
1722  * @return Resulting static caller function
1723  */
1724  template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9>
1725  static inline Caller<RT> createStatic(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::Type function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9);
1726 
1727  /**
1728  * Creates a new caller container for a static function and specifies the later used function parameters.
1729  * @param function Local function pointer of the member function
1730  * @param param0 First function parameter used for each function call
1731  * @param param1 Second function parameter used for each function call
1732  * @param param2 Third function parameter used for each function call
1733  * @param param3 Fourth function parameter used for each function call
1734  * @param param4 Fifth function parameter used for each function call
1735  * @param param5 Sixth function parameter used for each function call
1736  * @param param6 Seventh function parameter used for each function call
1737  * @param param7 Eighth function parameter used for each function call
1738  * @param param8 Ninth function parameter used for each function call
1739  * @param param9 Tenth function parameter used for each function call
1740  * @param param10 11th function parameter used for each function call
1741  * @return Resulting static caller function
1742  */
1743  template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10>
1744  static inline Caller<RT> createStatic(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::Type function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10);
1745 
1746  /**
1747  * Creates a new caller container for a static function and specifies the later used function parameters.
1748  * @param function Local function pointer of the member function
1749  * @param param0 First function parameter used for each function call
1750  * @param param1 Second function parameter used for each function call
1751  * @param param2 Third function parameter used for each function call
1752  * @param param3 Fourth function parameter used for each function call
1753  * @param param4 Fifth function parameter used for each function call
1754  * @param param5 Sixth function parameter used for each function call
1755  * @param param6 Seventh function parameter used for each function call
1756  * @param param7 Eighth function parameter used for each function call
1757  * @param param8 Ninth function parameter used for each function call
1758  * @param param9 Tenth function parameter used for each function call
1759  * @param param10 11th function parameter used for each function call
1760  * @param param11 12th function parameter used for each function call
1761  * @return Resulting static caller function
1762  */
1763  template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11>
1764  static inline Caller<RT> createStatic(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::Type function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11);
1765 
1766  /**
1767  * Creates a new caller container for a static function and specifies the later used function parameters.
1768  * @param function Local function pointer of the member function
1769  * @param param0 First function parameter used for each function call
1770  * @param param1 Second function parameter used for each function call
1771  * @param param2 Third function parameter used for each function call
1772  * @param param3 Fourth function parameter used for each function call
1773  * @param param4 Fifth function parameter used for each function call
1774  * @param param5 Sixth function parameter used for each function call
1775  * @param param6 Seventh function parameter used for each function call
1776  * @param param7 Eighth function parameter used for each function call
1777  * @param param8 Ninth function parameter used for each function call
1778  * @param param9 Tenth function parameter used for each function call
1779  * @param param10 11th function parameter used for each function call
1780  * @param param11 12th function parameter used for each function call
1781  * @param param12 13th function parameter used for each function call
1782  * @return Resulting static caller function
1783  */
1784  template <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>
1785  static inline Caller<RT> createStatic(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::Type function, 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);
1786 
1787  /**
1788  * Creates a new caller container for a static function and specifies the later used function parameters.
1789  * @param function Local function pointer of the member function
1790  * @param param0 First function parameter used for each function call
1791  * @param param1 Second function parameter used for each function call
1792  * @param param2 Third function parameter used for each function call
1793  * @param param3 Fourth function parameter used for each function call
1794  * @param param4 Fifth function parameter used for each function call
1795  * @param param5 Sixth function parameter used for each function call
1796  * @param param6 Seventh function parameter used for each function call
1797  * @param param7 Eighth function parameter used for each function call
1798  * @param param8 Ninth function parameter used for each function call
1799  * @param param9 Tenth function parameter used for each function call
1800  * @param param10 11th function parameter used for each function call
1801  * @param param11 12th function parameter used for each function call
1802  * @param param12 13th function parameter used for each function call
1803  * @param param13 14th function parameter used for each function call
1804  * @return Resulting static caller function
1805  */
1806  template <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>
1807  static inline Caller<RT> createStatic(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::Type function, 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);
1808 
1809  /**
1810  * Creates a new caller container for a static function and specifies the later used function parameters.
1811  * @param function Local function pointer of the member function
1812  * @param param0 First function parameter used for each function call
1813  * @param param1 Second function parameter used for each function call
1814  * @param param2 Third function parameter used for each function call
1815  * @param param3 Fourth function parameter used for each function call
1816  * @param param4 Fifth function parameter used for each function call
1817  * @param param5 Sixth function parameter used for each function call
1818  * @param param6 Seventh function parameter used for each function call
1819  * @param param7 Eighth function parameter used for each function call
1820  * @param param8 Ninth function parameter used for each function call
1821  * @param param9 Tenth function parameter used for each function call
1822  * @param param10 11th function parameter used for each function call
1823  * @param param11 12th function parameter used for each function call
1824  * @param param12 13th function parameter used for each function call
1825  * @param param13 14th function parameter used for each function call
1826  * @param param14 15th function parameter used for each function call
1827  * @return Resulting static caller function
1828  */
1829  template <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>
1830  static inline Caller<RT> createStatic(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, NullClass, NullClass, NullClass, NullClass, NullClass>::Type function, 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);
1831 
1832  /**
1833  * Creates a new caller container for a static function and specifies the later used function parameters.
1834  * @param function Local function pointer of the member function
1835  * @param param0 First function parameter used for each function call
1836  * @param param1 Second function parameter used for each function call
1837  * @param param2 Third function parameter used for each function call
1838  * @param param3 Fourth function parameter used for each function call
1839  * @param param4 Fifth function parameter used for each function call
1840  * @param param5 Sixth function parameter used for each function call
1841  * @param param6 Seventh function parameter used for each function call
1842  * @param param7 Eighth function parameter used for each function call
1843  * @param param8 Ninth function parameter used for each function call
1844  * @param param9 Tenth function parameter used for each function call
1845  * @param param10 11th function parameter used for each function call
1846  * @param param11 12th function parameter used for each function call
1847  * @param param12 13th function parameter used for each function call
1848  * @param param13 14th function parameter used for each function call
1849  * @param param14 15th function parameter used for each function call
1850  * @param param15 16th function parameter used for each function call
1851  * @return Resulting static caller function
1852  */
1853  template <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>
1854  static inline Caller<RT> createStatic(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, NullClass, NullClass, NullClass, NullClass>::Type function, 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);
1855 
1856  /**
1857  * Creates a new caller container for a static function and specifies the later used function parameters.
1858  * @param function Local function pointer of the member function
1859  * @param param0 First function parameter used for each function call
1860  * @param param1 Second function parameter used for each function call
1861  * @param param2 Third function parameter used for each function call
1862  * @param param3 Fourth function parameter used for each function call
1863  * @param param4 Fifth function parameter used for each function call
1864  * @param param5 Sixth function parameter used for each function call
1865  * @param param6 Seventh function parameter used for each function call
1866  * @param param7 Eighth function parameter used for each function call
1867  * @param param8 Ninth function parameter used for each function call
1868  * @param param9 Tenth function parameter used for each function call
1869  * @param param10 11th function parameter used for each function call
1870  * @param param11 12th function parameter used for each function call
1871  * @param param12 13th function parameter used for each function call
1872  * @param param13 14th function parameter used for each function call
1873  * @param param14 15th function parameter used for each function call
1874  * @param param15 16th function parameter used for each function call
1875  * @param param16 17th function parameter used for each function call
1876  * @return Resulting static caller function
1877  */
1878  template <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>
1879  static inline Caller<RT> createStatic(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, NullClass, NullClass, NullClass>::Type function, 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);
1880 
1881  /**
1882  * Creates a new caller container for a static function and specifies the later used function parameters.
1883  * @param function Local function pointer of the member function
1884  * @param param0 First function parameter used for each function call
1885  * @param param1 Second function parameter used for each function call
1886  * @param param2 Third function parameter used for each function call
1887  * @param param3 Fourth function parameter used for each function call
1888  * @param param4 Fifth function parameter used for each function call
1889  * @param param5 Sixth function parameter used for each function call
1890  * @param param6 Seventh function parameter used for each function call
1891  * @param param7 Eighth function parameter used for each function call
1892  * @param param8 Ninth function parameter used for each function call
1893  * @param param9 Tenth function parameter used for each function call
1894  * @param param10 11th function parameter used for each function call
1895  * @param param11 12th function parameter used for each function call
1896  * @param param12 13th function parameter used for each function call
1897  * @param param13 14th function parameter used for each function call
1898  * @param param14 15th function parameter used for each function call
1899  * @param param15 16th function parameter used for each function call
1900  * @param param16 17th function parameter used for each function call
1901  * @param param17 18th function parameter used for each function call
1902  * @return Resulting static caller function
1903  */
1904  template <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>
1905  static inline Caller<RT> createStatic(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, NullClass, NullClass>::Type function, 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);
1906 
1907  /**
1908  * Creates a new caller container for a static function and specifies the later used function parameters.
1909  * @param function Local function pointer of the member function
1910  * @param param0 First function parameter used for each function call
1911  * @param param1 Second function parameter used for each function call
1912  * @param param2 Third function parameter used for each function call
1913  * @param param3 Fourth function parameter used for each function call
1914  * @param param4 Fifth function parameter used for each function call
1915  * @param param5 Sixth function parameter used for each function call
1916  * @param param6 Seventh function parameter used for each function call
1917  * @param param7 Eighth function parameter used for each function call
1918  * @param param8 Ninth function parameter used for each function call
1919  * @param param9 Tenth function parameter used for each function call
1920  * @param param10 11th function parameter used for each function call
1921  * @param param11 12th function parameter used for each function call
1922  * @param param12 13th function parameter used for each function call
1923  * @param param13 14th function parameter used for each function call
1924  * @param param14 15th function parameter used for each function call
1925  * @param param15 16th function parameter used for each function call
1926  * @param param16 17th function parameter used for each function call
1927  * @param param17 18th function parameter used for each function call
1928  * @param param18 19th function parameter used for each function call
1929  * @return Resulting static caller function
1930  */
1931  template <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>
1932  static inline Caller<RT> createStatic(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, NullClass>::Type function, 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);
1933 
1934  /**
1935  * Creates a new caller container for a static function and specifies the later used function parameters.
1936  * @param function Local function pointer of the member function
1937  * @param param0 First function parameter used for each function call
1938  * @param param1 Second function parameter used for each function call
1939  * @param param2 Third function parameter used for each function call
1940  * @param param3 Fourth function parameter used for each function call
1941  * @param param4 Fifth function parameter used for each function call
1942  * @param param5 Sixth function parameter used for each function call
1943  * @param param6 Seventh function parameter used for each function call
1944  * @param param7 Eighth function parameter used for each function call
1945  * @param param8 Ninth function parameter used for each function call
1946  * @param param9 Tenth function parameter used for each function call
1947  * @param param10 11th function parameter used for each function call
1948  * @param param11 12th function parameter used for each function call
1949  * @param param12 13th function parameter used for each function call
1950  * @param param13 14th function parameter used for each function call
1951  * @param param14 15th function parameter used for each function call
1952  * @param param15 16th function parameter used for each function call
1953  * @param param16 17th function parameter used for each function call
1954  * @param param17 18th function parameter used for each function call
1955  * @param param18 19th function parameter used for each function call
1956  * @param param19 20th function parameter used for each function call
1957  * @return Resulting static caller function
1958  */
1959  template <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>
1960  static inline Caller<RT> 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, 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);
1961 
1962  /**
1963  * Creates a new caller container for a member function with no function parameter.
1964  * @param object Class object holding the member function
1965  * @param function Local function pointer of the member function
1966  * @return Resulting caller function
1967  */
1968  template <typename CT>
1970 
1971  /**
1972  * Creates a new caller container for a const member function with no function parameter.
1973  * @param object Class object holding the member function
1974  * @param function Local function pointer of the member function
1975  * @return Resulting caller function
1976  */
1977  template <typename CT>
1979 
1980  /**
1981  * Creates a new caller container for a member function with no function parameter.
1982  * @param object Class object holding the member function
1983  * @param function Local function pointer of the member function
1984  * @param param0 First function parameter used for each function call
1985  * @return Resulting caller function
1986  */
1987  template <typename CT, typename PT0>
1989 
1990  /**
1991  * Creates a new caller container for a const member function with no function parameter.
1992  * @param object Class object holding the member function
1993  * @param function Local function pointer of the member function
1994  * @param param0 First function parameter used for each function call
1995  * @return Resulting caller function
1996  */
1997  template <typename CT, typename PT0>
1999 
2000  /**
2001  * Creates a new caller container for a member function with no function parameter.
2002  * @param object Class object holding the member function
2003  * @param function Local function pointer of the member function
2004  * @param param0 First function parameter used for each function call
2005  * @param param1 Second function parameter used for each function call
2006  * @return Resulting caller function
2007  */
2008  template <typename CT, typename PT0, typename PT1>
2010 
2011  /**
2012  * Creates a new caller container for a const member function with no function parameter.
2013  * @param object Class object holding the member function
2014  * @param function Local function pointer of the member function
2015  * @param param0 First function parameter used for each function call
2016  * @param param1 Second function parameter used for each function call
2017  * @return Resulting caller function
2018  */
2019  template <typename CT, typename PT0, typename PT1>
2021 
2022  /**
2023  * Creates a new caller container for a member function and specifies the later used function parameter.
2024  * @param object Class object holding the member function
2025  * @param function Local function pointer of the member function
2026  * @param param0 First function parameter used for each function call
2027  * @param param1 Second function parameter used for each function call
2028  * @param param2 Third function parameter used for each function call
2029  * @return Resulting caller function
2030  */
2031  template <typename CT, typename PT0, typename PT1, typename PT2>
2033 
2034  /**
2035  * Creates a new caller container for a const member function and specifies the later used function parameter.
2036  * @param object Class object holding the member function
2037  * @param function Local function pointer of the member function
2038  * @param param0 First function parameter used for each function call
2039  * @param param1 Second function parameter used for each function call
2040  * @param param2 Third function parameter used for each function call
2041  * @return Resulting caller function
2042  */
2043  template <typename CT, typename PT0, typename PT1, typename PT2>
2045 
2046  /**
2047  * Creates a new caller container for a member function and specifies the later used function parameters.
2048  * @param object Class object holding the member function
2049  * @param function Local function pointer of the member function
2050  * @param param0 First function parameter used for each function call
2051  * @param param1 Second function parameter used for each function call
2052  * @param param2 Third function parameter used for each function call
2053  * @param param3 Fourth function parameter used for each function call
2054  * @return Resulting caller function
2055  */
2056  template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3>
2058 
2059  /**
2060  * Creates a new caller container for a const member function and specifies the later used function parameters.
2061  * @param object Class object holding the member function
2062  * @param function Local function pointer of the member function
2063  * @param param0 First function parameter used for each function call
2064  * @param param1 Second function parameter used for each function call
2065  * @param param2 Third function parameter used for each function call
2066  * @param param3 Fourth function parameter used for each function call
2067  * @return Resulting caller function
2068  */
2069  template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3>
2071 
2072  /**
2073  * Creates a new caller container for a member function and specifies the later used function parameters.
2074  * @param object Class object holding the member function
2075  * @param function Local function pointer of the member function
2076  * @param param0 First function parameter used for each function call
2077  * @param param1 Second function parameter used for each function call
2078  * @param param2 Third function parameter used for each function call
2079  * @param param3 Fourth function parameter used for each function call
2080  * @param param4 Fifth function parameter used for each function call
2081  * @return Resulting caller function
2082  */
2083  template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4>
2085 
2086  /**
2087  * Creates a new caller container for a const member function and specifies the later used function parameters.
2088  * @param object Class object holding the member function
2089  * @param function Local function pointer of the member function
2090  * @param param0 First function parameter used for each function call
2091  * @param param1 Second function parameter used for each function call
2092  * @param param2 Third function parameter used for each function call
2093  * @param param3 Fourth function parameter used for each function call
2094  * @param param4 Fifth function parameter used for each function call
2095  * @return Resulting caller function
2096  */
2097  template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4>
2099 
2100  /**
2101  * Creates a new caller container for a member function and specifies the later used function parameters.
2102  * @param object Class object holding the member function
2103  * @param function Local function pointer of the member function
2104  * @param param0 First function parameter used for each function call
2105  * @param param1 Second function parameter used for each function call
2106  * @param param2 Third function parameter used for each function call
2107  * @param param3 Fourth function parameter used for each function call
2108  * @param param4 Fifth function parameter used for each function call
2109  * @param param5 Sixth function parameter used for each function call
2110  * @return Resulting caller function
2111  */
2112  template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5>
2114 
2115  /**
2116  * Creates a new caller container for a const member function and specifies the later used function parameters.
2117  * @param object Class object holding the member function
2118  * @param function Local function pointer of the member function
2119  * @param param0 First function parameter used for each function call
2120  * @param param1 Second function parameter used for each function call
2121  * @param param2 Third function parameter used for each function call
2122  * @param param3 Fourth function parameter used for each function call
2123  * @param param4 Fifth function parameter used for each function call
2124  * @param param5 Sixth function parameter used for each function call
2125  * @return Resulting caller function
2126  */
2127  template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5>
2129 
2130  /**
2131  * Creates a new caller container for a member function and specifies the later used function parameters.
2132  * @param object Class object holding the member function
2133  * @param function Local function pointer of the member function
2134  * @param param0 First function parameter used for each function call
2135  * @param param1 Second function parameter used for each function call
2136  * @param param2 Third function parameter used for each function call
2137  * @param param3 Fourth function parameter used for each function call
2138  * @param param4 Fifth function parameter used for each function call
2139  * @param param5 Sixth function parameter used for each function call
2140  * @param param6 Seventh function parameter used for each function call
2141  * @return Resulting caller function
2142  */
2143  template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6>
2145 
2146  /**
2147  * Creates a new caller container for a const member function and specifies the later used function parameters.
2148  * @param object Class object holding the member function
2149  * @param function Local function pointer of the member function
2150  * @param param0 First function parameter used for each function call
2151  * @param param1 Second function parameter used for each function call
2152  * @param param2 Third function parameter used for each function call
2153  * @param param3 Fourth function parameter used for each function call
2154  * @param param4 Fifth function parameter used for each function call
2155  * @param param5 Sixth function parameter used for each function call
2156  * @param param6 Seventh function parameter used for each function call
2157  * @return Resulting caller function
2158  */
2159  template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6>
2161 
2162  /**
2163  * Creates a new caller container for a member function and specifies the later used function parameters.
2164  * @param object Class object holding the member function
2165  * @param function Local function pointer of the member function
2166  * @param param0 First function parameter used for each function call
2167  * @param param1 Second function parameter used for each function call
2168  * @param param2 Third function parameter used for each function call
2169  * @param param3 Fourth function parameter used for each function call
2170  * @param param4 Fifth function parameter used for each function call
2171  * @param param5 Sixth function parameter used for each function call
2172  * @param param6 Seventh function parameter used for each function call
2173  * @param param7 Eighth function parameter used for each function call
2174  * @return Resulting caller function
2175  */
2176  template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7>
2178 
2179  /**
2180  * Creates a new caller container for a const member function and specifies the later used function parameters.
2181  * @param object Class object holding the member function
2182  * @param function Local function pointer of the member function
2183  * @param param0 First function parameter used for each function call
2184  * @param param1 Second function parameter used for each function call
2185  * @param param2 Third function parameter used for each function call
2186  * @param param3 Fourth function parameter used for each function call
2187  * @param param4 Fifth function parameter used for each function call
2188  * @param param5 Sixth function parameter used for each function call
2189  * @param param6 Seventh function parameter used for each function call
2190  * @param param7 Eighth function parameter used for each function call
2191  * @return Resulting caller function
2192  */
2193  template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7>
2195 
2196  /**
2197  * Creates a new caller container for a member function and specifies the later used function parameters.
2198  * @param object Class object holding the member function
2199  * @param function Local function pointer of the member function
2200  * @param param0 First function parameter used for each function call
2201  * @param param1 Second function parameter used for each function call
2202  * @param param2 Third function parameter used for each function call
2203  * @param param3 Fourth function parameter used for each function call
2204  * @param param4 Fifth function parameter used for each function call
2205  * @param param5 Sixth function parameter used for each function call
2206  * @param param6 Seventh function parameter used for each function call
2207  * @param param7 Eighth function parameter used for each function call
2208  * @param param8 Ninth function parameter used for each function call
2209  * @return Resulting caller function
2210  */
2211  template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8>
2212  static inline Caller<RT> create(CT& object, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::Type function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8);
2213 
2214  /**
2215  * Creates a new caller container for a const member function and specifies the later used function parameters.
2216  * @param object Class object holding the member function
2217  * @param function Local function pointer of the member function
2218  * @param param0 First function parameter used for each function call
2219  * @param param1 Second function parameter used for each function call
2220  * @param param2 Third function parameter used for each function call
2221  * @param param3 Fourth function parameter used for each function call
2222  * @param param4 Fifth function parameter used for each function call
2223  * @param param5 Sixth function parameter used for each function call
2224  * @param param6 Seventh function parameter used for each function call
2225  * @param param7 Eighth function parameter used for each function call
2226  * @param param8 Ninth function parameter used for each function call
2227  * @return Resulting caller function
2228  */
2229  template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8>
2230  static inline Caller<RT> create(const CT& object, typename MemberFunctionPointerMaker<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::TypeConst function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8);
2231 
2232  /**
2233  * Creates a new caller container for a member function and specifies the later used function parameters.
2234  * @param object Class object holding the member function
2235  * @param function Local function pointer of the member function
2236  * @param param0 First function parameter used for each function call
2237  * @param param1 Second function parameter used for each function call
2238  * @param param2 Third function parameter used for each function call
2239  * @param param3 Fourth function parameter used for each function call
2240  * @param param4 Fifth function parameter used for each function call
2241  * @param param5 Sixth function parameter used for each function call
2242  * @param param6 Seventh function parameter used for each function call
2243  * @param param7 Eighth function parameter used for each function call
2244  * @param param8 Ninth function parameter used for each function call
2245  * @param param9 Tenth function parameter used for each function call
2246  * @return Resulting caller function
2247  */
2248  template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9>
2249  static inline Caller<RT> create(CT& object, 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 function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9);
2250 
2251  /**
2252  * Creates a new caller container for a const member function and specifies the later used function parameters.
2253  * @param object Class object holding the member function
2254  * @param function Local function pointer of the member function
2255  * @param param0 First function parameter used for each function call
2256  * @param param1 Second function parameter used for each function call
2257  * @param param2 Third function parameter used for each function call
2258  * @param param3 Fourth function parameter used for each function call
2259  * @param param4 Fifth function parameter used for each function call
2260  * @param param5 Sixth function parameter used for each function call
2261  * @param param6 Seventh function parameter used for each function call
2262  * @param param7 Eighth function parameter used for each function call
2263  * @param param8 Ninth function parameter used for each function call
2264  * @param param9 Tenth function parameter used for each function call
2265  * @return Resulting caller function
2266  */
2267  template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9>
2268  static inline Caller<RT> create(const CT& object, 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 function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9);
2269 
2270  /**
2271  * Creates a new caller container for a member function and specifies the later used function parameters.
2272  * @param object Class object holding the member function
2273  * @param function Local function pointer of the member function
2274  * @param param0 First function parameter used for each function call
2275  * @param param1 Second function parameter used for each function call
2276  * @param param2 Third function parameter used for each function call
2277  * @param param3 Fourth function parameter used for each function call
2278  * @param param4 Fifth function parameter used for each function call
2279  * @param param5 Sixth function parameter used for each function call
2280  * @param param6 Seventh function parameter used for each function call
2281  * @param param7 Eighth function parameter used for each function call
2282  * @param param8 Ninth function parameter used for each function call
2283  * @param param9 Tenth function parameter used for each function call
2284  * @param param10 11th function parameter used for each function call
2285  * @return Resulting caller function
2286  */
2287  template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10>
2288  static inline Caller<RT> create(CT& object, 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 function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10);
2289 
2290  /**
2291  * Creates a new caller container for a const member function and specifies the later used function parameters.
2292  * @param object Class object holding the member function
2293  * @param function Local function pointer of the member function
2294  * @param param0 First function parameter used for each function call
2295  * @param param1 Second function parameter used for each function call
2296  * @param param2 Third function parameter used for each function call
2297  * @param param3 Fourth function parameter used for each function call
2298  * @param param4 Fifth function parameter used for each function call
2299  * @param param5 Sixth function parameter used for each function call
2300  * @param param6 Seventh function parameter used for each function call
2301  * @param param7 Eighth function parameter used for each function call
2302  * @param param8 Ninth function parameter used for each function call
2303  * @param param9 Tenth function parameter used for each function call
2304  * @param param10 11th function parameter used for each function call
2305  * @return Resulting caller function
2306  */
2307  template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10>
2308  static inline Caller<RT> create(const CT& object, 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 function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10);
2309 
2310  /**
2311  * Creates a new caller container for a member function and specifies the later used function parameters.
2312  * @param object Class object holding the member function
2313  * @param function Local function pointer of the member function
2314  * @param param0 First function parameter used for each function call
2315  * @param param1 Second function parameter used for each function call
2316  * @param param2 Third function parameter used for each function call
2317  * @param param3 Fourth function parameter used for each function call
2318  * @param param4 Fifth function parameter used for each function call
2319  * @param param5 Sixth function parameter used for each function call
2320  * @param param6 Seventh function parameter used for each function call
2321  * @param param7 Eighth function parameter used for each function call
2322  * @param param8 Ninth function parameter used for each function call
2323  * @param param9 Tenth function parameter used for each function call
2324  * @param param10 11th function parameter used for each function call
2325  * @param param11 12th function parameter used for each function call
2326  * @return Resulting caller function
2327  */
2328  template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11>
2329  static inline Caller<RT> create(CT& object, 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 function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11);
2330 
2331  /**
2332  * Creates a new caller container for a const member function and specifies the later used function parameters.
2333  * @param object Class object holding the member function
2334  * @param function Local function pointer of the member function
2335  * @param param0 First function parameter used for each function call
2336  * @param param1 Second function parameter used for each function call
2337  * @param param2 Third function parameter used for each function call
2338  * @param param3 Fourth function parameter used for each function call
2339  * @param param4 Fifth function parameter used for each function call
2340  * @param param5 Sixth function parameter used for each function call
2341  * @param param6 Seventh function parameter used for each function call
2342  * @param param7 Eighth function parameter used for each function call
2343  * @param param8 Ninth function parameter used for each function call
2344  * @param param9 Tenth function parameter used for each function call
2345  * @param param10 11th function parameter used for each function call
2346  * @param param11 12th function parameter used for each function call
2347  * @return Resulting caller function
2348  */
2349  template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11>
2350  static inline Caller<RT> create(const CT& object, 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 function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11);
2351 
2352  /**
2353  * Creates a new caller container for a member function and specifies the later used function parameters.
2354  * @param object Class object holding the member function
2355  * @param function Local function pointer of the member function
2356  * @param param0 First function parameter used for each function call
2357  * @param param1 Second function parameter used for each function call
2358  * @param param2 Third function parameter used for each function call
2359  * @param param3 Fourth function parameter used for each function call
2360  * @param param4 Fifth function parameter used for each function call
2361  * @param param5 Sixth function parameter used for each function call
2362  * @param param6 Seventh function parameter used for each function call
2363  * @param param7 Eighth function parameter used for each function call
2364  * @param param8 Ninth function parameter used for each function call
2365  * @param param9 Tenth function parameter used for each function call
2366  * @param param10 11th function parameter used for each function call
2367  * @param param11 12th function parameter used for each function call
2368  * @param param12 13th function parameter used for each function call
2369  * @return Resulting caller function
2370  */
2371  template <typename CT, 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>
2372  static inline Caller<RT> create(CT& object, 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 function, 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);
2373 
2374  /**
2375  * Creates a new caller container for a const member function and specifies the later used function parameters.
2376  * @param object Class object holding the member function
2377  * @param function Local function pointer of the member function
2378  * @param param0 First function parameter used for each function call
2379  * @param param1 Second function parameter used for each function call
2380  * @param param2 Third function parameter used for each function call
2381  * @param param3 Fourth function parameter used for each function call
2382  * @param param4 Fifth function parameter used for each function call
2383  * @param param5 Sixth function parameter used for each function call
2384  * @param param6 Seventh function parameter used for each function call
2385  * @param param7 Eighth function parameter used for each function call
2386  * @param param8 Ninth function parameter used for each function call
2387  * @param param9 Tenth function parameter used for each function call
2388  * @param param10 11th function parameter used for each function call
2389  * @param param11 12th function parameter used for each function call
2390  * @param param12 13th function parameter used for each function call
2391  * @return Resulting caller function
2392  */
2393  template <typename CT, 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>
2394  static inline Caller<RT> create(const CT& object, 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 function, 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);
2395 
2396  /**
2397  * Creates a new caller container for a member function and specifies the later used function parameters.
2398  * @param object Class object holding the member function
2399  * @param function Local function pointer of the member function
2400  * @param param0 First function parameter used for each function call
2401  * @param param1 Second function parameter used for each function call
2402  * @param param2 Third function parameter used for each function call
2403  * @param param3 Fourth function parameter used for each function call
2404  * @param param4 Fifth function parameter used for each function call
2405  * @param param5 Sixth function parameter used for each function call
2406  * @param param6 Seventh function parameter used for each function call
2407  * @param param7 Eighth function parameter used for each function call
2408  * @param param8 Ninth function parameter used for each function call
2409  * @param param9 Tenth function parameter used for each function call
2410  * @param param10 11th function parameter used for each function call
2411  * @param param11 12th function parameter used for each function call
2412  * @param param12 13th function parameter used for each function call
2413  * @param param13 14th function parameter used for each function call
2414  * @return Resulting caller function
2415  */
2416  template <typename CT, 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>
2417  static inline Caller<RT> create(CT& object, 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 function, 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);
2418 
2419  /**
2420  * Creates a new caller container for a const member function and specifies the later used function parameters.
2421  * @param object Class object holding the member function
2422  * @param function Local function pointer of the member function
2423  * @param param0 First function parameter used for each function call
2424  * @param param1 Second function parameter used for each function call
2425  * @param param2 Third function parameter used for each function call
2426  * @param param3 Fourth function parameter used for each function call
2427  * @param param4 Fifth function parameter used for each function call
2428  * @param param5 Sixth function parameter used for each function call
2429  * @param param6 Seventh function parameter used for each function call
2430  * @param param7 Eighth function parameter used for each function call
2431  * @param param8 Ninth function parameter used for each function call
2432  * @param param9 Tenth function parameter used for each function call
2433  * @param param10 11th function parameter used for each function call
2434  * @param param11 12th function parameter used for each function call
2435  * @param param12 13th function parameter used for each function call
2436  * @param param13 14th function parameter used for each function call
2437  * @return Resulting caller function
2438  */
2439  template <typename CT, 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>
2440  static inline Caller<RT> create(const CT& object, 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 function, 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);
2441 
2442  /**
2443  * Creates a new caller container for a member function and specifies the later used function parameters.
2444  * @param object Class object holding the member function
2445  * @param function Local function pointer of the member function
2446  * @param param0 First function parameter used for each function call
2447  * @param param1 Second function parameter used for each function call
2448  * @param param2 Third function parameter used for each function call
2449  * @param param3 Fourth function parameter used for each function call
2450  * @param param4 Fifth function parameter used for each function call
2451  * @param param5 Sixth function parameter used for each function call
2452  * @param param6 Seventh function parameter used for each function call
2453  * @param param7 Eighth function parameter used for each function call
2454  * @param param8 Ninth function parameter used for each function call
2455  * @param param9 Tenth function parameter used for each function call
2456  * @param param10 11th function parameter used for each function call
2457  * @param param11 12th function parameter used for each function call
2458  * @param param12 13th function parameter used for each function call
2459  * @param param13 14th function parameter used for each function call
2460  * @param param14 15th function parameter used for each function call
2461  * @return Resulting caller function
2462  */
2463  template <typename CT, 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>
2464  static inline Caller<RT> create(CT& object, 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 function, 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);
2465 
2466  /**
2467  * Creates a new caller container for a const member function and specifies the later used function parameters.
2468  * @param object Class object holding the member function
2469  * @param function Local function pointer of the member function
2470  * @param param0 First function parameter used for each function call
2471  * @param param1 Second function parameter used for each function call
2472  * @param param2 Third function parameter used for each function call
2473  * @param param3 Fourth function parameter used for each function call
2474  * @param param4 Fifth function parameter used for each function call
2475  * @param param5 Sixth function parameter used for each function call
2476  * @param param6 Seventh function parameter used for each function call
2477  * @param param7 Eighth function parameter used for each function call
2478  * @param param8 Ninth function parameter used for each function call
2479  * @param param9 Tenth function parameter used for each function call
2480  * @param param10 11th function parameter used for each function call
2481  * @param param11 12th function parameter used for each function call
2482  * @param param12 13th function parameter used for each function call
2483  * @param param13 14th function parameter used for each function call
2484  * @param param14 15th function parameter used for each function call
2485  * @return Resulting caller function
2486  */
2487  template <typename CT, 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>
2488  static inline Caller<RT> create(const CT& object, 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 function, 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);
2489 
2490  /**
2491  * Creates a new caller container for a member function and specifies the later used function parameters.
2492  * @param object Class object holding the member function
2493  * @param function Local function pointer of the member function
2494  * @param param0 First function parameter used for each function call
2495  * @param param1 Second function parameter used for each function call
2496  * @param param2 Third function parameter used for each function call
2497  * @param param3 Fourth function parameter used for each function call
2498  * @param param4 Fifth function parameter used for each function call
2499  * @param param5 Sixth function parameter used for each function call
2500  * @param param6 Seventh function parameter used for each function call
2501  * @param param7 Eighth function parameter used for each function call
2502  * @param param8 Ninth function parameter used for each function call
2503  * @param param9 Tenth function parameter used for each function call
2504  * @param param10 11th function parameter used for each function call
2505  * @param param11 12th function parameter used for each function call
2506  * @param param12 13th function parameter used for each function call
2507  * @param param13 14th function parameter used for each function call
2508  * @param param14 15th function parameter used for each function call
2509  * @param param15 16th function parameter used for each function call
2510  * @return Resulting caller function
2511  */
2512  template <typename CT, 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>
2513  static inline Caller<RT> create(CT& object, 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 function, 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);
2514 
2515  /**
2516  * Creates a new caller container for a const member function and specifies the later used function parameters.
2517  * @param object Class object holding the member function
2518  * @param function Local function pointer of the member function
2519  * @param param0 First function parameter used for each function call
2520  * @param param1 Second function parameter used for each function call
2521  * @param param2 Third function parameter used for each function call
2522  * @param param3 Fourth function parameter used for each function call
2523  * @param param4 Fifth function parameter used for each function call
2524  * @param param5 Sixth function parameter used for each function call
2525  * @param param6 Seventh function parameter used for each function call
2526  * @param param7 Eighth function parameter used for each function call
2527  * @param param8 Ninth function parameter used for each function call
2528  * @param param9 Tenth function parameter used for each function call
2529  * @param param10 11th function parameter used for each function call
2530  * @param param11 12th function parameter used for each function call
2531  * @param param12 13th function parameter used for each function call
2532  * @param param13 14th function parameter used for each function call
2533  * @param param14 15th function parameter used for each function call
2534  * @param param15 16th function parameter used for each function call
2535  * @return Resulting caller function
2536  */
2537  template <typename CT, 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>
2538  static inline Caller<RT> create(const CT& object, 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 function, 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);
2539 
2540  /**
2541  * Creates a new caller container for a member function and specifies the later used function parameters.
2542  * @param object Class object holding the member function
2543  * @param function Local function pointer of the member function
2544  * @param param0 First function parameter used for each function call
2545  * @param param1 Second function parameter used for each function call
2546  * @param param2 Third function parameter used for each function call
2547  * @param param3 Fourth function parameter used for each function call
2548  * @param param4 Fifth function parameter used for each function call
2549  * @param param5 Sixth function parameter used for each function call
2550  * @param param6 Seventh function parameter used for each function call
2551  * @param param7 Eighth function parameter used for each function call
2552  * @param param8 Ninth function parameter used for each function call
2553  * @param param9 Tenth function parameter used for each function call
2554  * @param param10 11th function parameter used for each function call
2555  * @param param11 12th function parameter used for each function call
2556  * @param param12 13th function parameter used for each function call
2557  * @param param13 14th function parameter used for each function call
2558  * @param param14 15th function parameter used for each function call
2559  * @param param15 16th function parameter used for each function call
2560  * @param param16 17th function parameter used for each function call
2561  * @return Resulting caller function
2562  */
2563  template <typename CT, 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>
2564  static inline Caller<RT> create(CT& object, 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 function, 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);
2565 
2566  /**
2567  * Creates a new caller container for a const member function and specifies the later used function parameters.
2568  * @param object Class object holding the member function
2569  * @param function Local function pointer of the member function
2570  * @param param0 First function parameter used for each function call
2571  * @param param1 Second function parameter used for each function call
2572  * @param param2 Third function parameter used for each function call
2573  * @param param3 Fourth function parameter used for each function call
2574  * @param param4 Fifth function parameter used for each function call
2575  * @param param5 Sixth function parameter used for each function call
2576  * @param param6 Seventh function parameter used for each function call
2577  * @param param7 Eighth function parameter used for each function call
2578  * @param param8 Ninth function parameter used for each function call
2579  * @param param9 Tenth function parameter used for each function call
2580  * @param param10 11th function parameter used for each function call
2581  * @param param11 12th function parameter used for each function call
2582  * @param param12 13th function parameter used for each function call
2583  * @param param13 14th function parameter used for each function call
2584  * @param param14 15th function parameter used for each function call
2585  * @param param15 16th function parameter used for each function call
2586  * @param param16 17th function parameter used for each function call
2587  * @return Resulting caller function
2588  */
2589  template <typename CT, 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>
2590  static inline Caller<RT> create(const CT& object, 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 function, 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);
2591 
2592  /**
2593  * Creates a new caller container for a member function and specifies the later used function parameters.
2594  * @param object Class object holding the member function
2595  * @param function Local function pointer of the member function
2596  * @param param0 First function parameter used for each function call
2597  * @param param1 Second function parameter used for each function call
2598  * @param param2 Third function parameter used for each function call
2599  * @param param3 Fourth function parameter used for each function call
2600  * @param param4 Fifth function parameter used for each function call
2601  * @param param5 Sixth function parameter used for each function call
2602  * @param param6 Seventh function parameter used for each function call
2603  * @param param7 Eighth function parameter used for each function call
2604  * @param param8 Ninth function parameter used for each function call
2605  * @param param9 Tenth function parameter used for each function call
2606  * @param param10 11th function parameter used for each function call
2607  * @param param11 12th function parameter used for each function call
2608  * @param param12 13th function parameter used for each function call
2609  * @param param13 14th function parameter used for each function call
2610  * @param param14 15th function parameter used for each function call
2611  * @param param15 16th function parameter used for each function call
2612  * @param param16 17th function parameter used for each function call
2613  * @param param17 18th function parameter used for each function call
2614  * @return Resulting caller function
2615  */
2616  template <typename CT, 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>
2617  static inline Caller<RT> 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, NullClass, NullClass>::Type function, 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);
2618 
2619  /**
2620  * Creates a new caller container for a const member function and specifies the later used function parameters.
2621  * @param object Class object holding the member function
2622  * @param function Local function pointer of the member function
2623  * @param param0 First function parameter used for each function call
2624  * @param param1 Second function parameter used for each function call
2625  * @param param2 Third function parameter used for each function call
2626  * @param param3 Fourth function parameter used for each function call
2627  * @param param4 Fifth function parameter used for each function call
2628  * @param param5 Sixth function parameter used for each function call
2629  * @param param6 Seventh function parameter used for each function call
2630  * @param param7 Eighth function parameter used for each function call
2631  * @param param8 Ninth function parameter used for each function call
2632  * @param param9 Tenth function parameter used for each function call
2633  * @param param10 11th function parameter used for each function call
2634  * @param param11 12th function parameter used for each function call
2635  * @param param12 13th function parameter used for each function call
2636  * @param param13 14th function parameter used for each function call
2637  * @param param14 15th function parameter used for each function call
2638  * @param param15 16th function parameter used for each function call
2639  * @param param16 17th function parameter used for each function call
2640  * @param param17 18th function parameter used for each function call
2641  * @return Resulting caller function
2642  */
2643  template <typename CT, 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>
2644  static inline Caller<RT> create(const CT& object, 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 function, 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);
2645 
2646  /**
2647  * Creates a new caller container for a member function and specifies the later used function parameters.
2648  * @param object Class object holding the member function
2649  * @param function Local function pointer of the member function
2650  * @param param0 First function parameter used for each function call
2651  * @param param1 Second function parameter used for each function call
2652  * @param param2 Third function parameter used for each function call
2653  * @param param3 Fourth function parameter used for each function call
2654  * @param param4 Fifth function parameter used for each function call
2655  * @param param5 Sixth function parameter used for each function call
2656  * @param param6 Seventh function parameter used for each function call
2657  * @param param7 Eighth function parameter used for each function call
2658  * @param param8 Ninth function parameter used for each function call
2659  * @param param9 Tenth function parameter used for each function call
2660  * @param param10 11th function parameter used for each function call
2661  * @param param11 12th function parameter used for each function call
2662  * @param param12 13th function parameter used for each function call
2663  * @param param13 14th function parameter used for each function call
2664  * @param param14 15th function parameter used for each function call
2665  * @param param15 16th function parameter used for each function call
2666  * @param param16 17th function parameter used for each function call
2667  * @param param17 18th function parameter used for each function call
2668  * @param param18 19th function parameter used for each function call
2669  * @return Resulting caller function
2670  */
2671  template <typename CT, 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>
2672  static inline Caller<RT> 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, NullClass>::Type function, 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);
2673 
2674  /**
2675  * Creates a new caller container for a const member function and specifies the later used function parameters.
2676  * @param object Class object holding the member function
2677  * @param function Local function pointer of the member function
2678  * @param param0 First function parameter used for each function call
2679  * @param param1 Second function parameter used for each function call
2680  * @param param2 Third function parameter used for each function call
2681  * @param param3 Fourth function parameter used for each function call
2682  * @param param4 Fifth function parameter used for each function call
2683  * @param param5 Sixth function parameter used for each function call
2684  * @param param6 Seventh function parameter used for each function call
2685  * @param param7 Eighth function parameter used for each function call
2686  * @param param8 Ninth function parameter used for each function call
2687  * @param param9 Tenth function parameter used for each function call
2688  * @param param10 11th function parameter used for each function call
2689  * @param param11 12th function parameter used for each function call
2690  * @param param12 13th function parameter used for each function call
2691  * @param param13 14th function parameter used for each function call
2692  * @param param14 15th function parameter used for each function call
2693  * @param param15 16th function parameter used for each function call
2694  * @param param16 17th function parameter used for each function call
2695  * @param param17 18th function parameter used for each function call
2696  * @param param18 19th function parameter used for each function call
2697  * @return Resulting caller function
2698  */
2699  template <typename CT, 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>
2700  static inline Caller<RT> create(const 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, NullClass>::TypeConst function, 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);
2701 
2702  /**
2703  * Creates a new caller container for a member function and specifies the later used function parameters.
2704  * @param object Class object holding the member function
2705  * @param function Local function pointer of the member function
2706  * @param param0 First function parameter used for each function call
2707  * @param param1 Second function parameter used for each function call
2708  * @param param2 Third function parameter used for each function call
2709  * @param param3 Fourth function parameter used for each function call
2710  * @param param4 Fifth function parameter used for each function call
2711  * @param param5 Sixth function parameter used for each function call
2712  * @param param6 Seventh function parameter used for each function call
2713  * @param param7 Eighth function parameter used for each function call
2714  * @param param8 Ninth function parameter used for each function call
2715  * @param param9 Tenth function parameter used for each function call
2716  * @param param10 11th function parameter used for each function call
2717  * @param param11 12th function parameter used for each function call
2718  * @param param12 13th function parameter used for each function call
2719  * @param param13 14th function parameter used for each function call
2720  * @param param14 15th function parameter used for each function call
2721  * @param param15 16th function parameter used for each function call
2722  * @param param16 17th function parameter used for each function call
2723  * @param param17 18th function parameter used for each function call
2724  * @param param18 19th function parameter used for each function call
2725  * @param param19 20th function parameter used for each function call
2726  * @return Resulting caller function
2727  */
2728  template <typename CT, 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>
2729  static inline Caller<RT> 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, 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);
2730 
2731  /**
2732  * Creates a new caller container for a const member function and specifies the later used function parameters.
2733  * @param object Class object holding the member function
2734  * @param function Local function pointer of the member function
2735  * @param param0 First function parameter used for each function call
2736  * @param param1 Second function parameter used for each function call
2737  * @param param2 Third function parameter used for each function call
2738  * @param param3 Fourth function parameter used for each function call
2739  * @param param4 Fifth function parameter used for each function call
2740  * @param param5 Sixth function parameter used for each function call
2741  * @param param6 Seventh function parameter used for each function call
2742  * @param param7 Eighth function parameter used for each function call
2743  * @param param8 Ninth function parameter used for each function call
2744  * @param param9 Tenth function parameter used for each function call
2745  * @param param10 11th function parameter used for each function call
2746  * @param param11 12th function parameter used for each function call
2747  * @param param12 13th function parameter used for each function call
2748  * @param param13 14th function parameter used for each function call
2749  * @param param14 15th function parameter used for each function call
2750  * @param param15 16th function parameter used for each function call
2751  * @param param16 17th function parameter used for each function call
2752  * @param param17 18th function parameter used for each function call
2753  * @param param18 19th function parameter used for each function call
2754  * @param param19 20th function parameter used for each function call
2755  * @return Resulting caller function
2756  */
2757  template <typename CT, 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>
2758  static inline Caller<RT> create(const 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>::TypeConst function, 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);
2759 
2760  /**
2761  * Destructs a caller container.
2762  */
2764 
2765  /**
2766  * Returns the number of function parameters.
2767  * @return Parameter number
2768  */
2769  unsigned int parameters() const;
2770 
2771  /**
2772  * Template function to return a parameter.
2773  * The template type has to match the parameter type.
2774  * @param index Index of the parameter to return
2775  * @return Parameter value
2776  */
2777  template <typename T> T parameter(const unsigned int index);
2778 
2779  /**
2780  * Template function to changes a parameter.
2781  * The template type has to match the parameter type.
2782  * @param index Index of the parameter to change
2783  * @param value Value of the parameter
2784  */
2785  template <typename T> void setParameter(const unsigned int index, const T& value);
2786 
2787  /**
2788  * Returns whether this container holds no function.
2789  * @return True, if so
2790  */
2791  inline bool isNull() const;
2792 
2793  /**
2794  * Calls the encapsulated callback function and uses the previously defined function parameters.
2795  * @return Return value
2796  */
2797  inline RT operator()() const;
2798 
2799  /**
2800  * Assigns a callback container.
2801  * @param caller Callback container to assign
2802  * @return Reference to this object
2803  */
2804  Caller& operator=(const Caller& caller);
2805 
2806  /**
2807  * Moves a callback container.
2808  * @param caller Callback container to move
2809  * @return Reference to this object
2810  */
2812 
2813  /**
2814  * Returns whether two callback container addressing the same class object and the same local member function.
2815  * @param caller Right callback to check
2816  * @return True, if so
2817  */
2818  inline bool operator==(const Caller& caller) const;
2819 
2820  /**
2821  * Returns whether two callback container addressing not the same class object or not the same local member function.
2822  * @param caller Right callback to check
2823  * @return True, if so
2824  */
2825  inline bool operator!=(const Caller& caller) const;
2826 
2827  /**
2828  * Returns whether this container holds an encapsulated function.
2829  * @return True, if so
2830  */
2831  explicit inline operator bool() const;
2832 
2833  private:
2834 
2835  /**
2836  * Creates a new caller object by a given base parameterized function object.
2837  * @param base New base function
2838  */
2839  inline explicit Caller(ParameterizedFunctionBase<RT>* base);
2840 
2841  private:
2842 
2843  /// Base function container.
2845 };
2846 
2847 template <typename RT>
2849  callerFunction(nullptr)
2850 {
2851  // nothing to do here
2852 }
2853 
2854 template <typename RT>
2855 inline Caller<RT>::Caller(const Caller& caller) :
2856  callerFunction(caller.callerFunction ? caller.callerFunction->copy() : nullptr)
2857 {
2858  // nothing to do here
2859 }
2860 
2861 template <typename RT>
2862 inline Caller<RT>::Caller(Caller&& caller) :
2863  callerFunction(caller.callerFunction)
2864 {
2865  caller.callerFunction = nullptr;
2866 }
2867 
2868 template <typename RT>
2870  callerFunction(base)
2871 {
2872  // nothing to do here
2873 }
2874 
2875 template <typename RT>
2877 {
2879 }
2880 
2881 template <typename RT>
2882 template <typename PT0>
2884 {
2886 }
2887 
2888 template <typename RT>
2889 template <typename PT0, typename PT1>
2891 {
2893 }
2894 
2895 template <typename RT>
2896 template <typename PT0, typename PT1, typename PT2>
2898 {
2900 }
2901 
2902 template <typename RT>
2903 template <typename PT0, typename PT1, typename PT2, typename PT3>
2905 {
2907 }
2908 
2909 template <typename RT>
2910 template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4>
2912 {
2914 }
2915 
2916 template <typename RT>
2917 template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5>
2919 {
2921 }
2922 
2923 template <typename RT>
2924 template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6>
2926 {
2928 }
2929 
2930 template <typename RT>
2931 template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7>
2933 {
2935 }
2936 
2937 template <typename RT>
2938 template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8>
2940 {
2942 }
2943 
2944 template <typename RT>
2945 template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9>
2947 {
2949 }
2950 
2951 template <typename RT>
2952 template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10>
2953 inline Caller<RT> Caller<RT>::createStatic(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::Type function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10)
2954 {
2956 }
2957 
2958 template <typename RT>
2959 template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11>
2960 inline Caller<RT> Caller<RT>::createStatic(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::Type function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11)
2961 {
2962  return Caller<RT>(new ParameterizedStaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>(function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11));
2963 }
2964 
2965 template <typename RT>
2966 template <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>
2967 inline Caller<RT> Caller<RT>::createStatic(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::Type function, 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)
2968 {
2969  return Caller<RT>(new ParameterizedStaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>(function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12));
2970 }
2971 
2972 template <typename RT>
2973 template <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>
2974 inline Caller<RT> Caller<RT>::createStatic(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>::Type function, 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)
2975 {
2976  return Caller<RT>(new ParameterizedStaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>(function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13));
2977 }
2978 
2979 template <typename RT>
2980 template <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>
2981 inline Caller<RT> Caller<RT>::createStatic(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, NullClass, NullClass, NullClass, NullClass, NullClass>::Type function, 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)
2982 {
2983  return Caller<RT>(new ParameterizedStaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, NullClass, NullClass, NullClass, NullClass, NullClass>(function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14));
2984 }
2985 
2986 template <typename RT>
2987 template <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>
2988 inline Caller<RT> Caller<RT>::createStatic(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, NullClass, NullClass, NullClass, NullClass>::Type function, 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)
2989 {
2990  return Caller<RT>(new ParameterizedStaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, NullClass, NullClass, NullClass, NullClass>(function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15));
2991 }
2992 
2993 template <typename RT>
2994 template <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>
2995 inline Caller<RT> Caller<RT>::createStatic(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, NullClass, NullClass, NullClass>::Type function, 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)
2996 {
2997  return Caller<RT>(new ParameterizedStaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, NullClass, NullClass, NullClass>(function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16));
2998 }
2999 
3000 template <typename RT>
3001 template <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>
3002 inline Caller<RT> Caller<RT>::createStatic(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, NullClass, NullClass>::Type function, 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)
3003 {
3004  return Caller<RT>(new ParameterizedStaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, NullClass, NullClass>(function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17));
3005 }
3006 
3007 template <typename RT>
3008 template <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>
3009 inline Caller<RT> Caller<RT>::createStatic(typename StaticFunctionPointerMaker<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, NullClass>::Type function, 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)
3010 {
3011  return Caller<RT>(new ParameterizedStaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, NullClass>(function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18));
3012 }
3013 
3014 template <typename RT>
3015 template <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>
3016 inline Caller<RT> Caller<RT>::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, 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)
3017 {
3018  return Caller<RT>(new ParameterizedStaticFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>(function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18, param19));
3019 }
3020 
3021 template <typename RT>
3022 template <typename CT>
3024 {
3026 }
3027 
3028 template <typename RT>
3029 template <typename CT>
3031 {
3033 }
3034 
3035 template <typename RT>
3036 template <typename CT, typename PT0>
3038 {
3040 }
3041 
3042 template <typename RT>
3043 template <typename CT, typename PT0>
3045 {
3047 }
3048 
3049 template <typename RT>
3050 template <typename CT, typename PT0, typename PT1>
3052 {
3054 }
3055 
3056 template <typename RT>
3057 template <typename CT, typename PT0, typename PT1>
3059 {
3061 }
3062 
3063 template <typename RT>
3064 template <typename CT, typename PT0, typename PT1, typename PT2>
3066 {
3068 }
3069 
3070 template <typename RT>
3071 template <typename CT, typename PT0, typename PT1, typename PT2>
3073 {
3075 }
3076 
3077 template <typename RT>
3078 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3>
3080 {
3082 }
3083 
3084 template <typename RT>
3085 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3>
3087 {
3089 }
3090 
3091 template <typename RT>
3092 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4>
3094 {
3096 }
3097 
3098 template <typename RT>
3099 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4>
3101 {
3103 }
3104 
3105 template <typename RT>
3106 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5>
3108 {
3110 }
3111 
3112 template <typename RT>
3113 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5>
3115 {
3117 }
3118 
3119 template <typename RT>
3120 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6>
3122 {
3124 }
3125 
3126 template <typename RT>
3127 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6>
3129 {
3131 }
3132 
3133 template <typename RT>
3134 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7>
3136 {
3138 }
3139 
3140 template <typename RT>
3141 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7>
3143 {
3145 }
3146 
3147 template <typename RT>
3148 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8>
3150 {
3152 }
3153 
3154 template <typename RT>
3155 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8>
3157 {
3159 }
3160 
3161 template <typename RT>
3162 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9>
3163 inline Caller<RT> Caller<RT>::create(CT& object, 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 function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9)
3164 {
3166 }
3167 
3168 template <typename RT>
3169 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9>
3170 inline Caller<RT> Caller<RT>::create(const CT& object, 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 function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9)
3171 {
3173 }
3174 
3175 template <typename RT>
3176 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10>
3177 inline Caller<RT> Caller<RT>::create(CT& object, 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 function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10)
3178 {
3180 }
3181 
3182 template <typename RT>
3183 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10>
3184 inline Caller<RT> Caller<RT>::create(const CT& object, 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 function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10)
3185 {
3187 }
3188 
3189 template <typename RT>
3190 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11>
3191 inline Caller<RT> Caller<RT>::create(CT& object, 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 function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11)
3192 {
3193  return Caller<RT>(new ParameterizedMemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>(object, function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11));
3194 }
3195 
3196 template <typename RT>
3197 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11>
3198 inline Caller<RT> Caller<RT>::create(const CT& object, 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 function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11)
3199 {
3200  return Caller<RT>(new ParameterizedMemberFunctionConst<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>(object, function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11));
3201 }
3202 
3203 template <typename RT>
3204 template <typename CT, 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>
3205 inline Caller<RT> Caller<RT>::create(CT& object, 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 function, 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)
3206 {
3207  return Caller<RT>(new ParameterizedMemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>(object, function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12));
3208 }
3209 
3210 template <typename RT>
3211 template <typename CT, 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>
3212 inline Caller<RT> Caller<RT>::create(const CT& object, 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 function, 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)
3213 {
3214  return Caller<RT>(new ParameterizedMemberFunctionConst<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>(object, function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12));
3215 }
3216 
3217 template <typename RT>
3218 template <typename CT, 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>
3219 inline Caller<RT> Caller<RT>::create(CT& object, 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 function, 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)
3220 {
3221  return Caller<RT>(new ParameterizedMemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>(object, function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13));
3222 }
3223 
3224 template <typename RT>
3225 template <typename CT, 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>
3226 inline Caller<RT> Caller<RT>::create(const CT& object, 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 function, 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)
3227 {
3228  return Caller<RT>(new ParameterizedMemberFunctionConst<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass>(object, function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13));
3229 }
3230 
3231 template <typename RT>
3232 template <typename CT, 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>
3233 inline Caller<RT> Caller<RT>::create(CT& object, 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 function, 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)
3234 {
3235  return Caller<RT>(new ParameterizedMemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, NullClass, NullClass, NullClass, NullClass, NullClass>(object, function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14));
3236 }
3237 
3238 template <typename RT>
3239 template <typename CT, 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>
3240 inline Caller<RT> Caller<RT>::create(const CT& object, 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 function, 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)
3241 {
3242  return Caller<RT>(new ParameterizedMemberFunctionConst<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, NullClass, NullClass, NullClass, NullClass, NullClass>(object, function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14));
3243 }
3244 
3245 template <typename RT>
3246 template <typename CT, 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>
3247 inline Caller<RT> Caller<RT>::create(CT& object, 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 function, 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)
3248 {
3249  return Caller<RT>(new ParameterizedMemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, NullClass, NullClass, NullClass, NullClass>(object, function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15));
3250 }
3251 
3252 template <typename RT>
3253 template <typename CT, 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>
3254 inline Caller<RT> Caller<RT>::create(const CT& object, 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 function, 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)
3255 {
3256  return Caller<RT>(new ParameterizedMemberFunctionConst<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, NullClass, NullClass, NullClass, NullClass>(object, function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15));
3257 }
3258 
3259 template <typename RT>
3260 template <typename CT, 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>
3261 inline Caller<RT> Caller<RT>::create(CT& object, 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 function, 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)
3262 {
3263  return Caller<RT>(new ParameterizedMemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, NullClass, NullClass, NullClass>(object, function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16));
3264 }
3265 
3266 template <typename RT>
3267 template <typename CT, 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>
3268 inline Caller<RT> Caller<RT>::create(const CT& object, 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 function, 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)
3269 {
3270  return Caller<RT>(new ParameterizedMemberFunctionConst<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, NullClass, NullClass, NullClass>(object, function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16));
3271 }
3272 
3273 template <typename RT>
3274 template <typename CT, 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>
3275 inline Caller<RT> Caller<RT>::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, NullClass, NullClass>::Type function, 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)
3276 {
3277  return Caller<RT>(new ParameterizedMemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, NullClass, NullClass>(object, function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17));
3278 }
3279 
3280 template <typename RT>
3281 template <typename CT, 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>
3282 inline Caller<RT> Caller<RT>::create(const CT& object, 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 function, 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)
3283 {
3284  return Caller<RT>(new ParameterizedMemberFunctionConst<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, NullClass, NullClass>(object, function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17));
3285 }
3286 
3287 template <typename RT>
3288 template <typename CT, 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>
3289 inline Caller<RT> Caller<RT>::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, NullClass>::Type function, 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)
3290 {
3291  return Caller<RT>(new ParameterizedMemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, NullClass>(object, function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18));
3292 }
3293 
3294 template <typename RT>
3295 template <typename CT, 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>
3296 inline Caller<RT> Caller<RT>::create(const 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, NullClass>::TypeConst function, 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)
3297 {
3298  return Caller<RT>(new ParameterizedMemberFunctionConst<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, NullClass>(object, function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18));
3299 }
3300 
3301 template <typename RT>
3302 template <typename CT, 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>
3303 inline Caller<RT> Caller<RT>::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, 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)
3304 {
3305  return Caller<RT>(new ParameterizedMemberFunction<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>(object, function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18, param19));
3306 }
3307 
3308 template <typename RT>
3309 template <typename CT, 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>
3310 inline Caller<RT> Caller<RT>::create(const 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>::TypeConst function, 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)
3311 {
3312  return Caller<RT>(new ParameterizedMemberFunctionConst<CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>(object, function, param0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18, param19));
3313 }
3314 
3315 template <typename RT>
3317 {
3318  delete callerFunction;
3319 }
3320 
3321 template <typename RT>
3322 unsigned int Caller<RT>::parameters() const
3323 {
3324  ocean_assert(callerFunction != nullptr);
3325  if (callerFunction == nullptr)
3326  {
3327  return 0u;
3328  }
3329 
3330  return callerFunction->parameters();
3331 }
3332 
3333 template <typename RT>
3334 template <typename T>
3335 T Caller<RT>::parameter(const unsigned int index)
3336 {
3337  ocean_assert(callerFunction != nullptr);
3338 
3339 #ifdef OCEAN_SUPPORT_RTTI
3340  ocean_assert(callerFunction->type(index) == typeid(T) && "The parameter has a different type.");
3341 #endif
3342 
3343  return *reinterpret_cast<T*>(callerFunction->parameter(index));
3344 }
3345 
3346 template <typename RT>
3347 template <typename T>
3348 void Caller<RT>::setParameter(const unsigned int index, const T& value)
3349 {
3350  ocean_assert(callerFunction != nullptr);
3351 
3352 #ifdef OCEAN_SUPPORT_RTTI
3353  ocean_assert(callerFunction->type(index) == typeid(T) && "The parameter has a different type.");
3354 #endif
3355 
3356  callerFunction->setParameter(index, &value);
3357 }
3358 
3359 template <typename RT>
3360 inline bool Caller<RT>::isNull() const
3361 {
3362  return callerFunction == nullptr;
3363 }
3364 
3365 template <typename RT>
3366 inline RT Caller<RT>::operator()() const
3367 {
3368  ocean_assert(callerFunction != nullptr);
3369 
3370  return callerFunction->call();
3371 }
3372 
3373 template <typename RT>
3375 {
3376  delete callerFunction;
3377  callerFunction = caller.callerFunction ? caller.callerFunction->copy() : nullptr;
3378 
3379  return *this;
3380 }
3381 
3382 template <typename RT>
3384 {
3385  if (this != &caller)
3386  {
3387  delete callerFunction;
3388 
3389  callerFunction = caller.callerFunction;
3390  caller.callerFunction = nullptr;
3391  }
3392 
3393  return *this;
3394 }
3395 
3396 template <typename RT>
3397 inline bool Caller<RT>::operator==(const Caller& caller) const
3398 {
3399  if (callerFunction == nullptr && caller.callerFunction == nullptr)
3400  {
3401  return true;
3402  }
3403 
3404  if ((callerFunction != nullptr && caller.callerFunction == nullptr)
3405  || (callerFunction == nullptr && caller.callerFunction != nullptr))
3406  {
3407  return false;
3408  }
3409 
3410  return *callerFunction == *caller.callerFunction;
3411 }
3412 
3413 template <typename RT>
3414 inline bool Caller<RT>::operator!=(const Caller& caller) const
3415 {
3416  return !(*this == caller);
3417 }
3418 
3419 template <typename RT>
3420 inline Caller<RT>::operator bool() const
3421 {
3422  return callerFunction != nullptr;
3423 }
3424 
3425 }
3426 
3427 #endif // META_OCEAN_BASE_CALLER_H
This class implements a callback function container using defined function parameters.
Definition: Caller.h:1565
static Caller< RT > 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, 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)
Creates a new caller container for a member function and specifies the later used function parameters...
Definition: Caller.h:3303
static Caller< RT > create(CT &object, typename MemberFunctionPointerMaker< CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8)
Creates a new caller container for a member function and specifies the later used function parameters...
Definition: Caller.h:3149
static Caller< RT > create(const CT &object, 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 function, 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)
Creates a new caller container for a const member function and specifies the later used function para...
Definition: Caller.h:3254
static Caller< RT > create(CT &object, 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 function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9)
Creates a new caller container for a member function and specifies the later used function parameters...
Definition: Caller.h:3163
static Caller< RT > create(CT &object, typename MemberFunctionPointerMaker< CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7)
Creates a new caller container for a member function and specifies the later used function parameters...
Definition: Caller.h:3135
T parameter(const unsigned int index)
Template function to return a parameter.
Definition: Caller.h:3335
static Caller< RT > 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, NullClass >::Type function, 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)
Creates a new caller container for a member function and specifies the later used function parameters...
Definition: Caller.h:3289
static Caller< RT > createStatic(typename StaticFunctionPointerMaker< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, NullClass >::Type function, 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)
Creates a new caller container for a static function and specifies the later used function parameters...
Definition: Caller.h:3009
void setParameter(const unsigned int index, const T &value)
Template function to changes a parameter.
Definition: Caller.h:3348
static Caller< RT > 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, 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)
Creates a new caller container for a static function and specifies the later used function parameters...
Definition: Caller.h:3016
static Caller< RT > create(CT &object, typename MemberFunctionPointerMaker< CT, RT, PT0, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function, PT0 param0)
Creates a new caller container for a member function with no function parameter.
Definition: Caller.h:3037
static Caller< RT > create(const 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, NullClass >::TypeConst function, 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)
Creates a new caller container for a const member function and specifies the later used function para...
Definition: Caller.h:3296
static Caller< RT > create(const CT &object, 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 function, 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)
Creates a new caller container for a const member function and specifies the later used function para...
Definition: Caller.h:3212
static Caller< RT > createStatic(typename StaticFunctionPointerMaker< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function, 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)
Creates a new caller container for a static function and specifies the later used function parameters...
Definition: Caller.h:2981
static Caller< RT > createStatic(typename StaticFunctionPointerMaker< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7)
Creates a new caller container for a static function and specifies the later used function parameters...
Definition: Caller.h:2932
~Caller()
Destructs a caller container.
Definition: Caller.h:3316
static Caller< RT > create(const CT &object, typename MemberFunctionPointerMaker< CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::TypeConst function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6)
Creates a new caller container for a const member function and specifies the later used function para...
Definition: Caller.h:3128
static Caller< RT > createStatic(typename StaticFunctionPointerMaker< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, NullClass, NullClass >::Type function, 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)
Creates a new caller container for a static function and specifies the later used function parameters...
Definition: Caller.h:3002
static Caller< RT > 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, NullClass, NullClass >::Type function, 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)
Creates a new caller container for a member function and specifies the later used function parameters...
Definition: Caller.h:3275
Caller(const Caller &caller)
Copies a caller container.
Definition: Caller.h:2855
static Caller< RT > create(CT &object, typename MemberFunctionPointerMaker< CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6)
Creates a new caller container for a member function and specifies the later used function parameters...
Definition: Caller.h:3121
static Caller< RT > create(const CT &object, 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 function, 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)
Creates a new caller container for a const member function and specifies the later used function para...
Definition: Caller.h:3240
static Caller< RT > create(CT &object, typename MemberFunctionPointerMaker< CT, RT, PT0, PT1, PT2, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function, PT0 param0, PT1 param1, PT2 param2)
Creates a new caller container for a member function and specifies the later used function parameter.
Definition: Caller.h:3065
static Caller< RT > createStatic(typename StaticFunctionPointerMaker< RT, PT0, PT1, PT2, PT3, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function, PT0 param0, PT1 param1, PT2 param2, PT3 param3)
Creates a new caller container for a static function and specifies the later used function parameters...
Definition: Caller.h:2904
static Caller< RT > createStatic(typename StaticFunctionPointerMaker< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function, 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)
Creates a new caller container for a static function and specifies the later used function parameters...
Definition: Caller.h:2974
static Caller< RT > create(CT &object, 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 function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10)
Creates a new caller container for a member function and specifies the later used function parameters...
Definition: Caller.h:3177
static Caller< RT > createStatic(typename StaticFunctionPointerMaker< RT, PT0, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function, PT0 param0)
Creates a new caller container for a static function and specifies the later used function parameter.
Definition: Caller.h:2883
static Caller< RT > create(CT &object, typename MemberFunctionPointerMaker< CT, RT, PT0, PT1, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function, PT0 param0, PT1 param1)
Creates a new caller container for a member function with no function parameter.
Definition: Caller.h:3051
static Caller< RT > create(const CT &object, 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 function, 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)
Creates a new caller container for a const member function and specifies the later used function para...
Definition: Caller.h:3268
static Caller< RT > createStatic(typename StaticFunctionPointerMaker< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6)
Creates a new caller container for a static function and specifies the later used function parameters...
Definition: Caller.h:2925
static Caller< RT > create(CT &object, 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 function, 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)
Creates a new caller container for a member function and specifies the later used function parameters...
Definition: Caller.h:3247
static Caller< RT > create(const CT &object, typename MemberFunctionPointerMaker< CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::TypeConst function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5)
Creates a new caller container for a const member function and specifies the later used function para...
Definition: Caller.h:3114
unsigned int parameters() const
Returns the number of function parameters.
Definition: Caller.h:3322
bool operator==(const Caller &caller) const
Returns whether two callback container addressing the same class object and the same local member fun...
Definition: Caller.h:3397
static Caller< RT > createStatic(typename StaticFunctionPointerMaker< RT, PT0, PT1, PT2, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function, PT0 param0, PT1 param1, PT2 param2)
Creates a new caller container for a static function and specifies the later used function parameters...
Definition: Caller.h:2897
static Caller< RT > createStatic(typename StaticFunctionPointerMaker< RT, PT0, PT1, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function, PT0 param0, PT1 param1)
Creates a new caller container for a static function and specifies the later used function parameters...
Definition: Caller.h:2890
static Caller< RT > create(CT &object, typename MemberFunctionPointerMaker< CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5)
Creates a new caller container for a member function and specifies the later used function parameters...
Definition: Caller.h:3107
Caller & operator=(Caller &&caller)
Moves a callback container.
Definition: Caller.h:3383
static Caller< RT > create(const CT &object, typename MemberFunctionPointerMaker< CT, RT, PT0, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::TypeConst function, PT0 param0)
Creates a new caller container for a const member function with no function parameter.
Definition: Caller.h:3044
Caller()
Creates an empty caller container.
Definition: Caller.h:2848
static Caller< RT > createStatic(typename StaticFunctionPointerMaker< RT, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function)
Creates a new caller container for a static function with no function parameter.
Definition: Caller.h:2876
static Caller< RT > createStatic(typename StaticFunctionPointerMaker< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10)
Creates a new caller container for a static function and specifies the later used function parameters...
Definition: Caller.h:2953
static Caller< RT > create(CT &object, 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 function, 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)
Creates a new caller container for a member function and specifies the later used function parameters...
Definition: Caller.h:3233
static Caller< RT > create(const CT &object, typename MemberFunctionPointerMaker< CT, RT, PT0, PT1, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::TypeConst function, PT0 param0, PT1 param1)
Creates a new caller container for a const member function with no function parameter.
Definition: Caller.h:3058
static Caller< RT > create(const CT &object, 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 function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11)
Creates a new caller container for a const member function and specifies the later used function para...
Definition: Caller.h:3198
static Caller< RT > create(CT &object, 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 function, 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)
Creates a new caller container for a member function and specifies the later used function parameters...
Definition: Caller.h:3219
static Caller< RT > create(const CT &object, 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 function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9)
Creates a new caller container for a const member function and specifies the later used function para...
Definition: Caller.h:3170
static Caller< RT > create(const 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 >::TypeConst function, 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)
Creates a new caller container for a const member function and specifies the later used function para...
Definition: Caller.h:3310
Caller & operator=(const Caller &caller)
Assigns a callback container.
Definition: Caller.h:3374
static Caller< RT > createStatic(typename StaticFunctionPointerMaker< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, NullClass, NullClass, NullClass >::Type function, 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)
Creates a new caller container for a static function and specifies the later used function parameters...
Definition: Caller.h:2995
static Caller< RT > createStatic(typename StaticFunctionPointerMaker< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function, 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)
Creates a new caller container for a static function and specifies the later used function parameters...
Definition: Caller.h:2967
static Caller< RT > create(CT &object, typename MemberFunctionPointerMaker< CT, RT, PT0, PT1, PT2, PT3, PT4, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4)
Creates a new caller container for a member function and specifies the later used function parameters...
Definition: Caller.h:3093
static Caller< RT > createStatic(typename StaticFunctionPointerMaker< RT, PT0, PT1, PT2, PT3, PT4, PT5, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5)
Creates a new caller container for a static function and specifies the later used function parameters...
Definition: Caller.h:2918
static Caller< RT > create(const CT &object, typename MemberFunctionPointerMaker< CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::TypeConst function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8)
Creates a new caller container for a const member function and specifies the later used function para...
Definition: Caller.h:3156
static Caller< RT > create(CT &object, 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 function, 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)
Creates a new caller container for a member function and specifies the later used function parameters...
Definition: Caller.h:3205
static Caller< RT > createStatic(typename StaticFunctionPointerMaker< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11)
Creates a new caller container for a static function and specifies the later used function parameters...
Definition: Caller.h:2960
static Caller< RT > create(const CT &object, typename MemberFunctionPointerMaker< CT, RT, PT0, PT1, PT2, PT3, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::TypeConst function, PT0 param0, PT1 param1, PT2 param2, PT3 param3)
Creates a new caller container for a const member function and specifies the later used function para...
Definition: Caller.h:3086
static Caller< RT > createStatic(typename StaticFunctionPointerMaker< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8)
Creates a new caller container for a static function and specifies the later used function parameters...
Definition: Caller.h:2939
static Caller< RT > create(const CT &object, typename MemberFunctionPointerMaker< CT, RT, PT0, PT1, PT2, PT3, PT4, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::TypeConst function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4)
Creates a new caller container for a const member function and specifies the later used function para...
Definition: Caller.h:3100
ParameterizedFunctionBase< RT > * callerFunction
Base function container.
Definition: Caller.h:2844
bool isNull() const
Returns whether this container holds no function.
Definition: Caller.h:3360
static Caller< RT > create(CT &object, 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 function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11)
Creates a new caller container for a member function and specifies the later used function parameters...
Definition: Caller.h:3191
static Caller< RT > create(const CT &object, 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 function, 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)
Creates a new caller container for a const member function and specifies the later used function para...
Definition: Caller.h:3282
static Caller< RT > createStatic(typename StaticFunctionPointerMaker< RT, PT0, PT1, PT2, PT3, PT4, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4)
Creates a new caller container for a static function and specifies the later used function parameters...
Definition: Caller.h:2911
static Caller< RT > create(const CT &object, 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 function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10)
Creates a new caller container for a const member function and specifies the later used function para...
Definition: Caller.h:3184
static Caller< RT > createStatic(typename StaticFunctionPointerMaker< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, NullClass, NullClass, NullClass, NullClass >::Type function, 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)
Creates a new caller container for a static function and specifies the later used function parameters...
Definition: Caller.h:2988
static Caller< RT > create(CT &object, 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 function, 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)
Creates a new caller container for a member function and specifies the later used function parameters...
Definition: Caller.h:3261
Caller(ParameterizedFunctionBase< RT > *base)
Creates a new caller object by a given base parameterized function object.
Definition: Caller.h:2869
RT operator()() const
Calls the encapsulated callback function and uses the previously defined function parameters.
Definition: Caller.h:3366
static Caller< RT > create(const CT &object, 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 function, 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)
Creates a new caller container for a const member function and specifies the later used function para...
Definition: Caller.h:3226
bool operator!=(const Caller &caller) const
Returns whether two callback container addressing not the same class object or not the same local mem...
Definition: Caller.h:3414
static Caller< RT > create(CT &object, typename MemberFunctionPointerMaker< CT, RT, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function)
Creates a new caller container for a member function with no function parameter.
Definition: Caller.h:3023
Caller(Caller &&caller)
Movies a caller container.
Definition: Caller.h:2862
static Caller< RT > createStatic(typename StaticFunctionPointerMaker< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9)
Creates a new caller container for a static function and specifies the later used function parameters...
Definition: Caller.h:2946
static Caller< RT > create(const CT &object, typename MemberFunctionPointerMaker< CT, RT, PT0, PT1, PT2, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::TypeConst function, PT0 param0, PT1 param1, PT2 param2)
Creates a new caller container for a const member function and specifies the later used function para...
Definition: Caller.h:3072
static Caller< RT > create(CT &object, typename MemberFunctionPointerMaker< CT, RT, PT0, PT1, PT2, PT3, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::Type function, PT0 param0, PT1 param1, PT2 param2, PT3 param3)
Creates a new caller container for a member function and specifies the later used function parameters...
Definition: Caller.h:3079
static Caller< RT > create(const CT &object, typename MemberFunctionPointerMaker< CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::TypeConst function, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7)
Creates a new caller container for a const member function and specifies the later used function para...
Definition: Caller.h:3142
static Caller< RT > create(const CT &object, typename MemberFunctionPointerMaker< CT, RT, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass, NullClass >::TypeConst function)
Creates a new caller container for a const member function with no function parameter.
Definition: Caller.h:3030
This class implements a simple helper class allowing to access the value of an arbitrary data type.
Definition: Caller.h:516
static void assign(typename std::add_lvalue_reference< T >::type target, const void *source)
Assigns the value of a source parameter to a target parameter.
Definition: Caller.h:541
static void * address(typename std::add_lvalue_reference< T >::type parameter)
Receives the address of a specified parameter.
Definition: Caller.h:550
static RT call(CT *functionClass, typename MemberFunctionPointerMaker< CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19 >::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, PT18 param18, PT19 param19)
Calls a function defined by the function pointer the class object and the function parameters.
Definition: Callback.h:1906
This class implements a helper class providing a definition of a member function pointer only.
Definition: Callback.h:83
Definition of a class holding no objects.
Definition: Callback.h:24
This class implements a helper class providing the number of parameters of a parameterized function.
Definition: Caller.h:51
static unsigned int parameters()
Returns the number of parameters for a given function type.
Definition: Caller.h:383
This class is the base class for a parameterized function container.
Definition: Caller.h:608
virtual unsigned int parameters() const =0
Returns the number of function parameters.
virtual ParameterizedFunctionBase * copy() const =0
Creates a copy of the entire derivated object.
virtual RT call() const =0
Calls the internal encapsulated function and uses the specified parameters.
virtual void * parameter(const unsigned int index)=0
Returns a specified parameter as a void pointer to the parameter's pointer.
virtual const std::type_info & type(const unsigned int index) const =0
Returns the parameter type of a specific parameter.
virtual ~ParameterizedFunctionBase()
Destructs a parameterized function object.
Definition: Caller.h:661
virtual void setParameter(const unsigned int index, const void *value)=0
Sets a specified parameter.
This class implements an parameterized function container.
Definition: Caller.h:696
PT6 functionParam6
Seventh function parameter.
Definition: Caller.h:781
PT0 functionParam0
First function parameter.
Definition: Caller.h:763
PT5 functionParam5
Sixth function parameter.
Definition: Caller.h:778
PT17 functionParam17
18th function parameter.
Definition: Caller.h:814
virtual void setParameter(const unsigned int index, const void *value)
Sets a specified parameter as long as the parameter is not a reference.
Definition: Caller.h:933
PT15 functionParam15
16th function parameter.
Definition: Caller.h:808
virtual const std::type_info & type(const unsigned int index) const
Returns the parameter type of a specific parameter.
Definition: Caller.h:1025
PT13 functionParam13
14th function parameter.
Definition: Caller.h:802
ParameterizedFunction(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())
Creates a new function object.
Definition: Caller.h:824
virtual void * parameter(const unsigned int index)
Returns a specified parameter as a void pointer to the parameter's pointer.
Definition: Caller.h:862
PT3 functionParam3
Fourth function parameter.
Definition: Caller.h:772
PT18 functionParam18
19th function parameter.
Definition: Caller.h:817
PT2 functionParam2
Third function parameter.
Definition: Caller.h:769
PT9 functionParam9
Tenth function parameter.
Definition: Caller.h:790
PT16 functionParam16
17th function parameter.
Definition: Caller.h:811
PT10 functionParam10
Eleventh function parameter.
Definition: Caller.h:793
PT8 functionParam8
Ninth function parameter.
Definition: Caller.h:787
virtual ~ParameterizedFunction()
Destructs a parameter function.
Definition: Caller.h:850
virtual unsigned int parameters() const
Returns the number of function parameters.
Definition: Caller.h:856
PT1 functionParam1
Second function parameter.
Definition: Caller.h:766
PT14 functionParam14
15th function parameter.
Definition: Caller.h:805
PT7 functionParam7
Eighth function parameter.
Definition: Caller.h:784
PT4 functionParam4
Fifth function parameter.
Definition: Caller.h:775
PT11 functionParam11
Twelfth function parameter.
Definition: Caller.h:796
PT12 functionParam12
13th function parameter.
Definition: Caller.h:799
PT19 functionParam19
20th function parameter.
Definition: Caller.h:820
This class implements an parameterized const member function container.
Definition: Caller.h:1283
virtual RT call() const
Calls the internal encapsulated function by the used of the previously defined parameters.
Definition: Caller.h:1353
ParameterizedMemberFunctionConst(const CT &object, FunctionType function, 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())
Creates a new const function object.
Definition: Caller.h:1344
MemberFunctionPointerMaker< CT, RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19 >::TypeConst FunctionType
Definition of a const function pointer for the encapsulated function.
Definition: Caller.h:1291
FunctionType functionPointer
Function pointer of the member function.
Definition: Caller.h:1340
const CT * functionClass
Class object holding the member function.
Definition: Caller.h:1337
virtual ParameterizedFunctionBase< RT > * copy() const
Creates a copy of this function container.
Definition: Caller.h:1381
This class implements an parameterized member function container.
Definition: Caller.h:1127
FunctionType functionPointer
Function pointer of the member function.
Definition: Caller.h:1184
virtual RT call() const
Calls the internal encapsulated function by the used of the previously defined parameters.
Definition: Caller.h:1197
virtual ParameterizedFunctionBase< RT > * copy() const
Creates a copy of this function container.
Definition: Caller.h:1225
ParameterizedMemberFunction(CT &object, FunctionType function, 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())
Creates a new function object.
Definition: Caller.h:1188
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: Caller.h:1135
CT * functionClass
Class object holding the member function.
Definition: Caller.h:1181
This class implements an parameterized static function container.
Definition: Caller.h:1438
FunctionType functionPointer
Function pointer of the member function.
Definition: Caller.h:1491
virtual RT call() const
Calls the internal encapsulated function by the used of the previously defined parameters.
Definition: Caller.h:1503
virtual ParameterizedFunctionBase< RT > * copy() const
Creates a copy of this function container.
Definition: Caller.h:1530
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: Caller.h:1446
ParameterizedStaticFunction(FunctionType function, 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())
Creates a new function object.
Definition: Caller.h:1495
static RT call(typename StaticFunctionPointerMaker< RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19 >::Type functionPointer, PT0 param0, PT1 param1, PT2 param2, PT3 param3, PT4 param4, PT5 param5, PT6 param6, PT7 param7, PT8 param8, PT9 param9, PT10 param10, PT11 param11, PT12 param12, PT13 param13, PT14 param14, PT15 param15, PT16 param16, PT17 param17, PT18 param18, PT19 param19)
Calls a function defined by the function pointer the class object and the function parameters.
Definition: Callback.h:2877
This class is a helper class providing a definition of a static function pointer only.
Definition: Callback.h:524
The namespace covering the entire Ocean framework.
Definition: Accessor.h:15