rice 3.0.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (237) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +121 -0
  3. data/CONTRIBUTORS.md +19 -0
  4. data/Gemfile +3 -0
  5. data/README.md +44 -1025
  6. data/Rakefile +95 -12
  7. data/include/rice/rice.hpp +7766 -0
  8. data/lib/mkmf-rice.rb +127 -0
  9. data/lib/version.rb +3 -0
  10. data/rice/Address_Registration_Guard.ipp +75 -32
  11. data/rice/Address_Registration_Guard_defn.hpp +60 -56
  12. data/rice/Arg.hpp +80 -4
  13. data/rice/Arg.ipp +51 -0
  14. data/rice/Constructor.hpp +12 -14
  15. data/rice/Data_Object.ipp +234 -107
  16. data/rice/Data_Object_defn.hpp +77 -117
  17. data/rice/Data_Type.hpp +1 -2
  18. data/rice/Data_Type.ipp +251 -295
  19. data/rice/Data_Type_defn.hpp +175 -243
  20. data/rice/Director.hpp +11 -6
  21. data/rice/Enum.hpp +54 -104
  22. data/rice/Enum.ipp +104 -230
  23. data/rice/Exception.hpp +2 -8
  24. data/rice/Exception.ipp +65 -0
  25. data/rice/Exception_defn.hpp +46 -47
  26. data/rice/Identifier.hpp +28 -28
  27. data/rice/Identifier.ipp +23 -27
  28. data/rice/Return.hpp +39 -0
  29. data/rice/Return.ipp +33 -0
  30. data/rice/detail/Exception_Handler.ipp +22 -62
  31. data/rice/detail/Exception_Handler_defn.hpp +76 -91
  32. data/rice/detail/Iterator.hpp +18 -88
  33. data/rice/detail/Iterator.ipp +47 -0
  34. data/rice/detail/Jump_Tag.hpp +21 -0
  35. data/rice/detail/MethodInfo.hpp +44 -0
  36. data/rice/detail/MethodInfo.ipp +78 -0
  37. data/rice/detail/NativeAttribute.hpp +53 -0
  38. data/rice/detail/NativeAttribute.ipp +83 -0
  39. data/rice/detail/NativeFunction.hpp +69 -0
  40. data/rice/detail/NativeFunction.ipp +248 -0
  41. data/rice/detail/RubyFunction.hpp +39 -0
  42. data/rice/detail/RubyFunction.ipp +92 -0
  43. data/rice/detail/Type.hpp +29 -0
  44. data/rice/detail/Type.ipp +138 -0
  45. data/rice/detail/TypeRegistry.hpp +50 -0
  46. data/rice/detail/TypeRegistry.ipp +106 -0
  47. data/rice/detail/Wrapper.hpp +51 -0
  48. data/rice/detail/Wrapper.ipp +151 -0
  49. data/rice/detail/default_allocation_func.hpp +8 -19
  50. data/rice/detail/default_allocation_func.ipp +9 -8
  51. data/rice/detail/from_ruby.hpp +2 -37
  52. data/rice/detail/from_ruby.ipp +1020 -46
  53. data/rice/detail/from_ruby_defn.hpp +38 -0
  54. data/rice/detail/function_traits.hpp +124 -0
  55. data/rice/detail/method_data.hpp +23 -15
  56. data/rice/detail/method_data.ipp +53 -0
  57. data/rice/detail/rice_traits.hpp +116 -0
  58. data/rice/detail/ruby.hpp +9 -46
  59. data/rice/detail/to_ruby.hpp +3 -17
  60. data/rice/detail/to_ruby.ipp +409 -31
  61. data/rice/detail/to_ruby_defn.hpp +48 -0
  62. data/rice/forward_declares.ipp +82 -0
  63. data/rice/global_function.hpp +16 -20
  64. data/rice/global_function.ipp +8 -17
  65. data/rice/rice.hpp +59 -0
  66. data/rice/ruby_mark.hpp +5 -3
  67. data/rice/ruby_try_catch.hpp +4 -4
  68. data/rice/stl.hpp +11 -0
  69. data/sample/callbacks/extconf.rb +3 -0
  70. data/sample/callbacks/sample_callbacks.cpp +10 -13
  71. data/sample/enum/extconf.rb +3 -0
  72. data/sample/enum/sample_enum.cpp +3 -17
  73. data/sample/enum/test.rb +2 -2
  74. data/sample/inheritance/animals.cpp +8 -24
  75. data/sample/inheritance/extconf.rb +3 -0
  76. data/sample/inheritance/test.rb +1 -1
  77. data/sample/map/extconf.rb +3 -0
  78. data/sample/map/map.cpp +10 -18
  79. data/sample/map/test.rb +1 -1
  80. data/test/embed_ruby.cpp +18 -5
  81. data/test/ext/t1/extconf.rb +3 -0
  82. data/test/ext/t1/t1.cpp +1 -3
  83. data/test/ext/t2/extconf.rb +3 -0
  84. data/test/ext/t2/t2.cpp +1 -1
  85. data/test/extconf.rb +23 -0
  86. data/test/ruby/test_callbacks_sample.rb +28 -0
  87. data/test/ruby/test_multiple_extensions.rb +18 -0
  88. data/test/ruby/test_multiple_extensions_same_class.rb +14 -0
  89. data/test/ruby/test_multiple_extensions_with_inheritance.rb +20 -0
  90. data/test/test_Address_Registration_Guard.cpp +23 -10
  91. data/test/test_Array.cpp +129 -73
  92. data/test/test_Attribute.cpp +147 -0
  93. data/test/test_Builtin_Object.cpp +34 -14
  94. data/test/test_Class.cpp +149 -275
  95. data/test/test_Constructor.cpp +10 -9
  96. data/test/test_Data_Object.cpp +133 -192
  97. data/test/test_Data_Type.cpp +322 -252
  98. data/test/test_Director.cpp +54 -41
  99. data/test/test_Enum.cpp +228 -103
  100. data/test/test_Exception.cpp +5 -6
  101. data/test/test_Hash.cpp +31 -30
  102. data/test/test_Identifier.cpp +4 -5
  103. data/test/test_Inheritance.cpp +221 -0
  104. data/test/test_Iterator.cpp +161 -0
  105. data/test/test_Jump_Tag.cpp +1 -1
  106. data/test/test_Keep_Alive.cpp +161 -0
  107. data/test/test_Memory_Management.cpp +2 -4
  108. data/test/test_Module.cpp +167 -110
  109. data/test/test_Object.cpp +41 -21
  110. data/test/test_Ownership.cpp +275 -0
  111. data/test/test_Self.cpp +205 -0
  112. data/test/test_Stl_Optional.cpp +90 -0
  113. data/test/test_Stl_Pair.cpp +144 -0
  114. data/test/test_Stl_SmartPointer.cpp +200 -0
  115. data/test/test_Stl_String.cpp +74 -0
  116. data/test/test_Stl_Vector.cpp +652 -0
  117. data/test/test_String.cpp +1 -2
  118. data/test/test_Struct.cpp +29 -39
  119. data/test/test_Symbol.cpp +1 -2
  120. data/test/test_To_From_Ruby.cpp +249 -285
  121. data/test/test_global_functions.cpp +39 -19
  122. data/test/unittest.hpp +0 -4
  123. metadata +63 -139
  124. data/Doxyfile +0 -2268
  125. data/Makefile.am +0 -26
  126. data/Makefile.in +0 -931
  127. data/README.mingw +0 -8
  128. data/aclocal.m4 +0 -1085
  129. data/ax_cxx_compile_stdcxx.m4 +0 -951
  130. data/bootstrap +0 -8
  131. data/config.guess +0 -1421
  132. data/config.sub +0 -1807
  133. data/configure +0 -7792
  134. data/configure.ac +0 -55
  135. data/depcomp +0 -791
  136. data/doxygen.ac +0 -314
  137. data/doxygen.am +0 -186
  138. data/extconf.rb +0 -70
  139. data/install-sh +0 -501
  140. data/missing +0 -215
  141. data/post-autoconf.rb +0 -22
  142. data/post-automake.rb +0 -28
  143. data/rice/Address_Registration_Guard.cpp +0 -22
  144. data/rice/Arg_impl.hpp +0 -129
  145. data/rice/Arg_operators.cpp +0 -21
  146. data/rice/Arg_operators.hpp +0 -19
  147. data/rice/Array.hpp +0 -214
  148. data/rice/Array.ipp +0 -256
  149. data/rice/Builtin_Object.hpp +0 -8
  150. data/rice/Builtin_Object.ipp +0 -50
  151. data/rice/Builtin_Object_defn.hpp +0 -50
  152. data/rice/Class.cpp +0 -57
  153. data/rice/Class.hpp +0 -8
  154. data/rice/Class.ipp +0 -6
  155. data/rice/Class_defn.hpp +0 -84
  156. data/rice/Data_Type.cpp +0 -54
  157. data/rice/Data_Type_fwd.hpp +0 -12
  158. data/rice/Director.cpp +0 -13
  159. data/rice/Exception.cpp +0 -54
  160. data/rice/Exception_Base.hpp +0 -8
  161. data/rice/Exception_Base.ipp +0 -13
  162. data/rice/Exception_Base_defn.hpp +0 -27
  163. data/rice/Hash.hpp +0 -230
  164. data/rice/Hash.ipp +0 -329
  165. data/rice/Identifier.cpp +0 -8
  166. data/rice/Jump_Tag.hpp +0 -24
  167. data/rice/Makefile.am +0 -121
  168. data/rice/Makefile.in +0 -884
  169. data/rice/Module.cpp +0 -84
  170. data/rice/Module.hpp +0 -8
  171. data/rice/Module.ipp +0 -6
  172. data/rice/Module_defn.hpp +0 -88
  173. data/rice/Module_impl.hpp +0 -281
  174. data/rice/Module_impl.ipp +0 -345
  175. data/rice/Object.cpp +0 -169
  176. data/rice/Object.hpp +0 -8
  177. data/rice/Object.ipp +0 -33
  178. data/rice/Object_defn.hpp +0 -214
  179. data/rice/Require_Guard.hpp +0 -21
  180. data/rice/String.cpp +0 -89
  181. data/rice/String.hpp +0 -91
  182. data/rice/Struct.cpp +0 -117
  183. data/rice/Struct.hpp +0 -162
  184. data/rice/Struct.ipp +0 -26
  185. data/rice/Symbol.cpp +0 -25
  186. data/rice/Symbol.hpp +0 -66
  187. data/rice/Symbol.ipp +0 -44
  188. data/rice/config.hpp +0 -47
  189. data/rice/config.hpp.in +0 -46
  190. data/rice/detail/Arguments.hpp +0 -118
  191. data/rice/detail/Auto_Function_Wrapper.hpp +0 -898
  192. data/rice/detail/Auto_Function_Wrapper.ipp +0 -3181
  193. data/rice/detail/Auto_Member_Function_Wrapper.hpp +0 -897
  194. data/rice/detail/Auto_Member_Function_Wrapper.ipp +0 -2501
  195. data/rice/detail/Caster.hpp +0 -103
  196. data/rice/detail/Not_Copyable.hpp +0 -25
  197. data/rice/detail/Wrapped_Function.hpp +0 -33
  198. data/rice/detail/cfp.hpp +0 -24
  199. data/rice/detail/cfp.ipp +0 -51
  200. data/rice/detail/check_ruby_type.cpp +0 -27
  201. data/rice/detail/check_ruby_type.hpp +0 -23
  202. data/rice/detail/creation_funcs.hpp +0 -37
  203. data/rice/detail/creation_funcs.ipp +0 -36
  204. data/rice/detail/define_method_and_auto_wrap.hpp +0 -31
  205. data/rice/detail/define_method_and_auto_wrap.ipp +0 -30
  206. data/rice/detail/demangle.cpp +0 -56
  207. data/rice/detail/demangle.hpp +0 -19
  208. data/rice/detail/env.hpp +0 -11
  209. data/rice/detail/method_data.cpp +0 -92
  210. data/rice/detail/node.hpp +0 -13
  211. data/rice/detail/protect.cpp +0 -29
  212. data/rice/detail/protect.hpp +0 -34
  213. data/rice/detail/ruby_version_code.hpp +0 -6
  214. data/rice/detail/ruby_version_code.hpp.in +0 -6
  215. data/rice/detail/st.hpp +0 -22
  216. data/rice/detail/win32.hpp +0 -16
  217. data/rice/detail/wrap_function.hpp +0 -66
  218. data/rice/protect.hpp +0 -38
  219. data/rice/protect.ipp +0 -1134
  220. data/rice/rubypp.rb +0 -97
  221. data/rice/to_from_ruby.hpp +0 -8
  222. data/rice/to_from_ruby.ipp +0 -418
  223. data/rice/to_from_ruby_defn.hpp +0 -70
  224. data/ruby.ac +0 -135
  225. data/ruby/Makefile.am +0 -1
  226. data/ruby/Makefile.in +0 -628
  227. data/ruby/lib/Makefile.am +0 -3
  228. data/ruby/lib/Makefile.in +0 -506
  229. data/ruby/lib/mkmf-rice.rb.in +0 -217
  230. data/ruby/lib/version.rb +0 -3
  231. data/sample/Makefile.am +0 -53
  232. data/sample/Makefile.in +0 -495
  233. data/test/Makefile.am +0 -73
  234. data/test/Makefile.in +0 -1219
  235. data/test/ext/Makefile.am +0 -41
  236. data/test/ext/Makefile.in +0 -483
  237. data/test/test_rice.rb +0 -45
@@ -1,3181 +0,0 @@
1
- #ifndef Rice__detail__Auto_Function_Wrapper__ipp_
2
- #define Rice__detail__Auto_Function_Wrapper__ipp_
3
-
4
- // This is a generated file. DO NOT EDIT!!
5
-
6
-
7
- // This causes problems with certain C++ libraries
8
- #undef TYPE
9
-
10
- #include "method_data.hpp"
11
- #include "../ruby_try_catch.hpp"
12
- #include "../to_from_ruby.hpp"
13
- namespace Rice
14
- {
15
-
16
- namespace detail
17
- {
18
-
19
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T, typename Arg13_T, typename Arg14_T, typename Arg15_T>
20
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T, Arg14_T, Arg15_T>::
21
- Auto_Function_Wrapper(
22
- Func func,
23
- Data_Object<Exception_Handler> handler,
24
- Arguments* arguments)
25
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
26
- , func_(func)
27
- , handler_(handler)
28
- , handler_guard_(&handler_)
29
- {
30
- if(arguments == 0) {
31
- arguments_ = new Arguments();
32
- } else {
33
- arguments_ = arguments;
34
- }
35
- }
36
-
37
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T, typename Arg13_T, typename Arg14_T, typename Arg15_T>
38
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T, Arg14_T, Arg15_T>::
39
- ~Auto_Function_Wrapper()
40
- {
41
- if(arguments_) { delete arguments_; }
42
- }
43
-
44
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T, typename Arg13_T, typename Arg14_T, typename Arg15_T>
45
- VALUE Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T, Arg14_T, Arg15_T>::
46
- call(int argc, VALUE *argv, VALUE self)
47
- {
48
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T, Arg14_T, Arg15_T> * wrapper = 0;
49
- try
50
- {
51
- Data_Object<Wrapped_Function> data(detail::method_data());
52
- wrapper = (Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T, Arg14_T, Arg15_T> *)data.get();
53
- Arguments* args = wrapper->arguments_;
54
-
55
- bool hasSelf = (self && self != Qnil);
56
- if(args->count() >= 0) {
57
- hasSelf = hasSelf && args->count() == Num_Args - 1;
58
- } else {
59
- hasSelf = hasSelf && argc == Num_Args -1;
60
- }
61
-
62
- VALUE varg0, varg1, varg2, varg3, varg4, varg5, varg6, varg7, varg8, varg9, varg10, varg11, varg12, varg13, varg14, varg15;
63
-
64
- if(hasSelf) {
65
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1).c_str()
66
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12, &varg13, &varg14, &varg15);
67
-
68
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
69
-
70
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
71
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
72
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
73
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(3, varg3);
74
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(4, varg4);
75
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(5, varg5);
76
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(6, varg6);
77
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(7, varg7);
78
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(8, varg8);
79
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(9, varg9);
80
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(10, varg10);
81
- Arg12_T arg12 = args->getArgumentOrDefault<Arg12_T>(11, varg11);
82
- Arg13_T arg13 = args->getArgumentOrDefault<Arg13_T>(12, varg12);
83
- Arg14_T arg14 = args->getArgumentOrDefault<Arg14_T>(13, varg13);
84
- Arg15_T arg15 = args->getArgumentOrDefault<Arg15_T>(14, varg14);
85
-
86
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15));
87
- } else {
88
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
89
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12, &varg13, &varg14, &varg15);
90
-
91
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
92
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
93
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
94
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
95
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
96
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
97
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
98
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
99
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
100
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
101
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(10, varg10);
102
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(11, varg11);
103
- Arg12_T arg12 = args->getArgumentOrDefault<Arg12_T>(12, varg12);
104
- Arg13_T arg13 = args->getArgumentOrDefault<Arg13_T>(13, varg13);
105
- Arg14_T arg14 = args->getArgumentOrDefault<Arg14_T>(14, varg14);
106
- Arg15_T arg15 = args->getArgumentOrDefault<Arg15_T>(15, varg15);
107
-
108
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15));
109
- }
110
- }
111
- catch(...)
112
- {
113
- RUBY_TRY
114
- {
115
- if(wrapper)
116
- {
117
- return wrapper->handler_->handle_exception();
118
- }
119
- else
120
- {
121
- throw;
122
- }
123
- }
124
- RUBY_CATCH
125
- }
126
- }
127
-
128
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T, typename Arg13_T, typename Arg14_T, typename Arg15_T>
129
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T, Arg14_T, Arg15_T>::
130
- Auto_Function_Wrapper(
131
- Func func,
132
- Data_Object<Exception_Handler> handler,
133
- Arguments* arguments)
134
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
135
- , func_(func)
136
- , handler_(handler)
137
- , handler_guard_(&handler_)
138
- {
139
- if(arguments == 0) {
140
- arguments_ = new Arguments();
141
- } else {
142
- arguments_ = arguments;
143
- }
144
- }
145
-
146
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T, typename Arg13_T, typename Arg14_T, typename Arg15_T>
147
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T, Arg14_T, Arg15_T>::
148
- ~Auto_Function_Wrapper()
149
- {
150
- if(arguments_) { delete arguments_; }
151
- }
152
-
153
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T, typename Arg13_T, typename Arg14_T, typename Arg15_T>
154
- VALUE Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T, Arg14_T, Arg15_T>::
155
- call(int argc, VALUE* argv, VALUE self)
156
- {
157
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T, Arg14_T, Arg15_T> * wrapper = 0;
158
- try
159
- {
160
- Data_Object<Wrapped_Function> data(detail::method_data());
161
- wrapper = (Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T, Arg14_T, Arg15_T> *)data.get();
162
- Arguments* args = wrapper->arguments_;
163
-
164
- bool hasSelf = (self && self != Qnil);
165
- if(args->count() >= 0) {
166
- hasSelf = hasSelf && args->count() == Num_Args - 1;
167
- } else {
168
- hasSelf = hasSelf && argc == Num_Args -1;
169
- }
170
-
171
- VALUE varg0, varg1, varg2, varg3, varg4, varg5, varg6, varg7, varg8, varg9, varg10, varg11, varg12, varg13, varg14, varg15;
172
-
173
- if(hasSelf) {
174
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1) .c_str()
175
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12, &varg13, &varg14, &varg15);
176
-
177
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
178
-
179
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
180
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
181
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
182
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(3, varg3);
183
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(4, varg4);
184
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(5, varg5);
185
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(6, varg6);
186
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(7, varg7);
187
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(8, varg8);
188
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(9, varg9);
189
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(10, varg10);
190
- Arg12_T arg12 = args->getArgumentOrDefault<Arg12_T>(11, varg11);
191
- Arg13_T arg13 = args->getArgumentOrDefault<Arg13_T>(12, varg12);
192
- Arg14_T arg14 = args->getArgumentOrDefault<Arg14_T>(13, varg13);
193
- Arg15_T arg15 = args->getArgumentOrDefault<Arg15_T>(14, varg14);
194
-
195
- wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15);
196
- return Qnil;
197
- } else {
198
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
199
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12, &varg13, &varg14, &varg15);
200
-
201
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
202
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
203
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
204
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
205
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
206
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
207
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
208
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
209
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
210
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
211
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(10, varg10);
212
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(11, varg11);
213
- Arg12_T arg12 = args->getArgumentOrDefault<Arg12_T>(12, varg12);
214
- Arg13_T arg13 = args->getArgumentOrDefault<Arg13_T>(13, varg13);
215
- Arg14_T arg14 = args->getArgumentOrDefault<Arg14_T>(14, varg14);
216
- Arg15_T arg15 = args->getArgumentOrDefault<Arg15_T>(15, varg15);
217
-
218
- wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15);
219
- return Qnil;
220
- }
221
- }
222
- catch(...)
223
- {
224
- RUBY_TRY
225
- {
226
- if(wrapper)
227
- {
228
- return wrapper->handler_->handle_exception();
229
- }
230
- else
231
- {
232
- throw;
233
- }
234
- }
235
- RUBY_CATCH
236
- }
237
- }
238
-
239
- // ---------------------------------------------------------------------
240
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T, typename Arg13_T, typename Arg14_T>
241
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T, Arg14_T>::
242
- Auto_Function_Wrapper(
243
- Func func,
244
- Data_Object<Exception_Handler> handler,
245
- Arguments* arguments)
246
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
247
- , func_(func)
248
- , handler_(handler)
249
- , handler_guard_(&handler_)
250
- {
251
- if(arguments == 0) {
252
- arguments_ = new Arguments();
253
- } else {
254
- arguments_ = arguments;
255
- }
256
- }
257
-
258
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T, typename Arg13_T, typename Arg14_T>
259
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T, Arg14_T>::
260
- ~Auto_Function_Wrapper()
261
- {
262
- if(arguments_) { delete arguments_; }
263
- }
264
-
265
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T, typename Arg13_T, typename Arg14_T>
266
- VALUE Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T, Arg14_T>::
267
- call(int argc, VALUE *argv, VALUE self)
268
- {
269
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T, Arg14_T> * wrapper = 0;
270
- try
271
- {
272
- Data_Object<Wrapped_Function> data(detail::method_data());
273
- wrapper = (Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T, Arg14_T> *)data.get();
274
- Arguments* args = wrapper->arguments_;
275
-
276
- bool hasSelf = (self && self != Qnil);
277
- if(args->count() >= 0) {
278
- hasSelf = hasSelf && args->count() == Num_Args - 1;
279
- } else {
280
- hasSelf = hasSelf && argc == Num_Args -1;
281
- }
282
-
283
- VALUE varg0, varg1, varg2, varg3, varg4, varg5, varg6, varg7, varg8, varg9, varg10, varg11, varg12, varg13, varg14;
284
-
285
- if(hasSelf) {
286
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1).c_str()
287
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12, &varg13, &varg14);
288
-
289
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
290
-
291
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
292
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
293
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
294
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(3, varg3);
295
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(4, varg4);
296
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(5, varg5);
297
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(6, varg6);
298
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(7, varg7);
299
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(8, varg8);
300
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(9, varg9);
301
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(10, varg10);
302
- Arg12_T arg12 = args->getArgumentOrDefault<Arg12_T>(11, varg11);
303
- Arg13_T arg13 = args->getArgumentOrDefault<Arg13_T>(12, varg12);
304
- Arg14_T arg14 = args->getArgumentOrDefault<Arg14_T>(13, varg13);
305
-
306
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14));
307
- } else {
308
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
309
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12, &varg13, &varg14);
310
-
311
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
312
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
313
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
314
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
315
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
316
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
317
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
318
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
319
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
320
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
321
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(10, varg10);
322
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(11, varg11);
323
- Arg12_T arg12 = args->getArgumentOrDefault<Arg12_T>(12, varg12);
324
- Arg13_T arg13 = args->getArgumentOrDefault<Arg13_T>(13, varg13);
325
- Arg14_T arg14 = args->getArgumentOrDefault<Arg14_T>(14, varg14);
326
-
327
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14));
328
- }
329
- }
330
- catch(...)
331
- {
332
- RUBY_TRY
333
- {
334
- if(wrapper)
335
- {
336
- return wrapper->handler_->handle_exception();
337
- }
338
- else
339
- {
340
- throw;
341
- }
342
- }
343
- RUBY_CATCH
344
- }
345
- }
346
-
347
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T, typename Arg13_T, typename Arg14_T>
348
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T, Arg14_T>::
349
- Auto_Function_Wrapper(
350
- Func func,
351
- Data_Object<Exception_Handler> handler,
352
- Arguments* arguments)
353
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
354
- , func_(func)
355
- , handler_(handler)
356
- , handler_guard_(&handler_)
357
- {
358
- if(arguments == 0) {
359
- arguments_ = new Arguments();
360
- } else {
361
- arguments_ = arguments;
362
- }
363
- }
364
-
365
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T, typename Arg13_T, typename Arg14_T>
366
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T, Arg14_T>::
367
- ~Auto_Function_Wrapper()
368
- {
369
- if(arguments_) { delete arguments_; }
370
- }
371
-
372
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T, typename Arg13_T, typename Arg14_T>
373
- VALUE Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T, Arg14_T>::
374
- call(int argc, VALUE* argv, VALUE self)
375
- {
376
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T, Arg14_T> * wrapper = 0;
377
- try
378
- {
379
- Data_Object<Wrapped_Function> data(detail::method_data());
380
- wrapper = (Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T, Arg14_T> *)data.get();
381
- Arguments* args = wrapper->arguments_;
382
-
383
- bool hasSelf = (self && self != Qnil);
384
- if(args->count() >= 0) {
385
- hasSelf = hasSelf && args->count() == Num_Args - 1;
386
- } else {
387
- hasSelf = hasSelf && argc == Num_Args -1;
388
- }
389
-
390
- VALUE varg0, varg1, varg2, varg3, varg4, varg5, varg6, varg7, varg8, varg9, varg10, varg11, varg12, varg13, varg14;
391
-
392
- if(hasSelf) {
393
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1) .c_str()
394
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12, &varg13, &varg14);
395
-
396
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
397
-
398
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
399
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
400
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
401
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(3, varg3);
402
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(4, varg4);
403
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(5, varg5);
404
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(6, varg6);
405
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(7, varg7);
406
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(8, varg8);
407
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(9, varg9);
408
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(10, varg10);
409
- Arg12_T arg12 = args->getArgumentOrDefault<Arg12_T>(11, varg11);
410
- Arg13_T arg13 = args->getArgumentOrDefault<Arg13_T>(12, varg12);
411
- Arg14_T arg14 = args->getArgumentOrDefault<Arg14_T>(13, varg13);
412
-
413
- wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14);
414
- return Qnil;
415
- } else {
416
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
417
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12, &varg13, &varg14);
418
-
419
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
420
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
421
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
422
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
423
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
424
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
425
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
426
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
427
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
428
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
429
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(10, varg10);
430
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(11, varg11);
431
- Arg12_T arg12 = args->getArgumentOrDefault<Arg12_T>(12, varg12);
432
- Arg13_T arg13 = args->getArgumentOrDefault<Arg13_T>(13, varg13);
433
- Arg14_T arg14 = args->getArgumentOrDefault<Arg14_T>(14, varg14);
434
-
435
- wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14);
436
- return Qnil;
437
- }
438
- }
439
- catch(...)
440
- {
441
- RUBY_TRY
442
- {
443
- if(wrapper)
444
- {
445
- return wrapper->handler_->handle_exception();
446
- }
447
- else
448
- {
449
- throw;
450
- }
451
- }
452
- RUBY_CATCH
453
- }
454
- }
455
-
456
- // ---------------------------------------------------------------------
457
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T, typename Arg13_T>
458
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T>::
459
- Auto_Function_Wrapper(
460
- Func func,
461
- Data_Object<Exception_Handler> handler,
462
- Arguments* arguments)
463
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
464
- , func_(func)
465
- , handler_(handler)
466
- , handler_guard_(&handler_)
467
- {
468
- if(arguments == 0) {
469
- arguments_ = new Arguments();
470
- } else {
471
- arguments_ = arguments;
472
- }
473
- }
474
-
475
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T, typename Arg13_T>
476
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T>::
477
- ~Auto_Function_Wrapper()
478
- {
479
- if(arguments_) { delete arguments_; }
480
- }
481
-
482
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T, typename Arg13_T>
483
- VALUE Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T>::
484
- call(int argc, VALUE *argv, VALUE self)
485
- {
486
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T> * wrapper = 0;
487
- try
488
- {
489
- Data_Object<Wrapped_Function> data(detail::method_data());
490
- wrapper = (Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T> *)data.get();
491
- Arguments* args = wrapper->arguments_;
492
-
493
- bool hasSelf = (self && self != Qnil);
494
- if(args->count() >= 0) {
495
- hasSelf = hasSelf && args->count() == Num_Args - 1;
496
- } else {
497
- hasSelf = hasSelf && argc == Num_Args -1;
498
- }
499
-
500
- VALUE varg0, varg1, varg2, varg3, varg4, varg5, varg6, varg7, varg8, varg9, varg10, varg11, varg12, varg13;
501
-
502
- if(hasSelf) {
503
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1).c_str()
504
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12, &varg13);
505
-
506
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
507
-
508
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
509
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
510
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
511
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(3, varg3);
512
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(4, varg4);
513
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(5, varg5);
514
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(6, varg6);
515
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(7, varg7);
516
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(8, varg8);
517
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(9, varg9);
518
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(10, varg10);
519
- Arg12_T arg12 = args->getArgumentOrDefault<Arg12_T>(11, varg11);
520
- Arg13_T arg13 = args->getArgumentOrDefault<Arg13_T>(12, varg12);
521
-
522
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13));
523
- } else {
524
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
525
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12, &varg13);
526
-
527
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
528
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
529
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
530
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
531
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
532
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
533
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
534
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
535
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
536
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
537
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(10, varg10);
538
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(11, varg11);
539
- Arg12_T arg12 = args->getArgumentOrDefault<Arg12_T>(12, varg12);
540
- Arg13_T arg13 = args->getArgumentOrDefault<Arg13_T>(13, varg13);
541
-
542
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13));
543
- }
544
- }
545
- catch(...)
546
- {
547
- RUBY_TRY
548
- {
549
- if(wrapper)
550
- {
551
- return wrapper->handler_->handle_exception();
552
- }
553
- else
554
- {
555
- throw;
556
- }
557
- }
558
- RUBY_CATCH
559
- }
560
- }
561
-
562
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T, typename Arg13_T>
563
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T>::
564
- Auto_Function_Wrapper(
565
- Func func,
566
- Data_Object<Exception_Handler> handler,
567
- Arguments* arguments)
568
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
569
- , func_(func)
570
- , handler_(handler)
571
- , handler_guard_(&handler_)
572
- {
573
- if(arguments == 0) {
574
- arguments_ = new Arguments();
575
- } else {
576
- arguments_ = arguments;
577
- }
578
- }
579
-
580
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T, typename Arg13_T>
581
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T>::
582
- ~Auto_Function_Wrapper()
583
- {
584
- if(arguments_) { delete arguments_; }
585
- }
586
-
587
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T, typename Arg13_T>
588
- VALUE Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T>::
589
- call(int argc, VALUE* argv, VALUE self)
590
- {
591
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T> * wrapper = 0;
592
- try
593
- {
594
- Data_Object<Wrapped_Function> data(detail::method_data());
595
- wrapper = (Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T> *)data.get();
596
- Arguments* args = wrapper->arguments_;
597
-
598
- bool hasSelf = (self && self != Qnil);
599
- if(args->count() >= 0) {
600
- hasSelf = hasSelf && args->count() == Num_Args - 1;
601
- } else {
602
- hasSelf = hasSelf && argc == Num_Args -1;
603
- }
604
-
605
- VALUE varg0, varg1, varg2, varg3, varg4, varg5, varg6, varg7, varg8, varg9, varg10, varg11, varg12, varg13;
606
-
607
- if(hasSelf) {
608
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1) .c_str()
609
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12, &varg13);
610
-
611
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
612
-
613
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
614
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
615
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
616
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(3, varg3);
617
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(4, varg4);
618
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(5, varg5);
619
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(6, varg6);
620
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(7, varg7);
621
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(8, varg8);
622
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(9, varg9);
623
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(10, varg10);
624
- Arg12_T arg12 = args->getArgumentOrDefault<Arg12_T>(11, varg11);
625
- Arg13_T arg13 = args->getArgumentOrDefault<Arg13_T>(12, varg12);
626
-
627
- wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13);
628
- return Qnil;
629
- } else {
630
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
631
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12, &varg13);
632
-
633
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
634
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
635
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
636
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
637
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
638
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
639
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
640
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
641
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
642
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
643
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(10, varg10);
644
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(11, varg11);
645
- Arg12_T arg12 = args->getArgumentOrDefault<Arg12_T>(12, varg12);
646
- Arg13_T arg13 = args->getArgumentOrDefault<Arg13_T>(13, varg13);
647
-
648
- wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13);
649
- return Qnil;
650
- }
651
- }
652
- catch(...)
653
- {
654
- RUBY_TRY
655
- {
656
- if(wrapper)
657
- {
658
- return wrapper->handler_->handle_exception();
659
- }
660
- else
661
- {
662
- throw;
663
- }
664
- }
665
- RUBY_CATCH
666
- }
667
- }
668
-
669
- // ---------------------------------------------------------------------
670
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T>
671
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T>::
672
- Auto_Function_Wrapper(
673
- Func func,
674
- Data_Object<Exception_Handler> handler,
675
- Arguments* arguments)
676
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
677
- , func_(func)
678
- , handler_(handler)
679
- , handler_guard_(&handler_)
680
- {
681
- if(arguments == 0) {
682
- arguments_ = new Arguments();
683
- } else {
684
- arguments_ = arguments;
685
- }
686
- }
687
-
688
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T>
689
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T>::
690
- ~Auto_Function_Wrapper()
691
- {
692
- if(arguments_) { delete arguments_; }
693
- }
694
-
695
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T>
696
- VALUE Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T>::
697
- call(int argc, VALUE *argv, VALUE self)
698
- {
699
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T> * wrapper = 0;
700
- try
701
- {
702
- Data_Object<Wrapped_Function> data(detail::method_data());
703
- wrapper = (Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T> *)data.get();
704
- Arguments* args = wrapper->arguments_;
705
-
706
- bool hasSelf = (self && self != Qnil);
707
- if(args->count() >= 0) {
708
- hasSelf = hasSelf && args->count() == Num_Args - 1;
709
- } else {
710
- hasSelf = hasSelf && argc == Num_Args -1;
711
- }
712
-
713
- VALUE varg0, varg1, varg2, varg3, varg4, varg5, varg6, varg7, varg8, varg9, varg10, varg11, varg12;
714
-
715
- if(hasSelf) {
716
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1).c_str()
717
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12);
718
-
719
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
720
-
721
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
722
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
723
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
724
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(3, varg3);
725
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(4, varg4);
726
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(5, varg5);
727
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(6, varg6);
728
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(7, varg7);
729
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(8, varg8);
730
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(9, varg9);
731
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(10, varg10);
732
- Arg12_T arg12 = args->getArgumentOrDefault<Arg12_T>(11, varg11);
733
-
734
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12));
735
- } else {
736
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
737
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12);
738
-
739
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
740
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
741
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
742
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
743
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
744
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
745
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
746
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
747
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
748
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
749
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(10, varg10);
750
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(11, varg11);
751
- Arg12_T arg12 = args->getArgumentOrDefault<Arg12_T>(12, varg12);
752
-
753
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12));
754
- }
755
- }
756
- catch(...)
757
- {
758
- RUBY_TRY
759
- {
760
- if(wrapper)
761
- {
762
- return wrapper->handler_->handle_exception();
763
- }
764
- else
765
- {
766
- throw;
767
- }
768
- }
769
- RUBY_CATCH
770
- }
771
- }
772
-
773
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T>
774
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T>::
775
- Auto_Function_Wrapper(
776
- Func func,
777
- Data_Object<Exception_Handler> handler,
778
- Arguments* arguments)
779
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
780
- , func_(func)
781
- , handler_(handler)
782
- , handler_guard_(&handler_)
783
- {
784
- if(arguments == 0) {
785
- arguments_ = new Arguments();
786
- } else {
787
- arguments_ = arguments;
788
- }
789
- }
790
-
791
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T>
792
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T>::
793
- ~Auto_Function_Wrapper()
794
- {
795
- if(arguments_) { delete arguments_; }
796
- }
797
-
798
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T>
799
- VALUE Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T>::
800
- call(int argc, VALUE* argv, VALUE self)
801
- {
802
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T> * wrapper = 0;
803
- try
804
- {
805
- Data_Object<Wrapped_Function> data(detail::method_data());
806
- wrapper = (Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T> *)data.get();
807
- Arguments* args = wrapper->arguments_;
808
-
809
- bool hasSelf = (self && self != Qnil);
810
- if(args->count() >= 0) {
811
- hasSelf = hasSelf && args->count() == Num_Args - 1;
812
- } else {
813
- hasSelf = hasSelf && argc == Num_Args -1;
814
- }
815
-
816
- VALUE varg0, varg1, varg2, varg3, varg4, varg5, varg6, varg7, varg8, varg9, varg10, varg11, varg12;
817
-
818
- if(hasSelf) {
819
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1) .c_str()
820
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12);
821
-
822
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
823
-
824
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
825
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
826
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
827
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(3, varg3);
828
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(4, varg4);
829
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(5, varg5);
830
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(6, varg6);
831
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(7, varg7);
832
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(8, varg8);
833
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(9, varg9);
834
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(10, varg10);
835
- Arg12_T arg12 = args->getArgumentOrDefault<Arg12_T>(11, varg11);
836
-
837
- wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12);
838
- return Qnil;
839
- } else {
840
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
841
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12);
842
-
843
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
844
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
845
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
846
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
847
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
848
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
849
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
850
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
851
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
852
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
853
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(10, varg10);
854
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(11, varg11);
855
- Arg12_T arg12 = args->getArgumentOrDefault<Arg12_T>(12, varg12);
856
-
857
- wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12);
858
- return Qnil;
859
- }
860
- }
861
- catch(...)
862
- {
863
- RUBY_TRY
864
- {
865
- if(wrapper)
866
- {
867
- return wrapper->handler_->handle_exception();
868
- }
869
- else
870
- {
871
- throw;
872
- }
873
- }
874
- RUBY_CATCH
875
- }
876
- }
877
-
878
- // ---------------------------------------------------------------------
879
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T>
880
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T>::
881
- Auto_Function_Wrapper(
882
- Func func,
883
- Data_Object<Exception_Handler> handler,
884
- Arguments* arguments)
885
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
886
- , func_(func)
887
- , handler_(handler)
888
- , handler_guard_(&handler_)
889
- {
890
- if(arguments == 0) {
891
- arguments_ = new Arguments();
892
- } else {
893
- arguments_ = arguments;
894
- }
895
- }
896
-
897
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T>
898
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T>::
899
- ~Auto_Function_Wrapper()
900
- {
901
- if(arguments_) { delete arguments_; }
902
- }
903
-
904
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T>
905
- VALUE Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T>::
906
- call(int argc, VALUE *argv, VALUE self)
907
- {
908
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T> * wrapper = 0;
909
- try
910
- {
911
- Data_Object<Wrapped_Function> data(detail::method_data());
912
- wrapper = (Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T> *)data.get();
913
- Arguments* args = wrapper->arguments_;
914
-
915
- bool hasSelf = (self && self != Qnil);
916
- if(args->count() >= 0) {
917
- hasSelf = hasSelf && args->count() == Num_Args - 1;
918
- } else {
919
- hasSelf = hasSelf && argc == Num_Args -1;
920
- }
921
-
922
- VALUE varg0, varg1, varg2, varg3, varg4, varg5, varg6, varg7, varg8, varg9, varg10, varg11;
923
-
924
- if(hasSelf) {
925
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1).c_str()
926
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11);
927
-
928
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
929
-
930
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
931
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
932
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
933
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(3, varg3);
934
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(4, varg4);
935
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(5, varg5);
936
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(6, varg6);
937
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(7, varg7);
938
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(8, varg8);
939
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(9, varg9);
940
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(10, varg10);
941
-
942
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11));
943
- } else {
944
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
945
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11);
946
-
947
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
948
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
949
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
950
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
951
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
952
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
953
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
954
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
955
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
956
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
957
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(10, varg10);
958
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(11, varg11);
959
-
960
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11));
961
- }
962
- }
963
- catch(...)
964
- {
965
- RUBY_TRY
966
- {
967
- if(wrapper)
968
- {
969
- return wrapper->handler_->handle_exception();
970
- }
971
- else
972
- {
973
- throw;
974
- }
975
- }
976
- RUBY_CATCH
977
- }
978
- }
979
-
980
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T>
981
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T>::
982
- Auto_Function_Wrapper(
983
- Func func,
984
- Data_Object<Exception_Handler> handler,
985
- Arguments* arguments)
986
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
987
- , func_(func)
988
- , handler_(handler)
989
- , handler_guard_(&handler_)
990
- {
991
- if(arguments == 0) {
992
- arguments_ = new Arguments();
993
- } else {
994
- arguments_ = arguments;
995
- }
996
- }
997
-
998
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T>
999
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T>::
1000
- ~Auto_Function_Wrapper()
1001
- {
1002
- if(arguments_) { delete arguments_; }
1003
- }
1004
-
1005
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T>
1006
- VALUE Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T>::
1007
- call(int argc, VALUE* argv, VALUE self)
1008
- {
1009
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T> * wrapper = 0;
1010
- try
1011
- {
1012
- Data_Object<Wrapped_Function> data(detail::method_data());
1013
- wrapper = (Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T> *)data.get();
1014
- Arguments* args = wrapper->arguments_;
1015
-
1016
- bool hasSelf = (self && self != Qnil);
1017
- if(args->count() >= 0) {
1018
- hasSelf = hasSelf && args->count() == Num_Args - 1;
1019
- } else {
1020
- hasSelf = hasSelf && argc == Num_Args -1;
1021
- }
1022
-
1023
- VALUE varg0, varg1, varg2, varg3, varg4, varg5, varg6, varg7, varg8, varg9, varg10, varg11;
1024
-
1025
- if(hasSelf) {
1026
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1) .c_str()
1027
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11);
1028
-
1029
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
1030
-
1031
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
1032
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
1033
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
1034
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(3, varg3);
1035
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(4, varg4);
1036
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(5, varg5);
1037
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(6, varg6);
1038
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(7, varg7);
1039
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(8, varg8);
1040
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(9, varg9);
1041
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(10, varg10);
1042
-
1043
- wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11);
1044
- return Qnil;
1045
- } else {
1046
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
1047
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11);
1048
-
1049
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1050
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
1051
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
1052
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
1053
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
1054
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
1055
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
1056
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
1057
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
1058
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
1059
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(10, varg10);
1060
- Arg11_T arg11 = args->getArgumentOrDefault<Arg11_T>(11, varg11);
1061
-
1062
- wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11);
1063
- return Qnil;
1064
- }
1065
- }
1066
- catch(...)
1067
- {
1068
- RUBY_TRY
1069
- {
1070
- if(wrapper)
1071
- {
1072
- return wrapper->handler_->handle_exception();
1073
- }
1074
- else
1075
- {
1076
- throw;
1077
- }
1078
- }
1079
- RUBY_CATCH
1080
- }
1081
- }
1082
-
1083
- // ---------------------------------------------------------------------
1084
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T>
1085
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T>::
1086
- Auto_Function_Wrapper(
1087
- Func func,
1088
- Data_Object<Exception_Handler> handler,
1089
- Arguments* arguments)
1090
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
1091
- , func_(func)
1092
- , handler_(handler)
1093
- , handler_guard_(&handler_)
1094
- {
1095
- if(arguments == 0) {
1096
- arguments_ = new Arguments();
1097
- } else {
1098
- arguments_ = arguments;
1099
- }
1100
- }
1101
-
1102
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T>
1103
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T>::
1104
- ~Auto_Function_Wrapper()
1105
- {
1106
- if(arguments_) { delete arguments_; }
1107
- }
1108
-
1109
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T>
1110
- VALUE Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T>::
1111
- call(int argc, VALUE *argv, VALUE self)
1112
- {
1113
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T> * wrapper = 0;
1114
- try
1115
- {
1116
- Data_Object<Wrapped_Function> data(detail::method_data());
1117
- wrapper = (Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T> *)data.get();
1118
- Arguments* args = wrapper->arguments_;
1119
-
1120
- bool hasSelf = (self && self != Qnil);
1121
- if(args->count() >= 0) {
1122
- hasSelf = hasSelf && args->count() == Num_Args - 1;
1123
- } else {
1124
- hasSelf = hasSelf && argc == Num_Args -1;
1125
- }
1126
-
1127
- VALUE varg0, varg1, varg2, varg3, varg4, varg5, varg6, varg7, varg8, varg9, varg10;
1128
-
1129
- if(hasSelf) {
1130
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1).c_str()
1131
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10);
1132
-
1133
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
1134
-
1135
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
1136
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
1137
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
1138
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(3, varg3);
1139
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(4, varg4);
1140
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(5, varg5);
1141
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(6, varg6);
1142
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(7, varg7);
1143
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(8, varg8);
1144
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(9, varg9);
1145
-
1146
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10));
1147
- } else {
1148
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
1149
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10);
1150
-
1151
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1152
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
1153
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
1154
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
1155
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
1156
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
1157
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
1158
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
1159
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
1160
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
1161
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(10, varg10);
1162
-
1163
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10));
1164
- }
1165
- }
1166
- catch(...)
1167
- {
1168
- RUBY_TRY
1169
- {
1170
- if(wrapper)
1171
- {
1172
- return wrapper->handler_->handle_exception();
1173
- }
1174
- else
1175
- {
1176
- throw;
1177
- }
1178
- }
1179
- RUBY_CATCH
1180
- }
1181
- }
1182
-
1183
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T>
1184
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T>::
1185
- Auto_Function_Wrapper(
1186
- Func func,
1187
- Data_Object<Exception_Handler> handler,
1188
- Arguments* arguments)
1189
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
1190
- , func_(func)
1191
- , handler_(handler)
1192
- , handler_guard_(&handler_)
1193
- {
1194
- if(arguments == 0) {
1195
- arguments_ = new Arguments();
1196
- } else {
1197
- arguments_ = arguments;
1198
- }
1199
- }
1200
-
1201
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T>
1202
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T>::
1203
- ~Auto_Function_Wrapper()
1204
- {
1205
- if(arguments_) { delete arguments_; }
1206
- }
1207
-
1208
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T>
1209
- VALUE Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T>::
1210
- call(int argc, VALUE* argv, VALUE self)
1211
- {
1212
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T> * wrapper = 0;
1213
- try
1214
- {
1215
- Data_Object<Wrapped_Function> data(detail::method_data());
1216
- wrapper = (Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T> *)data.get();
1217
- Arguments* args = wrapper->arguments_;
1218
-
1219
- bool hasSelf = (self && self != Qnil);
1220
- if(args->count() >= 0) {
1221
- hasSelf = hasSelf && args->count() == Num_Args - 1;
1222
- } else {
1223
- hasSelf = hasSelf && argc == Num_Args -1;
1224
- }
1225
-
1226
- VALUE varg0, varg1, varg2, varg3, varg4, varg5, varg6, varg7, varg8, varg9, varg10;
1227
-
1228
- if(hasSelf) {
1229
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1) .c_str()
1230
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10);
1231
-
1232
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
1233
-
1234
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
1235
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
1236
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
1237
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(3, varg3);
1238
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(4, varg4);
1239
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(5, varg5);
1240
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(6, varg6);
1241
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(7, varg7);
1242
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(8, varg8);
1243
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(9, varg9);
1244
-
1245
- wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10);
1246
- return Qnil;
1247
- } else {
1248
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
1249
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10);
1250
-
1251
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1252
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
1253
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
1254
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
1255
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
1256
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
1257
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
1258
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
1259
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
1260
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
1261
- Arg10_T arg10 = args->getArgumentOrDefault<Arg10_T>(10, varg10);
1262
-
1263
- wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10);
1264
- return Qnil;
1265
- }
1266
- }
1267
- catch(...)
1268
- {
1269
- RUBY_TRY
1270
- {
1271
- if(wrapper)
1272
- {
1273
- return wrapper->handler_->handle_exception();
1274
- }
1275
- else
1276
- {
1277
- throw;
1278
- }
1279
- }
1280
- RUBY_CATCH
1281
- }
1282
- }
1283
-
1284
- // ---------------------------------------------------------------------
1285
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T>
1286
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T>::
1287
- Auto_Function_Wrapper(
1288
- Func func,
1289
- Data_Object<Exception_Handler> handler,
1290
- Arguments* arguments)
1291
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
1292
- , func_(func)
1293
- , handler_(handler)
1294
- , handler_guard_(&handler_)
1295
- {
1296
- if(arguments == 0) {
1297
- arguments_ = new Arguments();
1298
- } else {
1299
- arguments_ = arguments;
1300
- }
1301
- }
1302
-
1303
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T>
1304
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T>::
1305
- ~Auto_Function_Wrapper()
1306
- {
1307
- if(arguments_) { delete arguments_; }
1308
- }
1309
-
1310
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T>
1311
- VALUE Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T>::
1312
- call(int argc, VALUE *argv, VALUE self)
1313
- {
1314
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T> * wrapper = 0;
1315
- try
1316
- {
1317
- Data_Object<Wrapped_Function> data(detail::method_data());
1318
- wrapper = (Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T> *)data.get();
1319
- Arguments* args = wrapper->arguments_;
1320
-
1321
- bool hasSelf = (self && self != Qnil);
1322
- if(args->count() >= 0) {
1323
- hasSelf = hasSelf && args->count() == Num_Args - 1;
1324
- } else {
1325
- hasSelf = hasSelf && argc == Num_Args -1;
1326
- }
1327
-
1328
- VALUE varg0, varg1, varg2, varg3, varg4, varg5, varg6, varg7, varg8, varg9;
1329
-
1330
- if(hasSelf) {
1331
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1).c_str()
1332
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9);
1333
-
1334
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
1335
-
1336
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
1337
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
1338
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
1339
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(3, varg3);
1340
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(4, varg4);
1341
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(5, varg5);
1342
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(6, varg6);
1343
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(7, varg7);
1344
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(8, varg8);
1345
-
1346
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9));
1347
- } else {
1348
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
1349
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9);
1350
-
1351
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1352
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
1353
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
1354
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
1355
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
1356
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
1357
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
1358
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
1359
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
1360
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
1361
-
1362
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9));
1363
- }
1364
- }
1365
- catch(...)
1366
- {
1367
- RUBY_TRY
1368
- {
1369
- if(wrapper)
1370
- {
1371
- return wrapper->handler_->handle_exception();
1372
- }
1373
- else
1374
- {
1375
- throw;
1376
- }
1377
- }
1378
- RUBY_CATCH
1379
- }
1380
- }
1381
-
1382
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T>
1383
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T>::
1384
- Auto_Function_Wrapper(
1385
- Func func,
1386
- Data_Object<Exception_Handler> handler,
1387
- Arguments* arguments)
1388
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
1389
- , func_(func)
1390
- , handler_(handler)
1391
- , handler_guard_(&handler_)
1392
- {
1393
- if(arguments == 0) {
1394
- arguments_ = new Arguments();
1395
- } else {
1396
- arguments_ = arguments;
1397
- }
1398
- }
1399
-
1400
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T>
1401
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T>::
1402
- ~Auto_Function_Wrapper()
1403
- {
1404
- if(arguments_) { delete arguments_; }
1405
- }
1406
-
1407
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T>
1408
- VALUE Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T>::
1409
- call(int argc, VALUE* argv, VALUE self)
1410
- {
1411
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T> * wrapper = 0;
1412
- try
1413
- {
1414
- Data_Object<Wrapped_Function> data(detail::method_data());
1415
- wrapper = (Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T> *)data.get();
1416
- Arguments* args = wrapper->arguments_;
1417
-
1418
- bool hasSelf = (self && self != Qnil);
1419
- if(args->count() >= 0) {
1420
- hasSelf = hasSelf && args->count() == Num_Args - 1;
1421
- } else {
1422
- hasSelf = hasSelf && argc == Num_Args -1;
1423
- }
1424
-
1425
- VALUE varg0, varg1, varg2, varg3, varg4, varg5, varg6, varg7, varg8, varg9;
1426
-
1427
- if(hasSelf) {
1428
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1) .c_str()
1429
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9);
1430
-
1431
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
1432
-
1433
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
1434
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
1435
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
1436
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(3, varg3);
1437
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(4, varg4);
1438
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(5, varg5);
1439
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(6, varg6);
1440
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(7, varg7);
1441
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(8, varg8);
1442
-
1443
- wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
1444
- return Qnil;
1445
- } else {
1446
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
1447
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9);
1448
-
1449
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1450
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
1451
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
1452
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
1453
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
1454
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
1455
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
1456
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
1457
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
1458
- Arg9_T arg9 = args->getArgumentOrDefault<Arg9_T>(9, varg9);
1459
-
1460
- wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
1461
- return Qnil;
1462
- }
1463
- }
1464
- catch(...)
1465
- {
1466
- RUBY_TRY
1467
- {
1468
- if(wrapper)
1469
- {
1470
- return wrapper->handler_->handle_exception();
1471
- }
1472
- else
1473
- {
1474
- throw;
1475
- }
1476
- }
1477
- RUBY_CATCH
1478
- }
1479
- }
1480
-
1481
- // ---------------------------------------------------------------------
1482
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T>
1483
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T>::
1484
- Auto_Function_Wrapper(
1485
- Func func,
1486
- Data_Object<Exception_Handler> handler,
1487
- Arguments* arguments)
1488
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
1489
- , func_(func)
1490
- , handler_(handler)
1491
- , handler_guard_(&handler_)
1492
- {
1493
- if(arguments == 0) {
1494
- arguments_ = new Arguments();
1495
- } else {
1496
- arguments_ = arguments;
1497
- }
1498
- }
1499
-
1500
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T>
1501
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T>::
1502
- ~Auto_Function_Wrapper()
1503
- {
1504
- if(arguments_) { delete arguments_; }
1505
- }
1506
-
1507
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T>
1508
- VALUE Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T>::
1509
- call(int argc, VALUE *argv, VALUE self)
1510
- {
1511
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T> * wrapper = 0;
1512
- try
1513
- {
1514
- Data_Object<Wrapped_Function> data(detail::method_data());
1515
- wrapper = (Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T> *)data.get();
1516
- Arguments* args = wrapper->arguments_;
1517
-
1518
- bool hasSelf = (self && self != Qnil);
1519
- if(args->count() >= 0) {
1520
- hasSelf = hasSelf && args->count() == Num_Args - 1;
1521
- } else {
1522
- hasSelf = hasSelf && argc == Num_Args -1;
1523
- }
1524
-
1525
- VALUE varg0, varg1, varg2, varg3, varg4, varg5, varg6, varg7, varg8;
1526
-
1527
- if(hasSelf) {
1528
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1).c_str()
1529
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8);
1530
-
1531
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
1532
-
1533
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
1534
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
1535
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
1536
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(3, varg3);
1537
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(4, varg4);
1538
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(5, varg5);
1539
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(6, varg6);
1540
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(7, varg7);
1541
-
1542
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8));
1543
- } else {
1544
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
1545
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8);
1546
-
1547
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1548
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
1549
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
1550
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
1551
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
1552
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
1553
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
1554
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
1555
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
1556
-
1557
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8));
1558
- }
1559
- }
1560
- catch(...)
1561
- {
1562
- RUBY_TRY
1563
- {
1564
- if(wrapper)
1565
- {
1566
- return wrapper->handler_->handle_exception();
1567
- }
1568
- else
1569
- {
1570
- throw;
1571
- }
1572
- }
1573
- RUBY_CATCH
1574
- }
1575
- }
1576
-
1577
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T>
1578
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T>::
1579
- Auto_Function_Wrapper(
1580
- Func func,
1581
- Data_Object<Exception_Handler> handler,
1582
- Arguments* arguments)
1583
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
1584
- , func_(func)
1585
- , handler_(handler)
1586
- , handler_guard_(&handler_)
1587
- {
1588
- if(arguments == 0) {
1589
- arguments_ = new Arguments();
1590
- } else {
1591
- arguments_ = arguments;
1592
- }
1593
- }
1594
-
1595
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T>
1596
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T>::
1597
- ~Auto_Function_Wrapper()
1598
- {
1599
- if(arguments_) { delete arguments_; }
1600
- }
1601
-
1602
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T>
1603
- VALUE Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T>::
1604
- call(int argc, VALUE* argv, VALUE self)
1605
- {
1606
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T> * wrapper = 0;
1607
- try
1608
- {
1609
- Data_Object<Wrapped_Function> data(detail::method_data());
1610
- wrapper = (Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T> *)data.get();
1611
- Arguments* args = wrapper->arguments_;
1612
-
1613
- bool hasSelf = (self && self != Qnil);
1614
- if(args->count() >= 0) {
1615
- hasSelf = hasSelf && args->count() == Num_Args - 1;
1616
- } else {
1617
- hasSelf = hasSelf && argc == Num_Args -1;
1618
- }
1619
-
1620
- VALUE varg0, varg1, varg2, varg3, varg4, varg5, varg6, varg7, varg8;
1621
-
1622
- if(hasSelf) {
1623
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1) .c_str()
1624
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8);
1625
-
1626
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
1627
-
1628
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
1629
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
1630
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
1631
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(3, varg3);
1632
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(4, varg4);
1633
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(5, varg5);
1634
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(6, varg6);
1635
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(7, varg7);
1636
-
1637
- wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
1638
- return Qnil;
1639
- } else {
1640
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
1641
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8);
1642
-
1643
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1644
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
1645
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
1646
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
1647
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
1648
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
1649
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
1650
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
1651
- Arg8_T arg8 = args->getArgumentOrDefault<Arg8_T>(8, varg8);
1652
-
1653
- wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
1654
- return Qnil;
1655
- }
1656
- }
1657
- catch(...)
1658
- {
1659
- RUBY_TRY
1660
- {
1661
- if(wrapper)
1662
- {
1663
- return wrapper->handler_->handle_exception();
1664
- }
1665
- else
1666
- {
1667
- throw;
1668
- }
1669
- }
1670
- RUBY_CATCH
1671
- }
1672
- }
1673
-
1674
- // ---------------------------------------------------------------------
1675
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T>
1676
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T>::
1677
- Auto_Function_Wrapper(
1678
- Func func,
1679
- Data_Object<Exception_Handler> handler,
1680
- Arguments* arguments)
1681
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
1682
- , func_(func)
1683
- , handler_(handler)
1684
- , handler_guard_(&handler_)
1685
- {
1686
- if(arguments == 0) {
1687
- arguments_ = new Arguments();
1688
- } else {
1689
- arguments_ = arguments;
1690
- }
1691
- }
1692
-
1693
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T>
1694
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T>::
1695
- ~Auto_Function_Wrapper()
1696
- {
1697
- if(arguments_) { delete arguments_; }
1698
- }
1699
-
1700
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T>
1701
- VALUE Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T>::
1702
- call(int argc, VALUE *argv, VALUE self)
1703
- {
1704
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T> * wrapper = 0;
1705
- try
1706
- {
1707
- Data_Object<Wrapped_Function> data(detail::method_data());
1708
- wrapper = (Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T> *)data.get();
1709
- Arguments* args = wrapper->arguments_;
1710
-
1711
- bool hasSelf = (self && self != Qnil);
1712
- if(args->count() >= 0) {
1713
- hasSelf = hasSelf && args->count() == Num_Args - 1;
1714
- } else {
1715
- hasSelf = hasSelf && argc == Num_Args -1;
1716
- }
1717
-
1718
- VALUE varg0, varg1, varg2, varg3, varg4, varg5, varg6, varg7;
1719
-
1720
- if(hasSelf) {
1721
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1).c_str()
1722
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7);
1723
-
1724
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
1725
-
1726
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
1727
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
1728
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
1729
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(3, varg3);
1730
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(4, varg4);
1731
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(5, varg5);
1732
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(6, varg6);
1733
-
1734
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7));
1735
- } else {
1736
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
1737
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7);
1738
-
1739
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1740
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
1741
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
1742
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
1743
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
1744
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
1745
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
1746
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
1747
-
1748
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7));
1749
- }
1750
- }
1751
- catch(...)
1752
- {
1753
- RUBY_TRY
1754
- {
1755
- if(wrapper)
1756
- {
1757
- return wrapper->handler_->handle_exception();
1758
- }
1759
- else
1760
- {
1761
- throw;
1762
- }
1763
- }
1764
- RUBY_CATCH
1765
- }
1766
- }
1767
-
1768
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T>
1769
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T>::
1770
- Auto_Function_Wrapper(
1771
- Func func,
1772
- Data_Object<Exception_Handler> handler,
1773
- Arguments* arguments)
1774
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
1775
- , func_(func)
1776
- , handler_(handler)
1777
- , handler_guard_(&handler_)
1778
- {
1779
- if(arguments == 0) {
1780
- arguments_ = new Arguments();
1781
- } else {
1782
- arguments_ = arguments;
1783
- }
1784
- }
1785
-
1786
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T>
1787
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T>::
1788
- ~Auto_Function_Wrapper()
1789
- {
1790
- if(arguments_) { delete arguments_; }
1791
- }
1792
-
1793
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T>
1794
- VALUE Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T>::
1795
- call(int argc, VALUE* argv, VALUE self)
1796
- {
1797
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T> * wrapper = 0;
1798
- try
1799
- {
1800
- Data_Object<Wrapped_Function> data(detail::method_data());
1801
- wrapper = (Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T> *)data.get();
1802
- Arguments* args = wrapper->arguments_;
1803
-
1804
- bool hasSelf = (self && self != Qnil);
1805
- if(args->count() >= 0) {
1806
- hasSelf = hasSelf && args->count() == Num_Args - 1;
1807
- } else {
1808
- hasSelf = hasSelf && argc == Num_Args -1;
1809
- }
1810
-
1811
- VALUE varg0, varg1, varg2, varg3, varg4, varg5, varg6, varg7;
1812
-
1813
- if(hasSelf) {
1814
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1) .c_str()
1815
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7);
1816
-
1817
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
1818
-
1819
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
1820
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
1821
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
1822
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(3, varg3);
1823
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(4, varg4);
1824
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(5, varg5);
1825
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(6, varg6);
1826
-
1827
- wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
1828
- return Qnil;
1829
- } else {
1830
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
1831
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7);
1832
-
1833
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1834
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
1835
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
1836
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
1837
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
1838
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
1839
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
1840
- Arg7_T arg7 = args->getArgumentOrDefault<Arg7_T>(7, varg7);
1841
-
1842
- wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
1843
- return Qnil;
1844
- }
1845
- }
1846
- catch(...)
1847
- {
1848
- RUBY_TRY
1849
- {
1850
- if(wrapper)
1851
- {
1852
- return wrapper->handler_->handle_exception();
1853
- }
1854
- else
1855
- {
1856
- throw;
1857
- }
1858
- }
1859
- RUBY_CATCH
1860
- }
1861
- }
1862
-
1863
- // ---------------------------------------------------------------------
1864
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T>
1865
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T>::
1866
- Auto_Function_Wrapper(
1867
- Func func,
1868
- Data_Object<Exception_Handler> handler,
1869
- Arguments* arguments)
1870
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
1871
- , func_(func)
1872
- , handler_(handler)
1873
- , handler_guard_(&handler_)
1874
- {
1875
- if(arguments == 0) {
1876
- arguments_ = new Arguments();
1877
- } else {
1878
- arguments_ = arguments;
1879
- }
1880
- }
1881
-
1882
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T>
1883
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T>::
1884
- ~Auto_Function_Wrapper()
1885
- {
1886
- if(arguments_) { delete arguments_; }
1887
- }
1888
-
1889
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T>
1890
- VALUE Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T>::
1891
- call(int argc, VALUE *argv, VALUE self)
1892
- {
1893
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T> * wrapper = 0;
1894
- try
1895
- {
1896
- Data_Object<Wrapped_Function> data(detail::method_data());
1897
- wrapper = (Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T> *)data.get();
1898
- Arguments* args = wrapper->arguments_;
1899
-
1900
- bool hasSelf = (self && self != Qnil);
1901
- if(args->count() >= 0) {
1902
- hasSelf = hasSelf && args->count() == Num_Args - 1;
1903
- } else {
1904
- hasSelf = hasSelf && argc == Num_Args -1;
1905
- }
1906
-
1907
- VALUE varg0, varg1, varg2, varg3, varg4, varg5, varg6;
1908
-
1909
- if(hasSelf) {
1910
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1).c_str()
1911
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6);
1912
-
1913
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
1914
-
1915
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
1916
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
1917
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
1918
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(3, varg3);
1919
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(4, varg4);
1920
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(5, varg5);
1921
-
1922
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6));
1923
- } else {
1924
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
1925
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6);
1926
-
1927
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
1928
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
1929
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
1930
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
1931
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
1932
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
1933
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
1934
-
1935
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6));
1936
- }
1937
- }
1938
- catch(...)
1939
- {
1940
- RUBY_TRY
1941
- {
1942
- if(wrapper)
1943
- {
1944
- return wrapper->handler_->handle_exception();
1945
- }
1946
- else
1947
- {
1948
- throw;
1949
- }
1950
- }
1951
- RUBY_CATCH
1952
- }
1953
- }
1954
-
1955
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T>
1956
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T>::
1957
- Auto_Function_Wrapper(
1958
- Func func,
1959
- Data_Object<Exception_Handler> handler,
1960
- Arguments* arguments)
1961
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
1962
- , func_(func)
1963
- , handler_(handler)
1964
- , handler_guard_(&handler_)
1965
- {
1966
- if(arguments == 0) {
1967
- arguments_ = new Arguments();
1968
- } else {
1969
- arguments_ = arguments;
1970
- }
1971
- }
1972
-
1973
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T>
1974
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T>::
1975
- ~Auto_Function_Wrapper()
1976
- {
1977
- if(arguments_) { delete arguments_; }
1978
- }
1979
-
1980
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T>
1981
- VALUE Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T>::
1982
- call(int argc, VALUE* argv, VALUE self)
1983
- {
1984
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T> * wrapper = 0;
1985
- try
1986
- {
1987
- Data_Object<Wrapped_Function> data(detail::method_data());
1988
- wrapper = (Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T> *)data.get();
1989
- Arguments* args = wrapper->arguments_;
1990
-
1991
- bool hasSelf = (self && self != Qnil);
1992
- if(args->count() >= 0) {
1993
- hasSelf = hasSelf && args->count() == Num_Args - 1;
1994
- } else {
1995
- hasSelf = hasSelf && argc == Num_Args -1;
1996
- }
1997
-
1998
- VALUE varg0, varg1, varg2, varg3, varg4, varg5, varg6;
1999
-
2000
- if(hasSelf) {
2001
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1) .c_str()
2002
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6);
2003
-
2004
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
2005
-
2006
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
2007
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
2008
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
2009
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(3, varg3);
2010
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(4, varg4);
2011
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(5, varg5);
2012
-
2013
- wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6);
2014
- return Qnil;
2015
- } else {
2016
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
2017
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5, &varg6);
2018
-
2019
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
2020
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
2021
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
2022
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
2023
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
2024
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
2025
- Arg6_T arg6 = args->getArgumentOrDefault<Arg6_T>(6, varg6);
2026
-
2027
- wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5, arg6);
2028
- return Qnil;
2029
- }
2030
- }
2031
- catch(...)
2032
- {
2033
- RUBY_TRY
2034
- {
2035
- if(wrapper)
2036
- {
2037
- return wrapper->handler_->handle_exception();
2038
- }
2039
- else
2040
- {
2041
- throw;
2042
- }
2043
- }
2044
- RUBY_CATCH
2045
- }
2046
- }
2047
-
2048
- // ---------------------------------------------------------------------
2049
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T>
2050
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T>::
2051
- Auto_Function_Wrapper(
2052
- Func func,
2053
- Data_Object<Exception_Handler> handler,
2054
- Arguments* arguments)
2055
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
2056
- , func_(func)
2057
- , handler_(handler)
2058
- , handler_guard_(&handler_)
2059
- {
2060
- if(arguments == 0) {
2061
- arguments_ = new Arguments();
2062
- } else {
2063
- arguments_ = arguments;
2064
- }
2065
- }
2066
-
2067
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T>
2068
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T>::
2069
- ~Auto_Function_Wrapper()
2070
- {
2071
- if(arguments_) { delete arguments_; }
2072
- }
2073
-
2074
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T>
2075
- VALUE Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T>::
2076
- call(int argc, VALUE *argv, VALUE self)
2077
- {
2078
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T> * wrapper = 0;
2079
- try
2080
- {
2081
- Data_Object<Wrapped_Function> data(detail::method_data());
2082
- wrapper = (Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T> *)data.get();
2083
- Arguments* args = wrapper->arguments_;
2084
-
2085
- bool hasSelf = (self && self != Qnil);
2086
- if(args->count() >= 0) {
2087
- hasSelf = hasSelf && args->count() == Num_Args - 1;
2088
- } else {
2089
- hasSelf = hasSelf && argc == Num_Args -1;
2090
- }
2091
-
2092
- VALUE varg0, varg1, varg2, varg3, varg4, varg5;
2093
-
2094
- if(hasSelf) {
2095
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1).c_str()
2096
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5);
2097
-
2098
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
2099
-
2100
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
2101
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
2102
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
2103
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(3, varg3);
2104
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(4, varg4);
2105
-
2106
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5));
2107
- } else {
2108
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
2109
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5);
2110
-
2111
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
2112
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
2113
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
2114
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
2115
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
2116
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
2117
-
2118
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5));
2119
- }
2120
- }
2121
- catch(...)
2122
- {
2123
- RUBY_TRY
2124
- {
2125
- if(wrapper)
2126
- {
2127
- return wrapper->handler_->handle_exception();
2128
- }
2129
- else
2130
- {
2131
- throw;
2132
- }
2133
- }
2134
- RUBY_CATCH
2135
- }
2136
- }
2137
-
2138
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T>
2139
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T>::
2140
- Auto_Function_Wrapper(
2141
- Func func,
2142
- Data_Object<Exception_Handler> handler,
2143
- Arguments* arguments)
2144
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
2145
- , func_(func)
2146
- , handler_(handler)
2147
- , handler_guard_(&handler_)
2148
- {
2149
- if(arguments == 0) {
2150
- arguments_ = new Arguments();
2151
- } else {
2152
- arguments_ = arguments;
2153
- }
2154
- }
2155
-
2156
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T>
2157
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T>::
2158
- ~Auto_Function_Wrapper()
2159
- {
2160
- if(arguments_) { delete arguments_; }
2161
- }
2162
-
2163
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T>
2164
- VALUE Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T>::
2165
- call(int argc, VALUE* argv, VALUE self)
2166
- {
2167
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T> * wrapper = 0;
2168
- try
2169
- {
2170
- Data_Object<Wrapped_Function> data(detail::method_data());
2171
- wrapper = (Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T> *)data.get();
2172
- Arguments* args = wrapper->arguments_;
2173
-
2174
- bool hasSelf = (self && self != Qnil);
2175
- if(args->count() >= 0) {
2176
- hasSelf = hasSelf && args->count() == Num_Args - 1;
2177
- } else {
2178
- hasSelf = hasSelf && argc == Num_Args -1;
2179
- }
2180
-
2181
- VALUE varg0, varg1, varg2, varg3, varg4, varg5;
2182
-
2183
- if(hasSelf) {
2184
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1) .c_str()
2185
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5);
2186
-
2187
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
2188
-
2189
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
2190
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
2191
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
2192
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(3, varg3);
2193
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(4, varg4);
2194
-
2195
- wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5);
2196
- return Qnil;
2197
- } else {
2198
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
2199
- , &varg0, &varg1, &varg2, &varg3, &varg4, &varg5);
2200
-
2201
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
2202
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
2203
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
2204
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
2205
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
2206
- Arg5_T arg5 = args->getArgumentOrDefault<Arg5_T>(5, varg5);
2207
-
2208
- wrapper->func_(arg0, arg1, arg2, arg3, arg4, arg5);
2209
- return Qnil;
2210
- }
2211
- }
2212
- catch(...)
2213
- {
2214
- RUBY_TRY
2215
- {
2216
- if(wrapper)
2217
- {
2218
- return wrapper->handler_->handle_exception();
2219
- }
2220
- else
2221
- {
2222
- throw;
2223
- }
2224
- }
2225
- RUBY_CATCH
2226
- }
2227
- }
2228
-
2229
- // ---------------------------------------------------------------------
2230
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T>
2231
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T>::
2232
- Auto_Function_Wrapper(
2233
- Func func,
2234
- Data_Object<Exception_Handler> handler,
2235
- Arguments* arguments)
2236
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
2237
- , func_(func)
2238
- , handler_(handler)
2239
- , handler_guard_(&handler_)
2240
- {
2241
- if(arguments == 0) {
2242
- arguments_ = new Arguments();
2243
- } else {
2244
- arguments_ = arguments;
2245
- }
2246
- }
2247
-
2248
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T>
2249
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T>::
2250
- ~Auto_Function_Wrapper()
2251
- {
2252
- if(arguments_) { delete arguments_; }
2253
- }
2254
-
2255
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T>
2256
- VALUE Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T>::
2257
- call(int argc, VALUE *argv, VALUE self)
2258
- {
2259
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T> * wrapper = 0;
2260
- try
2261
- {
2262
- Data_Object<Wrapped_Function> data(detail::method_data());
2263
- wrapper = (Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T> *)data.get();
2264
- Arguments* args = wrapper->arguments_;
2265
-
2266
- bool hasSelf = (self && self != Qnil);
2267
- if(args->count() >= 0) {
2268
- hasSelf = hasSelf && args->count() == Num_Args - 1;
2269
- } else {
2270
- hasSelf = hasSelf && argc == Num_Args -1;
2271
- }
2272
-
2273
- VALUE varg0, varg1, varg2, varg3, varg4;
2274
-
2275
- if(hasSelf) {
2276
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1).c_str()
2277
- , &varg0, &varg1, &varg2, &varg3, &varg4);
2278
-
2279
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
2280
-
2281
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
2282
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
2283
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
2284
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(3, varg3);
2285
-
2286
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3, arg4));
2287
- } else {
2288
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
2289
- , &varg0, &varg1, &varg2, &varg3, &varg4);
2290
-
2291
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
2292
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
2293
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
2294
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
2295
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
2296
-
2297
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3, arg4));
2298
- }
2299
- }
2300
- catch(...)
2301
- {
2302
- RUBY_TRY
2303
- {
2304
- if(wrapper)
2305
- {
2306
- return wrapper->handler_->handle_exception();
2307
- }
2308
- else
2309
- {
2310
- throw;
2311
- }
2312
- }
2313
- RUBY_CATCH
2314
- }
2315
- }
2316
-
2317
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T>
2318
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T>::
2319
- Auto_Function_Wrapper(
2320
- Func func,
2321
- Data_Object<Exception_Handler> handler,
2322
- Arguments* arguments)
2323
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
2324
- , func_(func)
2325
- , handler_(handler)
2326
- , handler_guard_(&handler_)
2327
- {
2328
- if(arguments == 0) {
2329
- arguments_ = new Arguments();
2330
- } else {
2331
- arguments_ = arguments;
2332
- }
2333
- }
2334
-
2335
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T>
2336
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T>::
2337
- ~Auto_Function_Wrapper()
2338
- {
2339
- if(arguments_) { delete arguments_; }
2340
- }
2341
-
2342
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T>
2343
- VALUE Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T>::
2344
- call(int argc, VALUE* argv, VALUE self)
2345
- {
2346
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T> * wrapper = 0;
2347
- try
2348
- {
2349
- Data_Object<Wrapped_Function> data(detail::method_data());
2350
- wrapper = (Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T> *)data.get();
2351
- Arguments* args = wrapper->arguments_;
2352
-
2353
- bool hasSelf = (self && self != Qnil);
2354
- if(args->count() >= 0) {
2355
- hasSelf = hasSelf && args->count() == Num_Args - 1;
2356
- } else {
2357
- hasSelf = hasSelf && argc == Num_Args -1;
2358
- }
2359
-
2360
- VALUE varg0, varg1, varg2, varg3, varg4;
2361
-
2362
- if(hasSelf) {
2363
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1) .c_str()
2364
- , &varg0, &varg1, &varg2, &varg3, &varg4);
2365
-
2366
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
2367
-
2368
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
2369
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
2370
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
2371
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(3, varg3);
2372
-
2373
- wrapper->func_(arg0, arg1, arg2, arg3, arg4);
2374
- return Qnil;
2375
- } else {
2376
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
2377
- , &varg0, &varg1, &varg2, &varg3, &varg4);
2378
-
2379
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
2380
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
2381
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
2382
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
2383
- Arg4_T arg4 = args->getArgumentOrDefault<Arg4_T>(4, varg4);
2384
-
2385
- wrapper->func_(arg0, arg1, arg2, arg3, arg4);
2386
- return Qnil;
2387
- }
2388
- }
2389
- catch(...)
2390
- {
2391
- RUBY_TRY
2392
- {
2393
- if(wrapper)
2394
- {
2395
- return wrapper->handler_->handle_exception();
2396
- }
2397
- else
2398
- {
2399
- throw;
2400
- }
2401
- }
2402
- RUBY_CATCH
2403
- }
2404
- }
2405
-
2406
- // ---------------------------------------------------------------------
2407
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T>
2408
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T>::
2409
- Auto_Function_Wrapper(
2410
- Func func,
2411
- Data_Object<Exception_Handler> handler,
2412
- Arguments* arguments)
2413
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
2414
- , func_(func)
2415
- , handler_(handler)
2416
- , handler_guard_(&handler_)
2417
- {
2418
- if(arguments == 0) {
2419
- arguments_ = new Arguments();
2420
- } else {
2421
- arguments_ = arguments;
2422
- }
2423
- }
2424
-
2425
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T>
2426
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T>::
2427
- ~Auto_Function_Wrapper()
2428
- {
2429
- if(arguments_) { delete arguments_; }
2430
- }
2431
-
2432
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T>
2433
- VALUE Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T>::
2434
- call(int argc, VALUE *argv, VALUE self)
2435
- {
2436
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T> * wrapper = 0;
2437
- try
2438
- {
2439
- Data_Object<Wrapped_Function> data(detail::method_data());
2440
- wrapper = (Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T> *)data.get();
2441
- Arguments* args = wrapper->arguments_;
2442
-
2443
- bool hasSelf = (self && self != Qnil);
2444
- if(args->count() >= 0) {
2445
- hasSelf = hasSelf && args->count() == Num_Args - 1;
2446
- } else {
2447
- hasSelf = hasSelf && argc == Num_Args -1;
2448
- }
2449
-
2450
- VALUE varg0, varg1, varg2, varg3;
2451
-
2452
- if(hasSelf) {
2453
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1).c_str()
2454
- , &varg0, &varg1, &varg2, &varg3);
2455
-
2456
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
2457
-
2458
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
2459
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
2460
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
2461
-
2462
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3));
2463
- } else {
2464
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
2465
- , &varg0, &varg1, &varg2, &varg3);
2466
-
2467
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
2468
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
2469
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
2470
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
2471
-
2472
- return to_ruby(wrapper->func_(arg0, arg1, arg2, arg3));
2473
- }
2474
- }
2475
- catch(...)
2476
- {
2477
- RUBY_TRY
2478
- {
2479
- if(wrapper)
2480
- {
2481
- return wrapper->handler_->handle_exception();
2482
- }
2483
- else
2484
- {
2485
- throw;
2486
- }
2487
- }
2488
- RUBY_CATCH
2489
- }
2490
- }
2491
-
2492
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T>
2493
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T>::
2494
- Auto_Function_Wrapper(
2495
- Func func,
2496
- Data_Object<Exception_Handler> handler,
2497
- Arguments* arguments)
2498
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
2499
- , func_(func)
2500
- , handler_(handler)
2501
- , handler_guard_(&handler_)
2502
- {
2503
- if(arguments == 0) {
2504
- arguments_ = new Arguments();
2505
- } else {
2506
- arguments_ = arguments;
2507
- }
2508
- }
2509
-
2510
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T>
2511
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T>::
2512
- ~Auto_Function_Wrapper()
2513
- {
2514
- if(arguments_) { delete arguments_; }
2515
- }
2516
-
2517
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T>
2518
- VALUE Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T>::
2519
- call(int argc, VALUE* argv, VALUE self)
2520
- {
2521
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T> * wrapper = 0;
2522
- try
2523
- {
2524
- Data_Object<Wrapped_Function> data(detail::method_data());
2525
- wrapper = (Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T> *)data.get();
2526
- Arguments* args = wrapper->arguments_;
2527
-
2528
- bool hasSelf = (self && self != Qnil);
2529
- if(args->count() >= 0) {
2530
- hasSelf = hasSelf && args->count() == Num_Args - 1;
2531
- } else {
2532
- hasSelf = hasSelf && argc == Num_Args -1;
2533
- }
2534
-
2535
- VALUE varg0, varg1, varg2, varg3;
2536
-
2537
- if(hasSelf) {
2538
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1) .c_str()
2539
- , &varg0, &varg1, &varg2, &varg3);
2540
-
2541
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
2542
-
2543
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
2544
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
2545
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(2, varg2);
2546
-
2547
- wrapper->func_(arg0, arg1, arg2, arg3);
2548
- return Qnil;
2549
- } else {
2550
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
2551
- , &varg0, &varg1, &varg2, &varg3);
2552
-
2553
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
2554
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
2555
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
2556
- Arg3_T arg3 = args->getArgumentOrDefault<Arg3_T>(3, varg3);
2557
-
2558
- wrapper->func_(arg0, arg1, arg2, arg3);
2559
- return Qnil;
2560
- }
2561
- }
2562
- catch(...)
2563
- {
2564
- RUBY_TRY
2565
- {
2566
- if(wrapper)
2567
- {
2568
- return wrapper->handler_->handle_exception();
2569
- }
2570
- else
2571
- {
2572
- throw;
2573
- }
2574
- }
2575
- RUBY_CATCH
2576
- }
2577
- }
2578
-
2579
- // ---------------------------------------------------------------------
2580
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T>
2581
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T>::
2582
- Auto_Function_Wrapper(
2583
- Func func,
2584
- Data_Object<Exception_Handler> handler,
2585
- Arguments* arguments)
2586
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
2587
- , func_(func)
2588
- , handler_(handler)
2589
- , handler_guard_(&handler_)
2590
- {
2591
- if(arguments == 0) {
2592
- arguments_ = new Arguments();
2593
- } else {
2594
- arguments_ = arguments;
2595
- }
2596
- }
2597
-
2598
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T>
2599
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T>::
2600
- ~Auto_Function_Wrapper()
2601
- {
2602
- if(arguments_) { delete arguments_; }
2603
- }
2604
-
2605
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T>
2606
- VALUE Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T>::
2607
- call(int argc, VALUE *argv, VALUE self)
2608
- {
2609
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T> * wrapper = 0;
2610
- try
2611
- {
2612
- Data_Object<Wrapped_Function> data(detail::method_data());
2613
- wrapper = (Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T> *)data.get();
2614
- Arguments* args = wrapper->arguments_;
2615
-
2616
- bool hasSelf = (self && self != Qnil);
2617
- if(args->count() >= 0) {
2618
- hasSelf = hasSelf && args->count() == Num_Args - 1;
2619
- } else {
2620
- hasSelf = hasSelf && argc == Num_Args -1;
2621
- }
2622
-
2623
- VALUE varg0, varg1, varg2;
2624
-
2625
- if(hasSelf) {
2626
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1).c_str()
2627
- , &varg0, &varg1, &varg2);
2628
-
2629
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
2630
-
2631
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
2632
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
2633
-
2634
- return to_ruby(wrapper->func_(arg0, arg1, arg2));
2635
- } else {
2636
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
2637
- , &varg0, &varg1, &varg2);
2638
-
2639
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
2640
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
2641
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
2642
-
2643
- return to_ruby(wrapper->func_(arg0, arg1, arg2));
2644
- }
2645
- }
2646
- catch(...)
2647
- {
2648
- RUBY_TRY
2649
- {
2650
- if(wrapper)
2651
- {
2652
- return wrapper->handler_->handle_exception();
2653
- }
2654
- else
2655
- {
2656
- throw;
2657
- }
2658
- }
2659
- RUBY_CATCH
2660
- }
2661
- }
2662
-
2663
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T>
2664
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T>::
2665
- Auto_Function_Wrapper(
2666
- Func func,
2667
- Data_Object<Exception_Handler> handler,
2668
- Arguments* arguments)
2669
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
2670
- , func_(func)
2671
- , handler_(handler)
2672
- , handler_guard_(&handler_)
2673
- {
2674
- if(arguments == 0) {
2675
- arguments_ = new Arguments();
2676
- } else {
2677
- arguments_ = arguments;
2678
- }
2679
- }
2680
-
2681
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T>
2682
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T>::
2683
- ~Auto_Function_Wrapper()
2684
- {
2685
- if(arguments_) { delete arguments_; }
2686
- }
2687
-
2688
- template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T>
2689
- VALUE Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T>::
2690
- call(int argc, VALUE* argv, VALUE self)
2691
- {
2692
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T> * wrapper = 0;
2693
- try
2694
- {
2695
- Data_Object<Wrapped_Function> data(detail::method_data());
2696
- wrapper = (Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T> *)data.get();
2697
- Arguments* args = wrapper->arguments_;
2698
-
2699
- bool hasSelf = (self && self != Qnil);
2700
- if(args->count() >= 0) {
2701
- hasSelf = hasSelf && args->count() == Num_Args - 1;
2702
- } else {
2703
- hasSelf = hasSelf && argc == Num_Args -1;
2704
- }
2705
-
2706
- VALUE varg0, varg1, varg2;
2707
-
2708
- if(hasSelf) {
2709
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1) .c_str()
2710
- , &varg0, &varg1, &varg2);
2711
-
2712
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
2713
-
2714
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
2715
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(1, varg1);
2716
-
2717
- wrapper->func_(arg0, arg1, arg2);
2718
- return Qnil;
2719
- } else {
2720
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
2721
- , &varg0, &varg1, &varg2);
2722
-
2723
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
2724
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
2725
- Arg2_T arg2 = args->getArgumentOrDefault<Arg2_T>(2, varg2);
2726
-
2727
- wrapper->func_(arg0, arg1, arg2);
2728
- return Qnil;
2729
- }
2730
- }
2731
- catch(...)
2732
- {
2733
- RUBY_TRY
2734
- {
2735
- if(wrapper)
2736
- {
2737
- return wrapper->handler_->handle_exception();
2738
- }
2739
- else
2740
- {
2741
- throw;
2742
- }
2743
- }
2744
- RUBY_CATCH
2745
- }
2746
- }
2747
-
2748
- // ---------------------------------------------------------------------
2749
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T>
2750
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T>::
2751
- Auto_Function_Wrapper(
2752
- Func func,
2753
- Data_Object<Exception_Handler> handler,
2754
- Arguments* arguments)
2755
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
2756
- , func_(func)
2757
- , handler_(handler)
2758
- , handler_guard_(&handler_)
2759
- {
2760
- if(arguments == 0) {
2761
- arguments_ = new Arguments();
2762
- } else {
2763
- arguments_ = arguments;
2764
- }
2765
- }
2766
-
2767
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T>
2768
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T>::
2769
- ~Auto_Function_Wrapper()
2770
- {
2771
- if(arguments_) { delete arguments_; }
2772
- }
2773
-
2774
- template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T>
2775
- VALUE Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T>::
2776
- call(int argc, VALUE *argv, VALUE self)
2777
- {
2778
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T> * wrapper = 0;
2779
- try
2780
- {
2781
- Data_Object<Wrapped_Function> data(detail::method_data());
2782
- wrapper = (Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T> *)data.get();
2783
- Arguments* args = wrapper->arguments_;
2784
-
2785
- bool hasSelf = (self && self != Qnil);
2786
- if(args->count() >= 0) {
2787
- hasSelf = hasSelf && args->count() == Num_Args - 1;
2788
- } else {
2789
- hasSelf = hasSelf && argc == Num_Args -1;
2790
- }
2791
-
2792
- VALUE varg0, varg1;
2793
-
2794
- if(hasSelf) {
2795
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1).c_str()
2796
- , &varg0, &varg1);
2797
-
2798
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
2799
-
2800
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
2801
-
2802
- return to_ruby(wrapper->func_(arg0, arg1));
2803
- } else {
2804
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
2805
- , &varg0, &varg1);
2806
-
2807
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
2808
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
2809
-
2810
- return to_ruby(wrapper->func_(arg0, arg1));
2811
- }
2812
- }
2813
- catch(...)
2814
- {
2815
- RUBY_TRY
2816
- {
2817
- if(wrapper)
2818
- {
2819
- return wrapper->handler_->handle_exception();
2820
- }
2821
- else
2822
- {
2823
- throw;
2824
- }
2825
- }
2826
- RUBY_CATCH
2827
- }
2828
- }
2829
-
2830
- template<typename Func_T, typename Arg0_T, typename Arg1_T>
2831
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T>::
2832
- Auto_Function_Wrapper(
2833
- Func func,
2834
- Data_Object<Exception_Handler> handler,
2835
- Arguments* arguments)
2836
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
2837
- , func_(func)
2838
- , handler_(handler)
2839
- , handler_guard_(&handler_)
2840
- {
2841
- if(arguments == 0) {
2842
- arguments_ = new Arguments();
2843
- } else {
2844
- arguments_ = arguments;
2845
- }
2846
- }
2847
-
2848
- template<typename Func_T, typename Arg0_T, typename Arg1_T>
2849
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T>::
2850
- ~Auto_Function_Wrapper()
2851
- {
2852
- if(arguments_) { delete arguments_; }
2853
- }
2854
-
2855
- template<typename Func_T, typename Arg0_T, typename Arg1_T>
2856
- VALUE Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T>::
2857
- call(int argc, VALUE* argv, VALUE self)
2858
- {
2859
- Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T> * wrapper = 0;
2860
- try
2861
- {
2862
- Data_Object<Wrapped_Function> data(detail::method_data());
2863
- wrapper = (Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T> *)data.get();
2864
- Arguments* args = wrapper->arguments_;
2865
-
2866
- bool hasSelf = (self && self != Qnil);
2867
- if(args->count() >= 0) {
2868
- hasSelf = hasSelf && args->count() == Num_Args - 1;
2869
- } else {
2870
- hasSelf = hasSelf && argc == Num_Args -1;
2871
- }
2872
-
2873
- VALUE varg0, varg1;
2874
-
2875
- if(hasSelf) {
2876
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1) .c_str()
2877
- , &varg0, &varg1);
2878
-
2879
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
2880
-
2881
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(0, varg0);
2882
-
2883
- wrapper->func_(arg0, arg1);
2884
- return Qnil;
2885
- } else {
2886
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
2887
- , &varg0, &varg1);
2888
-
2889
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
2890
- Arg1_T arg1 = args->getArgumentOrDefault<Arg1_T>(1, varg1);
2891
-
2892
- wrapper->func_(arg0, arg1);
2893
- return Qnil;
2894
- }
2895
- }
2896
- catch(...)
2897
- {
2898
- RUBY_TRY
2899
- {
2900
- if(wrapper)
2901
- {
2902
- return wrapper->handler_->handle_exception();
2903
- }
2904
- else
2905
- {
2906
- throw;
2907
- }
2908
- }
2909
- RUBY_CATCH
2910
- }
2911
- }
2912
-
2913
- // ---------------------------------------------------------------------
2914
- template<typename Func_T, typename Ret_T, typename Arg0_T>
2915
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T>::
2916
- Auto_Function_Wrapper(
2917
- Func func,
2918
- Data_Object<Exception_Handler> handler,
2919
- Arguments* arguments)
2920
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
2921
- , func_(func)
2922
- , handler_(handler)
2923
- , handler_guard_(&handler_)
2924
- {
2925
- if(arguments == 0) {
2926
- arguments_ = new Arguments();
2927
- } else {
2928
- arguments_ = arguments;
2929
- }
2930
- }
2931
-
2932
- template<typename Func_T, typename Ret_T, typename Arg0_T>
2933
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T>::
2934
- ~Auto_Function_Wrapper()
2935
- {
2936
- if(arguments_) { delete arguments_; }
2937
- }
2938
-
2939
- template<typename Func_T, typename Ret_T, typename Arg0_T>
2940
- VALUE Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T>::
2941
- call(int argc, VALUE *argv, VALUE self)
2942
- {
2943
- Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T> * wrapper = 0;
2944
- try
2945
- {
2946
- Data_Object<Wrapped_Function> data(detail::method_data());
2947
- wrapper = (Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T> *)data.get();
2948
- Arguments* args = wrapper->arguments_;
2949
-
2950
- bool hasSelf = (self && self != Qnil);
2951
- if(args->count() >= 0) {
2952
- hasSelf = hasSelf && args->count() == Num_Args - 1;
2953
- } else {
2954
- hasSelf = hasSelf && argc == Num_Args -1;
2955
- }
2956
-
2957
- VALUE varg0;
2958
-
2959
- if(hasSelf) {
2960
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1).c_str()
2961
- , &varg0);
2962
-
2963
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
2964
-
2965
-
2966
- return to_ruby(wrapper->func_(arg0));
2967
- } else {
2968
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
2969
- , &varg0);
2970
-
2971
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
2972
-
2973
- return to_ruby(wrapper->func_(arg0));
2974
- }
2975
- }
2976
- catch(...)
2977
- {
2978
- RUBY_TRY
2979
- {
2980
- if(wrapper)
2981
- {
2982
- return wrapper->handler_->handle_exception();
2983
- }
2984
- else
2985
- {
2986
- throw;
2987
- }
2988
- }
2989
- RUBY_CATCH
2990
- }
2991
- }
2992
-
2993
- template<typename Func_T, typename Arg0_T>
2994
- Auto_Function_Wrapper<Func_T, void, Arg0_T>::
2995
- Auto_Function_Wrapper(
2996
- Func func,
2997
- Data_Object<Exception_Handler> handler,
2998
- Arguments* arguments)
2999
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
3000
- , func_(func)
3001
- , handler_(handler)
3002
- , handler_guard_(&handler_)
3003
- {
3004
- if(arguments == 0) {
3005
- arguments_ = new Arguments();
3006
- } else {
3007
- arguments_ = arguments;
3008
- }
3009
- }
3010
-
3011
- template<typename Func_T, typename Arg0_T>
3012
- Auto_Function_Wrapper<Func_T, void, Arg0_T>::
3013
- ~Auto_Function_Wrapper()
3014
- {
3015
- if(arguments_) { delete arguments_; }
3016
- }
3017
-
3018
- template<typename Func_T, typename Arg0_T>
3019
- VALUE Auto_Function_Wrapper<Func_T, void, Arg0_T>::
3020
- call(int argc, VALUE* argv, VALUE self)
3021
- {
3022
- Auto_Function_Wrapper<Func_T, void, Arg0_T> * wrapper = 0;
3023
- try
3024
- {
3025
- Data_Object<Wrapped_Function> data(detail::method_data());
3026
- wrapper = (Auto_Function_Wrapper<Func_T, void, Arg0_T> *)data.get();
3027
- Arguments* args = wrapper->arguments_;
3028
-
3029
- bool hasSelf = (self && self != Qnil);
3030
- if(args->count() >= 0) {
3031
- hasSelf = hasSelf && args->count() == Num_Args - 1;
3032
- } else {
3033
- hasSelf = hasSelf && argc == Num_Args -1;
3034
- }
3035
-
3036
- VALUE varg0;
3037
-
3038
- if(hasSelf) {
3039
- rb_scan_args(argc, argv, args->formatString(Num_Args - 1) .c_str()
3040
- , &varg0);
3041
-
3042
- Arg0_T arg0 = from_ruby<Arg0_T>(self);
3043
-
3044
-
3045
- wrapper->func_(arg0);
3046
- return Qnil;
3047
- } else {
3048
- rb_scan_args(argc, argv, args->formatString(Num_Args).c_str()
3049
- , &varg0);
3050
-
3051
- Arg0_T arg0 = args->getArgumentOrDefault<Arg0_T>(0, varg0);
3052
-
3053
- wrapper->func_(arg0);
3054
- return Qnil;
3055
- }
3056
- }
3057
- catch(...)
3058
- {
3059
- RUBY_TRY
3060
- {
3061
- if(wrapper)
3062
- {
3063
- return wrapper->handler_->handle_exception();
3064
- }
3065
- else
3066
- {
3067
- throw;
3068
- }
3069
- }
3070
- RUBY_CATCH
3071
- }
3072
- }
3073
-
3074
- // ---------------------------------------------------------------------
3075
-
3076
- template<typename Func_T, typename Ret_T>
3077
- Auto_Function_Wrapper<Func_T, Ret_T>::
3078
- Auto_Function_Wrapper(
3079
- Func func,
3080
- Data_Object<Exception_Handler> handler,
3081
- Arguments* arguments)
3082
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
3083
- , func_(func)
3084
- , handler_(handler ? handler : new Default_Exception_Handler)
3085
- , arguments_(arguments)
3086
- {
3087
- }
3088
-
3089
- template<typename Func_T, typename Ret_T>
3090
- Auto_Function_Wrapper<Func_T, Ret_T>::
3091
- ~Auto_Function_Wrapper()
3092
- {
3093
- if(arguments_) { delete arguments_; }
3094
- }
3095
-
3096
- template<typename Func_T, typename Ret_T>
3097
- VALUE Auto_Function_Wrapper<Func_T, Ret_T>::
3098
- call()
3099
- {
3100
- Auto_Function_Wrapper<Func_T, Ret_T> * wrapper = 0;
3101
- try
3102
- {
3103
- Data_Object<Wrapped_Function> data(detail::method_data());
3104
- wrapper = (Auto_Function_Wrapper<Func_T, Ret_T>*)data.get();
3105
-
3106
- return to_ruby(wrapper->func_());
3107
- }
3108
- catch(...)
3109
- {
3110
- RUBY_TRY
3111
- {
3112
- if(wrapper)
3113
- {
3114
- return wrapper->handler_->handle_exception();
3115
- }
3116
- else
3117
- {
3118
- throw;
3119
- }
3120
- }
3121
- RUBY_CATCH
3122
- }
3123
- }
3124
-
3125
- template<typename Func_T>
3126
- Auto_Function_Wrapper<Func_T, void>::
3127
- Auto_Function_Wrapper(
3128
- Func func,
3129
- Data_Object<Exception_Handler> handler,
3130
- Arguments* arguments)
3131
- : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
3132
- , func_(func)
3133
- , handler_(handler ? handler : new Default_Exception_Handler)
3134
- , arguments_(arguments)
3135
- {
3136
- }
3137
-
3138
- template<typename Func_T>
3139
- Auto_Function_Wrapper<Func_T, void>::
3140
- ~Auto_Function_Wrapper()
3141
- {
3142
- if(arguments_) { delete arguments_; }
3143
- }
3144
-
3145
- template<typename Func_T>
3146
- VALUE Auto_Function_Wrapper<Func_T, void>::
3147
- call()
3148
- {
3149
- Auto_Function_Wrapper<Func_T, void> * wrapper = 0;
3150
- try
3151
- {
3152
- Data_Object<Wrapped_Function> data(detail::method_data());
3153
- wrapper = (Auto_Function_Wrapper<Func_T, void> *)data.get();
3154
-
3155
- wrapper->func_();
3156
- return Qnil;
3157
- }
3158
- catch(...)
3159
- {
3160
- RUBY_TRY
3161
- {
3162
- if(wrapper)
3163
- {
3164
- return wrapper->handler_->handle_exception();
3165
- }
3166
- else
3167
- {
3168
- throw;
3169
- }
3170
- }
3171
- RUBY_CATCH
3172
- }
3173
- }
3174
-
3175
- } // namespace detail
3176
-
3177
- } // namespace Rice
3178
-
3179
-
3180
- #endif // Rice__detail__Auto_Function_Wrapper__ipp_
3181
-