rice2 2.2.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 (190) hide show
  1. checksums.yaml +7 -0
  2. data/COPYING +23 -0
  3. data/Doxyfile +2268 -0
  4. data/Makefile.am +26 -0
  5. data/Makefile.in +929 -0
  6. data/README.md +1054 -0
  7. data/README.mingw +8 -0
  8. data/Rakefile +24 -0
  9. data/aclocal.m4 +1090 -0
  10. data/bootstrap +8 -0
  11. data/config.guess +1667 -0
  12. data/config.sub +1793 -0
  13. data/configure +8209 -0
  14. data/configure.ac +55 -0
  15. data/depcomp +791 -0
  16. data/doxygen.ac +314 -0
  17. data/doxygen.am +186 -0
  18. data/extconf.rb +66 -0
  19. data/install-sh +529 -0
  20. data/missing +215 -0
  21. data/post-autoconf.rb +22 -0
  22. data/post-automake.rb +28 -0
  23. data/rice/Address_Registration_Guard.cpp +22 -0
  24. data/rice/Address_Registration_Guard.hpp +7 -0
  25. data/rice/Address_Registration_Guard.ipp +37 -0
  26. data/rice/Address_Registration_Guard_defn.hpp +75 -0
  27. data/rice/Arg.hpp +8 -0
  28. data/rice/Arg_impl.hpp +129 -0
  29. data/rice/Arg_operators.cpp +21 -0
  30. data/rice/Arg_operators.hpp +19 -0
  31. data/rice/Array.hpp +214 -0
  32. data/rice/Array.ipp +256 -0
  33. data/rice/Builtin_Object.hpp +8 -0
  34. data/rice/Builtin_Object.ipp +50 -0
  35. data/rice/Builtin_Object_defn.hpp +50 -0
  36. data/rice/Class.cpp +57 -0
  37. data/rice/Class.hpp +8 -0
  38. data/rice/Class.ipp +6 -0
  39. data/rice/Class_defn.hpp +83 -0
  40. data/rice/Constructor.hpp +47 -0
  41. data/rice/Data_Object.hpp +8 -0
  42. data/rice/Data_Object.ipp +133 -0
  43. data/rice/Data_Object_defn.hpp +138 -0
  44. data/rice/Data_Type.cpp +54 -0
  45. data/rice/Data_Type.hpp +8 -0
  46. data/rice/Data_Type.ipp +365 -0
  47. data/rice/Data_Type_defn.hpp +261 -0
  48. data/rice/Data_Type_fwd.hpp +12 -0
  49. data/rice/Director.cpp +13 -0
  50. data/rice/Director.hpp +39 -0
  51. data/rice/Enum.hpp +117 -0
  52. data/rice/Enum.ipp +246 -0
  53. data/rice/Exception.cpp +59 -0
  54. data/rice/Exception.hpp +13 -0
  55. data/rice/Exception_Base.hpp +8 -0
  56. data/rice/Exception_Base.ipp +13 -0
  57. data/rice/Exception_Base_defn.hpp +27 -0
  58. data/rice/Exception_defn.hpp +69 -0
  59. data/rice/Hash.hpp +227 -0
  60. data/rice/Hash.ipp +329 -0
  61. data/rice/Identifier.cpp +8 -0
  62. data/rice/Identifier.hpp +50 -0
  63. data/rice/Identifier.ipp +33 -0
  64. data/rice/Jump_Tag.hpp +24 -0
  65. data/rice/Makefile.am +122 -0
  66. data/rice/Makefile.in +885 -0
  67. data/rice/Module.cpp +84 -0
  68. data/rice/Module.hpp +8 -0
  69. data/rice/Module.ipp +6 -0
  70. data/rice/Module_defn.hpp +88 -0
  71. data/rice/Module_impl.hpp +281 -0
  72. data/rice/Module_impl.ipp +345 -0
  73. data/rice/Object.cpp +169 -0
  74. data/rice/Object.hpp +8 -0
  75. data/rice/Object.ipp +33 -0
  76. data/rice/Object_defn.hpp +214 -0
  77. data/rice/Require_Guard.hpp +21 -0
  78. data/rice/String.cpp +94 -0
  79. data/rice/String.hpp +91 -0
  80. data/rice/Struct.cpp +117 -0
  81. data/rice/Struct.hpp +162 -0
  82. data/rice/Struct.ipp +26 -0
  83. data/rice/Symbol.cpp +25 -0
  84. data/rice/Symbol.hpp +66 -0
  85. data/rice/Symbol.ipp +44 -0
  86. data/rice/config.hpp +47 -0
  87. data/rice/config.hpp.in +46 -0
  88. data/rice/detail/Arguments.hpp +118 -0
  89. data/rice/detail/Auto_Function_Wrapper.hpp +898 -0
  90. data/rice/detail/Auto_Function_Wrapper.ipp +3694 -0
  91. data/rice/detail/Auto_Member_Function_Wrapper.hpp +897 -0
  92. data/rice/detail/Auto_Member_Function_Wrapper.ipp +2774 -0
  93. data/rice/detail/Caster.hpp +103 -0
  94. data/rice/detail/Exception_Handler.hpp +8 -0
  95. data/rice/detail/Exception_Handler.ipp +68 -0
  96. data/rice/detail/Exception_Handler_defn.hpp +96 -0
  97. data/rice/detail/Iterator.hpp +93 -0
  98. data/rice/detail/Not_Copyable.hpp +25 -0
  99. data/rice/detail/Wrapped_Function.hpp +33 -0
  100. data/rice/detail/cfp.hpp +24 -0
  101. data/rice/detail/cfp.ipp +51 -0
  102. data/rice/detail/check_ruby_type.cpp +27 -0
  103. data/rice/detail/check_ruby_type.hpp +23 -0
  104. data/rice/detail/creation_funcs.hpp +37 -0
  105. data/rice/detail/creation_funcs.ipp +36 -0
  106. data/rice/detail/default_allocation_func.hpp +23 -0
  107. data/rice/detail/default_allocation_func.ipp +11 -0
  108. data/rice/detail/define_method_and_auto_wrap.hpp +31 -0
  109. data/rice/detail/define_method_and_auto_wrap.ipp +30 -0
  110. data/rice/detail/demangle.cpp +56 -0
  111. data/rice/detail/demangle.hpp +19 -0
  112. data/rice/detail/env.hpp +11 -0
  113. data/rice/detail/from_ruby.hpp +43 -0
  114. data/rice/detail/from_ruby.ipp +60 -0
  115. data/rice/detail/method_data.cpp +92 -0
  116. data/rice/detail/method_data.hpp +21 -0
  117. data/rice/detail/node.hpp +13 -0
  118. data/rice/detail/protect.cpp +29 -0
  119. data/rice/detail/protect.hpp +34 -0
  120. data/rice/detail/ruby.hpp +74 -0
  121. data/rice/detail/ruby_version_code.hpp +6 -0
  122. data/rice/detail/ruby_version_code.hpp.in +6 -0
  123. data/rice/detail/st.hpp +22 -0
  124. data/rice/detail/to_ruby.hpp +22 -0
  125. data/rice/detail/to_ruby.ipp +36 -0
  126. data/rice/detail/traits.hpp +43 -0
  127. data/rice/detail/win32.hpp +16 -0
  128. data/rice/detail/wrap_function.hpp +66 -0
  129. data/rice/global_function.hpp +33 -0
  130. data/rice/global_function.ipp +22 -0
  131. data/rice/protect.hpp +38 -0
  132. data/rice/protect.ipp +1134 -0
  133. data/rice/ruby_mark.hpp +13 -0
  134. data/rice/ruby_try_catch.hpp +86 -0
  135. data/rice/rubypp.rb +97 -0
  136. data/rice/to_from_ruby.hpp +8 -0
  137. data/rice/to_from_ruby.ipp +418 -0
  138. data/rice/to_from_ruby_defn.hpp +70 -0
  139. data/ruby.ac +135 -0
  140. data/ruby/Makefile.am +1 -0
  141. data/ruby/Makefile.in +628 -0
  142. data/ruby/lib/Makefile.am +3 -0
  143. data/ruby/lib/Makefile.in +506 -0
  144. data/ruby/lib/mkmf-rice.rb.in +217 -0
  145. data/ruby/lib/version.rb +3 -0
  146. data/sample/Makefile.am +47 -0
  147. data/sample/Makefile.in +489 -0
  148. data/sample/enum/extconf.rb +3 -0
  149. data/sample/enum/sample_enum.cpp +54 -0
  150. data/sample/enum/test.rb +8 -0
  151. data/sample/inheritance/animals.cpp +98 -0
  152. data/sample/inheritance/extconf.rb +3 -0
  153. data/sample/inheritance/test.rb +7 -0
  154. data/sample/map/extconf.rb +3 -0
  155. data/sample/map/map.cpp +81 -0
  156. data/sample/map/test.rb +7 -0
  157. data/test/Makefile.am +72 -0
  158. data/test/Makefile.in +1213 -0
  159. data/test/ext/Makefile.am +41 -0
  160. data/test/ext/Makefile.in +483 -0
  161. data/test/ext/t1/Foo.hpp +10 -0
  162. data/test/ext/t1/extconf.rb +2 -0
  163. data/test/ext/t1/t1.cpp +15 -0
  164. data/test/ext/t2/extconf.rb +2 -0
  165. data/test/ext/t2/t2.cpp +11 -0
  166. data/test/test_Address_Registration_Guard.cpp +43 -0
  167. data/test/test_Array.cpp +248 -0
  168. data/test/test_Builtin_Object.cpp +71 -0
  169. data/test/test_Class.cpp +496 -0
  170. data/test/test_Constructor.cpp +128 -0
  171. data/test/test_Data_Object.cpp +275 -0
  172. data/test/test_Data_Type.cpp +348 -0
  173. data/test/test_Director.cpp +308 -0
  174. data/test/test_Enum.cpp +215 -0
  175. data/test/test_Exception.cpp +47 -0
  176. data/test/test_Hash.cpp +212 -0
  177. data/test/test_Identifier.cpp +70 -0
  178. data/test/test_Jump_Tag.cpp +17 -0
  179. data/test/test_Memory_Management.cpp +50 -0
  180. data/test/test_Module.cpp +497 -0
  181. data/test/test_Object.cpp +159 -0
  182. data/test/test_String.cpp +107 -0
  183. data/test/test_Struct.cpp +205 -0
  184. data/test/test_Symbol.cpp +63 -0
  185. data/test/test_To_From_Ruby.cpp +428 -0
  186. data/test/test_global_functions.cpp +114 -0
  187. data/test/test_rice.rb +41 -0
  188. data/test/unittest.cpp +136 -0
  189. data/test/unittest.hpp +294 -0
  190. metadata +297 -0
@@ -0,0 +1,46 @@
1
+ /* rice/config.hpp.in. Generated from configure.ac by autoheader. */
2
+
3
+ /* define if the compiler supports basic C++14 syntax */
4
+ #undef HAVE_CXX14
5
+
6
+ /* Define to 1 if you have the <env.h> header file. */
7
+ #undef HAVE_ENV_H
8
+
9
+ /* Define to 1 if you have the <node.h> header file. */
10
+ #undef HAVE_NODE_H
11
+
12
+ /* Define to 1 if you have the <ruby.h> header file. */
13
+ #undef HAVE_RUBY_H
14
+
15
+ /* Define to 1 if you have the <ruby/node.h> header file. */
16
+ #undef HAVE_RUBY_NODE_H
17
+
18
+ /* Define to 1 if you have the <version.h> header file. */
19
+ #undef HAVE_VERSION_H
20
+
21
+ /* Name of package */
22
+ #undef PACKAGE
23
+
24
+ /* Define to the address where bug reports for this package should be sent. */
25
+ #undef PACKAGE_BUGREPORT
26
+
27
+ /* Define to the full name of this package. */
28
+ #undef PACKAGE_NAME
29
+
30
+ /* Define to the full name and version of this package. */
31
+ #undef PACKAGE_STRING
32
+
33
+ /* Define to the one symbol short name of this package. */
34
+ #undef PACKAGE_TARNAME
35
+
36
+ /* Define to the home page for this package. */
37
+ #undef PACKAGE_URL
38
+
39
+ /* Define to the version of this package. */
40
+ #undef PACKAGE_VERSION
41
+
42
+ /* Define this macro to use ruby/node.h */
43
+ #undef REALLY_HAVE_RUBY_NODE_H
44
+
45
+ /* Version number of package */
46
+ #undef VERSION
@@ -0,0 +1,118 @@
1
+ #ifndef Rice__Arguments__hpp_
2
+ #define Rice__Arguments__hpp_
3
+
4
+ #include "../Arg_impl.hpp"
5
+ #include <sstream>
6
+ #include <vector>
7
+ #include "../to_from_ruby_defn.hpp"
8
+
9
+ namespace Rice {
10
+
11
+ class Arguments
12
+ {
13
+ public:
14
+ Arguments() {
15
+ required_ = 0;
16
+ optional_ = 0;
17
+ }
18
+
19
+ ~Arguments() {
20
+ }
21
+
22
+ /**
23
+ * Get the full argument count of this
24
+ * list of arguments.
25
+ * Returns -1 no defined arguments
26
+ */
27
+ int count() {
28
+ if(required_ == 0 && optional_ == 0) {
29
+ return -1;
30
+ } else {
31
+ return required_ + optional_;
32
+ }
33
+ }
34
+
35
+ /**
36
+ * Get the rb_scan_args format string for this
37
+ * list of arguments.
38
+ * In the case of no Args (default case), this
39
+ * method uses the passed in full argument count
40
+ */
41
+ std::string formatString(int fullArgCount)
42
+ {
43
+ std::stringstream s;
44
+ if(required_ == 0 && optional_ == 0)
45
+ {
46
+ s << fullArgCount << 0;
47
+ }
48
+ else
49
+ {
50
+ s << required_ << optional_;
51
+ }
52
+
53
+ return s.str();
54
+ }
55
+
56
+ /**
57
+ * Add a defined Arg to this list of Arguments
58
+ */
59
+ void add(const Arg& arg)
60
+ {
61
+ args_.push_back(arg);
62
+
63
+ if(arg.hasDefaultValue())
64
+ {
65
+ optional_++;
66
+ }
67
+ else
68
+ {
69
+ required_++;
70
+ }
71
+ }
72
+
73
+ /**
74
+ * Is the argument at the request location an optional
75
+ * argument?
76
+ */
77
+ bool isOptional(unsigned int pos)
78
+ {
79
+ if(required_ == 0 && optional_ == 0)
80
+ {
81
+ return false;
82
+ }
83
+ if(pos >= args_.size())
84
+ {
85
+ return false;
86
+ }
87
+ return args_[pos].hasDefaultValue();
88
+ }
89
+
90
+ /**
91
+ * Given a position, a type, and a ruby VALUE, figure out
92
+ * what argument value we need to return according to
93
+ * defaults and if that VALUE is nil or not
94
+ */
95
+ template<typename Arg_T>
96
+ Arg_T getArgumentOrDefault(int pos, VALUE in)
97
+ {
98
+ if(isOptional(pos) && NIL_P(in))
99
+ {
100
+ return args_[pos].getDefaultValue<Arg_T>();
101
+ }
102
+ else
103
+ {
104
+ return from_ruby<Arg_T>(in);
105
+ }
106
+ }
107
+
108
+ private:
109
+ std::vector<Arg> args_;
110
+
111
+ /** Keep counts of required and optional parameters */
112
+ int required_;
113
+ int optional_;
114
+ };
115
+
116
+ }
117
+
118
+ #endif // Rice__Arguments__hpp_
@@ -0,0 +1,898 @@
1
+ #ifndef Rice__detail__Auto_Function_Wrapper__hpp_
2
+ #define Rice__detail__Auto_Function_Wrapper__hpp_
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 "Exception_Handler_defn.hpp"
11
+
12
+ namespace Rice
13
+ {
14
+
15
+ namespace detail
16
+ {
17
+
18
+ #ifdef DOXYGEN
19
+
20
+ #else
21
+
22
+ template<typename Func_T, typename Ret_T, typename Arg0_T = void, typename Arg1_T = void, typename Arg2_T = void, typename Arg3_T = void, typename Arg4_T = void, typename Arg5_T = void, typename Arg6_T = void, typename Arg7_T = void, typename Arg8_T = void, typename Arg9_T = void, typename Arg10_T = void, typename Arg11_T = void, typename Arg12_T = void, typename Arg13_T = void, typename Arg14_T = void, typename Arg15_T = void>
23
+ class Auto_Function_Wrapper
24
+ : public Wrapped_Function
25
+ {
26
+ public:
27
+ typedef Func_T Func;
28
+
29
+ static const int Num_Args = 16;
30
+
31
+ Auto_Function_Wrapper(
32
+ Func func,
33
+ Data_Object<Exception_Handler> handler,
34
+ Arguments* arguments = 0);
35
+
36
+ ~Auto_Function_Wrapper();
37
+
38
+ static VALUE call(int argc, VALUE* args, VALUE self);
39
+
40
+ private:
41
+ Func func_;
42
+ Data_Object<Exception_Handler> handler_;
43
+ Address_Registration_Guard handler_guard_;
44
+ Arguments* arguments_;
45
+ };
46
+
47
+ template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T, typename Arg13_T, typename Arg14_T, typename Arg15_T>
48
+ class Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T, Arg14_T, Arg15_T>
49
+ : public Wrapped_Function
50
+ {
51
+ public:
52
+ typedef Func_T Func;
53
+
54
+ static const int Num_Args = 16;
55
+
56
+ Auto_Function_Wrapper(
57
+ Func func,
58
+ Data_Object<Exception_Handler> handler,
59
+ Arguments* arguments = 0);
60
+
61
+ ~Auto_Function_Wrapper();
62
+
63
+ static VALUE call(int argc, VALUE* args, VALUE self);
64
+
65
+ private:
66
+ Func func_;
67
+ Data_Object<Exception_Handler> handler_;
68
+ Address_Registration_Guard handler_guard_;
69
+ Arguments* arguments_;
70
+ };
71
+
72
+ // ---------------------------------------------------------------------
73
+ template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T, typename Arg13_T, typename Arg14_T>
74
+ class Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T, Arg14_T>
75
+ : public Wrapped_Function
76
+ {
77
+ public:
78
+ typedef Func_T Func;
79
+
80
+ static const int Num_Args = 15;
81
+
82
+ Auto_Function_Wrapper(
83
+ Func func,
84
+ Data_Object<Exception_Handler> handler,
85
+ Arguments* arguments = 0);
86
+
87
+ ~Auto_Function_Wrapper();
88
+
89
+ static VALUE call(int argc, VALUE* args, VALUE self);
90
+
91
+ private:
92
+ Func func_;
93
+ Data_Object<Exception_Handler> handler_;
94
+ Address_Registration_Guard handler_guard_;
95
+ Arguments* arguments_;
96
+ };
97
+
98
+ template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T, typename Arg13_T, typename Arg14_T>
99
+ class Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T, Arg14_T>
100
+ : public Wrapped_Function
101
+ {
102
+ public:
103
+ typedef Func_T Func;
104
+
105
+ static const int Num_Args = 15;
106
+
107
+ Auto_Function_Wrapper(
108
+ Func func,
109
+ Data_Object<Exception_Handler> handler,
110
+ Arguments* arguments = 0);
111
+
112
+ ~Auto_Function_Wrapper();
113
+
114
+ static VALUE call(int argc, VALUE* args, VALUE self);
115
+
116
+ private:
117
+ Func func_;
118
+ Data_Object<Exception_Handler> handler_;
119
+ Address_Registration_Guard handler_guard_;
120
+ Arguments* arguments_;
121
+ };
122
+
123
+ // ---------------------------------------------------------------------
124
+ template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T, typename Arg13_T>
125
+ class Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T>
126
+ : public Wrapped_Function
127
+ {
128
+ public:
129
+ typedef Func_T Func;
130
+
131
+ static const int Num_Args = 14;
132
+
133
+ Auto_Function_Wrapper(
134
+ Func func,
135
+ Data_Object<Exception_Handler> handler,
136
+ Arguments* arguments = 0);
137
+
138
+ ~Auto_Function_Wrapper();
139
+
140
+ static VALUE call(int argc, VALUE* args, VALUE self);
141
+
142
+ private:
143
+ Func func_;
144
+ Data_Object<Exception_Handler> handler_;
145
+ Address_Registration_Guard handler_guard_;
146
+ Arguments* arguments_;
147
+ };
148
+
149
+ template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T, typename Arg13_T>
150
+ class Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T>
151
+ : public Wrapped_Function
152
+ {
153
+ public:
154
+ typedef Func_T Func;
155
+
156
+ static const int Num_Args = 14;
157
+
158
+ Auto_Function_Wrapper(
159
+ Func func,
160
+ Data_Object<Exception_Handler> handler,
161
+ Arguments* arguments = 0);
162
+
163
+ ~Auto_Function_Wrapper();
164
+
165
+ static VALUE call(int argc, VALUE* args, VALUE self);
166
+
167
+ private:
168
+ Func func_;
169
+ Data_Object<Exception_Handler> handler_;
170
+ Address_Registration_Guard handler_guard_;
171
+ Arguments* arguments_;
172
+ };
173
+
174
+ // ---------------------------------------------------------------------
175
+ template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T>
176
+ class Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T>
177
+ : public Wrapped_Function
178
+ {
179
+ public:
180
+ typedef Func_T Func;
181
+
182
+ static const int Num_Args = 13;
183
+
184
+ Auto_Function_Wrapper(
185
+ Func func,
186
+ Data_Object<Exception_Handler> handler,
187
+ Arguments* arguments = 0);
188
+
189
+ ~Auto_Function_Wrapper();
190
+
191
+ static VALUE call(int argc, VALUE* args, VALUE self);
192
+
193
+ private:
194
+ Func func_;
195
+ Data_Object<Exception_Handler> handler_;
196
+ Address_Registration_Guard handler_guard_;
197
+ Arguments* arguments_;
198
+ };
199
+
200
+ template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T>
201
+ class Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T>
202
+ : public Wrapped_Function
203
+ {
204
+ public:
205
+ typedef Func_T Func;
206
+
207
+ static const int Num_Args = 13;
208
+
209
+ Auto_Function_Wrapper(
210
+ Func func,
211
+ Data_Object<Exception_Handler> handler,
212
+ Arguments* arguments = 0);
213
+
214
+ ~Auto_Function_Wrapper();
215
+
216
+ static VALUE call(int argc, VALUE* args, VALUE self);
217
+
218
+ private:
219
+ Func func_;
220
+ Data_Object<Exception_Handler> handler_;
221
+ Address_Registration_Guard handler_guard_;
222
+ Arguments* arguments_;
223
+ };
224
+
225
+ // ---------------------------------------------------------------------
226
+ template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T>
227
+ class Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T>
228
+ : public Wrapped_Function
229
+ {
230
+ public:
231
+ typedef Func_T Func;
232
+
233
+ static const int Num_Args = 12;
234
+
235
+ Auto_Function_Wrapper(
236
+ Func func,
237
+ Data_Object<Exception_Handler> handler,
238
+ Arguments* arguments = 0);
239
+
240
+ ~Auto_Function_Wrapper();
241
+
242
+ static VALUE call(int argc, VALUE* args, VALUE self);
243
+
244
+ private:
245
+ Func func_;
246
+ Data_Object<Exception_Handler> handler_;
247
+ Address_Registration_Guard handler_guard_;
248
+ Arguments* arguments_;
249
+ };
250
+
251
+ template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T>
252
+ class Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T>
253
+ : public Wrapped_Function
254
+ {
255
+ public:
256
+ typedef Func_T Func;
257
+
258
+ static const int Num_Args = 12;
259
+
260
+ Auto_Function_Wrapper(
261
+ Func func,
262
+ Data_Object<Exception_Handler> handler,
263
+ Arguments* arguments = 0);
264
+
265
+ ~Auto_Function_Wrapper();
266
+
267
+ static VALUE call(int argc, VALUE* args, VALUE self);
268
+
269
+ private:
270
+ Func func_;
271
+ Data_Object<Exception_Handler> handler_;
272
+ Address_Registration_Guard handler_guard_;
273
+ Arguments* arguments_;
274
+ };
275
+
276
+ // ---------------------------------------------------------------------
277
+ template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T>
278
+ class Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T>
279
+ : public Wrapped_Function
280
+ {
281
+ public:
282
+ typedef Func_T Func;
283
+
284
+ static const int Num_Args = 11;
285
+
286
+ Auto_Function_Wrapper(
287
+ Func func,
288
+ Data_Object<Exception_Handler> handler,
289
+ Arguments* arguments = 0);
290
+
291
+ ~Auto_Function_Wrapper();
292
+
293
+ static VALUE call(int argc, VALUE* args, VALUE self);
294
+
295
+ private:
296
+ Func func_;
297
+ Data_Object<Exception_Handler> handler_;
298
+ Address_Registration_Guard handler_guard_;
299
+ Arguments* arguments_;
300
+ };
301
+
302
+ template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T>
303
+ class Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T>
304
+ : public Wrapped_Function
305
+ {
306
+ public:
307
+ typedef Func_T Func;
308
+
309
+ static const int Num_Args = 11;
310
+
311
+ Auto_Function_Wrapper(
312
+ Func func,
313
+ Data_Object<Exception_Handler> handler,
314
+ Arguments* arguments = 0);
315
+
316
+ ~Auto_Function_Wrapper();
317
+
318
+ static VALUE call(int argc, VALUE* args, VALUE self);
319
+
320
+ private:
321
+ Func func_;
322
+ Data_Object<Exception_Handler> handler_;
323
+ Address_Registration_Guard handler_guard_;
324
+ Arguments* arguments_;
325
+ };
326
+
327
+ // ---------------------------------------------------------------------
328
+ template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T>
329
+ class Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T>
330
+ : public Wrapped_Function
331
+ {
332
+ public:
333
+ typedef Func_T Func;
334
+
335
+ static const int Num_Args = 10;
336
+
337
+ Auto_Function_Wrapper(
338
+ Func func,
339
+ Data_Object<Exception_Handler> handler,
340
+ Arguments* arguments = 0);
341
+
342
+ ~Auto_Function_Wrapper();
343
+
344
+ static VALUE call(int argc, VALUE* args, VALUE self);
345
+
346
+ private:
347
+ Func func_;
348
+ Data_Object<Exception_Handler> handler_;
349
+ Address_Registration_Guard handler_guard_;
350
+ Arguments* arguments_;
351
+ };
352
+
353
+ template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T>
354
+ class Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T>
355
+ : public Wrapped_Function
356
+ {
357
+ public:
358
+ typedef Func_T Func;
359
+
360
+ static const int Num_Args = 10;
361
+
362
+ Auto_Function_Wrapper(
363
+ Func func,
364
+ Data_Object<Exception_Handler> handler,
365
+ Arguments* arguments = 0);
366
+
367
+ ~Auto_Function_Wrapper();
368
+
369
+ static VALUE call(int argc, VALUE* args, VALUE self);
370
+
371
+ private:
372
+ Func func_;
373
+ Data_Object<Exception_Handler> handler_;
374
+ Address_Registration_Guard handler_guard_;
375
+ Arguments* arguments_;
376
+ };
377
+
378
+ // ---------------------------------------------------------------------
379
+ template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T>
380
+ class Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T>
381
+ : public Wrapped_Function
382
+ {
383
+ public:
384
+ typedef Func_T Func;
385
+
386
+ static const int Num_Args = 9;
387
+
388
+ Auto_Function_Wrapper(
389
+ Func func,
390
+ Data_Object<Exception_Handler> handler,
391
+ Arguments* arguments = 0);
392
+
393
+ ~Auto_Function_Wrapper();
394
+
395
+ static VALUE call(int argc, VALUE* args, VALUE self);
396
+
397
+ private:
398
+ Func func_;
399
+ Data_Object<Exception_Handler> handler_;
400
+ Address_Registration_Guard handler_guard_;
401
+ Arguments* arguments_;
402
+ };
403
+
404
+ template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T>
405
+ class Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T>
406
+ : public Wrapped_Function
407
+ {
408
+ public:
409
+ typedef Func_T Func;
410
+
411
+ static const int Num_Args = 9;
412
+
413
+ Auto_Function_Wrapper(
414
+ Func func,
415
+ Data_Object<Exception_Handler> handler,
416
+ Arguments* arguments = 0);
417
+
418
+ ~Auto_Function_Wrapper();
419
+
420
+ static VALUE call(int argc, VALUE* args, VALUE self);
421
+
422
+ private:
423
+ Func func_;
424
+ Data_Object<Exception_Handler> handler_;
425
+ Address_Registration_Guard handler_guard_;
426
+ Arguments* arguments_;
427
+ };
428
+
429
+ // ---------------------------------------------------------------------
430
+ template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T>
431
+ class Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T>
432
+ : public Wrapped_Function
433
+ {
434
+ public:
435
+ typedef Func_T Func;
436
+
437
+ static const int Num_Args = 8;
438
+
439
+ Auto_Function_Wrapper(
440
+ Func func,
441
+ Data_Object<Exception_Handler> handler,
442
+ Arguments* arguments = 0);
443
+
444
+ ~Auto_Function_Wrapper();
445
+
446
+ static VALUE call(int argc, VALUE* args, VALUE self);
447
+
448
+ private:
449
+ Func func_;
450
+ Data_Object<Exception_Handler> handler_;
451
+ Address_Registration_Guard handler_guard_;
452
+ Arguments* arguments_;
453
+ };
454
+
455
+ template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T>
456
+ class Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T>
457
+ : public Wrapped_Function
458
+ {
459
+ public:
460
+ typedef Func_T Func;
461
+
462
+ static const int Num_Args = 8;
463
+
464
+ Auto_Function_Wrapper(
465
+ Func func,
466
+ Data_Object<Exception_Handler> handler,
467
+ Arguments* arguments = 0);
468
+
469
+ ~Auto_Function_Wrapper();
470
+
471
+ static VALUE call(int argc, VALUE* args, VALUE self);
472
+
473
+ private:
474
+ Func func_;
475
+ Data_Object<Exception_Handler> handler_;
476
+ Address_Registration_Guard handler_guard_;
477
+ Arguments* arguments_;
478
+ };
479
+
480
+ // ---------------------------------------------------------------------
481
+ template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T>
482
+ class Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T>
483
+ : public Wrapped_Function
484
+ {
485
+ public:
486
+ typedef Func_T Func;
487
+
488
+ static const int Num_Args = 7;
489
+
490
+ Auto_Function_Wrapper(
491
+ Func func,
492
+ Data_Object<Exception_Handler> handler,
493
+ Arguments* arguments = 0);
494
+
495
+ ~Auto_Function_Wrapper();
496
+
497
+ static VALUE call(int argc, VALUE* args, VALUE self);
498
+
499
+ private:
500
+ Func func_;
501
+ Data_Object<Exception_Handler> handler_;
502
+ Address_Registration_Guard handler_guard_;
503
+ Arguments* arguments_;
504
+ };
505
+
506
+ template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T>
507
+ class Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T>
508
+ : public Wrapped_Function
509
+ {
510
+ public:
511
+ typedef Func_T Func;
512
+
513
+ static const int Num_Args = 7;
514
+
515
+ Auto_Function_Wrapper(
516
+ Func func,
517
+ Data_Object<Exception_Handler> handler,
518
+ Arguments* arguments = 0);
519
+
520
+ ~Auto_Function_Wrapper();
521
+
522
+ static VALUE call(int argc, VALUE* args, VALUE self);
523
+
524
+ private:
525
+ Func func_;
526
+ Data_Object<Exception_Handler> handler_;
527
+ Address_Registration_Guard handler_guard_;
528
+ Arguments* arguments_;
529
+ };
530
+
531
+ // ---------------------------------------------------------------------
532
+ template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T>
533
+ class Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T>
534
+ : public Wrapped_Function
535
+ {
536
+ public:
537
+ typedef Func_T Func;
538
+
539
+ static const int Num_Args = 6;
540
+
541
+ Auto_Function_Wrapper(
542
+ Func func,
543
+ Data_Object<Exception_Handler> handler,
544
+ Arguments* arguments = 0);
545
+
546
+ ~Auto_Function_Wrapper();
547
+
548
+ static VALUE call(int argc, VALUE* args, VALUE self);
549
+
550
+ private:
551
+ Func func_;
552
+ Data_Object<Exception_Handler> handler_;
553
+ Address_Registration_Guard handler_guard_;
554
+ Arguments* arguments_;
555
+ };
556
+
557
+ template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T>
558
+ class Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T>
559
+ : public Wrapped_Function
560
+ {
561
+ public:
562
+ typedef Func_T Func;
563
+
564
+ static const int Num_Args = 6;
565
+
566
+ Auto_Function_Wrapper(
567
+ Func func,
568
+ Data_Object<Exception_Handler> handler,
569
+ Arguments* arguments = 0);
570
+
571
+ ~Auto_Function_Wrapper();
572
+
573
+ static VALUE call(int argc, VALUE* args, VALUE self);
574
+
575
+ private:
576
+ Func func_;
577
+ Data_Object<Exception_Handler> handler_;
578
+ Address_Registration_Guard handler_guard_;
579
+ Arguments* arguments_;
580
+ };
581
+
582
+ // ---------------------------------------------------------------------
583
+ template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T>
584
+ class Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T>
585
+ : public Wrapped_Function
586
+ {
587
+ public:
588
+ typedef Func_T Func;
589
+
590
+ static const int Num_Args = 5;
591
+
592
+ Auto_Function_Wrapper(
593
+ Func func,
594
+ Data_Object<Exception_Handler> handler,
595
+ Arguments* arguments = 0);
596
+
597
+ ~Auto_Function_Wrapper();
598
+
599
+ static VALUE call(int argc, VALUE* args, VALUE self);
600
+
601
+ private:
602
+ Func func_;
603
+ Data_Object<Exception_Handler> handler_;
604
+ Address_Registration_Guard handler_guard_;
605
+ Arguments* arguments_;
606
+ };
607
+
608
+ template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T>
609
+ class Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T>
610
+ : public Wrapped_Function
611
+ {
612
+ public:
613
+ typedef Func_T Func;
614
+
615
+ static const int Num_Args = 5;
616
+
617
+ Auto_Function_Wrapper(
618
+ Func func,
619
+ Data_Object<Exception_Handler> handler,
620
+ Arguments* arguments = 0);
621
+
622
+ ~Auto_Function_Wrapper();
623
+
624
+ static VALUE call(int argc, VALUE* args, VALUE self);
625
+
626
+ private:
627
+ Func func_;
628
+ Data_Object<Exception_Handler> handler_;
629
+ Address_Registration_Guard handler_guard_;
630
+ Arguments* arguments_;
631
+ };
632
+
633
+ // ---------------------------------------------------------------------
634
+ template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T>
635
+ class Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T>
636
+ : public Wrapped_Function
637
+ {
638
+ public:
639
+ typedef Func_T Func;
640
+
641
+ static const int Num_Args = 4;
642
+
643
+ Auto_Function_Wrapper(
644
+ Func func,
645
+ Data_Object<Exception_Handler> handler,
646
+ Arguments* arguments = 0);
647
+
648
+ ~Auto_Function_Wrapper();
649
+
650
+ static VALUE call(int argc, VALUE* args, VALUE self);
651
+
652
+ private:
653
+ Func func_;
654
+ Data_Object<Exception_Handler> handler_;
655
+ Address_Registration_Guard handler_guard_;
656
+ Arguments* arguments_;
657
+ };
658
+
659
+ template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T>
660
+ class Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T, Arg3_T>
661
+ : public Wrapped_Function
662
+ {
663
+ public:
664
+ typedef Func_T Func;
665
+
666
+ static const int Num_Args = 4;
667
+
668
+ Auto_Function_Wrapper(
669
+ Func func,
670
+ Data_Object<Exception_Handler> handler,
671
+ Arguments* arguments = 0);
672
+
673
+ ~Auto_Function_Wrapper();
674
+
675
+ static VALUE call(int argc, VALUE* args, VALUE self);
676
+
677
+ private:
678
+ Func func_;
679
+ Data_Object<Exception_Handler> handler_;
680
+ Address_Registration_Guard handler_guard_;
681
+ Arguments* arguments_;
682
+ };
683
+
684
+ // ---------------------------------------------------------------------
685
+ template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T>
686
+ class Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T, Arg2_T>
687
+ : public Wrapped_Function
688
+ {
689
+ public:
690
+ typedef Func_T Func;
691
+
692
+ static const int Num_Args = 3;
693
+
694
+ Auto_Function_Wrapper(
695
+ Func func,
696
+ Data_Object<Exception_Handler> handler,
697
+ Arguments* arguments = 0);
698
+
699
+ ~Auto_Function_Wrapper();
700
+
701
+ static VALUE call(int argc, VALUE* args, VALUE self);
702
+
703
+ private:
704
+ Func func_;
705
+ Data_Object<Exception_Handler> handler_;
706
+ Address_Registration_Guard handler_guard_;
707
+ Arguments* arguments_;
708
+ };
709
+
710
+ template<typename Func_T, typename Arg0_T, typename Arg1_T, typename Arg2_T>
711
+ class Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T, Arg2_T>
712
+ : public Wrapped_Function
713
+ {
714
+ public:
715
+ typedef Func_T Func;
716
+
717
+ static const int Num_Args = 3;
718
+
719
+ Auto_Function_Wrapper(
720
+ Func func,
721
+ Data_Object<Exception_Handler> handler,
722
+ Arguments* arguments = 0);
723
+
724
+ ~Auto_Function_Wrapper();
725
+
726
+ static VALUE call(int argc, VALUE* args, VALUE self);
727
+
728
+ private:
729
+ Func func_;
730
+ Data_Object<Exception_Handler> handler_;
731
+ Address_Registration_Guard handler_guard_;
732
+ Arguments* arguments_;
733
+ };
734
+
735
+ // ---------------------------------------------------------------------
736
+ template<typename Func_T, typename Ret_T, typename Arg0_T, typename Arg1_T>
737
+ class Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T, Arg1_T>
738
+ : public Wrapped_Function
739
+ {
740
+ public:
741
+ typedef Func_T Func;
742
+
743
+ static const int Num_Args = 2;
744
+
745
+ Auto_Function_Wrapper(
746
+ Func func,
747
+ Data_Object<Exception_Handler> handler,
748
+ Arguments* arguments = 0);
749
+
750
+ ~Auto_Function_Wrapper();
751
+
752
+ static VALUE call(int argc, VALUE* args, VALUE self);
753
+
754
+ private:
755
+ Func func_;
756
+ Data_Object<Exception_Handler> handler_;
757
+ Address_Registration_Guard handler_guard_;
758
+ Arguments* arguments_;
759
+ };
760
+
761
+ template<typename Func_T, typename Arg0_T, typename Arg1_T>
762
+ class Auto_Function_Wrapper<Func_T, void, Arg0_T, Arg1_T>
763
+ : public Wrapped_Function
764
+ {
765
+ public:
766
+ typedef Func_T Func;
767
+
768
+ static const int Num_Args = 2;
769
+
770
+ Auto_Function_Wrapper(
771
+ Func func,
772
+ Data_Object<Exception_Handler> handler,
773
+ Arguments* arguments = 0);
774
+
775
+ ~Auto_Function_Wrapper();
776
+
777
+ static VALUE call(int argc, VALUE* args, VALUE self);
778
+
779
+ private:
780
+ Func func_;
781
+ Data_Object<Exception_Handler> handler_;
782
+ Address_Registration_Guard handler_guard_;
783
+ Arguments* arguments_;
784
+ };
785
+
786
+ // ---------------------------------------------------------------------
787
+ template<typename Func_T, typename Ret_T, typename Arg0_T>
788
+ class Auto_Function_Wrapper<Func_T, Ret_T, Arg0_T>
789
+ : public Wrapped_Function
790
+ {
791
+ public:
792
+ typedef Func_T Func;
793
+
794
+ static const int Num_Args = 1;
795
+
796
+ Auto_Function_Wrapper(
797
+ Func func,
798
+ Data_Object<Exception_Handler> handler,
799
+ Arguments* arguments = 0);
800
+
801
+ ~Auto_Function_Wrapper();
802
+
803
+ static VALUE call(int argc, VALUE* args, VALUE self);
804
+
805
+ private:
806
+ Func func_;
807
+ Data_Object<Exception_Handler> handler_;
808
+ Address_Registration_Guard handler_guard_;
809
+ Arguments* arguments_;
810
+ };
811
+
812
+ template<typename Func_T, typename Arg0_T>
813
+ class Auto_Function_Wrapper<Func_T, void, Arg0_T>
814
+ : public Wrapped_Function
815
+ {
816
+ public:
817
+ typedef Func_T Func;
818
+
819
+ static const int Num_Args = 1;
820
+
821
+ Auto_Function_Wrapper(
822
+ Func func,
823
+ Data_Object<Exception_Handler> handler,
824
+ Arguments* arguments = 0);
825
+
826
+ ~Auto_Function_Wrapper();
827
+
828
+ static VALUE call(int argc, VALUE* args, VALUE self);
829
+
830
+ private:
831
+ Func func_;
832
+ Data_Object<Exception_Handler> handler_;
833
+ Address_Registration_Guard handler_guard_;
834
+ Arguments* arguments_;
835
+ };
836
+
837
+ // ---------------------------------------------------------------------
838
+
839
+ template<typename Func_T, typename Ret_T>
840
+ class Auto_Function_Wrapper<Func_T, Ret_T>
841
+ : public Wrapped_Function
842
+ {
843
+ public:
844
+ // typedef void (*Func)();
845
+ typedef Func_T Func;
846
+
847
+ static const int Num_Args = 0;
848
+
849
+ Auto_Function_Wrapper(
850
+ Func func,
851
+ Data_Object<Exception_Handler> handler,
852
+ Arguments* arguments = new Arguments());
853
+
854
+ ~Auto_Function_Wrapper();
855
+
856
+ static VALUE call();
857
+
858
+ private:
859
+ Func func_;
860
+ Data_Object<Exception_Handler> handler_;
861
+ Arguments* arguments_;
862
+ };
863
+
864
+ template<typename Func_T>
865
+ class Auto_Function_Wrapper<Func_T, void>
866
+ : public Wrapped_Function
867
+ {
868
+ public:
869
+ // typedef void (*Func)();
870
+ typedef Func_T Func;
871
+
872
+ static const int Num_Args = 0;
873
+
874
+ Auto_Function_Wrapper(
875
+ Func func,
876
+ Data_Object<Exception_Handler> handler,
877
+ Arguments* arguments = new Arguments());
878
+
879
+ ~Auto_Function_Wrapper();
880
+
881
+ static VALUE call();
882
+
883
+ private:
884
+ Func func_;
885
+ Data_Object<Exception_Handler> handler_;
886
+ Arguments* arguments_;
887
+ };
888
+
889
+ #endif // DOXYGEN
890
+
891
+ } // namespace detail
892
+
893
+ } // namespace Rice
894
+
895
+ #include "Auto_Function_Wrapper.ipp"
896
+
897
+ #endif // Rice__detail__Auto_Function_Wrapper__hpp_
898
+