rice 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. data/Doxyfile +1 -1
  2. data/Makefile.in +130 -52
  3. data/README +45 -79
  4. data/Rakefile +1 -36
  5. data/aclocal.m4 +133 -61
  6. data/config.guess +43 -8
  7. data/config.sub +41 -13
  8. data/configure +1370 -1898
  9. data/configure.ac +2 -2
  10. data/doxygen.ac +1 -1
  11. data/extconf.rb +3 -1
  12. data/rice/Arg_impl.hpp +2 -2
  13. data/rice/Data_Type.cpp +34 -1
  14. data/rice/Data_Type.ipp +14 -5
  15. data/rice/Data_Type_defn.hpp +28 -1
  16. data/rice/Director.cpp +0 -6
  17. data/rice/Director.hpp +0 -8
  18. data/rice/Hash.hpp +1 -1
  19. data/rice/Makefile.am +2 -12
  20. data/rice/Makefile.in +111 -88
  21. data/rice/Object.cpp +8 -1
  22. data/rice/Object.ipp +1 -1
  23. data/rice/Object_defn.hpp +8 -0
  24. data/rice/config.hpp +3 -0
  25. data/rice/config.hpp.in +3 -0
  26. data/rice/detail/Auto_Function_Wrapper.ipp +1025 -512
  27. data/rice/detail/Auto_Member_Function_Wrapper.ipp +545 -272
  28. data/rice/detail/cfp.hpp +24 -0
  29. data/rice/detail/cfp.ipp +51 -0
  30. data/rice/detail/method_data.cpp +107 -336
  31. data/rice/detail/node.hpp +13 -13
  32. data/rice/detail/ruby.hpp +4 -0
  33. data/rice/detail/rubysig.hpp +19 -19
  34. data/rice/detail/traits.hpp +43 -0
  35. data/rice/generate_code.rb +37 -16
  36. data/rice/protect.hpp +1 -1
  37. data/rice/protect.ipp +448 -192
  38. data/rice/to_from_ruby.ipp +4 -12
  39. data/rice/to_from_ruby_defn.hpp +2 -2
  40. data/ruby/Makefile.in +99 -32
  41. data/ruby/lib/Makefile.in +61 -21
  42. data/ruby/lib/mkmf-rice.rb.in +9 -2
  43. data/ruby/lib/version.rb +1 -1
  44. data/sample/Makefile.in +33 -10
  45. data/test/Makefile.am +27 -0
  46. data/test/Makefile.in +270 -59
  47. data/test/ext/Makefile.am +43 -0
  48. data/test/ext/Makefile.in +399 -0
  49. data/test/ext/t1/Foo.hpp +10 -0
  50. data/test/ext/t1/extconf.rb +2 -0
  51. data/test/ext/t1/t1.cpp +15 -0
  52. data/test/ext/t2/extconf.rb +2 -0
  53. data/test/ext/t2/t2.cpp +11 -0
  54. data/test/test_Allocation_Strategies.cpp +1 -1
  55. data/test/test_Class.cpp +79 -0
  56. data/test/test_Data_Type.cpp +2 -2
  57. data/test/test_Director.cpp +114 -38
  58. data/test/test_Module.cpp +27 -2
  59. data/test/test_To_From_Ruby.cpp +4 -4
  60. data/test/test_rice.rb +9 -1
  61. metadata +23 -8
  62. data/rice/detail/method_data.cpp.rpp +0 -301
  63. data/rice/detail/mininode.cpp.rpp +0 -62
  64. data/rice/detail/mininode.hpp.rpp +0 -119
  65. data/rice/detail/remove_const.hpp +0 -21
@@ -10,6 +10,7 @@
10
10
  #include "method_data.hpp"
11
11
  #include "../ruby_try_catch.hpp"
12
12
  #include "../to_from_ruby.hpp"
13
+ #include "traits.hpp"
13
14
  #include <typeinfo>
14
15
  namespace Rice
15
16
  {
@@ -54,22 +55,38 @@ call(int argc, VALUE* argv, VALUE self)
54
55
  &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12, &varg13, &varg14, &varg15);
55
56
 
56
57
  Self_T * obj = from_ruby<Self_T *>(self);
57
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
58
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
59
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
60
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
61
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
62
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
63
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
64
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
65
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
66
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
67
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(10, varg10);
68
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(11, varg11);
69
- Arg12_T arg12 = args->getArgumentOrDefault<Arg12_T>(12, varg12);
70
- Arg13_T arg13 = args->getArgumentOrDefault<Arg13_T>(13, varg13);
71
- Arg14_T arg14 = args->getArgumentOrDefault<Arg14_T>(14, varg14);
72
- Arg15_T arg15 = args->getArgumentOrDefault<Arg15_T>(15, varg15);
58
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
59
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
60
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
61
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
62
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
63
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
64
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
65
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
66
+ typedef typename sanitize< Arg4_T >::Type Arg4_Type;
67
+ Arg4_Type arg4 = args->getArgumentOrDefault<Arg4_Type>(4, varg4);
68
+ typedef typename sanitize< Arg5_T >::Type Arg5_Type;
69
+ Arg5_Type arg5 = args->getArgumentOrDefault<Arg5_Type>(5, varg5);
70
+ typedef typename sanitize< Arg6_T >::Type Arg6_Type;
71
+ Arg6_Type arg6 = args->getArgumentOrDefault<Arg6_Type>(6, varg6);
72
+ typedef typename sanitize< Arg7_T >::Type Arg7_Type;
73
+ Arg7_Type arg7 = args->getArgumentOrDefault<Arg7_Type>(7, varg7);
74
+ typedef typename sanitize< Arg8_T >::Type Arg8_Type;
75
+ Arg8_Type arg8 = args->getArgumentOrDefault<Arg8_Type>(8, varg8);
76
+ typedef typename sanitize< Arg9_T >::Type Arg9_Type;
77
+ Arg9_Type arg9 = args->getArgumentOrDefault<Arg9_Type>(9, varg9);
78
+ typedef typename sanitize< Arg10_T >::Type Arg10_Type;
79
+ Arg10_Type arg10 = args->getArgumentOrDefault<Arg10_Type>(10, varg10);
80
+ typedef typename sanitize< Arg11_T >::Type Arg11_Type;
81
+ Arg11_Type arg11 = args->getArgumentOrDefault<Arg11_Type>(11, varg11);
82
+ typedef typename sanitize< Arg12_T >::Type Arg12_Type;
83
+ Arg12_Type arg12 = args->getArgumentOrDefault<Arg12_Type>(12, varg12);
84
+ typedef typename sanitize< Arg13_T >::Type Arg13_Type;
85
+ Arg13_Type arg13 = args->getArgumentOrDefault<Arg13_Type>(13, varg13);
86
+ typedef typename sanitize< Arg14_T >::Type Arg14_Type;
87
+ Arg14_Type arg14 = args->getArgumentOrDefault<Arg14_Type>(14, varg14);
88
+ typedef typename sanitize< Arg15_T >::Type Arg15_Type;
89
+ Arg15_Type arg15 = args->getArgumentOrDefault<Arg15_Type>(15, varg15);
73
90
 
74
91
  Func func = wrapper->func_;
75
92
  return to_ruby((*obj.*func)(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15));
@@ -128,22 +145,38 @@ call(int argc, VALUE* argv, VALUE self)
128
145
  &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12, &varg13, &varg14, &varg15);
129
146
 
130
147
  Self_T * obj = from_ruby<Self_T *>(self);
131
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
132
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
133
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
134
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
135
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
136
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
137
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
138
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
139
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
140
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
141
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(10, varg10);
142
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(11, varg11);
143
- Arg12_T arg12 = args->getArgumentOrDefault<Arg12_T>(12, varg12);
144
- Arg13_T arg13 = args->getArgumentOrDefault<Arg13_T>(13, varg13);
145
- Arg14_T arg14 = args->getArgumentOrDefault<Arg14_T>(14, varg14);
146
- Arg15_T arg15 = args->getArgumentOrDefault<Arg15_T>(15, varg15);
148
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
149
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
150
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
151
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
152
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
153
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
154
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
155
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
156
+ typedef typename sanitize< Arg4_T >::Type Arg4_Type;
157
+ Arg4_Type arg4 = args->getArgumentOrDefault<Arg4_Type>(4, varg4);
158
+ typedef typename sanitize< Arg5_T >::Type Arg5_Type;
159
+ Arg5_Type arg5 = args->getArgumentOrDefault<Arg5_Type>(5, varg5);
160
+ typedef typename sanitize< Arg6_T >::Type Arg6_Type;
161
+ Arg6_Type arg6 = args->getArgumentOrDefault<Arg6_Type>(6, varg6);
162
+ typedef typename sanitize< Arg7_T >::Type Arg7_Type;
163
+ Arg7_Type arg7 = args->getArgumentOrDefault<Arg7_Type>(7, varg7);
164
+ typedef typename sanitize< Arg8_T >::Type Arg8_Type;
165
+ Arg8_Type arg8 = args->getArgumentOrDefault<Arg8_Type>(8, varg8);
166
+ typedef typename sanitize< Arg9_T >::Type Arg9_Type;
167
+ Arg9_Type arg9 = args->getArgumentOrDefault<Arg9_Type>(9, varg9);
168
+ typedef typename sanitize< Arg10_T >::Type Arg10_Type;
169
+ Arg10_Type arg10 = args->getArgumentOrDefault<Arg10_Type>(10, varg10);
170
+ typedef typename sanitize< Arg11_T >::Type Arg11_Type;
171
+ Arg11_Type arg11 = args->getArgumentOrDefault<Arg11_Type>(11, varg11);
172
+ typedef typename sanitize< Arg12_T >::Type Arg12_Type;
173
+ Arg12_Type arg12 = args->getArgumentOrDefault<Arg12_Type>(12, varg12);
174
+ typedef typename sanitize< Arg13_T >::Type Arg13_Type;
175
+ Arg13_Type arg13 = args->getArgumentOrDefault<Arg13_Type>(13, varg13);
176
+ typedef typename sanitize< Arg14_T >::Type Arg14_Type;
177
+ Arg14_Type arg14 = args->getArgumentOrDefault<Arg14_Type>(14, varg14);
178
+ typedef typename sanitize< Arg15_T >::Type Arg15_Type;
179
+ Arg15_Type arg15 = args->getArgumentOrDefault<Arg15_Type>(15, varg15);
147
180
 
148
181
  Func func = wrapper->func_;
149
182
  (*obj.*func)(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15);
@@ -204,21 +237,36 @@ call(int argc, VALUE* argv, VALUE self)
204
237
  &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12, &varg13, &varg14);
205
238
 
206
239
  Self_T * obj = from_ruby<Self_T *>(self);
207
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
208
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
209
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
210
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
211
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
212
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
213
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
214
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
215
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
216
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
217
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(10, varg10);
218
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(11, varg11);
219
- Arg12_T arg12 = args->getArgumentOrDefault<Arg12_T>(12, varg12);
220
- Arg13_T arg13 = args->getArgumentOrDefault<Arg13_T>(13, varg13);
221
- Arg14_T arg14 = args->getArgumentOrDefault<Arg14_T>(14, varg14);
240
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
241
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
242
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
243
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
244
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
245
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
246
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
247
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
248
+ typedef typename sanitize< Arg4_T >::Type Arg4_Type;
249
+ Arg4_Type arg4 = args->getArgumentOrDefault<Arg4_Type>(4, varg4);
250
+ typedef typename sanitize< Arg5_T >::Type Arg5_Type;
251
+ Arg5_Type arg5 = args->getArgumentOrDefault<Arg5_Type>(5, varg5);
252
+ typedef typename sanitize< Arg6_T >::Type Arg6_Type;
253
+ Arg6_Type arg6 = args->getArgumentOrDefault<Arg6_Type>(6, varg6);
254
+ typedef typename sanitize< Arg7_T >::Type Arg7_Type;
255
+ Arg7_Type arg7 = args->getArgumentOrDefault<Arg7_Type>(7, varg7);
256
+ typedef typename sanitize< Arg8_T >::Type Arg8_Type;
257
+ Arg8_Type arg8 = args->getArgumentOrDefault<Arg8_Type>(8, varg8);
258
+ typedef typename sanitize< Arg9_T >::Type Arg9_Type;
259
+ Arg9_Type arg9 = args->getArgumentOrDefault<Arg9_Type>(9, varg9);
260
+ typedef typename sanitize< Arg10_T >::Type Arg10_Type;
261
+ Arg10_Type arg10 = args->getArgumentOrDefault<Arg10_Type>(10, varg10);
262
+ typedef typename sanitize< Arg11_T >::Type Arg11_Type;
263
+ Arg11_Type arg11 = args->getArgumentOrDefault<Arg11_Type>(11, varg11);
264
+ typedef typename sanitize< Arg12_T >::Type Arg12_Type;
265
+ Arg12_Type arg12 = args->getArgumentOrDefault<Arg12_Type>(12, varg12);
266
+ typedef typename sanitize< Arg13_T >::Type Arg13_Type;
267
+ Arg13_Type arg13 = args->getArgumentOrDefault<Arg13_Type>(13, varg13);
268
+ typedef typename sanitize< Arg14_T >::Type Arg14_Type;
269
+ Arg14_Type arg14 = args->getArgumentOrDefault<Arg14_Type>(14, varg14);
222
270
 
223
271
  Func func = wrapper->func_;
224
272
  return to_ruby((*obj.*func)(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14));
@@ -277,21 +325,36 @@ call(int argc, VALUE* argv, VALUE self)
277
325
  &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12, &varg13, &varg14);
278
326
 
279
327
  Self_T * obj = from_ruby<Self_T *>(self);
280
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
281
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
282
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
283
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
284
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
285
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
286
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
287
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
288
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
289
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
290
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(10, varg10);
291
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(11, varg11);
292
- Arg12_T arg12 = args->getArgumentOrDefault<Arg12_T>(12, varg12);
293
- Arg13_T arg13 = args->getArgumentOrDefault<Arg13_T>(13, varg13);
294
- Arg14_T arg14 = args->getArgumentOrDefault<Arg14_T>(14, varg14);
328
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
329
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
330
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
331
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
332
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
333
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
334
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
335
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
336
+ typedef typename sanitize< Arg4_T >::Type Arg4_Type;
337
+ Arg4_Type arg4 = args->getArgumentOrDefault<Arg4_Type>(4, varg4);
338
+ typedef typename sanitize< Arg5_T >::Type Arg5_Type;
339
+ Arg5_Type arg5 = args->getArgumentOrDefault<Arg5_Type>(5, varg5);
340
+ typedef typename sanitize< Arg6_T >::Type Arg6_Type;
341
+ Arg6_Type arg6 = args->getArgumentOrDefault<Arg6_Type>(6, varg6);
342
+ typedef typename sanitize< Arg7_T >::Type Arg7_Type;
343
+ Arg7_Type arg7 = args->getArgumentOrDefault<Arg7_Type>(7, varg7);
344
+ typedef typename sanitize< Arg8_T >::Type Arg8_Type;
345
+ Arg8_Type arg8 = args->getArgumentOrDefault<Arg8_Type>(8, varg8);
346
+ typedef typename sanitize< Arg9_T >::Type Arg9_Type;
347
+ Arg9_Type arg9 = args->getArgumentOrDefault<Arg9_Type>(9, varg9);
348
+ typedef typename sanitize< Arg10_T >::Type Arg10_Type;
349
+ Arg10_Type arg10 = args->getArgumentOrDefault<Arg10_Type>(10, varg10);
350
+ typedef typename sanitize< Arg11_T >::Type Arg11_Type;
351
+ Arg11_Type arg11 = args->getArgumentOrDefault<Arg11_Type>(11, varg11);
352
+ typedef typename sanitize< Arg12_T >::Type Arg12_Type;
353
+ Arg12_Type arg12 = args->getArgumentOrDefault<Arg12_Type>(12, varg12);
354
+ typedef typename sanitize< Arg13_T >::Type Arg13_Type;
355
+ Arg13_Type arg13 = args->getArgumentOrDefault<Arg13_Type>(13, varg13);
356
+ typedef typename sanitize< Arg14_T >::Type Arg14_Type;
357
+ Arg14_Type arg14 = args->getArgumentOrDefault<Arg14_Type>(14, varg14);
295
358
 
296
359
  Func func = wrapper->func_;
297
360
  (*obj.*func)(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14);
@@ -352,20 +415,34 @@ call(int argc, VALUE* argv, VALUE self)
352
415
  &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12, &varg13);
353
416
 
354
417
  Self_T * obj = from_ruby<Self_T *>(self);
355
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
356
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
357
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
358
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
359
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
360
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
361
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
362
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
363
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
364
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
365
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(10, varg10);
366
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(11, varg11);
367
- Arg12_T arg12 = args->getArgumentOrDefault<Arg12_T>(12, varg12);
368
- Arg13_T arg13 = args->getArgumentOrDefault<Arg13_T>(13, varg13);
418
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
419
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
420
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
421
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
422
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
423
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
424
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
425
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
426
+ typedef typename sanitize< Arg4_T >::Type Arg4_Type;
427
+ Arg4_Type arg4 = args->getArgumentOrDefault<Arg4_Type>(4, varg4);
428
+ typedef typename sanitize< Arg5_T >::Type Arg5_Type;
429
+ Arg5_Type arg5 = args->getArgumentOrDefault<Arg5_Type>(5, varg5);
430
+ typedef typename sanitize< Arg6_T >::Type Arg6_Type;
431
+ Arg6_Type arg6 = args->getArgumentOrDefault<Arg6_Type>(6, varg6);
432
+ typedef typename sanitize< Arg7_T >::Type Arg7_Type;
433
+ Arg7_Type arg7 = args->getArgumentOrDefault<Arg7_Type>(7, varg7);
434
+ typedef typename sanitize< Arg8_T >::Type Arg8_Type;
435
+ Arg8_Type arg8 = args->getArgumentOrDefault<Arg8_Type>(8, varg8);
436
+ typedef typename sanitize< Arg9_T >::Type Arg9_Type;
437
+ Arg9_Type arg9 = args->getArgumentOrDefault<Arg9_Type>(9, varg9);
438
+ typedef typename sanitize< Arg10_T >::Type Arg10_Type;
439
+ Arg10_Type arg10 = args->getArgumentOrDefault<Arg10_Type>(10, varg10);
440
+ typedef typename sanitize< Arg11_T >::Type Arg11_Type;
441
+ Arg11_Type arg11 = args->getArgumentOrDefault<Arg11_Type>(11, varg11);
442
+ typedef typename sanitize< Arg12_T >::Type Arg12_Type;
443
+ Arg12_Type arg12 = args->getArgumentOrDefault<Arg12_Type>(12, varg12);
444
+ typedef typename sanitize< Arg13_T >::Type Arg13_Type;
445
+ Arg13_Type arg13 = args->getArgumentOrDefault<Arg13_Type>(13, varg13);
369
446
 
370
447
  Func func = wrapper->func_;
371
448
  return to_ruby((*obj.*func)(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13));
@@ -424,20 +501,34 @@ call(int argc, VALUE* argv, VALUE self)
424
501
  &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12, &varg13);
425
502
 
426
503
  Self_T * obj = from_ruby<Self_T *>(self);
427
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
428
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
429
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
430
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
431
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
432
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
433
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
434
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
435
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
436
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
437
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(10, varg10);
438
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(11, varg11);
439
- Arg12_T arg12 = args->getArgumentOrDefault<Arg12_T>(12, varg12);
440
- Arg13_T arg13 = args->getArgumentOrDefault<Arg13_T>(13, varg13);
504
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
505
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
506
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
507
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
508
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
509
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
510
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
511
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
512
+ typedef typename sanitize< Arg4_T >::Type Arg4_Type;
513
+ Arg4_Type arg4 = args->getArgumentOrDefault<Arg4_Type>(4, varg4);
514
+ typedef typename sanitize< Arg5_T >::Type Arg5_Type;
515
+ Arg5_Type arg5 = args->getArgumentOrDefault<Arg5_Type>(5, varg5);
516
+ typedef typename sanitize< Arg6_T >::Type Arg6_Type;
517
+ Arg6_Type arg6 = args->getArgumentOrDefault<Arg6_Type>(6, varg6);
518
+ typedef typename sanitize< Arg7_T >::Type Arg7_Type;
519
+ Arg7_Type arg7 = args->getArgumentOrDefault<Arg7_Type>(7, varg7);
520
+ typedef typename sanitize< Arg8_T >::Type Arg8_Type;
521
+ Arg8_Type arg8 = args->getArgumentOrDefault<Arg8_Type>(8, varg8);
522
+ typedef typename sanitize< Arg9_T >::Type Arg9_Type;
523
+ Arg9_Type arg9 = args->getArgumentOrDefault<Arg9_Type>(9, varg9);
524
+ typedef typename sanitize< Arg10_T >::Type Arg10_Type;
525
+ Arg10_Type arg10 = args->getArgumentOrDefault<Arg10_Type>(10, varg10);
526
+ typedef typename sanitize< Arg11_T >::Type Arg11_Type;
527
+ Arg11_Type arg11 = args->getArgumentOrDefault<Arg11_Type>(11, varg11);
528
+ typedef typename sanitize< Arg12_T >::Type Arg12_Type;
529
+ Arg12_Type arg12 = args->getArgumentOrDefault<Arg12_Type>(12, varg12);
530
+ typedef typename sanitize< Arg13_T >::Type Arg13_Type;
531
+ Arg13_Type arg13 = args->getArgumentOrDefault<Arg13_Type>(13, varg13);
441
532
 
442
533
  Func func = wrapper->func_;
443
534
  (*obj.*func)(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13);
@@ -498,19 +589,32 @@ call(int argc, VALUE* argv, VALUE self)
498
589
  &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12);
499
590
 
500
591
  Self_T * obj = from_ruby<Self_T *>(self);
501
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
502
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
503
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
504
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
505
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
506
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
507
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
508
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
509
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
510
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
511
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(10, varg10);
512
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(11, varg11);
513
- Arg12_T arg12 = args->getArgumentOrDefault<Arg12_T>(12, varg12);
592
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
593
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
594
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
595
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
596
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
597
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
598
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
599
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
600
+ typedef typename sanitize< Arg4_T >::Type Arg4_Type;
601
+ Arg4_Type arg4 = args->getArgumentOrDefault<Arg4_Type>(4, varg4);
602
+ typedef typename sanitize< Arg5_T >::Type Arg5_Type;
603
+ Arg5_Type arg5 = args->getArgumentOrDefault<Arg5_Type>(5, varg5);
604
+ typedef typename sanitize< Arg6_T >::Type Arg6_Type;
605
+ Arg6_Type arg6 = args->getArgumentOrDefault<Arg6_Type>(6, varg6);
606
+ typedef typename sanitize< Arg7_T >::Type Arg7_Type;
607
+ Arg7_Type arg7 = args->getArgumentOrDefault<Arg7_Type>(7, varg7);
608
+ typedef typename sanitize< Arg8_T >::Type Arg8_Type;
609
+ Arg8_Type arg8 = args->getArgumentOrDefault<Arg8_Type>(8, varg8);
610
+ typedef typename sanitize< Arg9_T >::Type Arg9_Type;
611
+ Arg9_Type arg9 = args->getArgumentOrDefault<Arg9_Type>(9, varg9);
612
+ typedef typename sanitize< Arg10_T >::Type Arg10_Type;
613
+ Arg10_Type arg10 = args->getArgumentOrDefault<Arg10_Type>(10, varg10);
614
+ typedef typename sanitize< Arg11_T >::Type Arg11_Type;
615
+ Arg11_Type arg11 = args->getArgumentOrDefault<Arg11_Type>(11, varg11);
616
+ typedef typename sanitize< Arg12_T >::Type Arg12_Type;
617
+ Arg12_Type arg12 = args->getArgumentOrDefault<Arg12_Type>(12, varg12);
514
618
 
515
619
  Func func = wrapper->func_;
516
620
  return to_ruby((*obj.*func)(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12));
@@ -569,19 +673,32 @@ call(int argc, VALUE* argv, VALUE self)
569
673
  &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12);
570
674
 
571
675
  Self_T * obj = from_ruby<Self_T *>(self);
572
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
573
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
574
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
575
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
576
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
577
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
578
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
579
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
580
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
581
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
582
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(10, varg10);
583
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(11, varg11);
584
- Arg12_T arg12 = args->getArgumentOrDefault<Arg12_T>(12, varg12);
676
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
677
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
678
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
679
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
680
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
681
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
682
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
683
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
684
+ typedef typename sanitize< Arg4_T >::Type Arg4_Type;
685
+ Arg4_Type arg4 = args->getArgumentOrDefault<Arg4_Type>(4, varg4);
686
+ typedef typename sanitize< Arg5_T >::Type Arg5_Type;
687
+ Arg5_Type arg5 = args->getArgumentOrDefault<Arg5_Type>(5, varg5);
688
+ typedef typename sanitize< Arg6_T >::Type Arg6_Type;
689
+ Arg6_Type arg6 = args->getArgumentOrDefault<Arg6_Type>(6, varg6);
690
+ typedef typename sanitize< Arg7_T >::Type Arg7_Type;
691
+ Arg7_Type arg7 = args->getArgumentOrDefault<Arg7_Type>(7, varg7);
692
+ typedef typename sanitize< Arg8_T >::Type Arg8_Type;
693
+ Arg8_Type arg8 = args->getArgumentOrDefault<Arg8_Type>(8, varg8);
694
+ typedef typename sanitize< Arg9_T >::Type Arg9_Type;
695
+ Arg9_Type arg9 = args->getArgumentOrDefault<Arg9_Type>(9, varg9);
696
+ typedef typename sanitize< Arg10_T >::Type Arg10_Type;
697
+ Arg10_Type arg10 = args->getArgumentOrDefault<Arg10_Type>(10, varg10);
698
+ typedef typename sanitize< Arg11_T >::Type Arg11_Type;
699
+ Arg11_Type arg11 = args->getArgumentOrDefault<Arg11_Type>(11, varg11);
700
+ typedef typename sanitize< Arg12_T >::Type Arg12_Type;
701
+ Arg12_Type arg12 = args->getArgumentOrDefault<Arg12_Type>(12, varg12);
585
702
 
586
703
  Func func = wrapper->func_;
587
704
  (*obj.*func)(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12);
@@ -642,18 +759,30 @@ call(int argc, VALUE* argv, VALUE self)
642
759
  &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11);
643
760
 
644
761
  Self_T * obj = from_ruby<Self_T *>(self);
645
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
646
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
647
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
648
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
649
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
650
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
651
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
652
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
653
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
654
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
655
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(10, varg10);
656
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(11, varg11);
762
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
763
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
764
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
765
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
766
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
767
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
768
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
769
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
770
+ typedef typename sanitize< Arg4_T >::Type Arg4_Type;
771
+ Arg4_Type arg4 = args->getArgumentOrDefault<Arg4_Type>(4, varg4);
772
+ typedef typename sanitize< Arg5_T >::Type Arg5_Type;
773
+ Arg5_Type arg5 = args->getArgumentOrDefault<Arg5_Type>(5, varg5);
774
+ typedef typename sanitize< Arg6_T >::Type Arg6_Type;
775
+ Arg6_Type arg6 = args->getArgumentOrDefault<Arg6_Type>(6, varg6);
776
+ typedef typename sanitize< Arg7_T >::Type Arg7_Type;
777
+ Arg7_Type arg7 = args->getArgumentOrDefault<Arg7_Type>(7, varg7);
778
+ typedef typename sanitize< Arg8_T >::Type Arg8_Type;
779
+ Arg8_Type arg8 = args->getArgumentOrDefault<Arg8_Type>(8, varg8);
780
+ typedef typename sanitize< Arg9_T >::Type Arg9_Type;
781
+ Arg9_Type arg9 = args->getArgumentOrDefault<Arg9_Type>(9, varg9);
782
+ typedef typename sanitize< Arg10_T >::Type Arg10_Type;
783
+ Arg10_Type arg10 = args->getArgumentOrDefault<Arg10_Type>(10, varg10);
784
+ typedef typename sanitize< Arg11_T >::Type Arg11_Type;
785
+ Arg11_Type arg11 = args->getArgumentOrDefault<Arg11_Type>(11, varg11);
657
786
 
658
787
  Func func = wrapper->func_;
659
788
  return to_ruby((*obj.*func)(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11));
@@ -712,18 +841,30 @@ call(int argc, VALUE* argv, VALUE self)
712
841
  &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11);
713
842
 
714
843
  Self_T * obj = from_ruby<Self_T *>(self);
715
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
716
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
717
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
718
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
719
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
720
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
721
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
722
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
723
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
724
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
725
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(10, varg10);
726
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(11, varg11);
844
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
845
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
846
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
847
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
848
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
849
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
850
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
851
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
852
+ typedef typename sanitize< Arg4_T >::Type Arg4_Type;
853
+ Arg4_Type arg4 = args->getArgumentOrDefault<Arg4_Type>(4, varg4);
854
+ typedef typename sanitize< Arg5_T >::Type Arg5_Type;
855
+ Arg5_Type arg5 = args->getArgumentOrDefault<Arg5_Type>(5, varg5);
856
+ typedef typename sanitize< Arg6_T >::Type Arg6_Type;
857
+ Arg6_Type arg6 = args->getArgumentOrDefault<Arg6_Type>(6, varg6);
858
+ typedef typename sanitize< Arg7_T >::Type Arg7_Type;
859
+ Arg7_Type arg7 = args->getArgumentOrDefault<Arg7_Type>(7, varg7);
860
+ typedef typename sanitize< Arg8_T >::Type Arg8_Type;
861
+ Arg8_Type arg8 = args->getArgumentOrDefault<Arg8_Type>(8, varg8);
862
+ typedef typename sanitize< Arg9_T >::Type Arg9_Type;
863
+ Arg9_Type arg9 = args->getArgumentOrDefault<Arg9_Type>(9, varg9);
864
+ typedef typename sanitize< Arg10_T >::Type Arg10_Type;
865
+ Arg10_Type arg10 = args->getArgumentOrDefault<Arg10_Type>(10, varg10);
866
+ typedef typename sanitize< Arg11_T >::Type Arg11_Type;
867
+ Arg11_Type arg11 = args->getArgumentOrDefault<Arg11_Type>(11, varg11);
727
868
 
728
869
  Func func = wrapper->func_;
729
870
  (*obj.*func)(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11);
@@ -784,17 +925,28 @@ call(int argc, VALUE* argv, VALUE self)
784
925
  &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10);
785
926
 
786
927
  Self_T * obj = from_ruby<Self_T *>(self);
787
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
788
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
789
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
790
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
791
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
792
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
793
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
794
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
795
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
796
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
797
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(10, varg10);
928
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
929
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
930
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
931
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
932
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
933
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
934
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
935
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
936
+ typedef typename sanitize< Arg4_T >::Type Arg4_Type;
937
+ Arg4_Type arg4 = args->getArgumentOrDefault<Arg4_Type>(4, varg4);
938
+ typedef typename sanitize< Arg5_T >::Type Arg5_Type;
939
+ Arg5_Type arg5 = args->getArgumentOrDefault<Arg5_Type>(5, varg5);
940
+ typedef typename sanitize< Arg6_T >::Type Arg6_Type;
941
+ Arg6_Type arg6 = args->getArgumentOrDefault<Arg6_Type>(6, varg6);
942
+ typedef typename sanitize< Arg7_T >::Type Arg7_Type;
943
+ Arg7_Type arg7 = args->getArgumentOrDefault<Arg7_Type>(7, varg7);
944
+ typedef typename sanitize< Arg8_T >::Type Arg8_Type;
945
+ Arg8_Type arg8 = args->getArgumentOrDefault<Arg8_Type>(8, varg8);
946
+ typedef typename sanitize< Arg9_T >::Type Arg9_Type;
947
+ Arg9_Type arg9 = args->getArgumentOrDefault<Arg9_Type>(9, varg9);
948
+ typedef typename sanitize< Arg10_T >::Type Arg10_Type;
949
+ Arg10_Type arg10 = args->getArgumentOrDefault<Arg10_Type>(10, varg10);
798
950
 
799
951
  Func func = wrapper->func_;
800
952
  return to_ruby((*obj.*func)(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10));
@@ -853,17 +1005,28 @@ call(int argc, VALUE* argv, VALUE self)
853
1005
  &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10);
854
1006
 
855
1007
  Self_T * obj = from_ruby<Self_T *>(self);
856
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
857
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
858
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
859
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
860
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
861
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
862
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
863
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
864
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
865
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
866
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(10, varg10);
1008
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
1009
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
1010
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
1011
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
1012
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
1013
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
1014
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
1015
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
1016
+ typedef typename sanitize< Arg4_T >::Type Arg4_Type;
1017
+ Arg4_Type arg4 = args->getArgumentOrDefault<Arg4_Type>(4, varg4);
1018
+ typedef typename sanitize< Arg5_T >::Type Arg5_Type;
1019
+ Arg5_Type arg5 = args->getArgumentOrDefault<Arg5_Type>(5, varg5);
1020
+ typedef typename sanitize< Arg6_T >::Type Arg6_Type;
1021
+ Arg6_Type arg6 = args->getArgumentOrDefault<Arg6_Type>(6, varg6);
1022
+ typedef typename sanitize< Arg7_T >::Type Arg7_Type;
1023
+ Arg7_Type arg7 = args->getArgumentOrDefault<Arg7_Type>(7, varg7);
1024
+ typedef typename sanitize< Arg8_T >::Type Arg8_Type;
1025
+ Arg8_Type arg8 = args->getArgumentOrDefault<Arg8_Type>(8, varg8);
1026
+ typedef typename sanitize< Arg9_T >::Type Arg9_Type;
1027
+ Arg9_Type arg9 = args->getArgumentOrDefault<Arg9_Type>(9, varg9);
1028
+ typedef typename sanitize< Arg10_T >::Type Arg10_Type;
1029
+ Arg10_Type arg10 = args->getArgumentOrDefault<Arg10_Type>(10, varg10);
867
1030
 
868
1031
  Func func = wrapper->func_;
869
1032
  (*obj.*func)(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10);
@@ -924,16 +1087,26 @@ call(int argc, VALUE* argv, VALUE self)
924
1087
  &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9);
925
1088
 
926
1089
  Self_T * obj = from_ruby<Self_T *>(self);
927
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
928
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
929
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
930
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
931
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
932
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
933
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
934
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
935
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
936
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
1090
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
1091
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
1092
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
1093
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
1094
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
1095
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
1096
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
1097
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
1098
+ typedef typename sanitize< Arg4_T >::Type Arg4_Type;
1099
+ Arg4_Type arg4 = args->getArgumentOrDefault<Arg4_Type>(4, varg4);
1100
+ typedef typename sanitize< Arg5_T >::Type Arg5_Type;
1101
+ Arg5_Type arg5 = args->getArgumentOrDefault<Arg5_Type>(5, varg5);
1102
+ typedef typename sanitize< Arg6_T >::Type Arg6_Type;
1103
+ Arg6_Type arg6 = args->getArgumentOrDefault<Arg6_Type>(6, varg6);
1104
+ typedef typename sanitize< Arg7_T >::Type Arg7_Type;
1105
+ Arg7_Type arg7 = args->getArgumentOrDefault<Arg7_Type>(7, varg7);
1106
+ typedef typename sanitize< Arg8_T >::Type Arg8_Type;
1107
+ Arg8_Type arg8 = args->getArgumentOrDefault<Arg8_Type>(8, varg8);
1108
+ typedef typename sanitize< Arg9_T >::Type Arg9_Type;
1109
+ Arg9_Type arg9 = args->getArgumentOrDefault<Arg9_Type>(9, varg9);
937
1110
 
938
1111
  Func func = wrapper->func_;
939
1112
  return to_ruby((*obj.*func)(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9));
@@ -992,16 +1165,26 @@ call(int argc, VALUE* argv, VALUE self)
992
1165
  &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9);
993
1166
 
994
1167
  Self_T * obj = from_ruby<Self_T *>(self);
995
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
996
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
997
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
998
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
999
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
1000
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
1001
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
1002
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
1003
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
1004
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
1168
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
1169
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
1170
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
1171
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
1172
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
1173
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
1174
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
1175
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
1176
+ typedef typename sanitize< Arg4_T >::Type Arg4_Type;
1177
+ Arg4_Type arg4 = args->getArgumentOrDefault<Arg4_Type>(4, varg4);
1178
+ typedef typename sanitize< Arg5_T >::Type Arg5_Type;
1179
+ Arg5_Type arg5 = args->getArgumentOrDefault<Arg5_Type>(5, varg5);
1180
+ typedef typename sanitize< Arg6_T >::Type Arg6_Type;
1181
+ Arg6_Type arg6 = args->getArgumentOrDefault<Arg6_Type>(6, varg6);
1182
+ typedef typename sanitize< Arg7_T >::Type Arg7_Type;
1183
+ Arg7_Type arg7 = args->getArgumentOrDefault<Arg7_Type>(7, varg7);
1184
+ typedef typename sanitize< Arg8_T >::Type Arg8_Type;
1185
+ Arg8_Type arg8 = args->getArgumentOrDefault<Arg8_Type>(8, varg8);
1186
+ typedef typename sanitize< Arg9_T >::Type Arg9_Type;
1187
+ Arg9_Type arg9 = args->getArgumentOrDefault<Arg9_Type>(9, varg9);
1005
1188
 
1006
1189
  Func func = wrapper->func_;
1007
1190
  (*obj.*func)(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
@@ -1062,15 +1245,24 @@ call(int argc, VALUE* argv, VALUE self)
1062
1245
  &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8);
1063
1246
 
1064
1247
  Self_T * obj = from_ruby<Self_T *>(self);
1065
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1066
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
1067
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
1068
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
1069
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
1070
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
1071
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
1072
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
1073
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
1248
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
1249
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
1250
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
1251
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
1252
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
1253
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
1254
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
1255
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
1256
+ typedef typename sanitize< Arg4_T >::Type Arg4_Type;
1257
+ Arg4_Type arg4 = args->getArgumentOrDefault<Arg4_Type>(4, varg4);
1258
+ typedef typename sanitize< Arg5_T >::Type Arg5_Type;
1259
+ Arg5_Type arg5 = args->getArgumentOrDefault<Arg5_Type>(5, varg5);
1260
+ typedef typename sanitize< Arg6_T >::Type Arg6_Type;
1261
+ Arg6_Type arg6 = args->getArgumentOrDefault<Arg6_Type>(6, varg6);
1262
+ typedef typename sanitize< Arg7_T >::Type Arg7_Type;
1263
+ Arg7_Type arg7 = args->getArgumentOrDefault<Arg7_Type>(7, varg7);
1264
+ typedef typename sanitize< Arg8_T >::Type Arg8_Type;
1265
+ Arg8_Type arg8 = args->getArgumentOrDefault<Arg8_Type>(8, varg8);
1074
1266
 
1075
1267
  Func func = wrapper->func_;
1076
1268
  return to_ruby((*obj.*func)(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8));
@@ -1129,15 +1321,24 @@ call(int argc, VALUE* argv, VALUE self)
1129
1321
  &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8);
1130
1322
 
1131
1323
  Self_T * obj = from_ruby<Self_T *>(self);
1132
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1133
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
1134
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
1135
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
1136
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
1137
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
1138
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
1139
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
1140
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
1324
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
1325
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
1326
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
1327
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
1328
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
1329
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
1330
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
1331
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
1332
+ typedef typename sanitize< Arg4_T >::Type Arg4_Type;
1333
+ Arg4_Type arg4 = args->getArgumentOrDefault<Arg4_Type>(4, varg4);
1334
+ typedef typename sanitize< Arg5_T >::Type Arg5_Type;
1335
+ Arg5_Type arg5 = args->getArgumentOrDefault<Arg5_Type>(5, varg5);
1336
+ typedef typename sanitize< Arg6_T >::Type Arg6_Type;
1337
+ Arg6_Type arg6 = args->getArgumentOrDefault<Arg6_Type>(6, varg6);
1338
+ typedef typename sanitize< Arg7_T >::Type Arg7_Type;
1339
+ Arg7_Type arg7 = args->getArgumentOrDefault<Arg7_Type>(7, varg7);
1340
+ typedef typename sanitize< Arg8_T >::Type Arg8_Type;
1341
+ Arg8_Type arg8 = args->getArgumentOrDefault<Arg8_Type>(8, varg8);
1141
1342
 
1142
1343
  Func func = wrapper->func_;
1143
1344
  (*obj.*func)(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
@@ -1198,14 +1399,22 @@ call(int argc, VALUE* argv, VALUE self)
1198
1399
  &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7);
1199
1400
 
1200
1401
  Self_T * obj = from_ruby<Self_T *>(self);
1201
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1202
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
1203
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
1204
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
1205
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
1206
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
1207
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
1208
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
1402
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
1403
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
1404
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
1405
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
1406
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
1407
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
1408
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
1409
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
1410
+ typedef typename sanitize< Arg4_T >::Type Arg4_Type;
1411
+ Arg4_Type arg4 = args->getArgumentOrDefault<Arg4_Type>(4, varg4);
1412
+ typedef typename sanitize< Arg5_T >::Type Arg5_Type;
1413
+ Arg5_Type arg5 = args->getArgumentOrDefault<Arg5_Type>(5, varg5);
1414
+ typedef typename sanitize< Arg6_T >::Type Arg6_Type;
1415
+ Arg6_Type arg6 = args->getArgumentOrDefault<Arg6_Type>(6, varg6);
1416
+ typedef typename sanitize< Arg7_T >::Type Arg7_Type;
1417
+ Arg7_Type arg7 = args->getArgumentOrDefault<Arg7_Type>(7, varg7);
1209
1418
 
1210
1419
  Func func = wrapper->func_;
1211
1420
  return to_ruby((*obj.*func)(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7));
@@ -1264,14 +1473,22 @@ call(int argc, VALUE* argv, VALUE self)
1264
1473
  &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7);
1265
1474
 
1266
1475
  Self_T * obj = from_ruby<Self_T *>(self);
1267
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1268
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
1269
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
1270
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
1271
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
1272
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
1273
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
1274
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
1476
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
1477
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
1478
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
1479
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
1480
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
1481
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
1482
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
1483
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
1484
+ typedef typename sanitize< Arg4_T >::Type Arg4_Type;
1485
+ Arg4_Type arg4 = args->getArgumentOrDefault<Arg4_Type>(4, varg4);
1486
+ typedef typename sanitize< Arg5_T >::Type Arg5_Type;
1487
+ Arg5_Type arg5 = args->getArgumentOrDefault<Arg5_Type>(5, varg5);
1488
+ typedef typename sanitize< Arg6_T >::Type Arg6_Type;
1489
+ Arg6_Type arg6 = args->getArgumentOrDefault<Arg6_Type>(6, varg6);
1490
+ typedef typename sanitize< Arg7_T >::Type Arg7_Type;
1491
+ Arg7_Type arg7 = args->getArgumentOrDefault<Arg7_Type>(7, varg7);
1275
1492
 
1276
1493
  Func func = wrapper->func_;
1277
1494
  (*obj.*func)(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
@@ -1332,13 +1549,20 @@ call(int argc, VALUE* argv, VALUE self)
1332
1549
  &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6);
1333
1550
 
1334
1551
  Self_T * obj = from_ruby<Self_T *>(self);
1335
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1336
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
1337
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
1338
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
1339
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
1340
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
1341
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
1552
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
1553
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
1554
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
1555
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
1556
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
1557
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
1558
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
1559
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
1560
+ typedef typename sanitize< Arg4_T >::Type Arg4_Type;
1561
+ Arg4_Type arg4 = args->getArgumentOrDefault<Arg4_Type>(4, varg4);
1562
+ typedef typename sanitize< Arg5_T >::Type Arg5_Type;
1563
+ Arg5_Type arg5 = args->getArgumentOrDefault<Arg5_Type>(5, varg5);
1564
+ typedef typename sanitize< Arg6_T >::Type Arg6_Type;
1565
+ Arg6_Type arg6 = args->getArgumentOrDefault<Arg6_Type>(6, varg6);
1342
1566
 
1343
1567
  Func func = wrapper->func_;
1344
1568
  return to_ruby((*obj.*func)(arg0, arg1, arg2, arg3, arg4, arg5, arg6));
@@ -1397,13 +1621,20 @@ call(int argc, VALUE* argv, VALUE self)
1397
1621
  &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6);
1398
1622
 
1399
1623
  Self_T * obj = from_ruby<Self_T *>(self);
1400
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1401
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
1402
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
1403
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
1404
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
1405
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
1406
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
1624
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
1625
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
1626
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
1627
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
1628
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
1629
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
1630
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
1631
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
1632
+ typedef typename sanitize< Arg4_T >::Type Arg4_Type;
1633
+ Arg4_Type arg4 = args->getArgumentOrDefault<Arg4_Type>(4, varg4);
1634
+ typedef typename sanitize< Arg5_T >::Type Arg5_Type;
1635
+ Arg5_Type arg5 = args->getArgumentOrDefault<Arg5_Type>(5, varg5);
1636
+ typedef typename sanitize< Arg6_T >::Type Arg6_Type;
1637
+ Arg6_Type arg6 = args->getArgumentOrDefault<Arg6_Type>(6, varg6);
1407
1638
 
1408
1639
  Func func = wrapper->func_;
1409
1640
  (*obj.*func)(arg0, arg1, arg2, arg3, arg4, arg5, arg6);
@@ -1464,12 +1695,18 @@ call(int argc, VALUE* argv, VALUE self)
1464
1695
  &varg0, &varg1, &varg2, &varg3, &varg4, &varg5);
1465
1696
 
1466
1697
  Self_T * obj = from_ruby<Self_T *>(self);
1467
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1468
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
1469
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
1470
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
1471
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
1472
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
1698
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
1699
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
1700
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
1701
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
1702
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
1703
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
1704
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
1705
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
1706
+ typedef typename sanitize< Arg4_T >::Type Arg4_Type;
1707
+ Arg4_Type arg4 = args->getArgumentOrDefault<Arg4_Type>(4, varg4);
1708
+ typedef typename sanitize< Arg5_T >::Type Arg5_Type;
1709
+ Arg5_Type arg5 = args->getArgumentOrDefault<Arg5_Type>(5, varg5);
1473
1710
 
1474
1711
  Func func = wrapper->func_;
1475
1712
  return to_ruby((*obj.*func)(arg0, arg1, arg2, arg3, arg4, arg5));
@@ -1528,12 +1765,18 @@ call(int argc, VALUE* argv, VALUE self)
1528
1765
  &varg0, &varg1, &varg2, &varg3, &varg4, &varg5);
1529
1766
 
1530
1767
  Self_T * obj = from_ruby<Self_T *>(self);
1531
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1532
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
1533
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
1534
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
1535
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
1536
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
1768
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
1769
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
1770
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
1771
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
1772
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
1773
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
1774
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
1775
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
1776
+ typedef typename sanitize< Arg4_T >::Type Arg4_Type;
1777
+ Arg4_Type arg4 = args->getArgumentOrDefault<Arg4_Type>(4, varg4);
1778
+ typedef typename sanitize< Arg5_T >::Type Arg5_Type;
1779
+ Arg5_Type arg5 = args->getArgumentOrDefault<Arg5_Type>(5, varg5);
1537
1780
 
1538
1781
  Func func = wrapper->func_;
1539
1782
  (*obj.*func)(arg0, arg1, arg2, arg3, arg4, arg5);
@@ -1594,11 +1837,16 @@ call(int argc, VALUE* argv, VALUE self)
1594
1837
  &varg0, &varg1, &varg2, &varg3, &varg4);
1595
1838
 
1596
1839
  Self_T * obj = from_ruby<Self_T *>(self);
1597
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1598
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
1599
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
1600
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
1601
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
1840
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
1841
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
1842
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
1843
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
1844
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
1845
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
1846
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
1847
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
1848
+ typedef typename sanitize< Arg4_T >::Type Arg4_Type;
1849
+ Arg4_Type arg4 = args->getArgumentOrDefault<Arg4_Type>(4, varg4);
1602
1850
 
1603
1851
  Func func = wrapper->func_;
1604
1852
  return to_ruby((*obj.*func)(arg0, arg1, arg2, arg3, arg4));
@@ -1657,11 +1905,16 @@ call(int argc, VALUE* argv, VALUE self)
1657
1905
  &varg0, &varg1, &varg2, &varg3, &varg4);
1658
1906
 
1659
1907
  Self_T * obj = from_ruby<Self_T *>(self);
1660
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1661
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
1662
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
1663
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
1664
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
1908
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
1909
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
1910
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
1911
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
1912
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
1913
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
1914
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
1915
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
1916
+ typedef typename sanitize< Arg4_T >::Type Arg4_Type;
1917
+ Arg4_Type arg4 = args->getArgumentOrDefault<Arg4_Type>(4, varg4);
1665
1918
 
1666
1919
  Func func = wrapper->func_;
1667
1920
  (*obj.*func)(arg0, arg1, arg2, arg3, arg4);
@@ -1722,10 +1975,14 @@ call(int argc, VALUE* argv, VALUE self)
1722
1975
  &varg0, &varg1, &varg2, &varg3);
1723
1976
 
1724
1977
  Self_T * obj = from_ruby<Self_T *>(self);
1725
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1726
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
1727
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
1728
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
1978
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
1979
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
1980
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
1981
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
1982
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
1983
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
1984
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
1985
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
1729
1986
 
1730
1987
  Func func = wrapper->func_;
1731
1988
  return to_ruby((*obj.*func)(arg0, arg1, arg2, arg3));
@@ -1784,10 +2041,14 @@ call(int argc, VALUE* argv, VALUE self)
1784
2041
  &varg0, &varg1, &varg2, &varg3);
1785
2042
 
1786
2043
  Self_T * obj = from_ruby<Self_T *>(self);
1787
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1788
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
1789
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
1790
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
2044
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
2045
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
2046
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
2047
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
2048
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
2049
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
2050
+ typedef typename sanitize< Arg3_T >::Type Arg3_Type;
2051
+ Arg3_Type arg3 = args->getArgumentOrDefault<Arg3_Type>(3, varg3);
1791
2052
 
1792
2053
  Func func = wrapper->func_;
1793
2054
  (*obj.*func)(arg0, arg1, arg2, arg3);
@@ -1848,9 +2109,12 @@ call(int argc, VALUE* argv, VALUE self)
1848
2109
  &varg0, &varg1, &varg2);
1849
2110
 
1850
2111
  Self_T * obj = from_ruby<Self_T *>(self);
1851
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1852
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
1853
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
2112
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
2113
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
2114
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
2115
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
2116
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
2117
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
1854
2118
 
1855
2119
  Func func = wrapper->func_;
1856
2120
  return to_ruby((*obj.*func)(arg0, arg1, arg2));
@@ -1909,9 +2173,12 @@ call(int argc, VALUE* argv, VALUE self)
1909
2173
  &varg0, &varg1, &varg2);
1910
2174
 
1911
2175
  Self_T * obj = from_ruby<Self_T *>(self);
1912
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1913
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
1914
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
2176
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
2177
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
2178
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
2179
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
2180
+ typedef typename sanitize< Arg2_T >::Type Arg2_Type;
2181
+ Arg2_Type arg2 = args->getArgumentOrDefault<Arg2_Type>(2, varg2);
1915
2182
 
1916
2183
  Func func = wrapper->func_;
1917
2184
  (*obj.*func)(arg0, arg1, arg2);
@@ -1972,8 +2239,10 @@ call(int argc, VALUE* argv, VALUE self)
1972
2239
  &varg0, &varg1);
1973
2240
 
1974
2241
  Self_T * obj = from_ruby<Self_T *>(self);
1975
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1976
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
2242
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
2243
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
2244
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
2245
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
1977
2246
 
1978
2247
  Func func = wrapper->func_;
1979
2248
  return to_ruby((*obj.*func)(arg0, arg1));
@@ -2032,8 +2301,10 @@ call(int argc, VALUE* argv, VALUE self)
2032
2301
  &varg0, &varg1);
2033
2302
 
2034
2303
  Self_T * obj = from_ruby<Self_T *>(self);
2035
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
2036
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
2304
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
2305
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
2306
+ typedef typename sanitize< Arg1_T >::Type Arg1_Type;
2307
+ Arg1_Type arg1 = args->getArgumentOrDefault<Arg1_Type>(1, varg1);
2037
2308
 
2038
2309
  Func func = wrapper->func_;
2039
2310
  (*obj.*func)(arg0, arg1);
@@ -2094,7 +2365,8 @@ call(int argc, VALUE* argv, VALUE self)
2094
2365
  &varg0);
2095
2366
 
2096
2367
  Self_T * obj = from_ruby<Self_T *>(self);
2097
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
2368
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
2369
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
2098
2370
 
2099
2371
  Func func = wrapper->func_;
2100
2372
  return to_ruby((*obj.*func)(arg0));
@@ -2153,7 +2425,8 @@ call(int argc, VALUE* argv, VALUE self)
2153
2425
  &varg0);
2154
2426
 
2155
2427
  Self_T * obj = from_ruby<Self_T *>(self);
2156
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
2428
+ typedef typename sanitize< Arg0_T >::Type Arg0_Type;
2429
+ Arg0_Type arg0 = args->getArgumentOrDefault<Arg0_Type>(0, varg0);
2157
2430
 
2158
2431
  Func func = wrapper->func_;
2159
2432
  (*obj.*func)(arg0);