rice 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. data/COPYING +23 -0
  2. data/Doxyfile +1253 -0
  3. data/Makefile.am +26 -0
  4. data/Makefile.in +736 -0
  5. data/README +881 -0
  6. data/README.mingw +8 -0
  7. data/bootstrap +8 -0
  8. data/config.guess +1535 -0
  9. data/config.sub +1644 -0
  10. data/configure +7310 -0
  11. data/configure.ac +48 -0
  12. data/depcomp +584 -0
  13. data/doxygen.ac +314 -0
  14. data/doxygen.am +186 -0
  15. data/install-sh +507 -0
  16. data/missing +367 -0
  17. data/post-autoconf.rb +22 -0
  18. data/post-automake.rb +28 -0
  19. data/rice/Address_Registration_Guard.hpp +7 -0
  20. data/rice/Address_Registration_Guard.ipp +34 -0
  21. data/rice/Address_Registration_Guard_defn.hpp +65 -0
  22. data/rice/Allocation_Strategies.hpp +37 -0
  23. data/rice/Array.hpp +220 -0
  24. data/rice/Array.ipp +262 -0
  25. data/rice/Builtin_Object.hpp +8 -0
  26. data/rice/Builtin_Object.ipp +50 -0
  27. data/rice/Builtin_Object_defn.hpp +51 -0
  28. data/rice/Class.cpp +57 -0
  29. data/rice/Class.hpp +8 -0
  30. data/rice/Class.ipp +4 -0
  31. data/rice/Class_defn.hpp +83 -0
  32. data/rice/Constructor.hpp +189 -0
  33. data/rice/Critical_Guard.hpp +34 -0
  34. data/rice/Critical_Guard.ipp +20 -0
  35. data/rice/Data_Object.hpp +127 -0
  36. data/rice/Data_Object.ipp +129 -0
  37. data/rice/Data_Type.cpp +21 -0
  38. data/rice/Data_Type.hpp +8 -0
  39. data/rice/Data_Type.ipp +227 -0
  40. data/rice/Data_Type_defn.hpp +219 -0
  41. data/rice/Data_Type_fwd.hpp +12 -0
  42. data/rice/Enum.hpp +118 -0
  43. data/rice/Enum.ipp +246 -0
  44. data/rice/Exception.cpp +59 -0
  45. data/rice/Exception.hpp +69 -0
  46. data/rice/Exception_Base.hpp +30 -0
  47. data/rice/Exception_Base.ipp +11 -0
  48. data/rice/Hash.hpp +206 -0
  49. data/rice/Hash.ipp +336 -0
  50. data/rice/Identifier.cpp +8 -0
  51. data/rice/Identifier.hpp +50 -0
  52. data/rice/Identifier.ipp +33 -0
  53. data/rice/Jump_Tag.hpp +24 -0
  54. data/rice/Makefile.am +112 -0
  55. data/rice/Makefile.in +675 -0
  56. data/rice/Module.cpp +75 -0
  57. data/rice/Module.hpp +8 -0
  58. data/rice/Module.ipp +6 -0
  59. data/rice/Module_defn.hpp +87 -0
  60. data/rice/Module_impl.hpp +237 -0
  61. data/rice/Module_impl.ipp +302 -0
  62. data/rice/Object.cpp +153 -0
  63. data/rice/Object.hpp +8 -0
  64. data/rice/Object.ipp +19 -0
  65. data/rice/Object_defn.hpp +183 -0
  66. data/rice/Require_Guard.hpp +21 -0
  67. data/rice/String.cpp +93 -0
  68. data/rice/String.hpp +88 -0
  69. data/rice/Struct.cpp +117 -0
  70. data/rice/Struct.hpp +162 -0
  71. data/rice/Struct.ipp +26 -0
  72. data/rice/Symbol.cpp +25 -0
  73. data/rice/Symbol.hpp +66 -0
  74. data/rice/Symbol.ipp +44 -0
  75. data/rice/VM.cpp +79 -0
  76. data/rice/VM.hpp +27 -0
  77. data/rice/config.hpp +23 -0
  78. data/rice/config.hpp.in +22 -0
  79. data/rice/detail/Auto_Function_Wrapper.hpp +719 -0
  80. data/rice/detail/Auto_Function_Wrapper.ipp +1354 -0
  81. data/rice/detail/Auto_Member_Function_Wrapper.hpp +685 -0
  82. data/rice/detail/Auto_Member_Function_Wrapper.ipp +1435 -0
  83. data/rice/detail/Caster.hpp +61 -0
  84. data/rice/detail/Exception_Handler.hpp +118 -0
  85. data/rice/detail/Iterator_Definer.hpp +98 -0
  86. data/rice/detail/Not_Copyable.hpp +25 -0
  87. data/rice/detail/Wrapped_Function.hpp +33 -0
  88. data/rice/detail/check_ruby_type.cpp +21 -0
  89. data/rice/detail/check_ruby_type.hpp +23 -0
  90. data/rice/detail/creation_funcs.hpp +45 -0
  91. data/rice/detail/creation_funcs.ipp +62 -0
  92. data/rice/detail/default_allocation_func.hpp +23 -0
  93. data/rice/detail/default_allocation_func.ipp +11 -0
  94. data/rice/detail/define_method_and_auto_wrap.hpp +27 -0
  95. data/rice/detail/define_method_and_auto_wrap.ipp +20 -0
  96. data/rice/detail/env.hpp +13 -0
  97. data/rice/detail/from_ruby.hpp +43 -0
  98. data/rice/detail/from_ruby.ipp +74 -0
  99. data/rice/detail/method_data.cpp +105 -0
  100. data/rice/detail/method_data.hpp +33 -0
  101. data/rice/detail/node.hpp +13 -0
  102. data/rice/detail/object_call.hpp +85 -0
  103. data/rice/detail/object_call.ipp +147 -0
  104. data/rice/detail/protect.cpp +27 -0
  105. data/rice/detail/protect.hpp +34 -0
  106. data/rice/detail/remove_const.hpp +21 -0
  107. data/rice/detail/ruby.hpp +85 -0
  108. data/rice/detail/rubysig.hpp +13 -0
  109. data/rice/detail/st.hpp +56 -0
  110. data/rice/detail/to_ruby.hpp +16 -0
  111. data/rice/detail/to_ruby.ipp +10 -0
  112. data/rice/detail/win32.hpp +16 -0
  113. data/rice/detail/wrap_function.hpp +288 -0
  114. data/rice/detail/wrap_function.ipp +473 -0
  115. data/rice/generate_code.rb +1092 -0
  116. data/rice/global_function.hpp +16 -0
  117. data/rice/global_function.ipp +11 -0
  118. data/rice/protect.hpp +91 -0
  119. data/rice/protect.ipp +803 -0
  120. data/rice/ruby_try_catch.hpp +86 -0
  121. data/rice/to_from_ruby.hpp +8 -0
  122. data/rice/to_from_ruby.ipp +299 -0
  123. data/rice/to_from_ruby_defn.hpp +71 -0
  124. data/ruby.ac +105 -0
  125. data/ruby/Makefile.am +1 -0
  126. data/ruby/Makefile.in +493 -0
  127. data/ruby/lib/Makefile.am +3 -0
  128. data/ruby/lib/Makefile.in +369 -0
  129. data/ruby/lib/mkmf-rice.rb.in +199 -0
  130. data/sample/Makefile.am +47 -0
  131. data/sample/Makefile.in +375 -0
  132. data/sample/enum/extconf.rb +3 -0
  133. data/sample/enum/sample_enum.cpp +54 -0
  134. data/sample/enum/test.rb +8 -0
  135. data/sample/inheritance/animals.cpp +98 -0
  136. data/sample/inheritance/extconf.rb +3 -0
  137. data/sample/inheritance/test.rb +7 -0
  138. data/sample/map/extconf.rb +3 -0
  139. data/sample/map/map.cpp +81 -0
  140. data/sample/map/test.rb +7 -0
  141. data/test/Makefile.am +44 -0
  142. data/test/Makefile.in +575 -0
  143. data/test/test_Address_Registration_Guard.cpp +43 -0
  144. data/test/test_Allocation_Strategies.cpp +77 -0
  145. data/test/test_Array.cpp +241 -0
  146. data/test/test_Builtin_Object.cpp +72 -0
  147. data/test/test_Class.cpp +350 -0
  148. data/test/test_Constructor.cpp +30 -0
  149. data/test/test_Critical_Guard.cpp +47 -0
  150. data/test/test_Data_Object.cpp +235 -0
  151. data/test/test_Enum.cpp +162 -0
  152. data/test/test_Exception.cpp +46 -0
  153. data/test/test_Hash.cpp +195 -0
  154. data/test/test_Identifier.cpp +70 -0
  155. data/test/test_Jump_Tag.cpp +17 -0
  156. data/test/test_Module.cpp +253 -0
  157. data/test/test_Object.cpp +148 -0
  158. data/test/test_String.cpp +94 -0
  159. data/test/test_Struct.cpp +192 -0
  160. data/test/test_Symbol.cpp +63 -0
  161. data/test/test_To_From_Ruby.cpp +281 -0
  162. data/test/test_VM.cpp +26 -0
  163. data/test/test_rice.rb +30 -0
  164. data/test/unittest.cpp +136 -0
  165. data/test/unittest.hpp +292 -0
  166. metadata +209 -0
@@ -0,0 +1,1435 @@
1
+ #ifndef Rice__detail__Auto_Member_Function_Wrapper__ipp_
2
+ #define Rice__detail__Auto_Member_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
+ #include <typeinfo>
14
+ namespace Rice
15
+ {
16
+
17
+ namespace detail
18
+ {
19
+
20
+ template<typename Func_T, typename Ret_T, typename Self_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>
21
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_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>::
22
+ Auto_Member_Function_Wrapper(
23
+ Func func,
24
+ Exception_Handler const * handler)
25
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
26
+ , func_(func)
27
+ , handler_(handler ? handler : new Default_Exception_Handler)
28
+ {
29
+ }
30
+
31
+ template<typename Func_T, typename Ret_T, typename Self_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>
32
+ VALUE Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_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>::
33
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3, VALUE ruby_arg4, VALUE ruby_arg5, VALUE ruby_arg6, VALUE ruby_arg7, VALUE ruby_arg8, VALUE ruby_arg9, VALUE ruby_arg10, VALUE ruby_arg11, VALUE ruby_arg12, VALUE ruby_arg13, VALUE ruby_arg14, VALUE ruby_arg15)
34
+ {
35
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_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;
36
+ try
37
+ {
38
+ void * data = detail::method_data();
39
+ wrapper =
40
+ (Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_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;
41
+ Self_T * obj = from_ruby<Self_T *>(self);
42
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3)); Arg4_T arg4(from_ruby<Arg4_T>(ruby_arg4)); Arg5_T arg5(from_ruby<Arg5_T>(ruby_arg5)); Arg6_T arg6(from_ruby<Arg6_T>(ruby_arg6)); Arg7_T arg7(from_ruby<Arg7_T>(ruby_arg7)); Arg8_T arg8(from_ruby<Arg8_T>(ruby_arg8)); Arg9_T arg9(from_ruby<Arg9_T>(ruby_arg9)); Arg10_T arg10(from_ruby<Arg10_T>(ruby_arg10)); Arg11_T arg11(from_ruby<Arg11_T>(ruby_arg11)); Arg12_T arg12(from_ruby<Arg12_T>(ruby_arg12)); Arg13_T arg13(from_ruby<Arg13_T>(ruby_arg13)); Arg14_T arg14(from_ruby<Arg14_T>(ruby_arg14)); Arg15_T arg15(from_ruby<Arg15_T>(ruby_arg15));
43
+ Func func = wrapper->func_;
44
+ return to_ruby((*obj.*func)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15));
45
+ }
46
+ catch(...)
47
+ {
48
+ RUBY_TRY
49
+ {
50
+ if(wrapper)
51
+ {
52
+ return wrapper->handler_->handle_exception();
53
+ }
54
+ else
55
+ {
56
+ throw;
57
+ }
58
+ }
59
+ RUBY_CATCH
60
+ }
61
+ }
62
+
63
+ template<typename Func_T, typename Self_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>
64
+ Auto_Member_Function_Wrapper<Func_T, void, Self_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>::
65
+ Auto_Member_Function_Wrapper(
66
+ Func func,
67
+ Exception_Handler const * handler)
68
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
69
+ , func_(func)
70
+ , handler_(handler ? handler : new Default_Exception_Handler)
71
+ {
72
+ }
73
+
74
+ template<typename Func_T, typename Self_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>
75
+ VALUE Auto_Member_Function_Wrapper<Func_T, void, Self_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>::
76
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3, VALUE ruby_arg4, VALUE ruby_arg5, VALUE ruby_arg6, VALUE ruby_arg7, VALUE ruby_arg8, VALUE ruby_arg9, VALUE ruby_arg10, VALUE ruby_arg11, VALUE ruby_arg12, VALUE ruby_arg13, VALUE ruby_arg14, VALUE ruby_arg15)
77
+ {
78
+ Auto_Member_Function_Wrapper<Func_T, void, Self_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;
79
+ try
80
+ {
81
+ void * data = detail::method_data();
82
+ wrapper =
83
+ (Auto_Member_Function_Wrapper<Func_T, void, Self_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;
84
+ Self_T * obj = from_ruby<Self_T *>(self);
85
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3)); Arg4_T arg4(from_ruby<Arg4_T>(ruby_arg4)); Arg5_T arg5(from_ruby<Arg5_T>(ruby_arg5)); Arg6_T arg6(from_ruby<Arg6_T>(ruby_arg6)); Arg7_T arg7(from_ruby<Arg7_T>(ruby_arg7)); Arg8_T arg8(from_ruby<Arg8_T>(ruby_arg8)); Arg9_T arg9(from_ruby<Arg9_T>(ruby_arg9)); Arg10_T arg10(from_ruby<Arg10_T>(ruby_arg10)); Arg11_T arg11(from_ruby<Arg11_T>(ruby_arg11)); Arg12_T arg12(from_ruby<Arg12_T>(ruby_arg12)); Arg13_T arg13(from_ruby<Arg13_T>(ruby_arg13)); Arg14_T arg14(from_ruby<Arg14_T>(ruby_arg14)); Arg15_T arg15(from_ruby<Arg15_T>(ruby_arg15));
86
+ Func func = wrapper->func_;
87
+ (*obj.*func)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15);
88
+ return Qnil;
89
+ }
90
+ catch(...)
91
+ {
92
+ RUBY_TRY
93
+ {
94
+ if(wrapper)
95
+ {
96
+ return wrapper->handler_->handle_exception();
97
+ }
98
+ else
99
+ {
100
+ throw;
101
+ }
102
+ }
103
+ RUBY_CATCH
104
+ }
105
+ }
106
+
107
+ // ---------------------------------------------------------------------
108
+ template<typename Func_T, typename Ret_T, typename Self_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>
109
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_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>::
110
+ Auto_Member_Function_Wrapper(
111
+ Func func,
112
+ Exception_Handler const * handler)
113
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
114
+ , func_(func)
115
+ , handler_(handler ? handler : new Default_Exception_Handler)
116
+ {
117
+ }
118
+
119
+ template<typename Func_T, typename Ret_T, typename Self_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>
120
+ VALUE Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_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>::
121
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3, VALUE ruby_arg4, VALUE ruby_arg5, VALUE ruby_arg6, VALUE ruby_arg7, VALUE ruby_arg8, VALUE ruby_arg9, VALUE ruby_arg10, VALUE ruby_arg11, VALUE ruby_arg12, VALUE ruby_arg13, VALUE ruby_arg14)
122
+ {
123
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_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;
124
+ try
125
+ {
126
+ void * data = detail::method_data();
127
+ wrapper =
128
+ (Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_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;
129
+ Self_T * obj = from_ruby<Self_T *>(self);
130
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3)); Arg4_T arg4(from_ruby<Arg4_T>(ruby_arg4)); Arg5_T arg5(from_ruby<Arg5_T>(ruby_arg5)); Arg6_T arg6(from_ruby<Arg6_T>(ruby_arg6)); Arg7_T arg7(from_ruby<Arg7_T>(ruby_arg7)); Arg8_T arg8(from_ruby<Arg8_T>(ruby_arg8)); Arg9_T arg9(from_ruby<Arg9_T>(ruby_arg9)); Arg10_T arg10(from_ruby<Arg10_T>(ruby_arg10)); Arg11_T arg11(from_ruby<Arg11_T>(ruby_arg11)); Arg12_T arg12(from_ruby<Arg12_T>(ruby_arg12)); Arg13_T arg13(from_ruby<Arg13_T>(ruby_arg13)); Arg14_T arg14(from_ruby<Arg14_T>(ruby_arg14));
131
+ Func func = wrapper->func_;
132
+ return to_ruby((*obj.*func)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14));
133
+ }
134
+ catch(...)
135
+ {
136
+ RUBY_TRY
137
+ {
138
+ if(wrapper)
139
+ {
140
+ return wrapper->handler_->handle_exception();
141
+ }
142
+ else
143
+ {
144
+ throw;
145
+ }
146
+ }
147
+ RUBY_CATCH
148
+ }
149
+ }
150
+
151
+ template<typename Func_T, typename Self_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>
152
+ Auto_Member_Function_Wrapper<Func_T, void, Self_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>::
153
+ Auto_Member_Function_Wrapper(
154
+ Func func,
155
+ Exception_Handler const * handler)
156
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
157
+ , func_(func)
158
+ , handler_(handler ? handler : new Default_Exception_Handler)
159
+ {
160
+ }
161
+
162
+ template<typename Func_T, typename Self_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>
163
+ VALUE Auto_Member_Function_Wrapper<Func_T, void, Self_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>::
164
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3, VALUE ruby_arg4, VALUE ruby_arg5, VALUE ruby_arg6, VALUE ruby_arg7, VALUE ruby_arg8, VALUE ruby_arg9, VALUE ruby_arg10, VALUE ruby_arg11, VALUE ruby_arg12, VALUE ruby_arg13, VALUE ruby_arg14)
165
+ {
166
+ Auto_Member_Function_Wrapper<Func_T, void, Self_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;
167
+ try
168
+ {
169
+ void * data = detail::method_data();
170
+ wrapper =
171
+ (Auto_Member_Function_Wrapper<Func_T, void, Self_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;
172
+ Self_T * obj = from_ruby<Self_T *>(self);
173
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3)); Arg4_T arg4(from_ruby<Arg4_T>(ruby_arg4)); Arg5_T arg5(from_ruby<Arg5_T>(ruby_arg5)); Arg6_T arg6(from_ruby<Arg6_T>(ruby_arg6)); Arg7_T arg7(from_ruby<Arg7_T>(ruby_arg7)); Arg8_T arg8(from_ruby<Arg8_T>(ruby_arg8)); Arg9_T arg9(from_ruby<Arg9_T>(ruby_arg9)); Arg10_T arg10(from_ruby<Arg10_T>(ruby_arg10)); Arg11_T arg11(from_ruby<Arg11_T>(ruby_arg11)); Arg12_T arg12(from_ruby<Arg12_T>(ruby_arg12)); Arg13_T arg13(from_ruby<Arg13_T>(ruby_arg13)); Arg14_T arg14(from_ruby<Arg14_T>(ruby_arg14));
174
+ Func func = wrapper->func_;
175
+ (*obj.*func)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14);
176
+ return Qnil;
177
+ }
178
+ catch(...)
179
+ {
180
+ RUBY_TRY
181
+ {
182
+ if(wrapper)
183
+ {
184
+ return wrapper->handler_->handle_exception();
185
+ }
186
+ else
187
+ {
188
+ throw;
189
+ }
190
+ }
191
+ RUBY_CATCH
192
+ }
193
+ }
194
+
195
+ // ---------------------------------------------------------------------
196
+ template<typename Func_T, typename Ret_T, typename Self_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>
197
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_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>::
198
+ Auto_Member_Function_Wrapper(
199
+ Func func,
200
+ Exception_Handler const * handler)
201
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
202
+ , func_(func)
203
+ , handler_(handler ? handler : new Default_Exception_Handler)
204
+ {
205
+ }
206
+
207
+ template<typename Func_T, typename Ret_T, typename Self_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>
208
+ VALUE Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_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>::
209
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3, VALUE ruby_arg4, VALUE ruby_arg5, VALUE ruby_arg6, VALUE ruby_arg7, VALUE ruby_arg8, VALUE ruby_arg9, VALUE ruby_arg10, VALUE ruby_arg11, VALUE ruby_arg12, VALUE ruby_arg13)
210
+ {
211
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_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;
212
+ try
213
+ {
214
+ void * data = detail::method_data();
215
+ wrapper =
216
+ (Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_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;
217
+ Self_T * obj = from_ruby<Self_T *>(self);
218
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3)); Arg4_T arg4(from_ruby<Arg4_T>(ruby_arg4)); Arg5_T arg5(from_ruby<Arg5_T>(ruby_arg5)); Arg6_T arg6(from_ruby<Arg6_T>(ruby_arg6)); Arg7_T arg7(from_ruby<Arg7_T>(ruby_arg7)); Arg8_T arg8(from_ruby<Arg8_T>(ruby_arg8)); Arg9_T arg9(from_ruby<Arg9_T>(ruby_arg9)); Arg10_T arg10(from_ruby<Arg10_T>(ruby_arg10)); Arg11_T arg11(from_ruby<Arg11_T>(ruby_arg11)); Arg12_T arg12(from_ruby<Arg12_T>(ruby_arg12)); Arg13_T arg13(from_ruby<Arg13_T>(ruby_arg13));
219
+ Func func = wrapper->func_;
220
+ return to_ruby((*obj.*func)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13));
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
+ template<typename Func_T, typename Self_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>
240
+ Auto_Member_Function_Wrapper<Func_T, void, Self_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>::
241
+ Auto_Member_Function_Wrapper(
242
+ Func func,
243
+ Exception_Handler const * handler)
244
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
245
+ , func_(func)
246
+ , handler_(handler ? handler : new Default_Exception_Handler)
247
+ {
248
+ }
249
+
250
+ template<typename Func_T, typename Self_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>
251
+ VALUE Auto_Member_Function_Wrapper<Func_T, void, Self_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>::
252
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3, VALUE ruby_arg4, VALUE ruby_arg5, VALUE ruby_arg6, VALUE ruby_arg7, VALUE ruby_arg8, VALUE ruby_arg9, VALUE ruby_arg10, VALUE ruby_arg11, VALUE ruby_arg12, VALUE ruby_arg13)
253
+ {
254
+ Auto_Member_Function_Wrapper<Func_T, void, Self_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;
255
+ try
256
+ {
257
+ void * data = detail::method_data();
258
+ wrapper =
259
+ (Auto_Member_Function_Wrapper<Func_T, void, Self_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;
260
+ Self_T * obj = from_ruby<Self_T *>(self);
261
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3)); Arg4_T arg4(from_ruby<Arg4_T>(ruby_arg4)); Arg5_T arg5(from_ruby<Arg5_T>(ruby_arg5)); Arg6_T arg6(from_ruby<Arg6_T>(ruby_arg6)); Arg7_T arg7(from_ruby<Arg7_T>(ruby_arg7)); Arg8_T arg8(from_ruby<Arg8_T>(ruby_arg8)); Arg9_T arg9(from_ruby<Arg9_T>(ruby_arg9)); Arg10_T arg10(from_ruby<Arg10_T>(ruby_arg10)); Arg11_T arg11(from_ruby<Arg11_T>(ruby_arg11)); Arg12_T arg12(from_ruby<Arg12_T>(ruby_arg12)); Arg13_T arg13(from_ruby<Arg13_T>(ruby_arg13));
262
+ Func func = wrapper->func_;
263
+ (*obj.*func)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13);
264
+ return Qnil;
265
+ }
266
+ catch(...)
267
+ {
268
+ RUBY_TRY
269
+ {
270
+ if(wrapper)
271
+ {
272
+ return wrapper->handler_->handle_exception();
273
+ }
274
+ else
275
+ {
276
+ throw;
277
+ }
278
+ }
279
+ RUBY_CATCH
280
+ }
281
+ }
282
+
283
+ // ---------------------------------------------------------------------
284
+ template<typename Func_T, typename Ret_T, typename Self_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>
285
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_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>::
286
+ Auto_Member_Function_Wrapper(
287
+ Func func,
288
+ Exception_Handler const * handler)
289
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
290
+ , func_(func)
291
+ , handler_(handler ? handler : new Default_Exception_Handler)
292
+ {
293
+ }
294
+
295
+ template<typename Func_T, typename Ret_T, typename Self_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>
296
+ VALUE Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_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>::
297
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3, VALUE ruby_arg4, VALUE ruby_arg5, VALUE ruby_arg6, VALUE ruby_arg7, VALUE ruby_arg8, VALUE ruby_arg9, VALUE ruby_arg10, VALUE ruby_arg11, VALUE ruby_arg12)
298
+ {
299
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_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;
300
+ try
301
+ {
302
+ void * data = detail::method_data();
303
+ wrapper =
304
+ (Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_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;
305
+ Self_T * obj = from_ruby<Self_T *>(self);
306
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3)); Arg4_T arg4(from_ruby<Arg4_T>(ruby_arg4)); Arg5_T arg5(from_ruby<Arg5_T>(ruby_arg5)); Arg6_T arg6(from_ruby<Arg6_T>(ruby_arg6)); Arg7_T arg7(from_ruby<Arg7_T>(ruby_arg7)); Arg8_T arg8(from_ruby<Arg8_T>(ruby_arg8)); Arg9_T arg9(from_ruby<Arg9_T>(ruby_arg9)); Arg10_T arg10(from_ruby<Arg10_T>(ruby_arg10)); Arg11_T arg11(from_ruby<Arg11_T>(ruby_arg11)); Arg12_T arg12(from_ruby<Arg12_T>(ruby_arg12));
307
+ Func func = wrapper->func_;
308
+ return to_ruby((*obj.*func)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12));
309
+ }
310
+ catch(...)
311
+ {
312
+ RUBY_TRY
313
+ {
314
+ if(wrapper)
315
+ {
316
+ return wrapper->handler_->handle_exception();
317
+ }
318
+ else
319
+ {
320
+ throw;
321
+ }
322
+ }
323
+ RUBY_CATCH
324
+ }
325
+ }
326
+
327
+ template<typename Func_T, typename Self_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>
328
+ Auto_Member_Function_Wrapper<Func_T, void, Self_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>::
329
+ Auto_Member_Function_Wrapper(
330
+ Func func,
331
+ Exception_Handler const * handler)
332
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
333
+ , func_(func)
334
+ , handler_(handler ? handler : new Default_Exception_Handler)
335
+ {
336
+ }
337
+
338
+ template<typename Func_T, typename Self_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>
339
+ VALUE Auto_Member_Function_Wrapper<Func_T, void, Self_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>::
340
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3, VALUE ruby_arg4, VALUE ruby_arg5, VALUE ruby_arg6, VALUE ruby_arg7, VALUE ruby_arg8, VALUE ruby_arg9, VALUE ruby_arg10, VALUE ruby_arg11, VALUE ruby_arg12)
341
+ {
342
+ Auto_Member_Function_Wrapper<Func_T, void, Self_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;
343
+ try
344
+ {
345
+ void * data = detail::method_data();
346
+ wrapper =
347
+ (Auto_Member_Function_Wrapper<Func_T, void, Self_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;
348
+ Self_T * obj = from_ruby<Self_T *>(self);
349
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3)); Arg4_T arg4(from_ruby<Arg4_T>(ruby_arg4)); Arg5_T arg5(from_ruby<Arg5_T>(ruby_arg5)); Arg6_T arg6(from_ruby<Arg6_T>(ruby_arg6)); Arg7_T arg7(from_ruby<Arg7_T>(ruby_arg7)); Arg8_T arg8(from_ruby<Arg8_T>(ruby_arg8)); Arg9_T arg9(from_ruby<Arg9_T>(ruby_arg9)); Arg10_T arg10(from_ruby<Arg10_T>(ruby_arg10)); Arg11_T arg11(from_ruby<Arg11_T>(ruby_arg11)); Arg12_T arg12(from_ruby<Arg12_T>(ruby_arg12));
350
+ Func func = wrapper->func_;
351
+ (*obj.*func)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12);
352
+ return Qnil;
353
+ }
354
+ catch(...)
355
+ {
356
+ RUBY_TRY
357
+ {
358
+ if(wrapper)
359
+ {
360
+ return wrapper->handler_->handle_exception();
361
+ }
362
+ else
363
+ {
364
+ throw;
365
+ }
366
+ }
367
+ RUBY_CATCH
368
+ }
369
+ }
370
+
371
+ // ---------------------------------------------------------------------
372
+ template<typename Func_T, typename Ret_T, typename Self_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>
373
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T>::
374
+ Auto_Member_Function_Wrapper(
375
+ Func func,
376
+ Exception_Handler const * handler)
377
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
378
+ , func_(func)
379
+ , handler_(handler ? handler : new Default_Exception_Handler)
380
+ {
381
+ }
382
+
383
+ template<typename Func_T, typename Ret_T, typename Self_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>
384
+ VALUE Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T>::
385
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3, VALUE ruby_arg4, VALUE ruby_arg5, VALUE ruby_arg6, VALUE ruby_arg7, VALUE ruby_arg8, VALUE ruby_arg9, VALUE ruby_arg10, VALUE ruby_arg11)
386
+ {
387
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_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;
388
+ try
389
+ {
390
+ void * data = detail::method_data();
391
+ wrapper =
392
+ (Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T> *)data;
393
+ Self_T * obj = from_ruby<Self_T *>(self);
394
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3)); Arg4_T arg4(from_ruby<Arg4_T>(ruby_arg4)); Arg5_T arg5(from_ruby<Arg5_T>(ruby_arg5)); Arg6_T arg6(from_ruby<Arg6_T>(ruby_arg6)); Arg7_T arg7(from_ruby<Arg7_T>(ruby_arg7)); Arg8_T arg8(from_ruby<Arg8_T>(ruby_arg8)); Arg9_T arg9(from_ruby<Arg9_T>(ruby_arg9)); Arg10_T arg10(from_ruby<Arg10_T>(ruby_arg10)); Arg11_T arg11(from_ruby<Arg11_T>(ruby_arg11));
395
+ Func func = wrapper->func_;
396
+ return to_ruby((*obj.*func)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11));
397
+ }
398
+ catch(...)
399
+ {
400
+ RUBY_TRY
401
+ {
402
+ if(wrapper)
403
+ {
404
+ return wrapper->handler_->handle_exception();
405
+ }
406
+ else
407
+ {
408
+ throw;
409
+ }
410
+ }
411
+ RUBY_CATCH
412
+ }
413
+ }
414
+
415
+ template<typename Func_T, typename Self_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>
416
+ Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T>::
417
+ Auto_Member_Function_Wrapper(
418
+ Func func,
419
+ Exception_Handler const * handler)
420
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
421
+ , func_(func)
422
+ , handler_(handler ? handler : new Default_Exception_Handler)
423
+ {
424
+ }
425
+
426
+ template<typename Func_T, typename Self_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>
427
+ VALUE Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T>::
428
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3, VALUE ruby_arg4, VALUE ruby_arg5, VALUE ruby_arg6, VALUE ruby_arg7, VALUE ruby_arg8, VALUE ruby_arg9, VALUE ruby_arg10, VALUE ruby_arg11)
429
+ {
430
+ Auto_Member_Function_Wrapper<Func_T, void, Self_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;
431
+ try
432
+ {
433
+ void * data = detail::method_data();
434
+ wrapper =
435
+ (Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T> *)data;
436
+ Self_T * obj = from_ruby<Self_T *>(self);
437
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3)); Arg4_T arg4(from_ruby<Arg4_T>(ruby_arg4)); Arg5_T arg5(from_ruby<Arg5_T>(ruby_arg5)); Arg6_T arg6(from_ruby<Arg6_T>(ruby_arg6)); Arg7_T arg7(from_ruby<Arg7_T>(ruby_arg7)); Arg8_T arg8(from_ruby<Arg8_T>(ruby_arg8)); Arg9_T arg9(from_ruby<Arg9_T>(ruby_arg9)); Arg10_T arg10(from_ruby<Arg10_T>(ruby_arg10)); Arg11_T arg11(from_ruby<Arg11_T>(ruby_arg11));
438
+ Func func = wrapper->func_;
439
+ (*obj.*func)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11);
440
+ return Qnil;
441
+ }
442
+ catch(...)
443
+ {
444
+ RUBY_TRY
445
+ {
446
+ if(wrapper)
447
+ {
448
+ return wrapper->handler_->handle_exception();
449
+ }
450
+ else
451
+ {
452
+ throw;
453
+ }
454
+ }
455
+ RUBY_CATCH
456
+ }
457
+ }
458
+
459
+ // ---------------------------------------------------------------------
460
+ template<typename Func_T, typename Ret_T, typename Self_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>
461
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T>::
462
+ Auto_Member_Function_Wrapper(
463
+ Func func,
464
+ Exception_Handler const * handler)
465
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
466
+ , func_(func)
467
+ , handler_(handler ? handler : new Default_Exception_Handler)
468
+ {
469
+ }
470
+
471
+ template<typename Func_T, typename Ret_T, typename Self_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>
472
+ VALUE Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T>::
473
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3, VALUE ruby_arg4, VALUE ruby_arg5, VALUE ruby_arg6, VALUE ruby_arg7, VALUE ruby_arg8, VALUE ruby_arg9, VALUE ruby_arg10)
474
+ {
475
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T> * wrapper = 0;
476
+ try
477
+ {
478
+ void * data = detail::method_data();
479
+ wrapper =
480
+ (Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T> *)data;
481
+ Self_T * obj = from_ruby<Self_T *>(self);
482
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3)); Arg4_T arg4(from_ruby<Arg4_T>(ruby_arg4)); Arg5_T arg5(from_ruby<Arg5_T>(ruby_arg5)); Arg6_T arg6(from_ruby<Arg6_T>(ruby_arg6)); Arg7_T arg7(from_ruby<Arg7_T>(ruby_arg7)); Arg8_T arg8(from_ruby<Arg8_T>(ruby_arg8)); Arg9_T arg9(from_ruby<Arg9_T>(ruby_arg9)); Arg10_T arg10(from_ruby<Arg10_T>(ruby_arg10));
483
+ Func func = wrapper->func_;
484
+ return to_ruby((*obj.*func)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10));
485
+ }
486
+ catch(...)
487
+ {
488
+ RUBY_TRY
489
+ {
490
+ if(wrapper)
491
+ {
492
+ return wrapper->handler_->handle_exception();
493
+ }
494
+ else
495
+ {
496
+ throw;
497
+ }
498
+ }
499
+ RUBY_CATCH
500
+ }
501
+ }
502
+
503
+ template<typename Func_T, typename Self_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>
504
+ Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T>::
505
+ Auto_Member_Function_Wrapper(
506
+ Func func,
507
+ Exception_Handler const * handler)
508
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
509
+ , func_(func)
510
+ , handler_(handler ? handler : new Default_Exception_Handler)
511
+ {
512
+ }
513
+
514
+ template<typename Func_T, typename Self_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>
515
+ VALUE Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T>::
516
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3, VALUE ruby_arg4, VALUE ruby_arg5, VALUE ruby_arg6, VALUE ruby_arg7, VALUE ruby_arg8, VALUE ruby_arg9, VALUE ruby_arg10)
517
+ {
518
+ Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T> * wrapper = 0;
519
+ try
520
+ {
521
+ void * data = detail::method_data();
522
+ wrapper =
523
+ (Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T> *)data;
524
+ Self_T * obj = from_ruby<Self_T *>(self);
525
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3)); Arg4_T arg4(from_ruby<Arg4_T>(ruby_arg4)); Arg5_T arg5(from_ruby<Arg5_T>(ruby_arg5)); Arg6_T arg6(from_ruby<Arg6_T>(ruby_arg6)); Arg7_T arg7(from_ruby<Arg7_T>(ruby_arg7)); Arg8_T arg8(from_ruby<Arg8_T>(ruby_arg8)); Arg9_T arg9(from_ruby<Arg9_T>(ruby_arg9)); Arg10_T arg10(from_ruby<Arg10_T>(ruby_arg10));
526
+ Func func = wrapper->func_;
527
+ (*obj.*func)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10);
528
+ return Qnil;
529
+ }
530
+ catch(...)
531
+ {
532
+ RUBY_TRY
533
+ {
534
+ if(wrapper)
535
+ {
536
+ return wrapper->handler_->handle_exception();
537
+ }
538
+ else
539
+ {
540
+ throw;
541
+ }
542
+ }
543
+ RUBY_CATCH
544
+ }
545
+ }
546
+
547
+ // ---------------------------------------------------------------------
548
+ template<typename Func_T, typename Ret_T, typename Self_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>
549
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T>::
550
+ Auto_Member_Function_Wrapper(
551
+ Func func,
552
+ Exception_Handler const * handler)
553
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
554
+ , func_(func)
555
+ , handler_(handler ? handler : new Default_Exception_Handler)
556
+ {
557
+ }
558
+
559
+ template<typename Func_T, typename Ret_T, typename Self_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>
560
+ VALUE Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T>::
561
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3, VALUE ruby_arg4, VALUE ruby_arg5, VALUE ruby_arg6, VALUE ruby_arg7, VALUE ruby_arg8, VALUE ruby_arg9)
562
+ {
563
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T> * wrapper = 0;
564
+ try
565
+ {
566
+ void * data = detail::method_data();
567
+ wrapper =
568
+ (Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T> *)data;
569
+ Self_T * obj = from_ruby<Self_T *>(self);
570
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3)); Arg4_T arg4(from_ruby<Arg4_T>(ruby_arg4)); Arg5_T arg5(from_ruby<Arg5_T>(ruby_arg5)); Arg6_T arg6(from_ruby<Arg6_T>(ruby_arg6)); Arg7_T arg7(from_ruby<Arg7_T>(ruby_arg7)); Arg8_T arg8(from_ruby<Arg8_T>(ruby_arg8)); Arg9_T arg9(from_ruby<Arg9_T>(ruby_arg9));
571
+ Func func = wrapper->func_;
572
+ return to_ruby((*obj.*func)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9));
573
+ }
574
+ catch(...)
575
+ {
576
+ RUBY_TRY
577
+ {
578
+ if(wrapper)
579
+ {
580
+ return wrapper->handler_->handle_exception();
581
+ }
582
+ else
583
+ {
584
+ throw;
585
+ }
586
+ }
587
+ RUBY_CATCH
588
+ }
589
+ }
590
+
591
+ template<typename Func_T, typename Self_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>
592
+ Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T>::
593
+ Auto_Member_Function_Wrapper(
594
+ Func func,
595
+ Exception_Handler const * handler)
596
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
597
+ , func_(func)
598
+ , handler_(handler ? handler : new Default_Exception_Handler)
599
+ {
600
+ }
601
+
602
+ template<typename Func_T, typename Self_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>
603
+ VALUE Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T>::
604
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3, VALUE ruby_arg4, VALUE ruby_arg5, VALUE ruby_arg6, VALUE ruby_arg7, VALUE ruby_arg8, VALUE ruby_arg9)
605
+ {
606
+ Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T> * wrapper = 0;
607
+ try
608
+ {
609
+ void * data = detail::method_data();
610
+ wrapper =
611
+ (Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T> *)data;
612
+ Self_T * obj = from_ruby<Self_T *>(self);
613
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3)); Arg4_T arg4(from_ruby<Arg4_T>(ruby_arg4)); Arg5_T arg5(from_ruby<Arg5_T>(ruby_arg5)); Arg6_T arg6(from_ruby<Arg6_T>(ruby_arg6)); Arg7_T arg7(from_ruby<Arg7_T>(ruby_arg7)); Arg8_T arg8(from_ruby<Arg8_T>(ruby_arg8)); Arg9_T arg9(from_ruby<Arg9_T>(ruby_arg9));
614
+ Func func = wrapper->func_;
615
+ (*obj.*func)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
616
+ return Qnil;
617
+ }
618
+ catch(...)
619
+ {
620
+ RUBY_TRY
621
+ {
622
+ if(wrapper)
623
+ {
624
+ return wrapper->handler_->handle_exception();
625
+ }
626
+ else
627
+ {
628
+ throw;
629
+ }
630
+ }
631
+ RUBY_CATCH
632
+ }
633
+ }
634
+
635
+ // ---------------------------------------------------------------------
636
+ template<typename Func_T, typename Ret_T, typename Self_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>
637
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T>::
638
+ Auto_Member_Function_Wrapper(
639
+ Func func,
640
+ Exception_Handler const * handler)
641
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
642
+ , func_(func)
643
+ , handler_(handler ? handler : new Default_Exception_Handler)
644
+ {
645
+ }
646
+
647
+ template<typename Func_T, typename Ret_T, typename Self_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>
648
+ VALUE Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T>::
649
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3, VALUE ruby_arg4, VALUE ruby_arg5, VALUE ruby_arg6, VALUE ruby_arg7, VALUE ruby_arg8)
650
+ {
651
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T> * wrapper = 0;
652
+ try
653
+ {
654
+ void * data = detail::method_data();
655
+ wrapper =
656
+ (Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T> *)data;
657
+ Self_T * obj = from_ruby<Self_T *>(self);
658
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3)); Arg4_T arg4(from_ruby<Arg4_T>(ruby_arg4)); Arg5_T arg5(from_ruby<Arg5_T>(ruby_arg5)); Arg6_T arg6(from_ruby<Arg6_T>(ruby_arg6)); Arg7_T arg7(from_ruby<Arg7_T>(ruby_arg7)); Arg8_T arg8(from_ruby<Arg8_T>(ruby_arg8));
659
+ Func func = wrapper->func_;
660
+ return to_ruby((*obj.*func)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8));
661
+ }
662
+ catch(...)
663
+ {
664
+ RUBY_TRY
665
+ {
666
+ if(wrapper)
667
+ {
668
+ return wrapper->handler_->handle_exception();
669
+ }
670
+ else
671
+ {
672
+ throw;
673
+ }
674
+ }
675
+ RUBY_CATCH
676
+ }
677
+ }
678
+
679
+ template<typename Func_T, typename Self_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>
680
+ Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T>::
681
+ Auto_Member_Function_Wrapper(
682
+ Func func,
683
+ Exception_Handler const * handler)
684
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
685
+ , func_(func)
686
+ , handler_(handler ? handler : new Default_Exception_Handler)
687
+ {
688
+ }
689
+
690
+ template<typename Func_T, typename Self_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>
691
+ VALUE Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T>::
692
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3, VALUE ruby_arg4, VALUE ruby_arg5, VALUE ruby_arg6, VALUE ruby_arg7, VALUE ruby_arg8)
693
+ {
694
+ Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T> * wrapper = 0;
695
+ try
696
+ {
697
+ void * data = detail::method_data();
698
+ wrapper =
699
+ (Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T> *)data;
700
+ Self_T * obj = from_ruby<Self_T *>(self);
701
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3)); Arg4_T arg4(from_ruby<Arg4_T>(ruby_arg4)); Arg5_T arg5(from_ruby<Arg5_T>(ruby_arg5)); Arg6_T arg6(from_ruby<Arg6_T>(ruby_arg6)); Arg7_T arg7(from_ruby<Arg7_T>(ruby_arg7)); Arg8_T arg8(from_ruby<Arg8_T>(ruby_arg8));
702
+ Func func = wrapper->func_;
703
+ (*obj.*func)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
704
+ return Qnil;
705
+ }
706
+ catch(...)
707
+ {
708
+ RUBY_TRY
709
+ {
710
+ if(wrapper)
711
+ {
712
+ return wrapper->handler_->handle_exception();
713
+ }
714
+ else
715
+ {
716
+ throw;
717
+ }
718
+ }
719
+ RUBY_CATCH
720
+ }
721
+ }
722
+
723
+ // ---------------------------------------------------------------------
724
+ template<typename Func_T, typename Ret_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T>
725
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T>::
726
+ Auto_Member_Function_Wrapper(
727
+ Func func,
728
+ Exception_Handler const * handler)
729
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
730
+ , func_(func)
731
+ , handler_(handler ? handler : new Default_Exception_Handler)
732
+ {
733
+ }
734
+
735
+ template<typename Func_T, typename Ret_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T>
736
+ VALUE Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T>::
737
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3, VALUE ruby_arg4, VALUE ruby_arg5, VALUE ruby_arg6, VALUE ruby_arg7)
738
+ {
739
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T> * wrapper = 0;
740
+ try
741
+ {
742
+ void * data = detail::method_data();
743
+ wrapper =
744
+ (Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T> *)data;
745
+ Self_T * obj = from_ruby<Self_T *>(self);
746
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3)); Arg4_T arg4(from_ruby<Arg4_T>(ruby_arg4)); Arg5_T arg5(from_ruby<Arg5_T>(ruby_arg5)); Arg6_T arg6(from_ruby<Arg6_T>(ruby_arg6)); Arg7_T arg7(from_ruby<Arg7_T>(ruby_arg7));
747
+ Func func = wrapper->func_;
748
+ return to_ruby((*obj.*func)(arg1, arg2, arg3, arg4, arg5, arg6, arg7));
749
+ }
750
+ catch(...)
751
+ {
752
+ RUBY_TRY
753
+ {
754
+ if(wrapper)
755
+ {
756
+ return wrapper->handler_->handle_exception();
757
+ }
758
+ else
759
+ {
760
+ throw;
761
+ }
762
+ }
763
+ RUBY_CATCH
764
+ }
765
+ }
766
+
767
+ template<typename Func_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T>
768
+ Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T>::
769
+ Auto_Member_Function_Wrapper(
770
+ Func func,
771
+ Exception_Handler const * handler)
772
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
773
+ , func_(func)
774
+ , handler_(handler ? handler : new Default_Exception_Handler)
775
+ {
776
+ }
777
+
778
+ template<typename Func_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T>
779
+ VALUE Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T>::
780
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3, VALUE ruby_arg4, VALUE ruby_arg5, VALUE ruby_arg6, VALUE ruby_arg7)
781
+ {
782
+ Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T> * wrapper = 0;
783
+ try
784
+ {
785
+ void * data = detail::method_data();
786
+ wrapper =
787
+ (Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T> *)data;
788
+ Self_T * obj = from_ruby<Self_T *>(self);
789
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3)); Arg4_T arg4(from_ruby<Arg4_T>(ruby_arg4)); Arg5_T arg5(from_ruby<Arg5_T>(ruby_arg5)); Arg6_T arg6(from_ruby<Arg6_T>(ruby_arg6)); Arg7_T arg7(from_ruby<Arg7_T>(ruby_arg7));
790
+ Func func = wrapper->func_;
791
+ (*obj.*func)(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
792
+ return Qnil;
793
+ }
794
+ catch(...)
795
+ {
796
+ RUBY_TRY
797
+ {
798
+ if(wrapper)
799
+ {
800
+ return wrapper->handler_->handle_exception();
801
+ }
802
+ else
803
+ {
804
+ throw;
805
+ }
806
+ }
807
+ RUBY_CATCH
808
+ }
809
+ }
810
+
811
+ // ---------------------------------------------------------------------
812
+ template<typename Func_T, typename Ret_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T>
813
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T>::
814
+ Auto_Member_Function_Wrapper(
815
+ Func func,
816
+ Exception_Handler const * handler)
817
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
818
+ , func_(func)
819
+ , handler_(handler ? handler : new Default_Exception_Handler)
820
+ {
821
+ }
822
+
823
+ template<typename Func_T, typename Ret_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T>
824
+ VALUE Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T>::
825
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3, VALUE ruby_arg4, VALUE ruby_arg5, VALUE ruby_arg6)
826
+ {
827
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T> * wrapper = 0;
828
+ try
829
+ {
830
+ void * data = detail::method_data();
831
+ wrapper =
832
+ (Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T> *)data;
833
+ Self_T * obj = from_ruby<Self_T *>(self);
834
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3)); Arg4_T arg4(from_ruby<Arg4_T>(ruby_arg4)); Arg5_T arg5(from_ruby<Arg5_T>(ruby_arg5)); Arg6_T arg6(from_ruby<Arg6_T>(ruby_arg6));
835
+ Func func = wrapper->func_;
836
+ return to_ruby((*obj.*func)(arg1, arg2, arg3, arg4, arg5, arg6));
837
+ }
838
+ catch(...)
839
+ {
840
+ RUBY_TRY
841
+ {
842
+ if(wrapper)
843
+ {
844
+ return wrapper->handler_->handle_exception();
845
+ }
846
+ else
847
+ {
848
+ throw;
849
+ }
850
+ }
851
+ RUBY_CATCH
852
+ }
853
+ }
854
+
855
+ template<typename Func_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T>
856
+ Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T>::
857
+ Auto_Member_Function_Wrapper(
858
+ Func func,
859
+ Exception_Handler const * handler)
860
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
861
+ , func_(func)
862
+ , handler_(handler ? handler : new Default_Exception_Handler)
863
+ {
864
+ }
865
+
866
+ template<typename Func_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T>
867
+ VALUE Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T>::
868
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3, VALUE ruby_arg4, VALUE ruby_arg5, VALUE ruby_arg6)
869
+ {
870
+ Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T> * wrapper = 0;
871
+ try
872
+ {
873
+ void * data = detail::method_data();
874
+ wrapper =
875
+ (Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T> *)data;
876
+ Self_T * obj = from_ruby<Self_T *>(self);
877
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3)); Arg4_T arg4(from_ruby<Arg4_T>(ruby_arg4)); Arg5_T arg5(from_ruby<Arg5_T>(ruby_arg5)); Arg6_T arg6(from_ruby<Arg6_T>(ruby_arg6));
878
+ Func func = wrapper->func_;
879
+ (*obj.*func)(arg1, arg2, arg3, arg4, arg5, arg6);
880
+ return Qnil;
881
+ }
882
+ catch(...)
883
+ {
884
+ RUBY_TRY
885
+ {
886
+ if(wrapper)
887
+ {
888
+ return wrapper->handler_->handle_exception();
889
+ }
890
+ else
891
+ {
892
+ throw;
893
+ }
894
+ }
895
+ RUBY_CATCH
896
+ }
897
+ }
898
+
899
+ // ---------------------------------------------------------------------
900
+ template<typename Func_T, typename Ret_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T>
901
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T>::
902
+ Auto_Member_Function_Wrapper(
903
+ Func func,
904
+ Exception_Handler const * handler)
905
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
906
+ , func_(func)
907
+ , handler_(handler ? handler : new Default_Exception_Handler)
908
+ {
909
+ }
910
+
911
+ template<typename Func_T, typename Ret_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T>
912
+ VALUE Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T>::
913
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3, VALUE ruby_arg4, VALUE ruby_arg5)
914
+ {
915
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T> * wrapper = 0;
916
+ try
917
+ {
918
+ void * data = detail::method_data();
919
+ wrapper =
920
+ (Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T> *)data;
921
+ Self_T * obj = from_ruby<Self_T *>(self);
922
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3)); Arg4_T arg4(from_ruby<Arg4_T>(ruby_arg4)); Arg5_T arg5(from_ruby<Arg5_T>(ruby_arg5));
923
+ Func func = wrapper->func_;
924
+ return to_ruby((*obj.*func)(arg1, arg2, arg3, arg4, arg5));
925
+ }
926
+ catch(...)
927
+ {
928
+ RUBY_TRY
929
+ {
930
+ if(wrapper)
931
+ {
932
+ return wrapper->handler_->handle_exception();
933
+ }
934
+ else
935
+ {
936
+ throw;
937
+ }
938
+ }
939
+ RUBY_CATCH
940
+ }
941
+ }
942
+
943
+ template<typename Func_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T>
944
+ Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T>::
945
+ Auto_Member_Function_Wrapper(
946
+ Func func,
947
+ Exception_Handler const * handler)
948
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
949
+ , func_(func)
950
+ , handler_(handler ? handler : new Default_Exception_Handler)
951
+ {
952
+ }
953
+
954
+ template<typename Func_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T>
955
+ VALUE Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T>::
956
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3, VALUE ruby_arg4, VALUE ruby_arg5)
957
+ {
958
+ Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T> * wrapper = 0;
959
+ try
960
+ {
961
+ void * data = detail::method_data();
962
+ wrapper =
963
+ (Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T> *)data;
964
+ Self_T * obj = from_ruby<Self_T *>(self);
965
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3)); Arg4_T arg4(from_ruby<Arg4_T>(ruby_arg4)); Arg5_T arg5(from_ruby<Arg5_T>(ruby_arg5));
966
+ Func func = wrapper->func_;
967
+ (*obj.*func)(arg1, arg2, arg3, arg4, arg5);
968
+ return Qnil;
969
+ }
970
+ catch(...)
971
+ {
972
+ RUBY_TRY
973
+ {
974
+ if(wrapper)
975
+ {
976
+ return wrapper->handler_->handle_exception();
977
+ }
978
+ else
979
+ {
980
+ throw;
981
+ }
982
+ }
983
+ RUBY_CATCH
984
+ }
985
+ }
986
+
987
+ // ---------------------------------------------------------------------
988
+ template<typename Func_T, typename Ret_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T>
989
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T>::
990
+ Auto_Member_Function_Wrapper(
991
+ Func func,
992
+ Exception_Handler const * handler)
993
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
994
+ , func_(func)
995
+ , handler_(handler ? handler : new Default_Exception_Handler)
996
+ {
997
+ }
998
+
999
+ template<typename Func_T, typename Ret_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T>
1000
+ VALUE Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T>::
1001
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3, VALUE ruby_arg4)
1002
+ {
1003
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T> * wrapper = 0;
1004
+ try
1005
+ {
1006
+ void * data = detail::method_data();
1007
+ wrapper =
1008
+ (Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T> *)data;
1009
+ Self_T * obj = from_ruby<Self_T *>(self);
1010
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3)); Arg4_T arg4(from_ruby<Arg4_T>(ruby_arg4));
1011
+ Func func = wrapper->func_;
1012
+ return to_ruby((*obj.*func)(arg1, arg2, arg3, arg4));
1013
+ }
1014
+ catch(...)
1015
+ {
1016
+ RUBY_TRY
1017
+ {
1018
+ if(wrapper)
1019
+ {
1020
+ return wrapper->handler_->handle_exception();
1021
+ }
1022
+ else
1023
+ {
1024
+ throw;
1025
+ }
1026
+ }
1027
+ RUBY_CATCH
1028
+ }
1029
+ }
1030
+
1031
+ template<typename Func_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T>
1032
+ Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T>::
1033
+ Auto_Member_Function_Wrapper(
1034
+ Func func,
1035
+ Exception_Handler const * handler)
1036
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
1037
+ , func_(func)
1038
+ , handler_(handler ? handler : new Default_Exception_Handler)
1039
+ {
1040
+ }
1041
+
1042
+ template<typename Func_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T>
1043
+ VALUE Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T>::
1044
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3, VALUE ruby_arg4)
1045
+ {
1046
+ Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T> * wrapper = 0;
1047
+ try
1048
+ {
1049
+ void * data = detail::method_data();
1050
+ wrapper =
1051
+ (Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T> *)data;
1052
+ Self_T * obj = from_ruby<Self_T *>(self);
1053
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3)); Arg4_T arg4(from_ruby<Arg4_T>(ruby_arg4));
1054
+ Func func = wrapper->func_;
1055
+ (*obj.*func)(arg1, arg2, arg3, arg4);
1056
+ return Qnil;
1057
+ }
1058
+ catch(...)
1059
+ {
1060
+ RUBY_TRY
1061
+ {
1062
+ if(wrapper)
1063
+ {
1064
+ return wrapper->handler_->handle_exception();
1065
+ }
1066
+ else
1067
+ {
1068
+ throw;
1069
+ }
1070
+ }
1071
+ RUBY_CATCH
1072
+ }
1073
+ }
1074
+
1075
+ // ---------------------------------------------------------------------
1076
+ template<typename Func_T, typename Ret_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T>
1077
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T>::
1078
+ Auto_Member_Function_Wrapper(
1079
+ Func func,
1080
+ Exception_Handler const * handler)
1081
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
1082
+ , func_(func)
1083
+ , handler_(handler ? handler : new Default_Exception_Handler)
1084
+ {
1085
+ }
1086
+
1087
+ template<typename Func_T, typename Ret_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T>
1088
+ VALUE Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T>::
1089
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3)
1090
+ {
1091
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T> * wrapper = 0;
1092
+ try
1093
+ {
1094
+ void * data = detail::method_data();
1095
+ wrapper =
1096
+ (Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T> *)data;
1097
+ Self_T * obj = from_ruby<Self_T *>(self);
1098
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3));
1099
+ Func func = wrapper->func_;
1100
+ return to_ruby((*obj.*func)(arg1, arg2, arg3));
1101
+ }
1102
+ catch(...)
1103
+ {
1104
+ RUBY_TRY
1105
+ {
1106
+ if(wrapper)
1107
+ {
1108
+ return wrapper->handler_->handle_exception();
1109
+ }
1110
+ else
1111
+ {
1112
+ throw;
1113
+ }
1114
+ }
1115
+ RUBY_CATCH
1116
+ }
1117
+ }
1118
+
1119
+ template<typename Func_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T>
1120
+ Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T>::
1121
+ Auto_Member_Function_Wrapper(
1122
+ Func func,
1123
+ Exception_Handler const * handler)
1124
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
1125
+ , func_(func)
1126
+ , handler_(handler ? handler : new Default_Exception_Handler)
1127
+ {
1128
+ }
1129
+
1130
+ template<typename Func_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T>
1131
+ VALUE Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T>::
1132
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2, VALUE ruby_arg3)
1133
+ {
1134
+ Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T> * wrapper = 0;
1135
+ try
1136
+ {
1137
+ void * data = detail::method_data();
1138
+ wrapper =
1139
+ (Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T, Arg3_T> *)data;
1140
+ Self_T * obj = from_ruby<Self_T *>(self);
1141
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2)); Arg3_T arg3(from_ruby<Arg3_T>(ruby_arg3));
1142
+ Func func = wrapper->func_;
1143
+ (*obj.*func)(arg1, arg2, arg3);
1144
+ return Qnil;
1145
+ }
1146
+ catch(...)
1147
+ {
1148
+ RUBY_TRY
1149
+ {
1150
+ if(wrapper)
1151
+ {
1152
+ return wrapper->handler_->handle_exception();
1153
+ }
1154
+ else
1155
+ {
1156
+ throw;
1157
+ }
1158
+ }
1159
+ RUBY_CATCH
1160
+ }
1161
+ }
1162
+
1163
+ // ---------------------------------------------------------------------
1164
+ template<typename Func_T, typename Ret_T, typename Self_T, typename Arg1_T, typename Arg2_T>
1165
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T>::
1166
+ Auto_Member_Function_Wrapper(
1167
+ Func func,
1168
+ Exception_Handler const * handler)
1169
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
1170
+ , func_(func)
1171
+ , handler_(handler ? handler : new Default_Exception_Handler)
1172
+ {
1173
+ }
1174
+
1175
+ template<typename Func_T, typename Ret_T, typename Self_T, typename Arg1_T, typename Arg2_T>
1176
+ VALUE Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T>::
1177
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2)
1178
+ {
1179
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T> * wrapper = 0;
1180
+ try
1181
+ {
1182
+ void * data = detail::method_data();
1183
+ wrapper =
1184
+ (Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T, Arg2_T> *)data;
1185
+ Self_T * obj = from_ruby<Self_T *>(self);
1186
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2));
1187
+ Func func = wrapper->func_;
1188
+ return to_ruby((*obj.*func)(arg1, arg2));
1189
+ }
1190
+ catch(...)
1191
+ {
1192
+ RUBY_TRY
1193
+ {
1194
+ if(wrapper)
1195
+ {
1196
+ return wrapper->handler_->handle_exception();
1197
+ }
1198
+ else
1199
+ {
1200
+ throw;
1201
+ }
1202
+ }
1203
+ RUBY_CATCH
1204
+ }
1205
+ }
1206
+
1207
+ template<typename Func_T, typename Self_T, typename Arg1_T, typename Arg2_T>
1208
+ Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T>::
1209
+ Auto_Member_Function_Wrapper(
1210
+ Func func,
1211
+ Exception_Handler const * handler)
1212
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
1213
+ , func_(func)
1214
+ , handler_(handler ? handler : new Default_Exception_Handler)
1215
+ {
1216
+ }
1217
+
1218
+ template<typename Func_T, typename Self_T, typename Arg1_T, typename Arg2_T>
1219
+ VALUE Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T>::
1220
+ call(VALUE self, VALUE ruby_arg1, VALUE ruby_arg2)
1221
+ {
1222
+ Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T> * wrapper = 0;
1223
+ try
1224
+ {
1225
+ void * data = detail::method_data();
1226
+ wrapper =
1227
+ (Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T, Arg2_T> *)data;
1228
+ Self_T * obj = from_ruby<Self_T *>(self);
1229
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1)); Arg2_T arg2(from_ruby<Arg2_T>(ruby_arg2));
1230
+ Func func = wrapper->func_;
1231
+ (*obj.*func)(arg1, arg2);
1232
+ return Qnil;
1233
+ }
1234
+ catch(...)
1235
+ {
1236
+ RUBY_TRY
1237
+ {
1238
+ if(wrapper)
1239
+ {
1240
+ return wrapper->handler_->handle_exception();
1241
+ }
1242
+ else
1243
+ {
1244
+ throw;
1245
+ }
1246
+ }
1247
+ RUBY_CATCH
1248
+ }
1249
+ }
1250
+
1251
+ // ---------------------------------------------------------------------
1252
+ template<typename Func_T, typename Ret_T, typename Self_T, typename Arg1_T>
1253
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T>::
1254
+ Auto_Member_Function_Wrapper(
1255
+ Func func,
1256
+ Exception_Handler const * handler)
1257
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
1258
+ , func_(func)
1259
+ , handler_(handler ? handler : new Default_Exception_Handler)
1260
+ {
1261
+ }
1262
+
1263
+ template<typename Func_T, typename Ret_T, typename Self_T, typename Arg1_T>
1264
+ VALUE Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T>::
1265
+ call(VALUE self, VALUE ruby_arg1)
1266
+ {
1267
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T> * wrapper = 0;
1268
+ try
1269
+ {
1270
+ void * data = detail::method_data();
1271
+ wrapper =
1272
+ (Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T, Arg1_T> *)data;
1273
+ Self_T * obj = from_ruby<Self_T *>(self);
1274
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1));
1275
+ Func func = wrapper->func_;
1276
+ return to_ruby((*obj.*func)(arg1));
1277
+ }
1278
+ catch(...)
1279
+ {
1280
+ RUBY_TRY
1281
+ {
1282
+ if(wrapper)
1283
+ {
1284
+ return wrapper->handler_->handle_exception();
1285
+ }
1286
+ else
1287
+ {
1288
+ throw;
1289
+ }
1290
+ }
1291
+ RUBY_CATCH
1292
+ }
1293
+ }
1294
+
1295
+ template<typename Func_T, typename Self_T, typename Arg1_T>
1296
+ Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T>::
1297
+ Auto_Member_Function_Wrapper(
1298
+ Func func,
1299
+ Exception_Handler const * handler)
1300
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
1301
+ , func_(func)
1302
+ , handler_(handler ? handler : new Default_Exception_Handler)
1303
+ {
1304
+ }
1305
+
1306
+ template<typename Func_T, typename Self_T, typename Arg1_T>
1307
+ VALUE Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T>::
1308
+ call(VALUE self, VALUE ruby_arg1)
1309
+ {
1310
+ Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T> * wrapper = 0;
1311
+ try
1312
+ {
1313
+ void * data = detail::method_data();
1314
+ wrapper =
1315
+ (Auto_Member_Function_Wrapper<Func_T, void, Self_T, Arg1_T> *)data;
1316
+ Self_T * obj = from_ruby<Self_T *>(self);
1317
+ Arg1_T arg1(from_ruby<Arg1_T>(ruby_arg1));
1318
+ Func func = wrapper->func_;
1319
+ (*obj.*func)(arg1);
1320
+ return Qnil;
1321
+ }
1322
+ catch(...)
1323
+ {
1324
+ RUBY_TRY
1325
+ {
1326
+ if(wrapper)
1327
+ {
1328
+ return wrapper->handler_->handle_exception();
1329
+ }
1330
+ else
1331
+ {
1332
+ throw;
1333
+ }
1334
+ }
1335
+ RUBY_CATCH
1336
+ }
1337
+ }
1338
+
1339
+ // ---------------------------------------------------------------------
1340
+ template<typename Func_T, typename Ret_T, typename Self_T>
1341
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T>::
1342
+ Auto_Member_Function_Wrapper(
1343
+ Func func,
1344
+ Exception_Handler const * handler)
1345
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
1346
+ , func_(func)
1347
+ , handler_(handler ? handler : new Default_Exception_Handler)
1348
+ {
1349
+ }
1350
+
1351
+ template<typename Func_T, typename Ret_T, typename Self_T>
1352
+ VALUE Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T>::
1353
+ call(VALUE self)
1354
+ {
1355
+ Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T> * wrapper = 0;
1356
+ try
1357
+ {
1358
+ void * data = detail::method_data();
1359
+ wrapper =
1360
+ (Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T> *)data;
1361
+ Self_T * obj = from_ruby<Self_T *>(self);
1362
+
1363
+ Func func = wrapper->func_;
1364
+ return to_ruby((*obj.*func)());
1365
+ }
1366
+ catch(...)
1367
+ {
1368
+ RUBY_TRY
1369
+ {
1370
+ if(wrapper)
1371
+ {
1372
+ return wrapper->handler_->handle_exception();
1373
+ }
1374
+ else
1375
+ {
1376
+ throw;
1377
+ }
1378
+ }
1379
+ RUBY_CATCH
1380
+ }
1381
+ }
1382
+
1383
+ template<typename Func_T, typename Self_T>
1384
+ Auto_Member_Function_Wrapper<Func_T, void, Self_T>::
1385
+ Auto_Member_Function_Wrapper(
1386
+ Func func,
1387
+ Exception_Handler const * handler)
1388
+ : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
1389
+ , func_(func)
1390
+ , handler_(handler ? handler : new Default_Exception_Handler)
1391
+ {
1392
+ }
1393
+
1394
+ template<typename Func_T, typename Self_T>
1395
+ VALUE Auto_Member_Function_Wrapper<Func_T, void, Self_T>::
1396
+ call(VALUE self)
1397
+ {
1398
+ Auto_Member_Function_Wrapper<Func_T, void, Self_T> * wrapper = 0;
1399
+ try
1400
+ {
1401
+ void * data = detail::method_data();
1402
+ wrapper =
1403
+ (Auto_Member_Function_Wrapper<Func_T, void, Self_T> *)data;
1404
+ Self_T * obj = from_ruby<Self_T *>(self);
1405
+
1406
+ Func func = wrapper->func_;
1407
+ (*obj.*func)();
1408
+ return Qnil;
1409
+ }
1410
+ catch(...)
1411
+ {
1412
+ RUBY_TRY
1413
+ {
1414
+ if(wrapper)
1415
+ {
1416
+ return wrapper->handler_->handle_exception();
1417
+ }
1418
+ else
1419
+ {
1420
+ throw;
1421
+ }
1422
+ }
1423
+ RUBY_CATCH
1424
+ }
1425
+ }
1426
+
1427
+ // ---------------------------------------------------------------------
1428
+
1429
+ } // namespace detail
1430
+
1431
+ } // namespace Rice
1432
+
1433
+
1434
+ #endif // Rice__detail__Auto_Member_Function_Wrapper__ipp_
1435
+