rice 1.0.2 → 1.1.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 (92) hide show
  1. data/COPYING +2 -2
  2. data/Doxyfile +1 -1
  3. data/Makefile.in +8 -3
  4. data/Rakefile +3 -3
  5. data/config.guess +30 -49
  6. data/config.sub +4 -22
  7. data/configure +319 -104
  8. data/configure.ac +6 -2
  9. data/doxygen.ac +2 -2
  10. data/extconf.rb +22 -0
  11. data/post-autoconf.rb +3 -3
  12. data/post-automake.rb +2 -2
  13. data/rice/Array.ipp +7 -6
  14. data/rice/Critical_Guard.hpp +6 -0
  15. data/rice/Critical_Guard.ipp +6 -0
  16. data/rice/Data_Object.hpp +1 -120
  17. data/rice/Data_Object.ipp +5 -1
  18. data/rice/Data_Object_defn.hpp +132 -0
  19. data/rice/Data_Type.ipp +18 -2
  20. data/rice/Enum.ipp +3 -3
  21. data/rice/Exception.hpp +1 -61
  22. data/rice/Exception_Base.hpp +2 -24
  23. data/rice/Exception_Base.ipp +2 -0
  24. data/rice/Exception_Base_defn.hpp +27 -0
  25. data/rice/Exception_defn.hpp +69 -0
  26. data/rice/Hash.hpp +5 -1
  27. data/rice/Hash.ipp +7 -7
  28. data/rice/Makefile.am +20 -3
  29. data/rice/Makefile.in +39 -4
  30. data/rice/Module.cpp +11 -3
  31. data/rice/Module_impl.hpp +20 -9
  32. data/rice/Module_impl.ipp +84 -87
  33. data/rice/Object.cpp +1 -1
  34. data/rice/VM.cpp +14 -1
  35. data/rice/VM.hpp +6 -1
  36. data/rice/config.hpp +24 -3
  37. data/rice/config.hpp.in +21 -0
  38. data/rice/detail/Auto_Function_Wrapper.hpp +97 -65
  39. data/rice/detail/Auto_Function_Wrapper.ipp +160 -128
  40. data/rice/detail/Auto_Member_Function_Wrapper.hpp +96 -64
  41. data/rice/detail/Auto_Member_Function_Wrapper.ipp +160 -128
  42. data/rice/detail/Exception_Handler.hpp +2 -112
  43. data/rice/detail/Exception_Handler.ipp +68 -0
  44. data/rice/detail/Exception_Handler_defn.hpp +96 -0
  45. data/rice/detail/Iterator.hpp +93 -0
  46. data/rice/detail/check_ruby_type.cpp +8 -2
  47. data/rice/detail/creation_funcs.ipp +2 -2
  48. data/rice/detail/define_method_and_auto_wrap.hpp +4 -2
  49. data/rice/detail/define_method_and_auto_wrap.ipp +14 -5
  50. data/rice/detail/env.hpp +4 -0
  51. data/rice/detail/method_data.cpp +362 -75
  52. data/rice/detail/method_data.cpp.rpp +301 -0
  53. data/rice/detail/method_data.hpp +6 -18
  54. data/rice/detail/mininode.cpp +1220 -0
  55. data/rice/detail/mininode.cpp.rpp +62 -0
  56. data/rice/detail/mininode.hpp +320 -0
  57. data/rice/detail/mininode.hpp.rpp +119 -0
  58. data/rice/detail/protect.cpp +4 -2
  59. data/rice/detail/ruby.hpp +44 -18
  60. data/rice/detail/ruby_version_code.hpp +6 -0
  61. data/rice/detail/ruby_version_code.hpp.in +6 -0
  62. data/rice/detail/rubysig.hpp +6 -0
  63. data/rice/detail/st.hpp +6 -2
  64. data/rice/detail/wrap_function.hpp +50 -48
  65. data/rice/detail/wrap_function.ipp +48 -48
  66. data/rice/generate_code.rb +43 -293
  67. data/rice/global_function.hpp +10 -4
  68. data/rice/global_function.ipp +1 -2
  69. data/rice/ruby_mark.hpp +13 -0
  70. data/rice/ruby_try_catch.hpp +1 -1
  71. data/rice/rubypp.rb +97 -0
  72. data/rice/to_from_ruby.ipp +3 -3
  73. data/ruby.ac +44 -8
  74. data/ruby/Makefile.in +2 -0
  75. data/ruby/lib/Makefile.in +2 -0
  76. data/ruby/lib/mkmf-rice.rb.in +4 -1
  77. data/ruby/lib/version.rb +3 -0
  78. data/sample/Makefile.am +2 -2
  79. data/sample/Makefile.in +4 -2
  80. data/test/Makefile.am +2 -1
  81. data/test/Makefile.in +7 -2
  82. data/test/test_Array.cpp +2 -2
  83. data/test/test_Class.cpp +4 -1
  84. data/test/test_Critical_Guard.cpp +4 -0
  85. data/test/test_Data_Object.cpp +43 -3
  86. data/test/test_Hash.cpp +3 -3
  87. data/test/test_String.cpp +8 -8
  88. data/test/test_VM.cpp +1 -1
  89. data/test/test_global_functions.cpp +45 -0
  90. data/test/test_rice.rb +5 -0
  91. metadata +115 -98
  92. data/rice/detail/Iterator_Definer.hpp +0 -98
@@ -18,7 +18,7 @@ namespace detail
18
18
  template<typename Ret_T, typename Arg0_T>
19
19
  Wrapped_Function * wrap_function(
20
20
  Ret_T (*func)(Arg0_T),
21
- Exception_Handler const * handler)
21
+ Data_Object<Exception_Handler> handler)
22
22
  {
23
23
  typedef Ret_T (*Func)(Arg0_T);
24
24
  return new Auto_Function_Wrapper<Func, Ret_T, Arg0_T>(func, handler);
@@ -27,7 +27,7 @@ Wrapped_Function * wrap_function(
27
27
  template<typename Ret_T, typename Self_T>
28
28
  Wrapped_Function * wrap_function(
29
29
  Ret_T (Self_T::*func)(),
30
- Exception_Handler const * handler)
30
+ Data_Object<Exception_Handler> handler)
31
31
  {
32
32
  typedef Ret_T (Self_T::*Func)();
33
33
  return new Auto_Member_Function_Wrapper<Func, Ret_T, Self_T>(func, handler);
@@ -36,7 +36,7 @@ Wrapped_Function * wrap_function(
36
36
  template<typename Ret_T, typename Self_T>
37
37
  Wrapped_Function * wrap_function(
38
38
  Ret_T (Self_T::*func)() const,
39
- Exception_Handler const * handler)
39
+ Data_Object<Exception_Handler> handler)
40
40
  {
41
41
  typedef Ret_T (Self_T::*Func)() const;
42
42
  return new Auto_Member_Function_Wrapper<Func, Ret_T, Self_T>(func, handler);
@@ -46,7 +46,7 @@ Wrapped_Function * wrap_function(
46
46
  template<typename Ret_T, typename Arg0_T, typename Arg1_T>
47
47
  Wrapped_Function * wrap_function(
48
48
  Ret_T (*func)(Arg0_T, Arg1_T),
49
- Exception_Handler const * handler)
49
+ Data_Object<Exception_Handler> handler)
50
50
  {
51
51
  typedef Ret_T (*Func)(Arg0_T, Arg1_T);
52
52
  return new Auto_Function_Wrapper<Func, Ret_T, Arg0_T, Arg1_T>(func, handler);
@@ -55,7 +55,7 @@ Wrapped_Function * wrap_function(
55
55
  template<typename Ret_T, typename Self_T, typename Arg1_T>
56
56
  Wrapped_Function * wrap_function(
57
57
  Ret_T (Self_T::*func)(Arg1_T),
58
- Exception_Handler const * handler)
58
+ Data_Object<Exception_Handler> handler)
59
59
  {
60
60
  typedef Ret_T (Self_T::*Func)(Arg1_T);
61
61
  return new Auto_Member_Function_Wrapper<Func, Ret_T, Self_T, Arg1_T>(func, handler);
@@ -64,7 +64,7 @@ Wrapped_Function * wrap_function(
64
64
  template<typename Ret_T, typename Self_T, typename Arg1_T>
65
65
  Wrapped_Function * wrap_function(
66
66
  Ret_T (Self_T::*func)(Arg1_T) const,
67
- Exception_Handler const * handler)
67
+ Data_Object<Exception_Handler> handler)
68
68
  {
69
69
  typedef Ret_T (Self_T::*Func)(Arg1_T) const;
70
70
  return new Auto_Member_Function_Wrapper<Func, Ret_T, Self_T, Arg1_T>(func, handler);
@@ -74,7 +74,7 @@ Wrapped_Function * wrap_function(
74
74
  template<typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T>
75
75
  Wrapped_Function * wrap_function(
76
76
  Ret_T (*func)(Arg0_T, Arg1_T, Arg2_T),
77
- Exception_Handler const * handler)
77
+ Data_Object<Exception_Handler> handler)
78
78
  {
79
79
  typedef Ret_T (*Func)(Arg0_T, Arg1_T, Arg2_T);
80
80
  return new Auto_Function_Wrapper<Func, Ret_T, Arg0_T, Arg1_T, Arg2_T>(func, handler);
@@ -83,7 +83,7 @@ Wrapped_Function * wrap_function(
83
83
  template<typename Ret_T, typename Self_T, typename Arg1_T, typename Arg2_T>
84
84
  Wrapped_Function * wrap_function(
85
85
  Ret_T (Self_T::*func)(Arg1_T, Arg2_T),
86
- Exception_Handler const * handler)
86
+ Data_Object<Exception_Handler> handler)
87
87
  {
88
88
  typedef Ret_T (Self_T::*Func)(Arg1_T, Arg2_T);
89
89
  return new Auto_Member_Function_Wrapper<Func, Ret_T, Self_T, Arg1_T, Arg2_T>(func, handler);
@@ -92,7 +92,7 @@ Wrapped_Function * wrap_function(
92
92
  template<typename Ret_T, typename Self_T, typename Arg1_T, typename Arg2_T>
93
93
  Wrapped_Function * wrap_function(
94
94
  Ret_T (Self_T::*func)(Arg1_T, Arg2_T) const,
95
- Exception_Handler const * handler)
95
+ Data_Object<Exception_Handler> handler)
96
96
  {
97
97
  typedef Ret_T (Self_T::*Func)(Arg1_T, Arg2_T) const;
98
98
  return new Auto_Member_Function_Wrapper<Func, Ret_T, Self_T, Arg1_T, Arg2_T>(func, handler);
@@ -102,7 +102,7 @@ Wrapped_Function * wrap_function(
102
102
  template<typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T>
103
103
  Wrapped_Function * wrap_function(
104
104
  Ret_T (*func)(Arg0_T, Arg1_T, Arg2_T, Arg3_T),
105
- Exception_Handler const * handler)
105
+ Data_Object<Exception_Handler> handler)
106
106
  {
107
107
  typedef Ret_T (*Func)(Arg0_T, Arg1_T, Arg2_T, Arg3_T);
108
108
  return new Auto_Function_Wrapper<Func, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T>(func, handler);
@@ -111,7 +111,7 @@ Wrapped_Function * wrap_function(
111
111
  template<typename Ret_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T>
112
112
  Wrapped_Function * wrap_function(
113
113
  Ret_T (Self_T::*func)(Arg1_T, Arg2_T, Arg3_T),
114
- Exception_Handler const * handler)
114
+ Data_Object<Exception_Handler> handler)
115
115
  {
116
116
  typedef Ret_T (Self_T::*Func)(Arg1_T, Arg2_T, Arg3_T);
117
117
  return new Auto_Member_Function_Wrapper<Func, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T>(func, handler);
@@ -120,7 +120,7 @@ Wrapped_Function * wrap_function(
120
120
  template<typename Ret_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T>
121
121
  Wrapped_Function * wrap_function(
122
122
  Ret_T (Self_T::*func)(Arg1_T, Arg2_T, Arg3_T) const,
123
- Exception_Handler const * handler)
123
+ Data_Object<Exception_Handler> handler)
124
124
  {
125
125
  typedef Ret_T (Self_T::*Func)(Arg1_T, Arg2_T, Arg3_T) const;
126
126
  return new Auto_Member_Function_Wrapper<Func, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T>(func, handler);
@@ -130,7 +130,7 @@ Wrapped_Function * wrap_function(
130
130
  template<typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T>
131
131
  Wrapped_Function * wrap_function(
132
132
  Ret_T (*func)(Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T),
133
- Exception_Handler const * handler)
133
+ Data_Object<Exception_Handler> handler)
134
134
  {
135
135
  typedef Ret_T (*Func)(Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T);
136
136
  return new Auto_Function_Wrapper<Func, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T>(func, handler);
@@ -139,7 +139,7 @@ Wrapped_Function * wrap_function(
139
139
  template<typename Ret_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T>
140
140
  Wrapped_Function * wrap_function(
141
141
  Ret_T (Self_T::*func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T),
142
- Exception_Handler const * handler)
142
+ Data_Object<Exception_Handler> handler)
143
143
  {
144
144
  typedef Ret_T (Self_T::*Func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T);
145
145
  return new Auto_Member_Function_Wrapper<Func, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T>(func, handler);
@@ -148,7 +148,7 @@ Wrapped_Function * wrap_function(
148
148
  template<typename Ret_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T>
149
149
  Wrapped_Function * wrap_function(
150
150
  Ret_T (Self_T::*func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T) const,
151
- Exception_Handler const * handler)
151
+ Data_Object<Exception_Handler> handler)
152
152
  {
153
153
  typedef Ret_T (Self_T::*Func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T) const;
154
154
  return new Auto_Member_Function_Wrapper<Func, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T>(func, handler);
@@ -158,7 +158,7 @@ Wrapped_Function * wrap_function(
158
158
  template<typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T>
159
159
  Wrapped_Function * wrap_function(
160
160
  Ret_T (*func)(Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T),
161
- Exception_Handler const * handler)
161
+ Data_Object<Exception_Handler> handler)
162
162
  {
163
163
  typedef Ret_T (*Func)(Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T);
164
164
  return new Auto_Function_Wrapper<Func, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T>(func, handler);
@@ -167,7 +167,7 @@ Wrapped_Function * wrap_function(
167
167
  template<typename Ret_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T>
168
168
  Wrapped_Function * wrap_function(
169
169
  Ret_T (Self_T::*func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T),
170
- Exception_Handler const * handler)
170
+ Data_Object<Exception_Handler> handler)
171
171
  {
172
172
  typedef Ret_T (Self_T::*Func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T);
173
173
  return new Auto_Member_Function_Wrapper<Func, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T>(func, handler);
@@ -176,7 +176,7 @@ Wrapped_Function * wrap_function(
176
176
  template<typename Ret_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T>
177
177
  Wrapped_Function * wrap_function(
178
178
  Ret_T (Self_T::*func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T) const,
179
- Exception_Handler const * handler)
179
+ Data_Object<Exception_Handler> handler)
180
180
  {
181
181
  typedef Ret_T (Self_T::*Func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T) const;
182
182
  return new Auto_Member_Function_Wrapper<Func, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T>(func, handler);
@@ -186,7 +186,7 @@ Wrapped_Function * wrap_function(
186
186
  template<typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T>
187
187
  Wrapped_Function * wrap_function(
188
188
  Ret_T (*func)(Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T),
189
- Exception_Handler const * handler)
189
+ Data_Object<Exception_Handler> handler)
190
190
  {
191
191
  typedef Ret_T (*Func)(Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T);
192
192
  return new Auto_Function_Wrapper<Func, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T>(func, handler);
@@ -195,7 +195,7 @@ Wrapped_Function * wrap_function(
195
195
  template<typename Ret_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T>
196
196
  Wrapped_Function * wrap_function(
197
197
  Ret_T (Self_T::*func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T),
198
- Exception_Handler const * handler)
198
+ Data_Object<Exception_Handler> handler)
199
199
  {
200
200
  typedef Ret_T (Self_T::*Func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T);
201
201
  return new Auto_Member_Function_Wrapper<Func, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T>(func, handler);
@@ -204,7 +204,7 @@ Wrapped_Function * wrap_function(
204
204
  template<typename Ret_T, typename Self_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T>
205
205
  Wrapped_Function * wrap_function(
206
206
  Ret_T (Self_T::*func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T) const,
207
- Exception_Handler const * handler)
207
+ Data_Object<Exception_Handler> handler)
208
208
  {
209
209
  typedef Ret_T (Self_T::*Func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T) const;
210
210
  return new Auto_Member_Function_Wrapper<Func, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T>(func, handler);
@@ -214,7 +214,7 @@ Wrapped_Function * wrap_function(
214
214
  template<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>
215
215
  Wrapped_Function * wrap_function(
216
216
  Ret_T (*func)(Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T),
217
- Exception_Handler const * handler)
217
+ Data_Object<Exception_Handler> handler)
218
218
  {
219
219
  typedef Ret_T (*Func)(Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T);
220
220
  return new Auto_Function_Wrapper<Func, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T>(func, handler);
@@ -223,7 +223,7 @@ Wrapped_Function * wrap_function(
223
223
  template<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>
224
224
  Wrapped_Function * wrap_function(
225
225
  Ret_T (Self_T::*func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T),
226
- Exception_Handler const * handler)
226
+ Data_Object<Exception_Handler> handler)
227
227
  {
228
228
  typedef Ret_T (Self_T::*Func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T);
229
229
  return new Auto_Member_Function_Wrapper<Func, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T>(func, handler);
@@ -232,7 +232,7 @@ Wrapped_Function * wrap_function(
232
232
  template<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>
233
233
  Wrapped_Function * wrap_function(
234
234
  Ret_T (Self_T::*func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T) const,
235
- Exception_Handler const * handler)
235
+ Data_Object<Exception_Handler> handler)
236
236
  {
237
237
  typedef Ret_T (Self_T::*Func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T) const;
238
238
  return new Auto_Member_Function_Wrapper<Func, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T>(func, handler);
@@ -242,7 +242,7 @@ Wrapped_Function * wrap_function(
242
242
  template<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>
243
243
  Wrapped_Function * wrap_function(
244
244
  Ret_T (*func)(Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T),
245
- Exception_Handler const * handler)
245
+ Data_Object<Exception_Handler> handler)
246
246
  {
247
247
  typedef Ret_T (*Func)(Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T);
248
248
  return new Auto_Function_Wrapper<Func, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T>(func, handler);
@@ -251,7 +251,7 @@ Wrapped_Function * wrap_function(
251
251
  template<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>
252
252
  Wrapped_Function * wrap_function(
253
253
  Ret_T (Self_T::*func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T),
254
- Exception_Handler const * handler)
254
+ Data_Object<Exception_Handler> handler)
255
255
  {
256
256
  typedef Ret_T (Self_T::*Func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T);
257
257
  return new Auto_Member_Function_Wrapper<Func, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T>(func, handler);
@@ -260,7 +260,7 @@ Wrapped_Function * wrap_function(
260
260
  template<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>
261
261
  Wrapped_Function * wrap_function(
262
262
  Ret_T (Self_T::*func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T) const,
263
- Exception_Handler const * handler)
263
+ Data_Object<Exception_Handler> handler)
264
264
  {
265
265
  typedef Ret_T (Self_T::*Func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T) const;
266
266
  return new Auto_Member_Function_Wrapper<Func, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T>(func, handler);
@@ -270,7 +270,7 @@ Wrapped_Function * wrap_function(
270
270
  template<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>
271
271
  Wrapped_Function * wrap_function(
272
272
  Ret_T (*func)(Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T),
273
- Exception_Handler const * handler)
273
+ Data_Object<Exception_Handler> handler)
274
274
  {
275
275
  typedef Ret_T (*Func)(Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T);
276
276
  return new Auto_Function_Wrapper<Func, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T>(func, handler);
@@ -279,7 +279,7 @@ Wrapped_Function * wrap_function(
279
279
  template<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>
280
280
  Wrapped_Function * wrap_function(
281
281
  Ret_T (Self_T::*func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T),
282
- Exception_Handler const * handler)
282
+ Data_Object<Exception_Handler> handler)
283
283
  {
284
284
  typedef Ret_T (Self_T::*Func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T);
285
285
  return new Auto_Member_Function_Wrapper<Func, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T>(func, handler);
@@ -288,7 +288,7 @@ Wrapped_Function * wrap_function(
288
288
  template<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>
289
289
  Wrapped_Function * wrap_function(
290
290
  Ret_T (Self_T::*func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T) const,
291
- Exception_Handler const * handler)
291
+ Data_Object<Exception_Handler> handler)
292
292
  {
293
293
  typedef Ret_T (Self_T::*Func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T) const;
294
294
  return new Auto_Member_Function_Wrapper<Func, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T>(func, handler);
@@ -298,7 +298,7 @@ Wrapped_Function * wrap_function(
298
298
  template<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>
299
299
  Wrapped_Function * wrap_function(
300
300
  Ret_T (*func)(Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T),
301
- Exception_Handler const * handler)
301
+ Data_Object<Exception_Handler> handler)
302
302
  {
303
303
  typedef Ret_T (*Func)(Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T);
304
304
  return new Auto_Function_Wrapper<Func, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T>(func, handler);
@@ -307,7 +307,7 @@ Wrapped_Function * wrap_function(
307
307
  template<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>
308
308
  Wrapped_Function * wrap_function(
309
309
  Ret_T (Self_T::*func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T),
310
- Exception_Handler const * handler)
310
+ Data_Object<Exception_Handler> handler)
311
311
  {
312
312
  typedef Ret_T (Self_T::*Func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T);
313
313
  return new Auto_Member_Function_Wrapper<Func, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T>(func, handler);
@@ -316,7 +316,7 @@ Wrapped_Function * wrap_function(
316
316
  template<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>
317
317
  Wrapped_Function * wrap_function(
318
318
  Ret_T (Self_T::*func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T) const,
319
- Exception_Handler const * handler)
319
+ Data_Object<Exception_Handler> handler)
320
320
  {
321
321
  typedef Ret_T (Self_T::*Func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T) const;
322
322
  return new Auto_Member_Function_Wrapper<Func, Ret_T, Self_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T>(func, handler);
@@ -326,7 +326,7 @@ Wrapped_Function * wrap_function(
326
326
  template<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>
327
327
  Wrapped_Function * wrap_function(
328
328
  Ret_T (*func)(Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T),
329
- Exception_Handler const * handler)
329
+ Data_Object<Exception_Handler> handler)
330
330
  {
331
331
  typedef Ret_T (*Func)(Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T);
332
332
  return new Auto_Function_Wrapper<Func, 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>(func, handler);
@@ -335,7 +335,7 @@ Wrapped_Function * wrap_function(
335
335
  template<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>
336
336
  Wrapped_Function * wrap_function(
337
337
  Ret_T (Self_T::*func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T),
338
- Exception_Handler const * handler)
338
+ Data_Object<Exception_Handler> handler)
339
339
  {
340
340
  typedef Ret_T (Self_T::*Func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T);
341
341
  return new Auto_Member_Function_Wrapper<Func, 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>(func, handler);
@@ -344,7 +344,7 @@ Wrapped_Function * wrap_function(
344
344
  template<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>
345
345
  Wrapped_Function * wrap_function(
346
346
  Ret_T (Self_T::*func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T) const,
347
- Exception_Handler const * handler)
347
+ Data_Object<Exception_Handler> handler)
348
348
  {
349
349
  typedef Ret_T (Self_T::*Func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T) const;
350
350
  return new Auto_Member_Function_Wrapper<Func, 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>(func, handler);
@@ -354,7 +354,7 @@ Wrapped_Function * wrap_function(
354
354
  template<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>
355
355
  Wrapped_Function * wrap_function(
356
356
  Ret_T (*func)(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),
357
- Exception_Handler const * handler)
357
+ Data_Object<Exception_Handler> handler)
358
358
  {
359
359
  typedef Ret_T (*Func)(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);
360
360
  return new Auto_Function_Wrapper<Func, 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>(func, handler);
@@ -363,7 +363,7 @@ Wrapped_Function * wrap_function(
363
363
  template<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>
364
364
  Wrapped_Function * wrap_function(
365
365
  Ret_T (Self_T::*func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T),
366
- Exception_Handler const * handler)
366
+ Data_Object<Exception_Handler> handler)
367
367
  {
368
368
  typedef Ret_T (Self_T::*Func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T);
369
369
  return new Auto_Member_Function_Wrapper<Func, 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>(func, handler);
@@ -372,7 +372,7 @@ Wrapped_Function * wrap_function(
372
372
  template<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>
373
373
  Wrapped_Function * wrap_function(
374
374
  Ret_T (Self_T::*func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T) const,
375
- Exception_Handler const * handler)
375
+ Data_Object<Exception_Handler> handler)
376
376
  {
377
377
  typedef Ret_T (Self_T::*Func)(Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T) const;
378
378
  return new Auto_Member_Function_Wrapper<Func, 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>(func, handler);
@@ -382,7 +382,7 @@ Wrapped_Function * wrap_function(
382
382
  template<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>
383
383
  Wrapped_Function * wrap_function(
384
384
  Ret_T (*func)(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),
385
- Exception_Handler const * handler)
385
+ Data_Object<Exception_Handler> handler)
386
386
  {
387
387
  typedef Ret_T (*Func)(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);
388
388
  return new Auto_Function_Wrapper<Func, 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>(func, handler);
@@ -391,7 +391,7 @@ Wrapped_Function * wrap_function(
391
391
  template<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>
392
392
  Wrapped_Function * wrap_function(
393
393
  Ret_T (Self_T::*func)(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),
394
- Exception_Handler const * handler)
394
+ Data_Object<Exception_Handler> handler)
395
395
  {
396
396
  typedef Ret_T (Self_T::*Func)(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);
397
397
  return new Auto_Member_Function_Wrapper<Func, 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>(func, handler);
@@ -400,7 +400,7 @@ Wrapped_Function * wrap_function(
400
400
  template<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>
401
401
  Wrapped_Function * wrap_function(
402
402
  Ret_T (Self_T::*func)(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) const,
403
- Exception_Handler const * handler)
403
+ Data_Object<Exception_Handler> handler)
404
404
  {
405
405
  typedef Ret_T (Self_T::*Func)(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) const;
406
406
  return new Auto_Member_Function_Wrapper<Func, 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>(func, handler);
@@ -410,7 +410,7 @@ Wrapped_Function * wrap_function(
410
410
  template<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>
411
411
  Wrapped_Function * wrap_function(
412
412
  Ret_T (*func)(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),
413
- Exception_Handler const * handler)
413
+ Data_Object<Exception_Handler> handler)
414
414
  {
415
415
  typedef Ret_T (*Func)(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);
416
416
  return new Auto_Function_Wrapper<Func, 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>(func, handler);
@@ -419,7 +419,7 @@ Wrapped_Function * wrap_function(
419
419
  template<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>
420
420
  Wrapped_Function * wrap_function(
421
421
  Ret_T (Self_T::*func)(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),
422
- Exception_Handler const * handler)
422
+ Data_Object<Exception_Handler> handler)
423
423
  {
424
424
  typedef Ret_T (Self_T::*Func)(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);
425
425
  return new Auto_Member_Function_Wrapper<Func, 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>(func, handler);
@@ -428,7 +428,7 @@ Wrapped_Function * wrap_function(
428
428
  template<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>
429
429
  Wrapped_Function * wrap_function(
430
430
  Ret_T (Self_T::*func)(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) const,
431
- Exception_Handler const * handler)
431
+ Data_Object<Exception_Handler> handler)
432
432
  {
433
433
  typedef Ret_T (Self_T::*Func)(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) const;
434
434
  return new Auto_Member_Function_Wrapper<Func, 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>(func, handler);
@@ -438,7 +438,7 @@ Wrapped_Function * wrap_function(
438
438
  template<typename Ret_T, typename Arg0_T, typename Arg1_T, typename Arg2_T, typename Arg3_T, typename Arg4_T, typename Arg5_T, typename Arg6_T, typename Arg7_T, typename Arg8_T, typename Arg9_T, typename Arg10_T, typename Arg11_T, typename Arg12_T, typename Arg13_T, typename Arg14_T, typename Arg15_T>
439
439
  Wrapped_Function * wrap_function(
440
440
  Ret_T (*func)(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),
441
- Exception_Handler const * handler)
441
+ Data_Object<Exception_Handler> handler)
442
442
  {
443
443
  typedef Ret_T (*Func)(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);
444
444
  return new Auto_Function_Wrapper<Func, Ret_T, Arg0_T, Arg1_T, Arg2_T, Arg3_T, Arg4_T, Arg5_T, Arg6_T, Arg7_T, Arg8_T, Arg9_T, Arg10_T, Arg11_T, Arg12_T, Arg13_T, Arg14_T, Arg15_T>(func, handler);
@@ -447,7 +447,7 @@ Wrapped_Function * wrap_function(
447
447
  template<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>
448
448
  Wrapped_Function * wrap_function(
449
449
  Ret_T (Self_T::*func)(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),
450
- Exception_Handler const * handler)
450
+ Data_Object<Exception_Handler> handler)
451
451
  {
452
452
  typedef Ret_T (Self_T::*Func)(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);
453
453
  return new Auto_Member_Function_Wrapper<Func, 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>(func, handler);
@@ -456,7 +456,7 @@ Wrapped_Function * wrap_function(
456
456
  template<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>
457
457
  Wrapped_Function * wrap_function(
458
458
  Ret_T (Self_T::*func)(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) const,
459
- Exception_Handler const * handler)
459
+ Data_Object<Exception_Handler> handler)
460
460
  {
461
461
  typedef Ret_T (Self_T::*Func)(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) const;
462
462
  return new Auto_Member_Function_Wrapper<Func, 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>(func, handler);
@@ -85,7 +85,7 @@ def wrap_header(
85
85
  end
86
86
 
87
87
  def null_wrap(*args)
88
- yield *args
88
+ yield(*args)
89
89
  end
90
90
 
91
91
  def wrap_docstring(out, docstring)
@@ -304,97 +304,7 @@ wrap_header(hpp_filename, nil, docstring, false, nil, nil, GENERATED_FILE_WARNIN
304
304
  end
305
305
  end
306
306
  end
307
- #
308
- # # ======================================================================
309
- # method_types = [
310
- # 'method', 'module_function', 'protected_method',
311
- # 'private_method', 'singleton_method'
312
- # ]
313
- # method_docstring = <<END
314
- # //! Define a %s method. Like rb_define_%s, but automatically calculates
315
- # //! the number of arguments based on the prototype of the supplied
316
- # //! function f.
317
- # VALUE define_%s(
318
- # VALUE klass,
319
- # char const * name,
320
- # VALUE (*f)(VALUE arg1, VALUE arg2, ...));
321
- # END
322
- # docstring = <<END
323
- # /*! \\file
324
- # * \\brief Helpers for defining ruby methods, overloaded on the
325
- # * signature of the function being wrapped.
326
- # */
327
- # #{method_types.map do |t| method_docstring % [ t, t, t ] end}
328
- # //! Define a global function. Like rb_define_global_function, but
329
- # //! automatically calculates the number of arguments based on the
330
- # //! prototype of the supplied function f.
331
- # void define_global_function(
332
- # char const * name,
333
- # VALUE (*f)(VALUE arg1, VALUE arg2, ...));
334
- # END
335
- # method_def = <<END
336
- # inline void define_%s(
337
- # VALUE klass,
338
- # char const * name,
339
- # VALUE(*f)(%%(args)))
340
- # {
341
- # rb_define_%s(klass, name, RUBY_METHOD_FUNC(f), %%(j));
342
- # }
343
- # END
344
- # method_decl = <<END
345
- # void define_%s(
346
- # VALUE klass,
347
- # char const * name,
348
- # VALUE(*f)(%%(args)));
349
- # END
350
- # ipp_template = <<END
351
- # #{method_types.map do |t| method_def % [ t, t ] end }\
352
- # inline void define_global_function(
353
- # char const * name,
354
- # VALUE(*f)(%(args)))
355
- # {
356
- # rb_define_global_function(name, RUBY_METHOD_FUNC(f), %(j));
357
- # }
358
- #
359
- # // ---------------------------------------------------------------------
360
- # END
361
- # hpp_template = <<END
362
- # #{method_types.map do |t| method_decl % t end }\
363
- # void define_global_function(
364
- # char const * name,
365
- # VALUE(*f)(%(args)));
366
- #
367
- # // ---------------------------------------------------------------------
368
- # END
369
- # ipp_filename = 'define_method.ipp'
370
- # hpp_filename = 'define_method.hpp'
371
- # wrap_header(ipp_filename, 'Rice') do |ipp|
372
- # wrap_header(hpp_filename, 'Rice', docstring, true) do |hpp|
373
- # for j in 0..MAX_ARGS do
374
- # t_array = (0..j).to_a
375
- # arg_list = t_array.map { |x| "VALUE" }.join(', ')
376
- # ipp.puts fill_template(ipp_template, {
377
- # :args => arg_list,
378
- # :j => j
379
- # })
380
- # ipp.puts ""
381
- # hpp.puts fill_template(hpp_template, {
382
- # :args => arg_list
383
- # })
384
- # hpp.puts ""
385
- # end
386
- # arg_list = "int, VALUE*, VALUE";
387
- # ipp.puts fill_template(ipp_template, {
388
- # :args => arg_list,
389
- # :j => -1
390
- # })
391
- # ipp.puts ""
392
- # hpp.puts fill_template(hpp_template, {
393
- # :args => arg_list
394
- # })
395
- # end
396
- # end
397
- #
307
+
398
308
  # ======================================================================
399
309
  docstring = <<END
400
310
  END
@@ -403,10 +313,11 @@ template<typename Func_T, typename Ret_T, %(typename_list)>
403
313
  Auto_Function_Wrapper<Func_T, Ret_T, %(typenames)>::
404
314
  Auto_Function_Wrapper(
405
315
  Func func,
406
- Exception_Handler const * handler)
316
+ Data_Object<Exception_Handler> handler)
407
317
  : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
408
318
  , func_(func)
409
- , handler_(handler ? handler : new Default_Exception_Handler)
319
+ , handler_(handler)
320
+ , handler_guard_(&handler_)
410
321
  {
411
322
  }
412
323
 
@@ -417,8 +328,8 @@ call(%(value_args))
417
328
  Auto_Function_Wrapper<Func_T, Ret_T, %(typenames)> * wrapper = 0;
418
329
  try
419
330
  {
420
- void * data = detail::method_data();
421
- wrapper = (Auto_Function_Wrapper<Func_T, Ret_T, %(typenames)> *)data;
331
+ Data_Object<Wrapped_Function> data(detail::method_data());
332
+ wrapper = (Auto_Function_Wrapper<Func_T, Ret_T, %(typenames)> *)data.get();
422
333
  %(arg_convert_list)
423
334
  return to_ruby(wrapper->func_(%(arg_list)));
424
335
  }
@@ -443,10 +354,11 @@ template<typename Func_T, %(typename_list)>
443
354
  Auto_Function_Wrapper<Func_T, void, %(typenames)>::
444
355
  Auto_Function_Wrapper(
445
356
  Func func,
446
- Exception_Handler const * handler)
357
+ Data_Object<Exception_Handler> handler)
447
358
  : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
448
359
  , func_(func)
449
- , handler_(handler ? handler : new Default_Exception_Handler)
360
+ , handler_(handler)
361
+ , handler_guard_(&handler_)
450
362
  {
451
363
  }
452
364
 
@@ -457,9 +369,9 @@ call(%(value_args))
457
369
  Auto_Function_Wrapper<Func_T, void, %(typenames)> * wrapper = 0;
458
370
  try
459
371
  {
460
- void * data = detail::method_data();
372
+ Data_Object<Wrapped_Function> data(detail::method_data());
461
373
  wrapper =
462
- (Auto_Function_Wrapper<Func_T, void, %(typenames)> *)data;
374
+ (Auto_Function_Wrapper<Func_T, void, %(typenames)> *)data.get();
463
375
  %(arg_convert_list)
464
376
  wrapper->func_(%(arg_list));
465
377
  return Qnil;
@@ -500,13 +412,14 @@ public:
500
412
 
501
413
  Auto_Function_Wrapper(
502
414
  Func func,
503
- Exception_Handler const * handler = 0);
415
+ Data_Object<Exception_Handler> handler);
504
416
 
505
417
  static VALUE call(%(value_args));
506
418
 
507
419
  private:
508
420
  Func func_;
509
- Exception_Handler const * handler_;
421
+ Data_Object<Exception_Handler> handler_;
422
+ Address_Registration_Guard handler_guard_;
510
423
  };
511
424
 
512
425
  template<typename Func_T, %(typename_list)>
@@ -521,19 +434,20 @@ public:
521
434
 
522
435
  Auto_Function_Wrapper(
523
436
  Func func,
524
- Exception_Handler const * handler = 0);
437
+ Data_Object<Exception_Handler> handler);
525
438
 
526
439
  static VALUE call(%(value_args));
527
440
 
528
441
  private:
529
442
  Func func_;
530
- Exception_Handler const * handler_;
443
+ Data_Object<Exception_Handler> handler_;
444
+ Address_Registration_Guard handler_guard_;
531
445
  };
532
446
 
533
447
  // ---------------------------------------------------------------------
534
448
  END
535
449
  hpp_head = <<END
536
- #include "Exception_Handler.hpp"
450
+ #include "Exception_Handler_defn.hpp"
537
451
 
538
452
  END
539
453
  ipp_head = <<END
@@ -594,10 +508,11 @@ template<typename Func_T, typename Ret_T, typename Self_T%(typename_list)>
594
508
  Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T%(typenames)>::
595
509
  Auto_Member_Function_Wrapper(
596
510
  Func func,
597
- Exception_Handler const * handler)
511
+ Data_Object<Exception_Handler> handler)
598
512
  : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
599
513
  , func_(func)
600
- , handler_(handler ? handler : new Default_Exception_Handler)
514
+ , handler_(handler)
515
+ , handler_guard_(&handler_)
601
516
  {
602
517
  }
603
518
 
@@ -608,9 +523,9 @@ call(VALUE self%(value_args))
608
523
  Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T%(typenames)> * wrapper = 0;
609
524
  try
610
525
  {
611
- void * data = detail::method_data();
526
+ Data_Object<Wrapped_Function> data(detail::method_data());
612
527
  wrapper =
613
- (Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T%(typenames)> *)data;
528
+ (Auto_Member_Function_Wrapper<Func_T, Ret_T, Self_T%(typenames)> *)data.get();
614
529
  Self_T * obj = from_ruby<Self_T *>(self);
615
530
  %(arg_convert_list)
616
531
  Func func = wrapper->func_;
@@ -637,10 +552,11 @@ template<typename Func_T, typename Self_T%(typename_list)>
637
552
  Auto_Member_Function_Wrapper<Func_T, void, Self_T%(typenames)>::
638
553
  Auto_Member_Function_Wrapper(
639
554
  Func func,
640
- Exception_Handler const * handler)
555
+ Data_Object<Exception_Handler> handler)
641
556
  : Wrapped_Function(RUBY_METHOD_FUNC(call), Num_Args)
642
557
  , func_(func)
643
- , handler_(handler ? handler : new Default_Exception_Handler)
558
+ , handler_(handler)
559
+ , handler_guard_(&handler_)
644
560
  {
645
561
  }
646
562
 
@@ -651,9 +567,9 @@ call(VALUE self%(value_args))
651
567
  Auto_Member_Function_Wrapper<Func_T, void, Self_T%(typenames)> * wrapper = 0;
652
568
  try
653
569
  {
654
- void * data = detail::method_data();
570
+ Data_Object<Wrapped_Function> data(detail::method_data());
655
571
  wrapper =
656
- (Auto_Member_Function_Wrapper<Func_T, void, Self_T%(typenames)> *)data;
572
+ (Auto_Member_Function_Wrapper<Func_T, void, Self_T%(typenames)> *)data.get();
657
573
  Self_T * obj = from_ruby<Self_T *>(self);
658
574
  %(arg_convert_list)
659
575
  Func func = wrapper->func_;
@@ -691,13 +607,14 @@ public:
691
607
 
692
608
  Auto_Member_Function_Wrapper(
693
609
  Func func,
694
- Exception_Handler const * handler = 0);
610
+ Data_Object<Exception_Handler> handler);
695
611
 
696
612
  static VALUE call(VALUE self%(value_args));
697
613
 
698
614
  private:
699
615
  Func func_;
700
- Exception_Handler const * handler_;
616
+ Data_Object<Exception_Handler> handler_;
617
+ Address_Registration_Guard handler_guard_;
701
618
  };
702
619
 
703
620
  template<typename Func_T, typename Self_T%(typename_list)>
@@ -711,13 +628,14 @@ public:
711
628
 
712
629
  Auto_Member_Function_Wrapper(
713
630
  Func func,
714
- Exception_Handler const * handler = 0);
631
+ Data_Object<Exception_Handler> handler);
715
632
 
716
633
  static VALUE call(VALUE self%(value_args));
717
634
 
718
635
  private:
719
636
  Func func_;
720
- Exception_Handler const * handler_;
637
+ Data_Object<Exception_Handler> handler_;
638
+ Address_Registration_Guard handler_guard_;
721
639
  };
722
640
 
723
641
  // ---------------------------------------------------------------------
@@ -772,112 +690,13 @@ wrap_header(hpp_filename, 'Rice::detail', docstring, true) do |hpp|
772
690
  end
773
691
  end
774
692
 
775
- =begin
776
- # ======================================================================
777
- docstring = <<END
778
- END
779
- ipp_template = <<END
780
- template<typename Ret_T, %(typename_list)>
781
- void define_method_and_auto_wrap(
782
- VALUE klass,
783
- char const * name,
784
- Ret_T (*func)(%(typenames)),
785
- Exception_Handler const * handler)
786
- {
787
- // TODO: Register this wrapper with the GC?
788
- Auto_Function_Wrapper<Ret_T, %(typenames)> * wrapper = new
789
- Auto_Function_Wrapper<Ret_T, %(typenames)>(func, handler);
790
- define_method_with_data(
791
- klass,
792
- name,
793
- (RUBY_METHOD_FUNC)Auto_Function_Wrapper<Ret_T, %(typenames)>::call,
794
- (RUBY_METHOD_FUNC)Auto_Function_Wrapper<Ret_T, %(typenames)>::Num_Args,
795
- wrapper);
796
- }
797
-
798
- template<typename Ret_T, typename Self_T%(typename_list_no_self)>
799
- void define_method_and_auto_wrap(
800
- VALUE klass,
801
- char const * name,
802
- Ret_T (Self_T::*func)(%(typenames_no_self_no_comma)),
803
- Exception_Handler const * handler)
804
- {
805
- // TODO: Register this wrapper with the GC?
806
- Auto_Member_Function_Wrapper<Ret_T, Self_T%(typenames_no_self)> * wrapper = new
807
- Auto_Member_Function_Wrapper<Ret_T, Self_T%(typenames_no_self)>(func, handler);
808
- define_method_with_data(
809
- klass,
810
- name,
811
- (RUBY_METHOD_FUNC)Auto_Member_Function_Wrapper<Ret_T, Self_T%(typenames_no_self)>::call,
812
- %(j),
813
- wrapper);
814
- }
815
-
816
- // ---------------------------------------------------------------------
817
- END
818
- hpp_template = <<END
819
- template<typename Ret_T, %(typename_list)>
820
- void define_method_and_auto_wrap(
821
- VALUE klass,
822
- char const * name,
823
- Ret_T (*func)(%(typenames)),
824
- Exception_Handler const * handler = 0);
825
-
826
- template<typename Ret_T, typename Self_T%(typename_list_no_self)>
827
- void define_method_and_auto_wrap(
828
- VALUE klass,
829
- char const * name,
830
- Ret_T (Self_T::*func)(%(typenames_no_self_no_comma)),
831
- Exception_Handler const * handler = 0);
832
-
833
- // ---------------------------------------------------------------------
834
- END
835
- hpp_head = <<END
836
- #include "Exception_Handler.hpp"
837
- END
838
- ipp_head = <<END
839
- #include "Auto_Function_Wrapper.hpp"
840
- #include "Auto_Member_Function_Wrapper.hpp"
841
- END
842
- ipp_filename = 'detail/define_method_and_auto_wrap.ipp'
843
- hpp_filename = 'detail/define_method_and_auto_wrap.hpp'
844
- wrap_header(hpp_filename, 'Rice::detail', docstring, true, hpp_head) do |hpp|
845
- wrap_header(ipp_filename, 'Rice::detail', nil, false, ipp_head) do |ipp|
846
- for j in 0..MAX_ARGS do
847
- t_array = (0..j).to_a
848
- typenames = t_array.map { |x| "Arg#{x}_T" }.join(', ')
849
- typename_list = t_array.map { |x| "typename Arg#{x}_T" }.join(', ')
850
- t_array.shift
851
- typenames_no_self = t_array.map { |x| ", Arg#{x}_T" }
852
- typename_list_no_self = t_array.map { |x| ", typename Arg#{x}_T" }
853
- typenames_no_self_no_comma = typenames_no_self.to_s.sub(', ', '')
854
- ipp.puts fill_template(ipp_template, {
855
- :typenames => typenames,
856
- :typename_list => typename_list,
857
- :typenames_no_self => typenames_no_self,
858
- :typename_list_no_self => typename_list_no_self,
859
- :typenames_no_self_no_comma => typenames_no_self_no_comma,
860
- :j => j,
861
- })
862
- hpp.puts fill_template(hpp_template, {
863
- :typenames => typenames,
864
- :typename_list => typename_list,
865
- :typename_list_no_self => typename_list_no_self,
866
- :typenames_no_self_no_comma => typenames_no_self_no_comma,
867
- })
868
- end
869
- end
870
- end
871
- # ======================================================================
872
- =end
873
-
874
693
  docstring = <<END
875
694
  END
876
695
  ipp_template = <<END
877
696
  template<typename Ret_T, %(typename_list)>
878
697
  Wrapped_Function * wrap_function(
879
698
  Ret_T (*func)(%(typenames)),
880
- Exception_Handler const * handler)
699
+ Data_Object<Exception_Handler> handler)
881
700
  {
882
701
  typedef Ret_T (*Func)(%(typenames));
883
702
  return new Auto_Function_Wrapper<Func, Ret_T, %(typenames)>(func, handler);
@@ -886,7 +705,7 @@ Wrapped_Function * wrap_function(
886
705
  template<typename Ret_T, typename Self_T%(typename_list_no_self)>
887
706
  Wrapped_Function * wrap_function(
888
707
  Ret_T (Self_T::*func)(%(typenames_no_self_no_comma)),
889
- Exception_Handler const * handler)
708
+ Data_Object<Exception_Handler> handler)
890
709
  {
891
710
  typedef Ret_T (Self_T::*Func)(%(typenames_no_self_no_comma));
892
711
  return new Auto_Member_Function_Wrapper<Func, Ret_T, Self_T%(typenames_no_self)>(func, handler);
@@ -895,7 +714,7 @@ Wrapped_Function * wrap_function(
895
714
  template<typename Ret_T, typename Self_T%(typename_list_no_self)>
896
715
  Wrapped_Function * wrap_function(
897
716
  Ret_T (Self_T::*func)(%(typenames_no_self_no_comma)) const,
898
- Exception_Handler const * handler)
717
+ Data_Object<Exception_Handler> handler)
899
718
  {
900
719
  typedef Ret_T (Self_T::*Func)(%(typenames_no_self_no_comma)) const;
901
720
  return new Auto_Member_Function_Wrapper<Func, Ret_T, Self_T%(typenames_no_self)>(func, handler);
@@ -907,23 +726,25 @@ hpp_template = <<END
907
726
  template<typename Ret_T, %(typename_list)>
908
727
  Wrapped_Function * wrap_function(
909
728
  Ret_T (*func)(%(typenames)),
910
- Exception_Handler const * handler = 0);
729
+ Data_Object<Exception_Handler> handler = Rice::Nil);
911
730
 
912
731
  template<typename Ret_T, typename Self_T%(typename_list_no_self)>
913
732
  Wrapped_Function * wrap_function(
914
733
  Ret_T (Self_T::*func)(%(typenames_no_self_no_comma)),
915
- Exception_Handler const * handler = 0);
734
+ Data_Object<Exception_Handler> handler = Rice::Nil);
916
735
 
917
736
  template<typename Ret_T, typename Self_T%(typename_list_no_self)>
918
737
  Wrapped_Function * wrap_function(
919
738
  Ret_T (Self_T::*func)(%(typenames_no_self_no_comma)) const,
920
- Exception_Handler const * handler = 0);
739
+ Data_Object<Exception_Handler> handler = Rice::Nil);
921
740
 
922
741
  // ---------------------------------------------------------------------
923
742
  END
924
743
  hpp_head = <<END
925
744
  #include "Exception_Handler.hpp"
926
745
  #include "Wrapped_Function.hpp"
746
+ #include "../Object_defn.hpp"
747
+ #include "../Data_Object.hpp"
927
748
 
928
749
  END
929
750
  ipp_head = <<END
@@ -1017,76 +838,5 @@ if ARGV[0] == '--clean' then
1017
838
  end
1018
839
  end
1019
840
 
1020
- =begin
1021
- # ======================================================================
1022
- docstring = <<END
1023
- END
1024
- hpp_template = <<END
1025
- struct Function_Traits<Ret_T, %(typenames)>
1026
- {
1027
- typedef Ret_T Result_Type;
1028
- typedef
1029
- }
1030
-
1031
- template<typename Ret_T, %(typename_list)>
1032
- Function_Traits<Ret_T, %(typenames)> functor_traits(
1033
- Ret_T (*func)(%(typenames)),
1034
- Exception_Handler const * handler = 0);
1035
-
1036
- template<typename Ret_T, typename Self_T%(typename_list_no_self)>
1037
- Function_Traits<Ret_T, %(typenames)> functor_traits(
1038
- Ret_T (Self_T::*func)(%(typenames_no_self_no_comma)),
1039
- Exception_Handler const * handler = 0);
1040
-
1041
- template<typename Ret_T, typename Self_T%(typename_list_no_self)>
1042
- Member_Function_Traits<Ret_T, Self_T%(typenames_no_self) > functor_traits(
1043
- Ret_T (Self_T::*func)(%(typenames_no_self_no_comma)) const,
1044
- Exception_Handler const * handler = 0);
1045
-
1046
- // ---------------------------------------------------------------------
1047
- END
1048
- hpp_head = <<END
1049
- #include "Exception_Handler.hpp"
1050
- #include "Wrapped_Function.hpp"
1051
-
1052
- END
1053
- hpp_tail = <<END
1054
-
1055
- template<typename T>
1056
- functor_traits(&T::operator())
1057
-
1058
- END
1059
- ipp_head = <<END
1060
- #include "Auto_Function_Wrapper.hpp"
1061
- #include "Auto_Member_Function_Wrapper.hpp"
1062
- END
1063
- ipp_filename = 'detail/function_traits.ipp'
1064
- hpp_filename = 'detail/function_traits.hpp'
1065
- wrap_header(hpp_filename, 'Rice::detail', docstring, true, hpp_head, hpp_tail) do |hpp|
1066
- for j in 0..MAX_ARGS do
1067
- t_array = (0..j).to_a
1068
- typenames = t_array.map { |x| "Arg#{x}_T" }.join(', ')
1069
- typename_list = t_array.map { |x| "typename Arg#{x}_T" }.join(', ')
1070
- t_array.shift
1071
- typenames_no_self = t_array.map { |x| ", Arg#{x}_T" }
1072
- typename_list_no_self = t_array.map { |x| ", typename Arg#{x}_T" }
1073
- typenames_no_self_no_comma = typenames_no_self.to_s.sub(', ', '')
1074
- ipp.puts fill_template(ipp_template, {
1075
- :typenames => typenames,
1076
- :typename_list => typename_list,
1077
- :typenames_no_self => typenames_no_self,
1078
- :typename_list_no_self => typename_list_no_self,
1079
- :typenames_no_self_no_comma => typenames_no_self_no_comma,
1080
- })
1081
- hpp.puts fill_template(hpp_template, {
1082
- :typenames => typenames,
1083
- :typename_list => typename_list,
1084
- :typename_list_no_self => typename_list_no_self,
1085
- :typenames_no_self_no_comma => typenames_no_self_no_comma,
1086
- })
1087
- end
1088
- end
1089
- =end
1090
-
1091
841
  end # if __FILE__ == $0 then
1092
842