rice 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
+