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