Ocean
Loading...
Searching...
No Matches
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
18namespace 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 */
49template <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 */
66template <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>
67class 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 */
82template <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>
83class 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 */
98template <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>
99class 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 */
114template <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>
115class 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 */
130template <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>
131class 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 */
146template <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>
147class 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 */
162template <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>
163class 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 */
178template <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>
179class 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 */
194template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10>
195class 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 */
210template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9>
211class 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 */
226template <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 */
242template <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 */
258template <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 */
274template <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 */
290template <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 */
306template <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 */
322template <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 */
338template <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 */
354template <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 */
370template <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
382template <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>
387
388template <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>
393
394template <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>
399
400template <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>
405
406template <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>
411
412template <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>
417
418template <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>
423
424template <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>
429
430template <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>
435
436template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10>
441
442template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9>
447
448template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8>
453
454template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7>
459
460template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6>
465
466template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5>
471
472template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4>
477
478template <typename RT, typename PT0, typename PT1, typename PT2, typename PT3>
483
484template <typename RT, typename PT0, typename PT1, typename PT2>
489
490template <typename RT, typename PT0, typename PT1>
495
496template <typename RT, typename PT0>
501
502template <typename RT>
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 */
514template <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
539template <bool tTargetIsReference>
540template <typename T>
541inline 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
548template <bool tTargetIsReference>
549template <typename T>
550void* FunctionParameterAccessor<tTargetIsReference>::address(typename std::add_lvalue_reference<T>::type parameter)
551{
552 return reinterpret_cast<void *>(&parameter);
553}
554
555template <>
556template <typename T>
557inline 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
562template <>
563template <>
564inline void FunctionParameterAccessor<true>::assign<NullClass>(NullClass& /*target*/, const void* /*source*/)
565{
566 ocean_assert(false && "Must not be called!");
567}
568
569template <>
570template <>
571inline void FunctionParameterAccessor<false>::assign<NullClass>(NullClass& /*target*/, const void* /*source*/)
572{
573 ocean_assert(false && "Must not be called!");
574}
575
576template <>
577template <typename T>
578inline 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
584template <>
585template <>
587{
588 ocean_assert(false && "Must not be called!");
589 return nullptr;
590}
591
592template <>
593template <>
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 */
606template <typename RT>
608{
609 public:
610
611 /**
612 * Destructs a parameterized function object.
613 */
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
660template <typename RT>
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 */
694template <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
823template <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>
824inline 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
849template <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>
854
855template <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>
860
861template <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
932template <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
1024template <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 default:
1090 ocean_assert(false && "Invalid index!");
1091 return typeid(PT0);
1092 }
1093}
1094
1095#endif // OCEAN_SUPPORT_RTTI
1096
1097/**
1098 * This class implements an parameterized member function container.
1099 * This function cantainer holds function parameters and therefore can call the encapsulated function without explicit parameters.<br>
1100 * The template parameters define the function's owner class type (CT), the return type (RT) and ten possible function parameters (PT0 - PT9).<br>
1101 * This class is a helper class only and used to allow caller functions to be independent from the member function's class type.
1102 * @tparam CT Type of the member object
1103 * @tparam RT Return type
1104 * @tparam PT0 Data type of the 1st parameter
1105 * @tparam PT1 Data type of the 2nd parameter
1106 * @tparam PT2 Data type of the 3rd parameter
1107 * @tparam PT3 Data type of the 4th parameter
1108 * @tparam PT4 Data type of the 5th parameter
1109 * @tparam PT5 Data type of the 6th parameter
1110 * @tparam PT6 Data type of the 7th parameter
1111 * @tparam PT7 Data type of the 8th parameter
1112 * @tparam PT8 Data type of the 9th parameter
1113 * @tparam PT9 Data type of the 10th parameter
1114 * @tparam PT10 Data type of the 11th parameter
1115 * @tparam PT11 Data type of the 12th parameter
1116 * @tparam PT12 Data type of the 13th parameter
1117 * @tparam PT13 Data type of the 14th parameter
1118 * @tparam PT14 Data type of the 15th parameter
1119 * @tparam PT15 Data type of the 16th parameter
1120 * @tparam PT16 Data type of the 17th parameter
1121 * @tparam PT17 Data type of the 18th parameter
1122 * @tparam PT18 Data type of the 19th parameter
1123 * @tparam PT19 Data type of the 20th parameter
1124 * @ingroup base
1125 */
1126template <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>
1127class ParameterizedMemberFunction : public ParameterizedFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>
1128{
1129 friend class Caller<RT>;
1130
1131 protected:
1132
1133 /**
1134 * Definition of a function pointer for the encapsulated function.
1135 */
1137
1138 protected:
1139
1140 /**
1141 * Creates a new function object.
1142 * @param object Class object holding the member function
1143 * @param function Local member function pointer
1144 * @param param0 First function parameter
1145 * @param param1 Second function parameter
1146 * @param param2 Third function parameter
1147 * @param param3 Fourth function parameter
1148 * @param param4 Fifth function parameter
1149 * @param param5 Sixth function parameter
1150 * @param param6 Seventh function parameter
1151 * @param param7 Eighth function parameter
1152 * @param param8 Ninth function parameter
1153 * @param param9 Tenth function parameter
1154 * @param param10 11th function parameter
1155 * @param param11 12th function parameter
1156 * @param param12 13th function parameter
1157 * @param param13 14th function parameter
1158 * @param param14 15th function parameter
1159 * @param param15 16th function parameter
1160 * @param param16 17th function parameter
1161 * @param param17 18th function parameter
1162 * @param param18 19th function parameter
1163 * @param param19 20th function parameter
1164 */
1165 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());
1166
1167 /**
1168 * Calls the internal encapsulated function by the used of the previously defined parameters.
1169 * @return Return value
1170 */
1171 virtual RT call() const;
1172
1173 /**
1174 * Creates a copy of this function container.
1175 * @return Instance copy
1176 */
1177 virtual ParameterizedFunctionBase<RT>* copy() const;
1178
1179 protected:
1180
1181 /// Class object holding the member function.
1183
1184 /// Function pointer of the member function.
1186};
1187
1188template <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>
1189inline 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) :
1190 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),
1191 functionClass(&object),
1192 functionPointer(function)
1193{
1194 // nothing to do here
1195}
1196
1197template <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>
1199{
1200 ocean_assert(functionClass != nullptr);
1201 ocean_assert(functionPointer != nullptr);
1223}
1224
1225template <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>
1227{
1228 ocean_assert(functionClass != nullptr);
1229 ocean_assert(functionPointer != nullptr);
1251}
1252
1253/**
1254 * This class implements an parameterized const member function container.
1255 * This function cantainer holds function parameters and therefore can call the encapsulated function without explicit parameters.<br>
1256 * The template parameters define the function's owner class type (CT), the return type (RT) and twenty possible function parameters (PT0 - PT19).<br>
1257 * This class is a helper class only and used to allow caller functions to be independent from the member function's class type.
1258 * @tparam CT Type of the member object
1259 * @tparam RT Return type
1260 * @tparam PT0 Data type of the 1st parameter
1261 * @tparam PT1 Data type of the 2nd parameter
1262 * @tparam PT2 Data type of the 3rd parameter
1263 * @tparam PT3 Data type of the 4th parameter
1264 * @tparam PT4 Data type of the 5th parameter
1265 * @tparam PT5 Data type of the 6th parameter
1266 * @tparam PT6 Data type of the 7th parameter
1267 * @tparam PT7 Data type of the 8th parameter
1268 * @tparam PT8 Data type of the 9th parameter
1269 * @tparam PT9 Data type of the 10th parameter
1270 * @tparam PT10 Data type of the 11th parameter
1271 * @tparam PT11 Data type of the 12th parameter
1272 * @tparam PT12 Data type of the 13th parameter
1273 * @tparam PT13 Data type of the 14th parameter
1274 * @tparam PT14 Data type of the 15th parameter
1275 * @tparam PT15 Data type of the 16th parameter
1276 * @tparam PT16 Data type of the 17th parameter
1277 * @tparam PT17 Data type of the 18th parameter
1278 * @tparam PT18 Data type of the 19th parameter
1279 * @tparam PT19 Data type of the 20th parameter
1280 * @ingroup base
1281 */
1282template <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>
1283class ParameterizedMemberFunctionConst : public ParameterizedFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>
1284{
1285 friend class Caller<RT>;
1286
1287 protected:
1288
1289 /**
1290 * Definition of a const function pointer for the encapsulated function.
1291 */
1293
1294 protected:
1295
1296 /**
1297 * Creates a new const function object.
1298 * @param object Class object holding the member function
1299 * @param function Local member function pointer
1300 * @param param0 First function parameter
1301 * @param param1 Second function parameter
1302 * @param param2 Third function parameter
1303 * @param param3 Fourth function parameter
1304 * @param param4 Fifth function parameter
1305 * @param param5 Sixth function parameter
1306 * @param param6 Seventh function parameter
1307 * @param param7 Eighth function parameter
1308 * @param param8 Ninth function parameter
1309 * @param param9 Tenth function parameter
1310 * @param param10 11th function parameter
1311 * @param param11 12th function parameter
1312 * @param param12 13th function parameter
1313 * @param param13 14th function parameter
1314 * @param param14 15th function parameter
1315 * @param param15 16th function parameter
1316 * @param param16 17th function parameter
1317 * @param param17 18th function parameter
1318 * @param param18 19th function parameter
1319 * @param param19 20th function parameter
1320 */
1321 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());
1322
1323 /**
1324 * Calls the internal encapsulated function by the used of the previously defined parameters.
1325 * @return Return value
1326 */
1327 virtual RT call() const;
1328
1329 /**
1330 * Creates a copy of this function container.
1331 * @return Instance copy
1332 */
1333 virtual ParameterizedFunctionBase<RT>* copy() const;
1334
1335 protected:
1336
1337 /// Class object holding the member function.
1338 const CT* functionClass;
1339
1340 /// Function pointer of the member function.
1342};
1343
1344template <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>
1345inline 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) :
1346 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),
1347 functionClass(&object),
1348 functionPointer(function)
1349{
1350 // nothing to do here
1351}
1352
1353template <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>
1355{
1356 ocean_assert(functionClass != nullptr);
1357 ocean_assert(functionPointer != nullptr);
1379}
1380
1381template <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>
1383{
1384 ocean_assert(functionClass != nullptr);
1385 ocean_assert(functionPointer != nullptr);
1407}
1408
1409/**
1410 * This class implements an parameterized static function container.
1411 * This function cantainer holds function parameters and therefore can call the encapsulated function without explicit parameters.<br>
1412 * The template parameters define the function's return type (RT) and twenty possible function parameters (PT0 - PT19).<br>
1413 * This class is a helper class only and used to allow caller functions to be independent from the member function's class type.
1414 * @tparam RT Return type
1415 * @tparam PT0 Data type of the 1st parameter
1416 * @tparam PT1 Data type of the 2nd parameter
1417 * @tparam PT2 Data type of the 3rd parameter
1418 * @tparam PT3 Data type of the 4th parameter
1419 * @tparam PT4 Data type of the 5th parameter
1420 * @tparam PT5 Data type of the 6th parameter
1421 * @tparam PT6 Data type of the 7th parameter
1422 * @tparam PT7 Data type of the 8th parameter
1423 * @tparam PT8 Data type of the 9th parameter
1424 * @tparam PT9 Data type of the 10th parameter
1425 * @tparam PT10 Data type of the 11th parameter
1426 * @tparam PT11 Data type of the 12th parameter
1427 * @tparam PT12 Data type of the 13th parameter
1428 * @tparam PT13 Data type of the 14th parameter
1429 * @tparam PT14 Data type of the 15th parameter
1430 * @tparam PT15 Data type of the 16th parameter
1431 * @tparam PT16 Data type of the 17th parameter
1432 * @tparam PT17 Data type of the 18th parameter
1433 * @tparam PT18 Data type of the 19th parameter
1434 * @tparam PT19 Data type of the 20th parameter
1435 * @ingroup base
1436 */
1437template <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>
1438class ParameterizedStaticFunction : public ParameterizedFunction<RT, PT0, PT1, PT2, PT3, PT4, PT5, PT6, PT7, PT8, PT9, PT10, PT11, PT12, PT13, PT14, PT15, PT16, PT17, PT18, PT19>
1439{
1440 friend class Caller<RT>;
1441
1442 protected:
1443
1444 /**
1445 * Definition of a function pointer for the encapsulated function.
1446 */
1448
1449 protected:
1450
1451 /**
1452 * Creates a new function object.
1453 * @param function Local member function pointer
1454 * @param param0 First function parameter
1455 * @param param1 Second function parameter
1456 * @param param2 Third function parameter
1457 * @param param3 Fourth function parameter
1458 * @param param4 Fifth function parameter
1459 * @param param5 Sixth function parameter
1460 * @param param6 Seventh function parameter
1461 * @param param7 Eighth function parameter
1462 * @param param8 Ninth function parameter
1463 * @param param9 Tenth function parameter
1464 * @param param10 11th function parameter
1465 * @param param11 12th function parameter
1466 * @param param12 13th function parameter
1467 * @param param13 14th function parameter
1468 * @param param14 15th function parameter
1469 * @param param15 16th function parameter
1470 * @param param16 17th function parameter
1471 * @param param17 18th function parameter
1472 * @param param18 19th function parameter
1473 * @param param19 20th function parameter
1474 */
1475 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());
1476
1477 /**
1478 * Calls the internal encapsulated function by the used of the previously defined parameters.
1479 * @return Return value
1480 */
1481 virtual RT call() const;
1482
1483 /**
1484 * Creates a copy of this function container.
1485 * @return Instance copy
1486 */
1487 virtual ParameterizedFunctionBase<RT>* copy() const;
1488
1489 protected:
1490
1491 /// Function pointer of the member function.
1493};
1494
1495template <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>
1496inline 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) :
1497 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),
1498 functionPointer(function)
1499{
1500 // nothing to do here
1501}
1502
1503template <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>
1505{
1506 ocean_assert(functionPointer != nullptr);
1528}
1529
1530template <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>
1532{
1533 ocean_assert(functionPointer != nullptr);
1555}
1556
1557/**
1558 * This class implements a callback function container using defined function parameters.
1559 * Use this callback container to encapsulate callback functions to member functions of class objects.<br>
1560 * This class is independent from the class type and therefore can be stored without the knowledge of the class type.<br>
1561 * @tparam RT Specifies the return type of the encapsulated function
1562 * @ingroup base
1563 */
1564template <typename RT>
1566{
1567 public:
1568
1569 /**
1570 * Creates an empty caller container.
1571 */
1572 inline Caller();
1573
1574 /**
1575 * Copies a caller container.
1576 * @param caller Caller container to copy
1577 */
1578 inline Caller(const Caller& caller);
1579
1580 /**
1581 * Movies a caller container.
1582 * @param caller Caller container to move
1583 */
1584 inline Caller(Caller&& caller);
1585
1586 /**
1587 * Creates a new caller container for a static function with no function parameter.
1588 * @param function Local function pointer of the member function
1589 * @return Resulting static caller function
1590 */
1592
1593 /**
1594 * Creates a new caller container for a static function and specifies the later used function parameter.
1595 * @param function Local function pointer of the member function
1596 * @param param0 First function parameter used for each function call
1597 * @return Resulting static caller function
1598 */
1599 template <typename PT0>
1601
1602 /**
1603 * Creates a new caller container for a static function and specifies the later used function parameters.
1604 * @param function Local function pointer of the member function
1605 * @param param0 First function parameter used for each function call
1606 * @param param1 Second function parameter used for each function call
1607 * @return Resulting static caller function
1608 */
1609 template <typename PT0, typename PT1>
1611
1612 /**
1613 * Creates a new caller container for a static function and specifies the later used function parameters.
1614 * @param function Local function pointer of the member function
1615 * @param param0 First function parameter used for each function call
1616 * @param param1 Second function parameter used for each function call
1617 * @param param2 Third function parameter used for each function call
1618 * @return Resulting static caller function
1619 */
1620 template <typename PT0, typename PT1, typename PT2>
1622
1623 /**
1624 * Creates a new caller container for a static function and specifies the later used function parameters.
1625 * @param function Local function pointer of the member function
1626 * @param param0 First function parameter used for each function call
1627 * @param param1 Second function parameter used for each function call
1628 * @param param2 Third function parameter used for each function call
1629 * @param param3 Fourth function parameter used for each function call
1630 * @return Resulting static caller function
1631 */
1632 template <typename PT0, typename PT1, typename PT2, typename PT3>
1634
1635 /**
1636 * Creates a new caller container for a static function and specifies the later used function parameters.
1637 * @param function Local function pointer of the member function
1638 * @param param0 First function parameter used for each function call
1639 * @param param1 Second function parameter used for each function call
1640 * @param param2 Third function parameter used for each function call
1641 * @param param3 Fourth function parameter used for each function call
1642 * @param param4 Fifth function parameter used for each function call
1643 * @return Resulting static caller function
1644 */
1645 template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4>
1647
1648 /**
1649 * Creates a new caller container for a static function and specifies the later used function parameters.
1650 * @param function Local function pointer of the member function
1651 * @param param0 First function parameter used for each function call
1652 * @param param1 Second function parameter used for each function call
1653 * @param param2 Third function parameter used for each function call
1654 * @param param3 Fourth function parameter used for each function call
1655 * @param param4 Fifth function parameter used for each function call
1656 * @param param5 Sixth function parameter used for each function call
1657 * @return Resulting static caller function
1658 */
1659 template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5>
1661
1662 /**
1663 * Creates a new caller container for a static function and specifies the later used function parameters.
1664 * @param function Local function pointer of the member function
1665 * @param param0 First function parameter used for each function call
1666 * @param param1 Second function parameter used for each function call
1667 * @param param2 Third function parameter used for each function call
1668 * @param param3 Fourth function parameter used for each function call
1669 * @param param4 Fifth function parameter used for each function call
1670 * @param param5 Sixth function parameter used for each function call
1671 * @param param6 Seventh function parameter used for each function call
1672 * @return Resulting static caller function
1673 */
1674 template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6>
1676
1677 /**
1678 * Creates a new caller container for a static function and specifies the later used function parameters.
1679 * @param function Local function pointer of the member function
1680 * @param param0 First function parameter used for each function call
1681 * @param param1 Second function parameter used for each function call
1682 * @param param2 Third function parameter used for each function call
1683 * @param param3 Fourth function parameter used for each function call
1684 * @param param4 Fifth function parameter used for each function call
1685 * @param param5 Sixth function parameter used for each function call
1686 * @param param6 Seventh function parameter used for each function call
1687 * @param param7 Eighth function parameter used for each function call
1688 * @return Resulting static caller function
1689 */
1690 template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7>
1692
1693 /**
1694 * Creates a new caller container for a static function and specifies the later used function parameters.
1695 * @param function Local function pointer of the member function
1696 * @param param0 First function parameter used for each function call
1697 * @param param1 Second function parameter used for each function call
1698 * @param param2 Third function parameter used for each function call
1699 * @param param3 Fourth function parameter used for each function call
1700 * @param param4 Fifth function parameter used for each function call
1701 * @param param5 Sixth function parameter used for each function call
1702 * @param param6 Seventh function parameter used for each function call
1703 * @param param7 Eighth function parameter used for each function call
1704 * @param param8 Ninth function parameter used for each function call
1705 * @return Resulting static caller function
1706 */
1707 template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8>
1709
1710 /**
1711 * Creates a new caller container for a static function and specifies the later used function parameters.
1712 * @param function Local function pointer of the member function
1713 * @param param0 First function parameter used for each function call
1714 * @param param1 Second function parameter used for each function call
1715 * @param param2 Third function parameter used for each function call
1716 * @param param3 Fourth function parameter used for each function call
1717 * @param param4 Fifth function parameter used for each function call
1718 * @param param5 Sixth function parameter used for each function call
1719 * @param param6 Seventh function parameter used for each function call
1720 * @param param7 Eighth function parameter used for each function call
1721 * @param param8 Ninth function parameter used for each function call
1722 * @param param9 Tenth function parameter used for each function call
1723 * @return Resulting static caller function
1724 */
1725 template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9>
1726 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);
1727
1728 /**
1729 * Creates a new caller container for a static function and specifies the later used function parameters.
1730 * @param function Local function pointer of the member function
1731 * @param param0 First function parameter used for each function call
1732 * @param param1 Second function parameter used for each function call
1733 * @param param2 Third function parameter used for each function call
1734 * @param param3 Fourth function parameter used for each function call
1735 * @param param4 Fifth function parameter used for each function call
1736 * @param param5 Sixth function parameter used for each function call
1737 * @param param6 Seventh function parameter used for each function call
1738 * @param param7 Eighth function parameter used for each function call
1739 * @param param8 Ninth function parameter used for each function call
1740 * @param param9 Tenth function parameter used for each function call
1741 * @param param10 11th function parameter used for each function call
1742 * @return Resulting static caller function
1743 */
1744 template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10>
1745 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);
1746
1747 /**
1748 * Creates a new caller container for a static function and specifies the later used function parameters.
1749 * @param function Local function pointer of the member function
1750 * @param param0 First function parameter used for each function call
1751 * @param param1 Second function parameter used for each function call
1752 * @param param2 Third function parameter used for each function call
1753 * @param param3 Fourth function parameter used for each function call
1754 * @param param4 Fifth function parameter used for each function call
1755 * @param param5 Sixth function parameter used for each function call
1756 * @param param6 Seventh function parameter used for each function call
1757 * @param param7 Eighth function parameter used for each function call
1758 * @param param8 Ninth function parameter used for each function call
1759 * @param param9 Tenth function parameter used for each function call
1760 * @param param10 11th function parameter used for each function call
1761 * @param param11 12th function parameter used for each function call
1762 * @return Resulting static caller function
1763 */
1764 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>
1765 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);
1766
1767 /**
1768 * Creates a new caller container for a static function and specifies the later used function parameters.
1769 * @param function Local function pointer of the member function
1770 * @param param0 First function parameter used for each function call
1771 * @param param1 Second function parameter used for each function call
1772 * @param param2 Third function parameter used for each function call
1773 * @param param3 Fourth function parameter used for each function call
1774 * @param param4 Fifth function parameter used for each function call
1775 * @param param5 Sixth function parameter used for each function call
1776 * @param param6 Seventh function parameter used for each function call
1777 * @param param7 Eighth function parameter used for each function call
1778 * @param param8 Ninth function parameter used for each function call
1779 * @param param9 Tenth function parameter used for each function call
1780 * @param param10 11th function parameter used for each function call
1781 * @param param11 12th function parameter used for each function call
1782 * @param param12 13th function parameter used for each function call
1783 * @return Resulting static caller function
1784 */
1785 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>
1786 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);
1787
1788 /**
1789 * Creates a new caller container for a static function and specifies the later used function parameters.
1790 * @param function Local function pointer of the member function
1791 * @param param0 First function parameter used for each function call
1792 * @param param1 Second function parameter used for each function call
1793 * @param param2 Third function parameter used for each function call
1794 * @param param3 Fourth function parameter used for each function call
1795 * @param param4 Fifth function parameter used for each function call
1796 * @param param5 Sixth function parameter used for each function call
1797 * @param param6 Seventh function parameter used for each function call
1798 * @param param7 Eighth function parameter used for each function call
1799 * @param param8 Ninth function parameter used for each function call
1800 * @param param9 Tenth function parameter used for each function call
1801 * @param param10 11th function parameter used for each function call
1802 * @param param11 12th function parameter used for each function call
1803 * @param param12 13th function parameter used for each function call
1804 * @param param13 14th function parameter used for each function call
1805 * @return Resulting static caller function
1806 */
1807 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>
1808 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);
1809
1810 /**
1811 * Creates a new caller container for a static function and specifies the later used function parameters.
1812 * @param function Local function pointer of the member function
1813 * @param param0 First function parameter used for each function call
1814 * @param param1 Second function parameter used for each function call
1815 * @param param2 Third function parameter used for each function call
1816 * @param param3 Fourth function parameter used for each function call
1817 * @param param4 Fifth function parameter used for each function call
1818 * @param param5 Sixth function parameter used for each function call
1819 * @param param6 Seventh function parameter used for each function call
1820 * @param param7 Eighth function parameter used for each function call
1821 * @param param8 Ninth function parameter used for each function call
1822 * @param param9 Tenth function parameter used for each function call
1823 * @param param10 11th function parameter used for each function call
1824 * @param param11 12th function parameter used for each function call
1825 * @param param12 13th function parameter used for each function call
1826 * @param param13 14th function parameter used for each function call
1827 * @param param14 15th function parameter used for each function call
1828 * @return Resulting static caller function
1829 */
1830 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>
1831 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);
1832
1833 /**
1834 * Creates a new caller container for a static function and specifies the later used function parameters.
1835 * @param function Local function pointer of the member function
1836 * @param param0 First function parameter used for each function call
1837 * @param param1 Second function parameter used for each function call
1838 * @param param2 Third function parameter used for each function call
1839 * @param param3 Fourth function parameter used for each function call
1840 * @param param4 Fifth function parameter used for each function call
1841 * @param param5 Sixth function parameter used for each function call
1842 * @param param6 Seventh function parameter used for each function call
1843 * @param param7 Eighth function parameter used for each function call
1844 * @param param8 Ninth function parameter used for each function call
1845 * @param param9 Tenth function parameter used for each function call
1846 * @param param10 11th function parameter used for each function call
1847 * @param param11 12th function parameter used for each function call
1848 * @param param12 13th function parameter used for each function call
1849 * @param param13 14th function parameter used for each function call
1850 * @param param14 15th function parameter used for each function call
1851 * @param param15 16th function parameter used for each function call
1852 * @return Resulting static caller function
1853 */
1854 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>
1855 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);
1856
1857 /**
1858 * Creates a new caller container for a static function and specifies the later used function parameters.
1859 * @param function Local function pointer of the member function
1860 * @param param0 First function parameter used for each function call
1861 * @param param1 Second function parameter used for each function call
1862 * @param param2 Third function parameter used for each function call
1863 * @param param3 Fourth function parameter used for each function call
1864 * @param param4 Fifth function parameter used for each function call
1865 * @param param5 Sixth function parameter used for each function call
1866 * @param param6 Seventh function parameter used for each function call
1867 * @param param7 Eighth function parameter used for each function call
1868 * @param param8 Ninth function parameter used for each function call
1869 * @param param9 Tenth function parameter used for each function call
1870 * @param param10 11th function parameter used for each function call
1871 * @param param11 12th function parameter used for each function call
1872 * @param param12 13th function parameter used for each function call
1873 * @param param13 14th function parameter used for each function call
1874 * @param param14 15th function parameter used for each function call
1875 * @param param15 16th function parameter used for each function call
1876 * @param param16 17th function parameter used for each function call
1877 * @return Resulting static caller function
1878 */
1879 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>
1880 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);
1881
1882 /**
1883 * Creates a new caller container for a static function and specifies the later used function parameters.
1884 * @param function Local function pointer of the member function
1885 * @param param0 First function parameter used for each function call
1886 * @param param1 Second function parameter used for each function call
1887 * @param param2 Third function parameter used for each function call
1888 * @param param3 Fourth function parameter used for each function call
1889 * @param param4 Fifth function parameter used for each function call
1890 * @param param5 Sixth function parameter used for each function call
1891 * @param param6 Seventh function parameter used for each function call
1892 * @param param7 Eighth function parameter used for each function call
1893 * @param param8 Ninth function parameter used for each function call
1894 * @param param9 Tenth function parameter used for each function call
1895 * @param param10 11th function parameter used for each function call
1896 * @param param11 12th function parameter used for each function call
1897 * @param param12 13th function parameter used for each function call
1898 * @param param13 14th function parameter used for each function call
1899 * @param param14 15th function parameter used for each function call
1900 * @param param15 16th function parameter used for each function call
1901 * @param param16 17th function parameter used for each function call
1902 * @param param17 18th function parameter used for each function call
1903 * @return Resulting static caller function
1904 */
1905 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>
1906 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);
1907
1908 /**
1909 * Creates a new caller container for a static function and specifies the later used function parameters.
1910 * @param function Local function pointer of the member function
1911 * @param param0 First function parameter used for each function call
1912 * @param param1 Second function parameter used for each function call
1913 * @param param2 Third function parameter used for each function call
1914 * @param param3 Fourth function parameter used for each function call
1915 * @param param4 Fifth function parameter used for each function call
1916 * @param param5 Sixth function parameter used for each function call
1917 * @param param6 Seventh function parameter used for each function call
1918 * @param param7 Eighth function parameter used for each function call
1919 * @param param8 Ninth function parameter used for each function call
1920 * @param param9 Tenth function parameter used for each function call
1921 * @param param10 11th function parameter used for each function call
1922 * @param param11 12th function parameter used for each function call
1923 * @param param12 13th function parameter used for each function call
1924 * @param param13 14th function parameter used for each function call
1925 * @param param14 15th function parameter used for each function call
1926 * @param param15 16th function parameter used for each function call
1927 * @param param16 17th function parameter used for each function call
1928 * @param param17 18th function parameter used for each function call
1929 * @param param18 19th function parameter used for each function call
1930 * @return Resulting static caller function
1931 */
1932 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>
1933 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);
1934
1935 /**
1936 * Creates a new caller container for a static function and specifies the later used function parameters.
1937 * @param function Local function pointer of the member function
1938 * @param param0 First function parameter used for each function call
1939 * @param param1 Second function parameter used for each function call
1940 * @param param2 Third function parameter used for each function call
1941 * @param param3 Fourth function parameter used for each function call
1942 * @param param4 Fifth function parameter used for each function call
1943 * @param param5 Sixth function parameter used for each function call
1944 * @param param6 Seventh function parameter used for each function call
1945 * @param param7 Eighth function parameter used for each function call
1946 * @param param8 Ninth function parameter used for each function call
1947 * @param param9 Tenth function parameter used for each function call
1948 * @param param10 11th function parameter used for each function call
1949 * @param param11 12th function parameter used for each function call
1950 * @param param12 13th function parameter used for each function call
1951 * @param param13 14th function parameter used for each function call
1952 * @param param14 15th function parameter used for each function call
1953 * @param param15 16th function parameter used for each function call
1954 * @param param16 17th function parameter used for each function call
1955 * @param param17 18th function parameter used for each function call
1956 * @param param18 19th function parameter used for each function call
1957 * @param param19 20th function parameter used for each function call
1958 * @return Resulting static caller function
1959 */
1960 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>
1961 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);
1962
1963 /**
1964 * Creates a new caller container for a member function with no function parameter.
1965 * @param object Class object holding the member function
1966 * @param function Local function pointer of the member function
1967 * @return Resulting caller function
1968 */
1969 template <typename CT>
1971
1972 /**
1973 * Creates a new caller container for a const member function with no function parameter.
1974 * @param object Class object holding the member function
1975 * @param function Local function pointer of the member function
1976 * @return Resulting caller function
1977 */
1978 template <typename CT>
1980
1981 /**
1982 * Creates a new caller container for a member function with no function parameter.
1983 * @param object Class object holding the member function
1984 * @param function Local function pointer of the member function
1985 * @param param0 First function parameter used for each function call
1986 * @return Resulting caller function
1987 */
1988 template <typename CT, typename PT0>
1990
1991 /**
1992 * Creates a new caller container for a const member function with no function parameter.
1993 * @param object Class object holding the member function
1994 * @param function Local function pointer of the member function
1995 * @param param0 First function parameter used for each function call
1996 * @return Resulting caller function
1997 */
1998 template <typename CT, typename PT0>
2000
2001 /**
2002 * Creates a new caller container for a member function with no function parameter.
2003 * @param object Class object holding the member function
2004 * @param function Local function pointer of the member function
2005 * @param param0 First function parameter used for each function call
2006 * @param param1 Second function parameter used for each function call
2007 * @return Resulting caller function
2008 */
2009 template <typename CT, typename PT0, typename PT1>
2011
2012 /**
2013 * Creates a new caller container for a const member function with no function parameter.
2014 * @param object Class object holding the member function
2015 * @param function Local function pointer of the member function
2016 * @param param0 First function parameter used for each function call
2017 * @param param1 Second function parameter used for each function call
2018 * @return Resulting caller function
2019 */
2020 template <typename CT, typename PT0, typename PT1>
2022
2023 /**
2024 * Creates a new caller container for a member function and specifies the later used function parameter.
2025 * @param object Class object holding the member function
2026 * @param function Local function pointer of the member function
2027 * @param param0 First function parameter used for each function call
2028 * @param param1 Second function parameter used for each function call
2029 * @param param2 Third function parameter used for each function call
2030 * @return Resulting caller function
2031 */
2032 template <typename CT, typename PT0, typename PT1, typename PT2>
2034
2035 /**
2036 * Creates a new caller container for a const member function and specifies the later used function parameter.
2037 * @param object Class object holding the member function
2038 * @param function Local function pointer of the member function
2039 * @param param0 First function parameter used for each function call
2040 * @param param1 Second function parameter used for each function call
2041 * @param param2 Third function parameter used for each function call
2042 * @return Resulting caller function
2043 */
2044 template <typename CT, typename PT0, typename PT1, typename PT2>
2046
2047 /**
2048 * Creates a new caller container for a member function and specifies the later used function parameters.
2049 * @param object Class object holding the member function
2050 * @param function Local function pointer of the member function
2051 * @param param0 First function parameter used for each function call
2052 * @param param1 Second function parameter used for each function call
2053 * @param param2 Third function parameter used for each function call
2054 * @param param3 Fourth function parameter used for each function call
2055 * @return Resulting caller function
2056 */
2057 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3>
2059
2060 /**
2061 * Creates a new caller container for a const member function and specifies the later used function parameters.
2062 * @param object Class object holding the member function
2063 * @param function Local function pointer of the member function
2064 * @param param0 First function parameter used for each function call
2065 * @param param1 Second function parameter used for each function call
2066 * @param param2 Third function parameter used for each function call
2067 * @param param3 Fourth function parameter used for each function call
2068 * @return Resulting caller function
2069 */
2070 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3>
2072
2073 /**
2074 * Creates a new caller container for a member function and specifies the later used function parameters.
2075 * @param object Class object holding the member function
2076 * @param function Local function pointer of the member function
2077 * @param param0 First function parameter used for each function call
2078 * @param param1 Second function parameter used for each function call
2079 * @param param2 Third function parameter used for each function call
2080 * @param param3 Fourth function parameter used for each function call
2081 * @param param4 Fifth function parameter used for each function call
2082 * @return Resulting caller function
2083 */
2084 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4>
2086
2087 /**
2088 * Creates a new caller container for a const member function and specifies the later used function parameters.
2089 * @param object Class object holding the member function
2090 * @param function Local function pointer of the member function
2091 * @param param0 First function parameter used for each function call
2092 * @param param1 Second function parameter used for each function call
2093 * @param param2 Third function parameter used for each function call
2094 * @param param3 Fourth function parameter used for each function call
2095 * @param param4 Fifth function parameter used for each function call
2096 * @return Resulting caller function
2097 */
2098 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4>
2100
2101 /**
2102 * Creates a new caller container for a member function and specifies the later used function parameters.
2103 * @param object Class object holding the member function
2104 * @param function Local function pointer of the member function
2105 * @param param0 First function parameter used for each function call
2106 * @param param1 Second function parameter used for each function call
2107 * @param param2 Third function parameter used for each function call
2108 * @param param3 Fourth function parameter used for each function call
2109 * @param param4 Fifth function parameter used for each function call
2110 * @param param5 Sixth function parameter used for each function call
2111 * @return Resulting caller function
2112 */
2113 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5>
2115
2116 /**
2117 * Creates a new caller container for a const member function and specifies the later used function parameters.
2118 * @param object Class object holding the member function
2119 * @param function Local function pointer of the member function
2120 * @param param0 First function parameter used for each function call
2121 * @param param1 Second function parameter used for each function call
2122 * @param param2 Third function parameter used for each function call
2123 * @param param3 Fourth function parameter used for each function call
2124 * @param param4 Fifth function parameter used for each function call
2125 * @param param5 Sixth function parameter used for each function call
2126 * @return Resulting caller function
2127 */
2128 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5>
2130
2131 /**
2132 * Creates a new caller container for a member function and specifies the later used function parameters.
2133 * @param object Class object holding the member function
2134 * @param function Local function pointer of the member function
2135 * @param param0 First function parameter used for each function call
2136 * @param param1 Second function parameter used for each function call
2137 * @param param2 Third function parameter used for each function call
2138 * @param param3 Fourth function parameter used for each function call
2139 * @param param4 Fifth function parameter used for each function call
2140 * @param param5 Sixth function parameter used for each function call
2141 * @param param6 Seventh function parameter used for each function call
2142 * @return Resulting caller function
2143 */
2144 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6>
2146
2147 /**
2148 * Creates a new caller container for a const member function and specifies the later used function parameters.
2149 * @param object Class object holding the member function
2150 * @param function Local function pointer of the member function
2151 * @param param0 First function parameter used for each function call
2152 * @param param1 Second function parameter used for each function call
2153 * @param param2 Third function parameter used for each function call
2154 * @param param3 Fourth function parameter used for each function call
2155 * @param param4 Fifth function parameter used for each function call
2156 * @param param5 Sixth function parameter used for each function call
2157 * @param param6 Seventh function parameter used for each function call
2158 * @return Resulting caller function
2159 */
2160 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6>
2162
2163 /**
2164 * Creates a new caller container for a member function and specifies the later used function parameters.
2165 * @param object Class object holding the member function
2166 * @param function Local function pointer of the member function
2167 * @param param0 First function parameter used for each function call
2168 * @param param1 Second function parameter used for each function call
2169 * @param param2 Third function parameter used for each function call
2170 * @param param3 Fourth function parameter used for each function call
2171 * @param param4 Fifth function parameter used for each function call
2172 * @param param5 Sixth function parameter used for each function call
2173 * @param param6 Seventh function parameter used for each function call
2174 * @param param7 Eighth function parameter used for each function call
2175 * @return Resulting caller function
2176 */
2177 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7>
2179
2180 /**
2181 * Creates a new caller container for a const member function and specifies the later used function parameters.
2182 * @param object Class object holding the member function
2183 * @param function Local function pointer of the member function
2184 * @param param0 First function parameter used for each function call
2185 * @param param1 Second function parameter used for each function call
2186 * @param param2 Third function parameter used for each function call
2187 * @param param3 Fourth function parameter used for each function call
2188 * @param param4 Fifth function parameter used for each function call
2189 * @param param5 Sixth function parameter used for each function call
2190 * @param param6 Seventh function parameter used for each function call
2191 * @param param7 Eighth function parameter used for each function call
2192 * @return Resulting caller function
2193 */
2194 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7>
2196
2197 /**
2198 * Creates a new caller container for a member function and specifies the later used function parameters.
2199 * @param object Class object holding the member function
2200 * @param function Local function pointer of the member function
2201 * @param param0 First function parameter used for each function call
2202 * @param param1 Second function parameter used for each function call
2203 * @param param2 Third function parameter used for each function call
2204 * @param param3 Fourth function parameter used for each function call
2205 * @param param4 Fifth function parameter used for each function call
2206 * @param param5 Sixth function parameter used for each function call
2207 * @param param6 Seventh function parameter used for each function call
2208 * @param param7 Eighth function parameter used for each function call
2209 * @param param8 Ninth function parameter used for each function call
2210 * @return Resulting caller function
2211 */
2212 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8>
2213 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);
2214
2215 /**
2216 * Creates a new caller container for a const member function and specifies the later used function parameters.
2217 * @param object Class object holding the member function
2218 * @param function Local function pointer of the member function
2219 * @param param0 First function parameter used for each function call
2220 * @param param1 Second function parameter used for each function call
2221 * @param param2 Third function parameter used for each function call
2222 * @param param3 Fourth function parameter used for each function call
2223 * @param param4 Fifth function parameter used for each function call
2224 * @param param5 Sixth function parameter used for each function call
2225 * @param param6 Seventh function parameter used for each function call
2226 * @param param7 Eighth function parameter used for each function call
2227 * @param param8 Ninth function parameter used for each function call
2228 * @return Resulting caller function
2229 */
2230 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8>
2231 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);
2232
2233 /**
2234 * Creates a new caller container for a member function and specifies the later used function parameters.
2235 * @param object Class object holding the member function
2236 * @param function Local function pointer of the member function
2237 * @param param0 First function parameter used for each function call
2238 * @param param1 Second function parameter used for each function call
2239 * @param param2 Third function parameter used for each function call
2240 * @param param3 Fourth function parameter used for each function call
2241 * @param param4 Fifth function parameter used for each function call
2242 * @param param5 Sixth function parameter used for each function call
2243 * @param param6 Seventh function parameter used for each function call
2244 * @param param7 Eighth function parameter used for each function call
2245 * @param param8 Ninth function parameter used for each function call
2246 * @param param9 Tenth function parameter used for each function call
2247 * @return Resulting caller function
2248 */
2249 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9>
2250 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);
2251
2252 /**
2253 * Creates a new caller container for a const member function and specifies the later used function parameters.
2254 * @param object Class object holding the member function
2255 * @param function Local function pointer of the member function
2256 * @param param0 First function parameter used for each function call
2257 * @param param1 Second function parameter used for each function call
2258 * @param param2 Third function parameter used for each function call
2259 * @param param3 Fourth function parameter used for each function call
2260 * @param param4 Fifth function parameter used for each function call
2261 * @param param5 Sixth function parameter used for each function call
2262 * @param param6 Seventh function parameter used for each function call
2263 * @param param7 Eighth function parameter used for each function call
2264 * @param param8 Ninth function parameter used for each function call
2265 * @param param9 Tenth function parameter used for each function call
2266 * @return Resulting caller function
2267 */
2268 template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9>
2269 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);
2270
2271 /**
2272 * Creates a new caller container for a member function and specifies the later used function parameters.
2273 * @param object Class object holding the member function
2274 * @param function Local function pointer of the member function
2275 * @param param0 First function parameter used for each function call
2276 * @param param1 Second function parameter used for each function call
2277 * @param param2 Third function parameter used for each function call
2278 * @param param3 Fourth function parameter used for each function call
2279 * @param param4 Fifth function parameter used for each function call
2280 * @param param5 Sixth function parameter used for each function call
2281 * @param param6 Seventh function parameter used for each function call
2282 * @param param7 Eighth function parameter used for each function call
2283 * @param param8 Ninth function parameter used for each function call
2284 * @param param9 Tenth function parameter used for each function call
2285 * @param param10 11th function parameter used for each function call
2286 * @return Resulting caller function
2287 */
2288 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>
2289 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);
2290
2291 /**
2292 * Creates a new caller container for a const member function and specifies the later used function parameters.
2293 * @param object Class object holding the member function
2294 * @param function Local function pointer of the member function
2295 * @param param0 First function parameter used for each function call
2296 * @param param1 Second function parameter used for each function call
2297 * @param param2 Third function parameter used for each function call
2298 * @param param3 Fourth function parameter used for each function call
2299 * @param param4 Fifth function parameter used for each function call
2300 * @param param5 Sixth function parameter used for each function call
2301 * @param param6 Seventh function parameter used for each function call
2302 * @param param7 Eighth function parameter used for each function call
2303 * @param param8 Ninth function parameter used for each function call
2304 * @param param9 Tenth function parameter used for each function call
2305 * @param param10 11th function parameter used for each function call
2306 * @return Resulting caller function
2307 */
2308 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>
2309 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);
2310
2311 /**
2312 * Creates a new caller container for a member function and specifies the later used function parameters.
2313 * @param object Class object holding the member function
2314 * @param function Local function pointer of the member function
2315 * @param param0 First function parameter used for each function call
2316 * @param param1 Second function parameter used for each function call
2317 * @param param2 Third function parameter used for each function call
2318 * @param param3 Fourth function parameter used for each function call
2319 * @param param4 Fifth function parameter used for each function call
2320 * @param param5 Sixth function parameter used for each function call
2321 * @param param6 Seventh function parameter used for each function call
2322 * @param param7 Eighth function parameter used for each function call
2323 * @param param8 Ninth function parameter used for each function call
2324 * @param param9 Tenth function parameter used for each function call
2325 * @param param10 11th function parameter used for each function call
2326 * @param param11 12th function parameter used for each function call
2327 * @return Resulting caller function
2328 */
2329 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>
2330 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);
2331
2332 /**
2333 * Creates a new caller container for a const member function and specifies the later used function parameters.
2334 * @param object Class object holding the member function
2335 * @param function Local function pointer of the member function
2336 * @param param0 First function parameter used for each function call
2337 * @param param1 Second function parameter used for each function call
2338 * @param param2 Third function parameter used for each function call
2339 * @param param3 Fourth function parameter used for each function call
2340 * @param param4 Fifth function parameter used for each function call
2341 * @param param5 Sixth function parameter used for each function call
2342 * @param param6 Seventh function parameter used for each function call
2343 * @param param7 Eighth function parameter used for each function call
2344 * @param param8 Ninth function parameter used for each function call
2345 * @param param9 Tenth function parameter used for each function call
2346 * @param param10 11th function parameter used for each function call
2347 * @param param11 12th function parameter used for each function call
2348 * @return Resulting caller function
2349 */
2350 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>
2351 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);
2352
2353 /**
2354 * Creates a new caller container for a member function and specifies the later used function parameters.
2355 * @param object Class object holding the member function
2356 * @param function Local function pointer of the member function
2357 * @param param0 First function parameter used for each function call
2358 * @param param1 Second function parameter used for each function call
2359 * @param param2 Third function parameter used for each function call
2360 * @param param3 Fourth function parameter used for each function call
2361 * @param param4 Fifth function parameter used for each function call
2362 * @param param5 Sixth function parameter used for each function call
2363 * @param param6 Seventh function parameter used for each function call
2364 * @param param7 Eighth function parameter used for each function call
2365 * @param param8 Ninth function parameter used for each function call
2366 * @param param9 Tenth function parameter used for each function call
2367 * @param param10 11th function parameter used for each function call
2368 * @param param11 12th function parameter used for each function call
2369 * @param param12 13th function parameter used for each function call
2370 * @return Resulting caller function
2371 */
2372 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>
2373 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);
2374
2375 /**
2376 * Creates a new caller container for a const member function and specifies the later used function parameters.
2377 * @param object Class object holding the member function
2378 * @param function Local function pointer of the member function
2379 * @param param0 First function parameter used for each function call
2380 * @param param1 Second function parameter used for each function call
2381 * @param param2 Third function parameter used for each function call
2382 * @param param3 Fourth function parameter used for each function call
2383 * @param param4 Fifth function parameter used for each function call
2384 * @param param5 Sixth function parameter used for each function call
2385 * @param param6 Seventh function parameter used for each function call
2386 * @param param7 Eighth function parameter used for each function call
2387 * @param param8 Ninth function parameter used for each function call
2388 * @param param9 Tenth function parameter used for each function call
2389 * @param param10 11th function parameter used for each function call
2390 * @param param11 12th function parameter used for each function call
2391 * @param param12 13th function parameter used for each function call
2392 * @return Resulting caller function
2393 */
2394 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>
2395 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);
2396
2397 /**
2398 * Creates a new caller container for a member function and specifies the later used function parameters.
2399 * @param object Class object holding the member function
2400 * @param function Local function pointer of the member function
2401 * @param param0 First function parameter used for each function call
2402 * @param param1 Second function parameter used for each function call
2403 * @param param2 Third function parameter used for each function call
2404 * @param param3 Fourth function parameter used for each function call
2405 * @param param4 Fifth function parameter used for each function call
2406 * @param param5 Sixth function parameter used for each function call
2407 * @param param6 Seventh function parameter used for each function call
2408 * @param param7 Eighth function parameter used for each function call
2409 * @param param8 Ninth function parameter used for each function call
2410 * @param param9 Tenth function parameter used for each function call
2411 * @param param10 11th function parameter used for each function call
2412 * @param param11 12th function parameter used for each function call
2413 * @param param12 13th function parameter used for each function call
2414 * @param param13 14th function parameter used for each function call
2415 * @return Resulting caller function
2416 */
2417 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>
2418 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);
2419
2420 /**
2421 * Creates a new caller container for a const member function and specifies the later used function parameters.
2422 * @param object Class object holding the member function
2423 * @param function Local function pointer of the member function
2424 * @param param0 First function parameter used for each function call
2425 * @param param1 Second function parameter used for each function call
2426 * @param param2 Third function parameter used for each function call
2427 * @param param3 Fourth function parameter used for each function call
2428 * @param param4 Fifth function parameter used for each function call
2429 * @param param5 Sixth function parameter used for each function call
2430 * @param param6 Seventh function parameter used for each function call
2431 * @param param7 Eighth function parameter used for each function call
2432 * @param param8 Ninth function parameter used for each function call
2433 * @param param9 Tenth function parameter used for each function call
2434 * @param param10 11th function parameter used for each function call
2435 * @param param11 12th function parameter used for each function call
2436 * @param param12 13th function parameter used for each function call
2437 * @param param13 14th function parameter used for each function call
2438 * @return Resulting caller function
2439 */
2440 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>
2441 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);
2442
2443 /**
2444 * Creates a new caller container for a member function and specifies the later used function parameters.
2445 * @param object Class object holding the member function
2446 * @param function Local function pointer of the member function
2447 * @param param0 First function parameter used for each function call
2448 * @param param1 Second function parameter used for each function call
2449 * @param param2 Third function parameter used for each function call
2450 * @param param3 Fourth function parameter used for each function call
2451 * @param param4 Fifth function parameter used for each function call
2452 * @param param5 Sixth function parameter used for each function call
2453 * @param param6 Seventh function parameter used for each function call
2454 * @param param7 Eighth function parameter used for each function call
2455 * @param param8 Ninth function parameter used for each function call
2456 * @param param9 Tenth function parameter used for each function call
2457 * @param param10 11th function parameter used for each function call
2458 * @param param11 12th function parameter used for each function call
2459 * @param param12 13th function parameter used for each function call
2460 * @param param13 14th function parameter used for each function call
2461 * @param param14 15th function parameter used for each function call
2462 * @return Resulting caller function
2463 */
2464 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>
2465 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);
2466
2467 /**
2468 * Creates a new caller container for a const member function and specifies the later used function parameters.
2469 * @param object Class object holding the member function
2470 * @param function Local function pointer of the member function
2471 * @param param0 First function parameter used for each function call
2472 * @param param1 Second function parameter used for each function call
2473 * @param param2 Third function parameter used for each function call
2474 * @param param3 Fourth function parameter used for each function call
2475 * @param param4 Fifth function parameter used for each function call
2476 * @param param5 Sixth function parameter used for each function call
2477 * @param param6 Seventh function parameter used for each function call
2478 * @param param7 Eighth function parameter used for each function call
2479 * @param param8 Ninth function parameter used for each function call
2480 * @param param9 Tenth function parameter used for each function call
2481 * @param param10 11th function parameter used for each function call
2482 * @param param11 12th function parameter used for each function call
2483 * @param param12 13th function parameter used for each function call
2484 * @param param13 14th function parameter used for each function call
2485 * @param param14 15th function parameter used for each function call
2486 * @return Resulting caller function
2487 */
2488 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>
2489 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);
2490
2491 /**
2492 * Creates a new caller container for a member function and specifies the later used function parameters.
2493 * @param object Class object holding the member function
2494 * @param function Local function pointer of the member function
2495 * @param param0 First function parameter used for each function call
2496 * @param param1 Second function parameter used for each function call
2497 * @param param2 Third function parameter used for each function call
2498 * @param param3 Fourth function parameter used for each function call
2499 * @param param4 Fifth function parameter used for each function call
2500 * @param param5 Sixth function parameter used for each function call
2501 * @param param6 Seventh function parameter used for each function call
2502 * @param param7 Eighth function parameter used for each function call
2503 * @param param8 Ninth function parameter used for each function call
2504 * @param param9 Tenth function parameter used for each function call
2505 * @param param10 11th function parameter used for each function call
2506 * @param param11 12th function parameter used for each function call
2507 * @param param12 13th function parameter used for each function call
2508 * @param param13 14th function parameter used for each function call
2509 * @param param14 15th function parameter used for each function call
2510 * @param param15 16th function parameter used for each function call
2511 * @return Resulting caller function
2512 */
2513 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>
2514 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);
2515
2516 /**
2517 * Creates a new caller container for a const member function and specifies the later used function parameters.
2518 * @param object Class object holding the member function
2519 * @param function Local function pointer of the member function
2520 * @param param0 First function parameter used for each function call
2521 * @param param1 Second function parameter used for each function call
2522 * @param param2 Third function parameter used for each function call
2523 * @param param3 Fourth function parameter used for each function call
2524 * @param param4 Fifth function parameter used for each function call
2525 * @param param5 Sixth function parameter used for each function call
2526 * @param param6 Seventh function parameter used for each function call
2527 * @param param7 Eighth function parameter used for each function call
2528 * @param param8 Ninth function parameter used for each function call
2529 * @param param9 Tenth function parameter used for each function call
2530 * @param param10 11th function parameter used for each function call
2531 * @param param11 12th function parameter used for each function call
2532 * @param param12 13th function parameter used for each function call
2533 * @param param13 14th function parameter used for each function call
2534 * @param param14 15th function parameter used for each function call
2535 * @param param15 16th function parameter used for each function call
2536 * @return Resulting caller function
2537 */
2538 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>
2539 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);
2540
2541 /**
2542 * Creates a new caller container for a member function and specifies the later used function parameters.
2543 * @param object Class object holding the member function
2544 * @param function Local function pointer of the member function
2545 * @param param0 First function parameter used for each function call
2546 * @param param1 Second function parameter used for each function call
2547 * @param param2 Third function parameter used for each function call
2548 * @param param3 Fourth function parameter used for each function call
2549 * @param param4 Fifth function parameter used for each function call
2550 * @param param5 Sixth function parameter used for each function call
2551 * @param param6 Seventh function parameter used for each function call
2552 * @param param7 Eighth function parameter used for each function call
2553 * @param param8 Ninth function parameter used for each function call
2554 * @param param9 Tenth function parameter used for each function call
2555 * @param param10 11th function parameter used for each function call
2556 * @param param11 12th function parameter used for each function call
2557 * @param param12 13th function parameter used for each function call
2558 * @param param13 14th function parameter used for each function call
2559 * @param param14 15th function parameter used for each function call
2560 * @param param15 16th function parameter used for each function call
2561 * @param param16 17th function parameter used for each function call
2562 * @return Resulting caller function
2563 */
2564 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>
2565 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);
2566
2567 /**
2568 * Creates a new caller container for a const member function and specifies the later used function parameters.
2569 * @param object Class object holding the member function
2570 * @param function Local function pointer of the member function
2571 * @param param0 First function parameter used for each function call
2572 * @param param1 Second function parameter used for each function call
2573 * @param param2 Third function parameter used for each function call
2574 * @param param3 Fourth function parameter used for each function call
2575 * @param param4 Fifth function parameter used for each function call
2576 * @param param5 Sixth function parameter used for each function call
2577 * @param param6 Seventh function parameter used for each function call
2578 * @param param7 Eighth function parameter used for each function call
2579 * @param param8 Ninth function parameter used for each function call
2580 * @param param9 Tenth function parameter used for each function call
2581 * @param param10 11th function parameter used for each function call
2582 * @param param11 12th function parameter used for each function call
2583 * @param param12 13th function parameter used for each function call
2584 * @param param13 14th function parameter used for each function call
2585 * @param param14 15th function parameter used for each function call
2586 * @param param15 16th function parameter used for each function call
2587 * @param param16 17th function parameter used for each function call
2588 * @return Resulting caller function
2589 */
2590 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>
2591 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);
2592
2593 /**
2594 * Creates a new caller container for a member function and specifies the later used function parameters.
2595 * @param object Class object holding the member function
2596 * @param function Local function pointer of the member function
2597 * @param param0 First function parameter used for each function call
2598 * @param param1 Second function parameter used for each function call
2599 * @param param2 Third function parameter used for each function call
2600 * @param param3 Fourth function parameter used for each function call
2601 * @param param4 Fifth function parameter used for each function call
2602 * @param param5 Sixth function parameter used for each function call
2603 * @param param6 Seventh function parameter used for each function call
2604 * @param param7 Eighth function parameter used for each function call
2605 * @param param8 Ninth function parameter used for each function call
2606 * @param param9 Tenth function parameter used for each function call
2607 * @param param10 11th function parameter used for each function call
2608 * @param param11 12th function parameter used for each function call
2609 * @param param12 13th function parameter used for each function call
2610 * @param param13 14th function parameter used for each function call
2611 * @param param14 15th function parameter used for each function call
2612 * @param param15 16th function parameter used for each function call
2613 * @param param16 17th function parameter used for each function call
2614 * @param param17 18th function parameter used for each function call
2615 * @return Resulting caller function
2616 */
2617 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>
2618 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);
2619
2620 /**
2621 * Creates a new caller container for a const member function and specifies the later used function parameters.
2622 * @param object Class object holding the member function
2623 * @param function Local function pointer of the member function
2624 * @param param0 First function parameter used for each function call
2625 * @param param1 Second function parameter used for each function call
2626 * @param param2 Third function parameter used for each function call
2627 * @param param3 Fourth function parameter used for each function call
2628 * @param param4 Fifth function parameter used for each function call
2629 * @param param5 Sixth function parameter used for each function call
2630 * @param param6 Seventh function parameter used for each function call
2631 * @param param7 Eighth function parameter used for each function call
2632 * @param param8 Ninth function parameter used for each function call
2633 * @param param9 Tenth function parameter used for each function call
2634 * @param param10 11th function parameter used for each function call
2635 * @param param11 12th function parameter used for each function call
2636 * @param param12 13th function parameter used for each function call
2637 * @param param13 14th function parameter used for each function call
2638 * @param param14 15th function parameter used for each function call
2639 * @param param15 16th function parameter used for each function call
2640 * @param param16 17th function parameter used for each function call
2641 * @param param17 18th function parameter used for each function call
2642 * @return Resulting caller function
2643 */
2644 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>
2645 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);
2646
2647 /**
2648 * Creates a new caller container for a member function and specifies the later used function parameters.
2649 * @param object Class object holding the member function
2650 * @param function Local function pointer of the member function
2651 * @param param0 First function parameter used for each function call
2652 * @param param1 Second function parameter used for each function call
2653 * @param param2 Third function parameter used for each function call
2654 * @param param3 Fourth function parameter used for each function call
2655 * @param param4 Fifth function parameter used for each function call
2656 * @param param5 Sixth function parameter used for each function call
2657 * @param param6 Seventh function parameter used for each function call
2658 * @param param7 Eighth function parameter used for each function call
2659 * @param param8 Ninth function parameter used for each function call
2660 * @param param9 Tenth function parameter used for each function call
2661 * @param param10 11th function parameter used for each function call
2662 * @param param11 12th function parameter used for each function call
2663 * @param param12 13th function parameter used for each function call
2664 * @param param13 14th function parameter used for each function call
2665 * @param param14 15th function parameter used for each function call
2666 * @param param15 16th function parameter used for each function call
2667 * @param param16 17th function parameter used for each function call
2668 * @param param17 18th function parameter used for each function call
2669 * @param param18 19th function parameter used for each function call
2670 * @return Resulting caller function
2671 */
2672 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>
2673 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);
2674
2675 /**
2676 * Creates a new caller container for a const member function and specifies the later used function parameters.
2677 * @param object Class object holding the member function
2678 * @param function Local function pointer of the member function
2679 * @param param0 First function parameter used for each function call
2680 * @param param1 Second function parameter used for each function call
2681 * @param param2 Third function parameter used for each function call
2682 * @param param3 Fourth function parameter used for each function call
2683 * @param param4 Fifth function parameter used for each function call
2684 * @param param5 Sixth function parameter used for each function call
2685 * @param param6 Seventh function parameter used for each function call
2686 * @param param7 Eighth function parameter used for each function call
2687 * @param param8 Ninth function parameter used for each function call
2688 * @param param9 Tenth function parameter used for each function call
2689 * @param param10 11th function parameter used for each function call
2690 * @param param11 12th function parameter used for each function call
2691 * @param param12 13th function parameter used for each function call
2692 * @param param13 14th function parameter used for each function call
2693 * @param param14 15th function parameter used for each function call
2694 * @param param15 16th function parameter used for each function call
2695 * @param param16 17th function parameter used for each function call
2696 * @param param17 18th function parameter used for each function call
2697 * @param param18 19th function parameter used for each function call
2698 * @return Resulting caller function
2699 */
2700 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>
2701 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);
2702
2703 /**
2704 * Creates a new caller container for a member function and specifies the later used function parameters.
2705 * @param object Class object holding the member function
2706 * @param function Local function pointer of the member function
2707 * @param param0 First function parameter used for each function call
2708 * @param param1 Second function parameter used for each function call
2709 * @param param2 Third function parameter used for each function call
2710 * @param param3 Fourth function parameter used for each function call
2711 * @param param4 Fifth function parameter used for each function call
2712 * @param param5 Sixth function parameter used for each function call
2713 * @param param6 Seventh function parameter used for each function call
2714 * @param param7 Eighth function parameter used for each function call
2715 * @param param8 Ninth function parameter used for each function call
2716 * @param param9 Tenth function parameter used for each function call
2717 * @param param10 11th function parameter used for each function call
2718 * @param param11 12th function parameter used for each function call
2719 * @param param12 13th function parameter used for each function call
2720 * @param param13 14th function parameter used for each function call
2721 * @param param14 15th function parameter used for each function call
2722 * @param param15 16th function parameter used for each function call
2723 * @param param16 17th function parameter used for each function call
2724 * @param param17 18th function parameter used for each function call
2725 * @param param18 19th function parameter used for each function call
2726 * @param param19 20th function parameter used for each function call
2727 * @return Resulting caller function
2728 */
2729 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>
2730 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);
2731
2732 /**
2733 * Creates a new caller container for a const member function and specifies the later used function parameters.
2734 * @param object Class object holding the member function
2735 * @param function Local function pointer of the member function
2736 * @param param0 First function parameter used for each function call
2737 * @param param1 Second function parameter used for each function call
2738 * @param param2 Third function parameter used for each function call
2739 * @param param3 Fourth function parameter used for each function call
2740 * @param param4 Fifth function parameter used for each function call
2741 * @param param5 Sixth function parameter used for each function call
2742 * @param param6 Seventh function parameter used for each function call
2743 * @param param7 Eighth function parameter used for each function call
2744 * @param param8 Ninth function parameter used for each function call
2745 * @param param9 Tenth function parameter used for each function call
2746 * @param param10 11th function parameter used for each function call
2747 * @param param11 12th function parameter used for each function call
2748 * @param param12 13th function parameter used for each function call
2749 * @param param13 14th function parameter used for each function call
2750 * @param param14 15th function parameter used for each function call
2751 * @param param15 16th function parameter used for each function call
2752 * @param param16 17th function parameter used for each function call
2753 * @param param17 18th function parameter used for each function call
2754 * @param param18 19th function parameter used for each function call
2755 * @param param19 20th function parameter used for each function call
2756 * @return Resulting caller function
2757 */
2758 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>
2759 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);
2760
2761 /**
2762 * Destructs a caller container.
2763 */
2765
2766 /**
2767 * Returns the number of function parameters.
2768 * @return Parameter number
2769 */
2770 unsigned int parameters() const;
2771
2772 /**
2773 * Template function to return a parameter.
2774 * The template type has to match the parameter type.
2775 * @param index Index of the parameter to return
2776 * @return Parameter value
2777 */
2778 template <typename T> T parameter(const unsigned int index);
2779
2780 /**
2781 * Template function to changes a parameter.
2782 * The template type has to match the parameter type.
2783 * @param index Index of the parameter to change
2784 * @param value Value of the parameter
2785 */
2786 template <typename T> void setParameter(const unsigned int index, const T& value);
2787
2788 /**
2789 * Returns whether this container holds no function.
2790 * @return True, if so
2791 */
2792 inline bool isNull() const;
2793
2794 /**
2795 * Calls the encapsulated callback function and uses the previously defined function parameters.
2796 * @return Return value
2797 */
2798 inline RT operator()() const;
2799
2800 /**
2801 * Assigns a callback container.
2802 * @param caller Callback container to assign
2803 * @return Reference to this object
2804 */
2805 Caller& operator=(const Caller& caller);
2806
2807 /**
2808 * Moves a callback container.
2809 * @param caller Callback container to move
2810 * @return Reference to this object
2811 */
2813
2814 /**
2815 * Returns whether two callback container addressing the same class object and the same local member function.
2816 * @param caller Right callback to check
2817 * @return True, if so
2818 */
2819 inline bool operator==(const Caller& caller) const;
2820
2821 /**
2822 * Returns whether two callback container addressing not the same class object or not the same local member function.
2823 * @param caller Right callback to check
2824 * @return True, if so
2825 */
2826 inline bool operator!=(const Caller& caller) const;
2827
2828 /**
2829 * Returns whether this container holds an encapsulated function.
2830 * @return True, if so
2831 */
2832 explicit inline operator bool() const;
2833
2834 private:
2835
2836 /**
2837 * Creates a new caller object by a given base parameterized function object.
2838 * @param base New base function
2839 */
2841
2842 private:
2843
2844 /// Base function container.
2846};
2847
2848template <typename RT>
2850 callerFunction(nullptr)
2851{
2852 // nothing to do here
2853}
2854
2855template <typename RT>
2856inline Caller<RT>::Caller(const Caller& caller) :
2857 callerFunction(caller.callerFunction ? caller.callerFunction->copy() : nullptr)
2858{
2859 // nothing to do here
2860}
2861
2862template <typename RT>
2863inline Caller<RT>::Caller(Caller&& caller) :
2864 callerFunction(caller.callerFunction)
2865{
2866 caller.callerFunction = nullptr;
2867}
2868
2869template <typename RT>
2871 callerFunction(base)
2872{
2873 // nothing to do here
2874}
2875
2876template <typename RT>
2881
2882template <typename RT>
2883template <typename PT0>
2888
2889template <typename RT>
2890template <typename PT0, typename PT1>
2895
2896template <typename RT>
2897template <typename PT0, typename PT1, typename PT2>
2902
2903template <typename RT>
2904template <typename PT0, typename PT1, typename PT2, typename PT3>
2909
2910template <typename RT>
2911template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4>
2916
2917template <typename RT>
2918template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5>
2923
2924template <typename RT>
2925template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6>
2930
2931template <typename RT>
2932template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7>
2937
2938template <typename RT>
2939template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8>
2944
2945template <typename RT>
2946template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9>
2951
2952template <typename RT>
2953template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10>
2954inline 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)
2955{
2957}
2958
2959template <typename RT>
2960template <typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10, typename PT11>
2961inline 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)
2962{
2963 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));
2964}
2965
2966template <typename RT>
2967template <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>
2968inline 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)
2969{
2970 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));
2971}
2972
2973template <typename RT>
2974template <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>
2975inline 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)
2976{
2977 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));
2978}
2979
2980template <typename RT>
2981template <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>
2982inline 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)
2983{
2984 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));
2985}
2986
2987template <typename RT>
2988template <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>
2989inline 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)
2990{
2991 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));
2992}
2993
2994template <typename RT>
2995template <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>
2996inline 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)
2997{
2998 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));
2999}
3000
3001template <typename RT>
3002template <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>
3003inline 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)
3004{
3005 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));
3006}
3007
3008template <typename RT>
3009template <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>
3010inline 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)
3011{
3012 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));
3013}
3014
3015template <typename RT>
3016template <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>
3017inline 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)
3018{
3019 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));
3020}
3021
3022template <typename RT>
3023template <typename CT>
3028
3029template <typename RT>
3030template <typename CT>
3035
3036template <typename RT>
3037template <typename CT, typename PT0>
3042
3043template <typename RT>
3044template <typename CT, typename PT0>
3049
3050template <typename RT>
3051template <typename CT, typename PT0, typename PT1>
3056
3057template <typename RT>
3058template <typename CT, typename PT0, typename PT1>
3063
3064template <typename RT>
3065template <typename CT, typename PT0, typename PT1, typename PT2>
3070
3071template <typename RT>
3072template <typename CT, typename PT0, typename PT1, typename PT2>
3077
3078template <typename RT>
3079template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3>
3084
3085template <typename RT>
3086template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3>
3091
3092template <typename RT>
3093template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4>
3098
3099template <typename RT>
3100template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4>
3105
3106template <typename RT>
3107template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5>
3112
3113template <typename RT>
3114template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5>
3119
3120template <typename RT>
3121template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6>
3126
3127template <typename RT>
3128template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6>
3133
3134template <typename RT>
3135template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7>
3140
3141template <typename RT>
3142template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7>
3147
3148template <typename RT>
3149template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8>
3154
3155template <typename RT>
3156template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8>
3161
3162template <typename RT>
3163template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9>
3168
3169template <typename RT>
3170template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9>
3175
3176template <typename RT>
3177template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10>
3178inline 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)
3179{
3181}
3182
3183template <typename RT>
3184template <typename CT, typename PT0, typename PT1, typename PT2, typename PT3, typename PT4, typename PT5, typename PT6, typename PT7, typename PT8, typename PT9, typename PT10>
3185inline 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)
3186{
3188}
3189
3190template <typename RT>
3191template <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>
3192inline 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)
3193{
3194 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));
3195}
3196
3197template <typename RT>
3198template <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>
3199inline 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)
3200{
3201 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));
3202}
3203
3204template <typename RT>
3205template <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>
3206inline 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)
3207{
3208 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));
3209}
3210
3211template <typename RT>
3212template <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>
3213inline 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)
3214{
3215 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));
3216}
3217
3218template <typename RT>
3219template <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>
3220inline 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)
3221{
3222 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));
3223}
3224
3225template <typename RT>
3226template <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>
3227inline 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)
3228{
3229 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));
3230}
3231
3232template <typename RT>
3233template <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>
3234inline 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)
3235{
3236 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));
3237}
3238
3239template <typename RT>
3240template <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>
3241inline 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)
3242{
3243 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));
3244}
3245
3246template <typename RT>
3247template <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>
3248inline 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)
3249{
3250 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));
3251}
3252
3253template <typename RT>
3254template <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>
3255inline 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)
3256{
3257 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));
3258}
3259
3260template <typename RT>
3261template <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>
3262inline 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)
3263{
3264 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));
3265}
3266
3267template <typename RT>
3268template <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>
3269inline 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)
3270{
3271 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));
3272}
3273
3274template <typename RT>
3275template <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>
3276inline 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)
3277{
3278 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));
3279}
3280
3281template <typename RT>
3282template <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>
3283inline 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)
3284{
3285 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));
3286}
3287
3288template <typename RT>
3289template <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>
3290inline 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)
3291{
3292 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));
3293}
3294
3295template <typename RT>
3296template <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>
3297inline 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)
3298{
3299 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));
3300}
3301
3302template <typename RT>
3303template <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>
3304inline 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)
3305{
3306 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));
3307}
3308
3309template <typename RT>
3310template <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>
3311inline 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)
3312{
3313 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));
3314}
3315
3316template <typename RT>
3318{
3319 delete callerFunction;
3320}
3321
3322template <typename RT>
3323unsigned int Caller<RT>::parameters() const
3324{
3325 ocean_assert(callerFunction != nullptr);
3326 if (callerFunction == nullptr)
3327 {
3328 return 0u;
3329 }
3330
3331 return callerFunction->parameters();
3332}
3333
3334template <typename RT>
3335template <typename T>
3336T Caller<RT>::parameter(const unsigned int index)
3337{
3338 ocean_assert(callerFunction != nullptr);
3339
3340#ifdef OCEAN_SUPPORT_RTTI
3341 ocean_assert(callerFunction->type(index) == typeid(T) && "The parameter has a different type.");
3342#endif
3343
3344 return *reinterpret_cast<T*>(callerFunction->parameter(index));
3345}
3346
3347template <typename RT>
3348template <typename T>
3349void Caller<RT>::setParameter(const unsigned int index, const T& value)
3350{
3351 ocean_assert(callerFunction != nullptr);
3352
3353#ifdef OCEAN_SUPPORT_RTTI
3354 ocean_assert(callerFunction->type(index) == typeid(T) && "The parameter has a different type.");
3355#endif
3356
3357 callerFunction->setParameter(index, &value);
3358}
3359
3360template <typename RT>
3361inline bool Caller<RT>::isNull() const
3362{
3363 return callerFunction == nullptr;
3364}
3365
3366template <typename RT>
3367inline RT Caller<RT>::operator()() const
3368{
3369 ocean_assert(callerFunction != nullptr);
3370
3371 return callerFunction->call();
3372}
3373
3374template <typename RT>
3376{
3377 delete callerFunction;
3378 callerFunction = caller.callerFunction ? caller.callerFunction->copy() : nullptr;
3379
3380 return *this;
3381}
3382
3383template <typename RT>
3385{
3386 if (this != &caller)
3387 {
3388 delete callerFunction;
3389
3390 callerFunction = caller.callerFunction;
3391 caller.callerFunction = nullptr;
3392 }
3393
3394 return *this;
3395}
3396
3397template <typename RT>
3398inline bool Caller<RT>::operator==(const Caller& caller) const
3399{
3400 if (callerFunction == nullptr && caller.callerFunction == nullptr)
3401 {
3402 return true;
3403 }
3404
3405 if ((callerFunction != nullptr && caller.callerFunction == nullptr)
3406 || (callerFunction == nullptr && caller.callerFunction != nullptr))
3407 {
3408 return false;
3409 }
3410
3411 return *callerFunction == *caller.callerFunction;
3412}
3413
3414template <typename RT>
3415inline bool Caller<RT>::operator!=(const Caller& caller) const
3416{
3417 return !(*this == caller);
3418}
3419
3420template <typename RT>
3421inline Caller<RT>::operator bool() const
3422{
3423 return callerFunction != nullptr;
3424}
3425
3426}
3427
3428#endif // META_OCEAN_BASE_CALLER_H
This class implements a callback function container using defined function parameters.
Definition Caller.h:1566
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:3304
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:3150
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:3255
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:3164
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:3136
T parameter(const unsigned int index)
Template function to return a parameter.
Definition Caller.h:3336
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:3290
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:3010
void setParameter(const unsigned int index, const T &value)
Template function to changes a parameter.
Definition Caller.h:3349
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:3017
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:3038
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:3297
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:3213
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:2982
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:2933
~Caller()
Destructs a caller container.
Definition Caller.h:3317
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:3129
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:3003
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:3276
Caller(const Caller &caller)
Copies a caller container.
Definition Caller.h:2856
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:3122
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:3241
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:3066
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:2905
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:2975
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:3178
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:2884
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:3052
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:3269
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:2926
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:3248
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:3115
unsigned int parameters() const
Returns the number of function parameters.
Definition Caller.h:3323
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:3398
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:2898
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:2891
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:3108
Caller & operator=(Caller &&caller)
Moves a callback container.
Definition Caller.h:3384
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:3045
Caller()
Creates an empty caller container.
Definition Caller.h:2849
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:2877
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:2954
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:3234
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:3059
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:3199
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:3220
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:3171
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:3311
Caller & operator=(const Caller &caller)
Assigns a callback container.
Definition Caller.h:3375
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:2996
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:2968
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:3094
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:2919
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:3157
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:3206
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:2961
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:3087
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:2940
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:3101
ParameterizedFunctionBase< RT > * callerFunction
Base function container.
Definition Caller.h:2845
bool isNull() const
Returns whether this container holds no function.
Definition Caller.h:3361
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:3192
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:3283
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:2912
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:3185
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:2989
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:3262
Caller(ParameterizedFunctionBase< RT > *base)
Creates a new caller object by a given base parameterized function object.
Definition Caller.h:2870
RT operator()() const
Calls the encapsulated callback function and uses the previously defined function parameters.
Definition Caller.h:3367
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:3227
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:3415
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:3024
Caller(Caller &&caller)
Movies a caller container.
Definition Caller.h:2863
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:2947
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:3073
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:3080
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:3143
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:3031
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 void * parameter(const unsigned int index)=0
Returns a specified parameter as a void pointer to the parameter's pointer.
virtual RT call() const =0
Calls the internal encapsulated function and uses the specified parameters.
virtual const std::type_info & type(const unsigned int index) const =0
Returns the parameter type of a specific parameter.
virtual ParameterizedFunctionBase * copy() const =0
Creates a copy of the entire derivated object.
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:1284
virtual RT call() const
Calls the internal encapsulated function by the used of the previously defined parameters.
Definition Caller.h:1354
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:1345
FunctionType functionPointer
Function pointer of the member function.
Definition Caller.h:1341
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:1292
const CT * functionClass
Class object holding the member function.
Definition Caller.h:1338
virtual ParameterizedFunctionBase< RT > * copy() const
Creates a copy of this function container.
Definition Caller.h:1382
This class implements an parameterized member function container.
Definition Caller.h:1128
FunctionType functionPointer
Function pointer of the member function.
Definition Caller.h:1185
virtual RT call() const
Calls the internal encapsulated function by the used of the previously defined parameters.
Definition Caller.h:1198
virtual ParameterizedFunctionBase< RT > * copy() const
Creates a copy of this function container.
Definition Caller.h:1226
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:1189
CT * functionClass
Class object holding the member function.
Definition Caller.h:1182
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:1136
This class implements an parameterized static function container.
Definition Caller.h:1439
FunctionType functionPointer
Function pointer of the member function.
Definition Caller.h:1492
virtual RT call() const
Calls the internal encapsulated function by the used of the previously defined parameters.
Definition Caller.h:1504
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:1447
virtual ParameterizedFunctionBase< RT > * copy() const
Creates a copy of this function container.
Definition Caller.h:1531
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:1496
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