3 #include <cgv/reflect/reflection_handler.h>
4 #include <cgv/type/variant.h>
14 template <
typename X,
typename R>
20 void call_void(
void* instance,
21 const std::vector<abst_reflection_traits*>& param_value_traits,
22 const std::vector<const void*>& param_value_ptrs,
23 const std::vector<std::string>& param_type_names,
25 void* result_value_ptr,
26 const std::string& result_type_name)
28 cgv::type::set_variant((((X*)instance)->*m)(
29 ), result_type_name, result_value_ptr);
34 template <
typename X,
typename R>
35 struct method_interface_impl<R (X::*)() const> :
public method_interface
37 typedef R (X::*M)()
const;
39 method_interface_impl(M _m) : m(_m) {}
40 void call_void(
void* instance,
41 const std::vector<abst_reflection_traits*>& param_value_traits,
42 const std::vector<const void*>& param_value_ptrs,
43 const std::vector<std::string>& param_type_names,
44 const abst_reflection_traits* result_traits,
45 void* result_value_ptr,
46 const std::string& result_type_name)
48 cgv::type::set_variant((((X*)instance)->*m)(
49 ), result_type_name, result_value_ptr);
55 struct method_interface_impl<void (X::*)()> :
public method_interface
57 typedef void (X::*M)();
59 method_interface_impl(M _m) : m(_m) {}
60 void call_void(
void* instance,
61 const std::vector<abst_reflection_traits*>& param_value_traits,
62 const std::vector<const void*>& param_value_ptrs,
63 const std::vector<std::string>& param_type_names,
64 const abst_reflection_traits* result_traits,
65 void* result_value_ptr,
66 const std::string& result_type_name)
74 struct method_interface_impl<void (X::*)() const> :
public method_interface
76 typedef void (X::*M)()
const;
78 method_interface_impl(M _m) : m(_m) {}
79 void call_void(
void* instance,
80 const std::vector<abst_reflection_traits*>& param_value_traits,
81 const std::vector<const void*>& param_value_ptrs,
82 const std::vector<std::string>& param_type_names,
83 const abst_reflection_traits* result_traits,
84 void* result_value_ptr,
85 const std::string& result_type_name)
94 template <
typename X,
typename R,
typename T1>
95 struct method_interface_impl<R (X::*)(T1)> :
public method_interface
97 typedef R (X::*M)(T1);
99 method_interface_impl(M _m) : m(_m) {}
100 void call_void(
void* instance,
101 const std::vector<abst_reflection_traits*>& param_value_traits,
102 const std::vector<const void*>& param_value_ptrs,
103 const std::vector<std::string>& param_type_names,
104 const abst_reflection_traits* result_traits,
105 void* result_value_ptr,
106 const std::string& result_type_name)
108 cgv::type::set_variant((((X*)instance)->*m)(
110 ), result_type_name, result_value_ptr);
115 template <
typename X,
typename R,
typename T1>
116 struct method_interface_impl<R (X::*)(T1) const> :
public method_interface
118 typedef R (X::*M)(T1)
const;
120 method_interface_impl(M _m) : m(_m) {}
121 void call_void(
void* instance,
122 const std::vector<abst_reflection_traits*>& param_value_traits,
123 const std::vector<const void*>& param_value_ptrs,
124 const std::vector<std::string>& param_type_names,
125 const abst_reflection_traits* result_traits,
126 void* result_value_ptr,
127 const std::string& result_type_name)
129 cgv::type::set_variant((((X*)instance)->*m)(
131 ), result_type_name, result_value_ptr);
136 template <
typename X,
typename T1>
137 struct method_interface_impl<void (X::*)(T1)> :
public method_interface
139 typedef void (X::*M)(T1);
141 method_interface_impl(M _m) : m(_m) {}
142 void call_void(
void* instance,
143 const std::vector<abst_reflection_traits*>& param_value_traits,
144 const std::vector<const void*>& param_value_ptrs,
145 const std::vector<std::string>& param_type_names,
146 const abst_reflection_traits* result_traits,
147 void* result_value_ptr,
148 const std::string& result_type_name)
150 (((X*)instance)->*m)(
156 template <
typename X,
typename T1>
157 struct method_interface_impl<void (X::*)(T1) const> :
public method_interface
159 typedef void (X::*M)(T1)
const;
161 method_interface_impl(M _m) : m(_m) {}
162 void call_void(
void* instance,
163 const std::vector<abst_reflection_traits*>& param_value_traits,
164 const std::vector<const void*>& param_value_ptrs,
165 const std::vector<std::string>& param_type_names,
166 const abst_reflection_traits* result_traits,
167 void* result_value_ptr,
168 const std::string& result_type_name)
170 (((X*)instance)->*m)(
178 template <
typename X,
typename R,
typename T1,
typename T2>
179 struct method_interface_impl<R (X::*)(T1,T2)> :
public method_interface
181 typedef R (X::*M)(T1,T2);
183 method_interface_impl(M _m) : m(_m) {}
184 void call_void(
void* instance,
185 const std::vector<abst_reflection_traits*>& param_value_traits,
186 const std::vector<const void*>& param_value_ptrs,
187 const std::vector<std::string>& param_type_names,
188 const abst_reflection_traits* result_traits,
189 void* result_value_ptr,
190 const std::string& result_type_name)
192 cgv::type::set_variant((((X*)instance)->*m)(
195 ), result_type_name, result_value_ptr);
200 template <
typename X,
typename R,
typename T1,
typename T2>
201 struct method_interface_impl<R (X::*)(T1,T2) const> :
public method_interface
203 typedef R (X::*M)(T1,T2)
const;
205 method_interface_impl(M _m) : m(_m) {}
206 void call_void(
void* instance,
207 const std::vector<abst_reflection_traits*>& param_value_traits,
208 const std::vector<const void*>& param_value_ptrs,
209 const std::vector<std::string>& param_type_names,
210 const abst_reflection_traits* result_traits,
211 void* result_value_ptr,
212 const std::string& result_type_name)
214 cgv::type::set_variant((((X*)instance)->*m)(
217 ), result_type_name, result_value_ptr);
222 template <
typename X,
typename T1,
typename T2>
223 struct method_interface_impl<void (X::*)(T1,T2)> :
public method_interface
225 typedef void (X::*M)(T1,T2);
227 method_interface_impl(M _m) : m(_m) {}
228 void call_void(
void* instance,
229 const std::vector<abst_reflection_traits*>& param_value_traits,
230 const std::vector<const void*>& param_value_ptrs,
231 const std::vector<std::string>& param_type_names,
232 const abst_reflection_traits* result_traits,
233 void* result_value_ptr,
234 const std::string& result_type_name)
236 (((X*)instance)->*m)(
243 template <
typename X,
typename T1,
typename T2>
244 struct method_interface_impl<void (X::*)(T1,T2) const> :
public method_interface
246 typedef void (X::*M)(T1,T2)
const;
248 method_interface_impl(M _m) : m(_m) {}
249 void call_void(
void* instance,
250 const std::vector<abst_reflection_traits*>& param_value_traits,
251 const std::vector<const void*>& param_value_ptrs,
252 const std::vector<std::string>& param_type_names,
253 const abst_reflection_traits* result_traits,
254 void* result_value_ptr,
255 const std::string& result_type_name)
257 (((X*)instance)->*m)(
266 template <
typename X,
typename R,
typename T1,
typename T2,
typename T3>
267 struct method_interface_impl<R (X::*)(T1,T2,T3)> :
public method_interface
269 typedef R (X::*M)(T1,T2,T3);
271 method_interface_impl(M _m) : m(_m) {}
272 void call_void(
void* instance,
273 const std::vector<abst_reflection_traits*>& param_value_traits,
274 const std::vector<const void*>& param_value_ptrs,
275 const std::vector<std::string>& param_type_names,
276 const abst_reflection_traits* result_traits,
277 void* result_value_ptr,
278 const std::string& result_type_name)
280 cgv::type::set_variant((((X*)instance)->*m)(
284 ), result_type_name, result_value_ptr);
289 template <
typename X,
typename R,
typename T1,
typename T2,
typename T3>
290 struct method_interface_impl<R (X::*)(T1,T2,T3) const> :
public method_interface
292 typedef R (X::*M)(T1,T2,T3)
const;
294 method_interface_impl(M _m) : m(_m) {}
295 void call_void(
void* instance,
296 const std::vector<abst_reflection_traits*>& param_value_traits,
297 const std::vector<const void*>& param_value_ptrs,
298 const std::vector<std::string>& param_type_names,
299 const abst_reflection_traits* result_traits,
300 void* result_value_ptr,
301 const std::string& result_type_name)
303 cgv::type::set_variant((((X*)instance)->*m)(
307 ), result_type_name, result_value_ptr);
312 template <
typename X,
typename T1,
typename T2,
typename T3>
313 struct method_interface_impl<void (X::*)(T1,T2,T3)> :
public method_interface
315 typedef void (X::*M)(T1,T2,T3);
317 method_interface_impl(M _m) : m(_m) {}
318 void call_void(
void* instance,
319 const std::vector<abst_reflection_traits*>& param_value_traits,
320 const std::vector<const void*>& param_value_ptrs,
321 const std::vector<std::string>& param_type_names,
322 const abst_reflection_traits* result_traits,
323 void* result_value_ptr,
324 const std::string& result_type_name)
326 (((X*)instance)->*m)(
334 template <
typename X,
typename T1,
typename T2,
typename T3>
335 struct method_interface_impl<void (X::*)(T1,T2,T3) const> :
public method_interface
337 typedef void (X::*M)(T1,T2,T3)
const;
339 method_interface_impl(M _m) : m(_m) {}
340 void call_void(
void* instance,
341 const std::vector<abst_reflection_traits*>& param_value_traits,
342 const std::vector<const void*>& param_value_ptrs,
343 const std::vector<std::string>& param_type_names,
344 const abst_reflection_traits* result_traits,
345 void* result_value_ptr,
346 const std::string& result_type_name)
348 (((X*)instance)->*m)(
358 template <
typename X,
typename R,
typename T1,
typename T2,
typename T3,
typename T4>
359 struct method_interface_impl<R (X::*)(T1,T2,T3,T4)> :
public method_interface
361 typedef R (X::*M)(T1,T2,T3,T4);
363 method_interface_impl(M _m) : m(_m) {}
364 void call_void(
void* instance,
365 const std::vector<abst_reflection_traits*>& param_value_traits,
366 const std::vector<const void*>& param_value_ptrs,
367 const std::vector<std::string>& param_type_names,
368 const abst_reflection_traits* result_traits,
369 void* result_value_ptr,
370 const std::string& result_type_name)
372 cgv::type::set_variant((((X*)instance)->*m)(
377 ), result_type_name, result_value_ptr);
382 template <
typename X,
typename R,
typename T1,
typename T2,
typename T3,
typename T4>
383 struct method_interface_impl<R (X::*)(T1,T2,T3,T4) const> :
public method_interface
385 typedef R (X::*M)(T1,T2,T3,T4)
const;
387 method_interface_impl(M _m) : m(_m) {}
388 void call_void(
void* instance,
389 const std::vector<abst_reflection_traits*>& param_value_traits,
390 const std::vector<const void*>& param_value_ptrs,
391 const std::vector<std::string>& param_type_names,
392 const abst_reflection_traits* result_traits,
393 void* result_value_ptr,
394 const std::string& result_type_name)
396 cgv::type::set_variant((((X*)instance)->*m)(
401 ), result_type_name, result_value_ptr);
406 template <
typename X,
typename T1,
typename T2,
typename T3,
typename T4>
407 struct method_interface_impl<void (X::*)(T1,T2,T3,T4)> :
public method_interface
409 typedef void (X::*M)(T1,T2,T3,T4);
411 method_interface_impl(M _m) : m(_m) {}
412 void call_void(
void* instance,
413 const std::vector<abst_reflection_traits*>& param_value_traits,
414 const std::vector<const void*>& param_value_ptrs,
415 const std::vector<std::string>& param_type_names,
416 const abst_reflection_traits* result_traits,
417 void* result_value_ptr,
418 const std::string& result_type_name)
420 (((X*)instance)->*m)(
429 template <
typename X,
typename T1,
typename T2,
typename T3,
typename T4>
430 struct method_interface_impl<void (X::*)(T1,T2,T3,T4) const> :
public method_interface
432 typedef void (X::*M)(T1,T2,T3,T4)
const;
434 method_interface_impl(M _m) : m(_m) {}
435 void call_void(
void* instance,
436 const std::vector<abst_reflection_traits*>& param_value_traits,
437 const std::vector<const void*>& param_value_ptrs,
438 const std::vector<std::string>& param_type_names,
439 const abst_reflection_traits* result_traits,
440 void* result_value_ptr,
441 const std::string& result_type_name)
443 (((X*)instance)->*m)(
454 template <
typename X,
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
455 struct method_interface_impl<R (X::*)(T1,T2,T3,T4,T5)> :
public method_interface
457 typedef R (X::*M)(T1,T2,T3,T4,T5);
459 method_interface_impl(M _m) : m(_m) {}
460 void call_void(
void* instance,
461 const std::vector<abst_reflection_traits*>& param_value_traits,
462 const std::vector<const void*>& param_value_ptrs,
463 const std::vector<std::string>& param_type_names,
464 const abst_reflection_traits* result_traits,
465 void* result_value_ptr,
466 const std::string& result_type_name)
468 cgv::type::set_variant((((X*)instance)->*m)(
474 ), result_type_name, result_value_ptr);
479 template <
typename X,
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
480 struct method_interface_impl<R (X::*)(T1,T2,T3,T4,T5) const> :
public method_interface
482 typedef R (X::*M)(T1,T2,T3,T4,T5)
const;
484 method_interface_impl(M _m) : m(_m) {}
485 void call_void(
void* instance,
486 const std::vector<abst_reflection_traits*>& param_value_traits,
487 const std::vector<const void*>& param_value_ptrs,
488 const std::vector<std::string>& param_type_names,
489 const abst_reflection_traits* result_traits,
490 void* result_value_ptr,
491 const std::string& result_type_name)
493 cgv::type::set_variant((((X*)instance)->*m)(
499 ), result_type_name, result_value_ptr);
504 template <
typename X,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
505 struct method_interface_impl<void (X::*)(T1,T2,T3,T4,T5)> :
public method_interface
507 typedef void (X::*M)(T1,T2,T3,T4,T5);
509 method_interface_impl(M _m) : m(_m) {}
510 void call_void(
void* instance,
511 const std::vector<abst_reflection_traits*>& param_value_traits,
512 const std::vector<const void*>& param_value_ptrs,
513 const std::vector<std::string>& param_type_names,
514 const abst_reflection_traits* result_traits,
515 void* result_value_ptr,
516 const std::string& result_type_name)
518 (((X*)instance)->*m)(
528 template <
typename X,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
529 struct method_interface_impl<void (X::*)(T1,T2,T3,T4,T5) const> :
public method_interface
531 typedef void (X::*M)(T1,T2,T3,T4,T5)
const;
533 method_interface_impl(M _m) : m(_m) {}
534 void call_void(
void* instance,
535 const std::vector<abst_reflection_traits*>& param_value_traits,
536 const std::vector<const void*>& param_value_ptrs,
537 const std::vector<std::string>& param_type_names,
538 const abst_reflection_traits* result_traits,
539 void* result_value_ptr,
540 const std::string& result_type_name)
542 (((X*)instance)->*m)(
554 template <
typename X,
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
555 struct method_interface_impl<R (X::*)(T1,T2,T3,T4,T5,T6)> :
public method_interface
557 typedef R (X::*M)(T1,T2,T3,T4,T5,T6);
559 method_interface_impl(M _m) : m(_m) {}
560 void call_void(
void* instance,
561 const std::vector<abst_reflection_traits*>& param_value_traits,
562 const std::vector<const void*>& param_value_ptrs,
563 const std::vector<std::string>& param_type_names,
564 const abst_reflection_traits* result_traits,
565 void* result_value_ptr,
566 const std::string& result_type_name)
568 cgv::type::set_variant((((X*)instance)->*m)(
575 ), result_type_name, result_value_ptr);
580 template <
typename X,
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
581 struct method_interface_impl<R (X::*)(T1,T2,T3,T4,T5,T6) const> :
public method_interface
583 typedef R (X::*M)(T1,T2,T3,T4,T5,T6)
const;
585 method_interface_impl(M _m) : m(_m) {}
586 void call_void(
void* instance,
587 const std::vector<abst_reflection_traits*>& param_value_traits,
588 const std::vector<const void*>& param_value_ptrs,
589 const std::vector<std::string>& param_type_names,
590 const abst_reflection_traits* result_traits,
591 void* result_value_ptr,
592 const std::string& result_type_name)
594 cgv::type::set_variant((((X*)instance)->*m)(
601 ), result_type_name, result_value_ptr);
606 template <
typename X,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
607 struct method_interface_impl<void (X::*)(T1,T2,T3,T4,T5,T6)> :
public method_interface
609 typedef void (X::*M)(T1,T2,T3,T4,T5,T6);
611 method_interface_impl(M _m) : m(_m) {}
612 void call_void(
void* instance,
613 const std::vector<abst_reflection_traits*>& param_value_traits,
614 const std::vector<const void*>& param_value_ptrs,
615 const std::vector<std::string>& param_type_names,
616 const abst_reflection_traits* result_traits,
617 void* result_value_ptr,
618 const std::string& result_type_name)
620 (((X*)instance)->*m)(
631 template <
typename X,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
632 struct method_interface_impl<void (X::*)(T1,T2,T3,T4,T5,T6) const> :
public method_interface
634 typedef void (X::*M)(T1,T2,T3,T4,T5,T6)
const;
636 method_interface_impl(M _m) : m(_m) {}
637 void call_void(
void* instance,
638 const std::vector<abst_reflection_traits*>& param_value_traits,
639 const std::vector<const void*>& param_value_ptrs,
640 const std::vector<std::string>& param_type_names,
641 const abst_reflection_traits* result_traits,
642 void* result_value_ptr,
643 const std::string& result_type_name)
645 (((X*)instance)->*m)(
658 template <
typename X,
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7>
659 struct method_interface_impl<R (X::*)(T1,T2,T3,T4,T5,T6,T7)> :
public method_interface
661 typedef R (X::*M)(T1,T2,T3,T4,T5,T6,T7);
663 method_interface_impl(M _m) : m(_m) {}
664 void call_void(
void* instance,
665 const std::vector<abst_reflection_traits*>& param_value_traits,
666 const std::vector<const void*>& param_value_ptrs,
667 const std::vector<std::string>& param_type_names,
668 const abst_reflection_traits* result_traits,
669 void* result_value_ptr,
670 const std::string& result_type_name)
672 cgv::type::set_variant((((X*)instance)->*m)(
680 ), result_type_name, result_value_ptr);
685 template <
typename X,
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7>
686 struct method_interface_impl<R (X::*)(T1,T2,T3,T4,T5,T6,T7) const> :
public method_interface
688 typedef R (X::*M)(T1,T2,T3,T4,T5,T6,T7)
const;
690 method_interface_impl(M _m) : m(_m) {}
691 void call_void(
void* instance,
692 const std::vector<abst_reflection_traits*>& param_value_traits,
693 const std::vector<const void*>& param_value_ptrs,
694 const std::vector<std::string>& param_type_names,
695 const abst_reflection_traits* result_traits,
696 void* result_value_ptr,
697 const std::string& result_type_name)
699 cgv::type::set_variant((((X*)instance)->*m)(
707 ), result_type_name, result_value_ptr);
712 template <
typename X,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7>
713 struct method_interface_impl<void (X::*)(T1,T2,T3,T4,T5,T6,T7)> :
public method_interface
715 typedef void (X::*M)(T1,T2,T3,T4,T5,T6,T7);
717 method_interface_impl(M _m) : m(_m) {}
718 void call_void(
void* instance,
719 const std::vector<abst_reflection_traits*>& param_value_traits,
720 const std::vector<const void*>& param_value_ptrs,
721 const std::vector<std::string>& param_type_names,
722 const abst_reflection_traits* result_traits,
723 void* result_value_ptr,
724 const std::string& result_type_name)
726 (((X*)instance)->*m)(
738 template <
typename X,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7>
739 struct method_interface_impl<void (X::*)(T1,T2,T3,T4,T5,T6,T7) const> :
public method_interface
741 typedef void (X::*M)(T1,T2,T3,T4,T5,T6,T7)
const;
743 method_interface_impl(M _m) : m(_m) {}
744 void call_void(
void* instance,
745 const std::vector<abst_reflection_traits*>& param_value_traits,
746 const std::vector<const void*>& param_value_ptrs,
747 const std::vector<std::string>& param_type_names,
748 const abst_reflection_traits* result_traits,
749 void* result_value_ptr,
750 const std::string& result_type_name)
752 (((X*)instance)->*m)(
766 template <
typename X,
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
767 struct method_interface_impl<R (X::*)(T1,T2,T3,T4,T5,T6,T7,T8)> :
public method_interface
769 typedef R (X::*M)(T1,T2,T3,T4,T5,T6,T7,T8);
771 method_interface_impl(M _m) : m(_m) {}
772 void call_void(
void* instance,
773 const std::vector<abst_reflection_traits*>& param_value_traits,
774 const std::vector<const void*>& param_value_ptrs,
775 const std::vector<std::string>& param_type_names,
776 const abst_reflection_traits* result_traits,
777 void* result_value_ptr,
778 const std::string& result_type_name)
780 cgv::type::set_variant((((X*)instance)->*m)(
789 ), result_type_name, result_value_ptr);
794 template <
typename X,
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
795 struct method_interface_impl<R (X::*)(T1,T2,T3,T4,T5,T6,T7,T8) const> :
public method_interface
797 typedef R (X::*M)(T1,T2,T3,T4,T5,T6,T7,T8)
const;
799 method_interface_impl(M _m) : m(_m) {}
800 void call_void(
void* instance,
801 const std::vector<abst_reflection_traits*>& param_value_traits,
802 const std::vector<const void*>& param_value_ptrs,
803 const std::vector<std::string>& param_type_names,
804 const abst_reflection_traits* result_traits,
805 void* result_value_ptr,
806 const std::string& result_type_name)
808 cgv::type::set_variant((((X*)instance)->*m)(
817 ), result_type_name, result_value_ptr);
822 template <
typename X,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
823 struct method_interface_impl<void (X::*)(T1,T2,T3,T4,T5,T6,T7,T8)> :
public method_interface
825 typedef void (X::*M)(T1,T2,T3,T4,T5,T6,T7,T8);
827 method_interface_impl(M _m) : m(_m) {}
828 void call_void(
void* instance,
829 const std::vector<abst_reflection_traits*>& param_value_traits,
830 const std::vector<const void*>& param_value_ptrs,
831 const std::vector<std::string>& param_type_names,
832 const abst_reflection_traits* result_traits,
833 void* result_value_ptr,
834 const std::string& result_type_name)
836 (((X*)instance)->*m)(
849 template <
typename X,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
850 struct method_interface_impl<void (X::*)(T1,T2,T3,T4,T5,T6,T7,T8) const> :
public method_interface
852 typedef void (X::*M)(T1,T2,T3,T4,T5,T6,T7,T8)
const;
854 method_interface_impl(M _m) : m(_m) {}
855 void call_void(
void* instance,
856 const std::vector<abst_reflection_traits*>& param_value_traits,
857 const std::vector<const void*>& param_value_ptrs,
858 const std::vector<std::string>& param_type_names,
859 const abst_reflection_traits* result_traits,
860 void* result_value_ptr,
861 const std::string& result_type_name)
863 (((X*)instance)->*m)(