rice 2.1.1 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (246) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +121 -0
  3. data/CONTRIBUTORS.md +19 -0
  4. data/COPYING +2 -2
  5. data/Gemfile +3 -0
  6. data/README.md +69 -0
  7. data/Rakefile +95 -12
  8. data/include/rice/rice.hpp +7766 -0
  9. data/lib/mkmf-rice.rb +127 -0
  10. data/lib/version.rb +3 -0
  11. data/rice/Address_Registration_Guard.ipp +75 -32
  12. data/rice/Address_Registration_Guard_defn.hpp +60 -56
  13. data/rice/Arg.hpp +80 -4
  14. data/rice/Arg.ipp +51 -0
  15. data/rice/Constructor.hpp +30 -376
  16. data/rice/Data_Object.ipp +234 -107
  17. data/rice/Data_Object_defn.hpp +77 -117
  18. data/rice/Data_Type.hpp +1 -2
  19. data/rice/Data_Type.ipp +251 -295
  20. data/rice/Data_Type_defn.hpp +175 -243
  21. data/rice/Director.hpp +14 -9
  22. data/rice/Enum.hpp +54 -104
  23. data/rice/Enum.ipp +104 -230
  24. data/rice/Exception.hpp +2 -8
  25. data/rice/Exception.ipp +65 -0
  26. data/rice/Exception_defn.hpp +46 -47
  27. data/rice/Identifier.hpp +28 -28
  28. data/rice/Identifier.ipp +23 -27
  29. data/rice/Return.hpp +39 -0
  30. data/rice/Return.ipp +33 -0
  31. data/rice/detail/Exception_Handler.ipp +22 -62
  32. data/rice/detail/Exception_Handler_defn.hpp +76 -91
  33. data/rice/detail/Iterator.hpp +18 -88
  34. data/rice/detail/Iterator.ipp +47 -0
  35. data/rice/detail/Jump_Tag.hpp +21 -0
  36. data/rice/detail/MethodInfo.hpp +44 -0
  37. data/rice/detail/MethodInfo.ipp +78 -0
  38. data/rice/detail/NativeAttribute.hpp +53 -0
  39. data/rice/detail/NativeAttribute.ipp +83 -0
  40. data/rice/detail/NativeFunction.hpp +69 -0
  41. data/rice/detail/NativeFunction.ipp +248 -0
  42. data/rice/detail/RubyFunction.hpp +39 -0
  43. data/rice/detail/RubyFunction.ipp +92 -0
  44. data/rice/detail/Type.hpp +29 -0
  45. data/rice/detail/Type.ipp +138 -0
  46. data/rice/detail/TypeRegistry.hpp +50 -0
  47. data/rice/detail/TypeRegistry.ipp +106 -0
  48. data/rice/detail/Wrapper.hpp +51 -0
  49. data/rice/detail/Wrapper.ipp +151 -0
  50. data/rice/detail/default_allocation_func.hpp +8 -19
  51. data/rice/detail/default_allocation_func.ipp +9 -8
  52. data/rice/detail/from_ruby.hpp +2 -37
  53. data/rice/detail/from_ruby.ipp +1020 -46
  54. data/rice/detail/from_ruby_defn.hpp +38 -0
  55. data/rice/detail/function_traits.hpp +124 -0
  56. data/rice/detail/method_data.hpp +23 -15
  57. data/rice/detail/method_data.ipp +53 -0
  58. data/rice/detail/rice_traits.hpp +116 -0
  59. data/rice/detail/ruby.hpp +9 -49
  60. data/rice/detail/to_ruby.hpp +3 -17
  61. data/rice/detail/to_ruby.ipp +409 -31
  62. data/rice/detail/to_ruby_defn.hpp +48 -0
  63. data/rice/forward_declares.ipp +82 -0
  64. data/rice/global_function.hpp +16 -20
  65. data/rice/global_function.ipp +8 -17
  66. data/rice/rice.hpp +59 -0
  67. data/rice/ruby_mark.hpp +5 -3
  68. data/rice/ruby_try_catch.hpp +4 -4
  69. data/rice/stl.hpp +11 -0
  70. data/sample/callbacks/extconf.rb +6 -0
  71. data/sample/callbacks/sample_callbacks.cpp +35 -0
  72. data/sample/callbacks/test.rb +28 -0
  73. data/sample/enum/extconf.rb +3 -0
  74. data/sample/enum/sample_enum.cpp +3 -17
  75. data/sample/enum/test.rb +2 -2
  76. data/sample/inheritance/animals.cpp +8 -24
  77. data/sample/inheritance/extconf.rb +3 -0
  78. data/sample/inheritance/test.rb +1 -1
  79. data/sample/map/extconf.rb +3 -0
  80. data/sample/map/map.cpp +10 -18
  81. data/sample/map/test.rb +1 -1
  82. data/test/embed_ruby.cpp +34 -0
  83. data/test/embed_ruby.hpp +4 -0
  84. data/test/ext/t1/extconf.rb +3 -0
  85. data/test/ext/t1/t1.cpp +1 -3
  86. data/test/ext/t2/extconf.rb +3 -0
  87. data/test/ext/t2/t2.cpp +1 -1
  88. data/test/extconf.rb +23 -0
  89. data/test/ruby/test_callbacks_sample.rb +28 -0
  90. data/test/ruby/test_multiple_extensions.rb +18 -0
  91. data/test/ruby/test_multiple_extensions_same_class.rb +14 -0
  92. data/test/ruby/test_multiple_extensions_with_inheritance.rb +20 -0
  93. data/test/test_Address_Registration_Guard.cpp +25 -11
  94. data/test/test_Array.cpp +131 -74
  95. data/test/test_Attribute.cpp +147 -0
  96. data/test/test_Builtin_Object.cpp +36 -15
  97. data/test/test_Class.cpp +151 -274
  98. data/test/test_Constructor.cpp +10 -9
  99. data/test/test_Data_Object.cpp +135 -193
  100. data/test/test_Data_Type.cpp +323 -252
  101. data/test/test_Director.cpp +56 -42
  102. data/test/test_Enum.cpp +230 -104
  103. data/test/test_Exception.cpp +7 -7
  104. data/test/test_Hash.cpp +33 -31
  105. data/test/test_Identifier.cpp +6 -6
  106. data/test/test_Inheritance.cpp +221 -0
  107. data/test/test_Iterator.cpp +161 -0
  108. data/test/test_Jump_Tag.cpp +1 -1
  109. data/test/test_Keep_Alive.cpp +161 -0
  110. data/test/test_Memory_Management.cpp +4 -5
  111. data/test/test_Module.cpp +169 -111
  112. data/test/test_Object.cpp +51 -19
  113. data/test/test_Ownership.cpp +275 -0
  114. data/test/test_Self.cpp +205 -0
  115. data/test/test_Stl_Optional.cpp +90 -0
  116. data/test/test_Stl_Pair.cpp +144 -0
  117. data/test/test_Stl_SmartPointer.cpp +200 -0
  118. data/test/test_Stl_String.cpp +74 -0
  119. data/test/test_Stl_Vector.cpp +652 -0
  120. data/test/test_String.cpp +3 -3
  121. data/test/test_Struct.cpp +31 -40
  122. data/test/test_Symbol.cpp +3 -3
  123. data/test/test_To_From_Ruby.cpp +283 -218
  124. data/test/test_global_functions.cpp +41 -20
  125. data/test/unittest.cpp +34 -8
  126. data/test/unittest.hpp +0 -4
  127. metadata +117 -137
  128. data/Doxyfile +0 -2280
  129. data/Makefile.am +0 -26
  130. data/Makefile.in +0 -920
  131. data/README +0 -1055
  132. data/README.mingw +0 -8
  133. data/aclocal.m4 +0 -1088
  134. data/bootstrap +0 -8
  135. data/check_stdcxx_11.ac +0 -142
  136. data/config.guess +0 -1421
  137. data/config.sub +0 -1807
  138. data/configure +0 -7481
  139. data/configure.ac +0 -55
  140. data/depcomp +0 -791
  141. data/doxygen.ac +0 -314
  142. data/doxygen.am +0 -186
  143. data/extconf.rb +0 -69
  144. data/install-sh +0 -501
  145. data/missing +0 -215
  146. data/post-autoconf.rb +0 -22
  147. data/post-automake.rb +0 -28
  148. data/rice/Address_Registration_Guard.cpp +0 -22
  149. data/rice/Arg_impl.hpp +0 -129
  150. data/rice/Arg_operators.cpp +0 -21
  151. data/rice/Arg_operators.hpp +0 -19
  152. data/rice/Array.hpp +0 -214
  153. data/rice/Array.ipp +0 -256
  154. data/rice/Builtin_Object.hpp +0 -8
  155. data/rice/Builtin_Object.ipp +0 -50
  156. data/rice/Builtin_Object_defn.hpp +0 -50
  157. data/rice/Class.cpp +0 -57
  158. data/rice/Class.hpp +0 -8
  159. data/rice/Class.ipp +0 -6
  160. data/rice/Class_defn.hpp +0 -83
  161. data/rice/Data_Type.cpp +0 -54
  162. data/rice/Data_Type_fwd.hpp +0 -12
  163. data/rice/Director.cpp +0 -13
  164. data/rice/Exception.cpp +0 -59
  165. data/rice/Exception_Base.hpp +0 -8
  166. data/rice/Exception_Base.ipp +0 -13
  167. data/rice/Exception_Base_defn.hpp +0 -27
  168. data/rice/Hash.hpp +0 -227
  169. data/rice/Hash.ipp +0 -329
  170. data/rice/Identifier.cpp +0 -8
  171. data/rice/Jump_Tag.hpp +0 -24
  172. data/rice/Makefile.am +0 -124
  173. data/rice/Makefile.in +0 -839
  174. data/rice/Module.cpp +0 -84
  175. data/rice/Module.hpp +0 -8
  176. data/rice/Module.ipp +0 -6
  177. data/rice/Module_defn.hpp +0 -88
  178. data/rice/Module_impl.hpp +0 -281
  179. data/rice/Module_impl.ipp +0 -345
  180. data/rice/Object.cpp +0 -169
  181. data/rice/Object.hpp +0 -8
  182. data/rice/Object.ipp +0 -19
  183. data/rice/Object_defn.hpp +0 -191
  184. data/rice/Require_Guard.hpp +0 -21
  185. data/rice/String.cpp +0 -94
  186. data/rice/String.hpp +0 -91
  187. data/rice/Struct.cpp +0 -117
  188. data/rice/Struct.hpp +0 -162
  189. data/rice/Struct.ipp +0 -26
  190. data/rice/Symbol.cpp +0 -25
  191. data/rice/Symbol.hpp +0 -66
  192. data/rice/Symbol.ipp +0 -44
  193. data/rice/config.hpp +0 -47
  194. data/rice/config.hpp.in +0 -46
  195. data/rice/detail/Arguments.hpp +0 -118
  196. data/rice/detail/Auto_Function_Wrapper.hpp +0 -898
  197. data/rice/detail/Auto_Function_Wrapper.ipp +0 -3694
  198. data/rice/detail/Auto_Member_Function_Wrapper.hpp +0 -897
  199. data/rice/detail/Auto_Member_Function_Wrapper.ipp +0 -2774
  200. data/rice/detail/Caster.hpp +0 -103
  201. data/rice/detail/Not_Copyable.hpp +0 -25
  202. data/rice/detail/Wrapped_Function.hpp +0 -33
  203. data/rice/detail/cfp.hpp +0 -24
  204. data/rice/detail/cfp.ipp +0 -51
  205. data/rice/detail/check_ruby_type.cpp +0 -27
  206. data/rice/detail/check_ruby_type.hpp +0 -23
  207. data/rice/detail/creation_funcs.hpp +0 -37
  208. data/rice/detail/creation_funcs.ipp +0 -36
  209. data/rice/detail/define_method_and_auto_wrap.hpp +0 -31
  210. data/rice/detail/define_method_and_auto_wrap.ipp +0 -30
  211. data/rice/detail/demangle.cpp +0 -56
  212. data/rice/detail/demangle.hpp +0 -19
  213. data/rice/detail/env.hpp +0 -11
  214. data/rice/detail/method_data.cpp +0 -86
  215. data/rice/detail/node.hpp +0 -13
  216. data/rice/detail/object_call.hpp +0 -69
  217. data/rice/detail/object_call.ipp +0 -131
  218. data/rice/detail/protect.cpp +0 -29
  219. data/rice/detail/protect.hpp +0 -34
  220. data/rice/detail/ruby_version_code.hpp +0 -6
  221. data/rice/detail/ruby_version_code.hpp.in +0 -6
  222. data/rice/detail/st.hpp +0 -22
  223. data/rice/detail/traits.hpp +0 -43
  224. data/rice/detail/win32.hpp +0 -16
  225. data/rice/detail/wrap_function.hpp +0 -341
  226. data/rice/detail/wrap_function.ipp +0 -514
  227. data/rice/protect.hpp +0 -92
  228. data/rice/protect.ipp +0 -1134
  229. data/rice/rubypp.rb +0 -97
  230. data/rice/to_from_ruby.hpp +0 -8
  231. data/rice/to_from_ruby.ipp +0 -294
  232. data/rice/to_from_ruby_defn.hpp +0 -70
  233. data/ruby.ac +0 -135
  234. data/ruby/Makefile.am +0 -1
  235. data/ruby/Makefile.in +0 -625
  236. data/ruby/lib/Makefile.am +0 -3
  237. data/ruby/lib/Makefile.in +0 -503
  238. data/ruby/lib/mkmf-rice.rb.in +0 -217
  239. data/ruby/lib/version.rb +0 -3
  240. data/sample/Makefile.am +0 -47
  241. data/sample/Makefile.in +0 -486
  242. data/test/Makefile.am +0 -72
  243. data/test/Makefile.in +0 -1150
  244. data/test/ext/Makefile.am +0 -41
  245. data/test/ext/Makefile.in +0 -480
  246. data/test/test_rice.rb +0 -41
@@ -1,19 +0,0 @@
1
- #ifndef Rice__detail__demangle__hpp_
2
- #define Rice__detail__demangle__hpp_
3
-
4
- #include <string>
5
-
6
- namespace Rice
7
- {
8
-
9
- namespace detail
10
- {
11
-
12
- std::string demangle(char const * mangled_name);
13
- std::string demangle(std::string const & mangled_name);
14
-
15
- } // detail
16
-
17
- } // Rice
18
-
19
- #endif // Rice__detail__demangle__hpp_
data/rice/detail/env.hpp DELETED
@@ -1,11 +0,0 @@
1
- #ifndef Rice__detail__env__hpp_
2
- #define Rice__detail__env__hpp_
3
-
4
- /**
5
- * Helper header for the env.h ruby include file, which does
6
- * not have extern "C"
7
- */
8
-
9
- #include "ruby_version_code.hpp"
10
-
11
- #endif
@@ -1,86 +0,0 @@
1
- #include "method_data.hpp"
2
- #include "ruby.hpp"
3
-
4
- // TODO: This is silly, autoconf...
5
- #undef PACKAGE_NAME
6
- #undef PACKAGE_STRING
7
- #undef PACKAGE_TARNAME
8
- #undef PACKAGE_VERSION
9
- #include "../config.hpp"
10
-
11
- #define RICE_ID rb_intern("__rice__")
12
-
13
- VALUE
14
- Rice::detail::
15
- method_data()
16
- {
17
- ID id;
18
- VALUE klass;
19
- if (!rb_frame_method_id_and_class(&id, &klass))
20
- {
21
- rb_raise(
22
- rb_eRuntimeError,
23
- "Cannot get method id and class for function");
24
- }
25
-
26
- if (rb_type(klass) == T_ICLASS) {
27
- klass = rb_class_of(klass);
28
- }
29
-
30
- VALUE store = rb_ivar_get(klass, RICE_ID);
31
- return (store == Qnil) ? Qnil : rb_ivar_get(store, id);
32
- }
33
-
34
-
35
- // Define a method and attach data to it.
36
- // The method looks to ruby like a normal aliased CFUNC, with a modified
37
- // origin class.
38
- //
39
- // How this works:
40
- //
41
- // To store method data and have it registered with the GC, we need a
42
- // "slot" to put it in. This "slot" must be recognized and marked by
43
- // the garbage collector. There happens to be such a place we can put
44
- // data, and it has to do with aliased methods. When Ruby creates an
45
- // alias for a method, it stores a reference to the original class in
46
- // the method entry. The form of the method entry differs from ruby
47
- // version to ruby version, but the concept is the same across all of
48
- // them.
49
- //
50
- // In Rice, we make use of this by attach the data to a dummy object
51
- // (store) in the class variables table.
52
- //
53
- // When Ruby makes a method call, it stores the class Object and method
54
- // ID in the current stack frame. When Ruby calls into Rice, we grab
55
- // the class and method ID from the stack frame, then pull the data out
56
- // of the class. The data item is then used to determine how to convert
57
- // arguments and return type, how to handle exceptions, etc.
58
- //
59
- VALUE
60
- Rice::detail::
61
- define_method_with_data(
62
- VALUE klass, ID id, VALUE (*cfunc)(ANYARGS), int arity, VALUE data)
63
- {
64
- VALUE store = rb_attr_get(klass, RICE_ID);
65
-
66
- if (store == Qnil) {
67
- store = rb_obj_alloc(rb_cObject);
68
- // store is stored in the instance variables table with
69
- // name "__rice__".
70
- // since "__rice__" does not have the @ prefix,
71
- // so it can never be read at the Ruby level.
72
- rb_ivar_set(klass, RICE_ID, store);
73
- }
74
-
75
- rb_ivar_set(store, id, data);
76
-
77
- // Create the aliased method on the origin class
78
- rb_define_method(
79
- klass,
80
- rb_id2name(id),
81
- cfunc,
82
- arity);
83
-
84
- return Qnil;
85
- }
86
-
data/rice/detail/node.hpp DELETED
@@ -1,13 +0,0 @@
1
- #ifndef Rice__detail__node__hpp_
2
- #define Rice__detail__node__hpp_
3
-
4
- /**
5
- * Helper header for the node.h ruby include file, which does
6
- * not have extern "C"
7
- */
8
-
9
- extern "C" {
10
- #include "node.h"
11
- }
12
-
13
- #endif
@@ -1,69 +0,0 @@
1
- // This is a generated file. DO NOT EDIT!!
2
- #ifdef DOXYGEN
3
-
4
- //! Call the Ruby method specified by 'id' on object 'obj'.
5
- /*! Pass in arguments (arg1, arg2, ...). The arguments will be converted to
6
- * Ruby objects with to_ruby<>. The return value will automatically be
7
- * converted to type Retval_T with from_ruby<>.
8
- *
9
- * E.g.:
10
- * \code
11
- * float y = x.call<float>("foo", z, 42);
12
- * \endcode
13
- */
14
- template<typename Retval_T>
15
- Retval_T call(Identifier id, T1 arg1, T2 arg2, ...) const;
16
-
17
- //! Version of call which defaults to Object return type.
18
- Object call(Identifier id, T1 arg1, T2 arg2, ...) const;
19
- #else
20
-
21
- Object call(Identifier id) const;
22
-
23
- template<typename T0>
24
- Object call(Identifier id, T0 arg0) const;
25
-
26
- template<typename T0, typename T1>
27
- Object call(Identifier id, T0 arg0, T1 arg1) const;
28
-
29
- template<typename T0, typename T1, typename T2>
30
- Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2) const;
31
-
32
- template<typename T0, typename T1, typename T2, typename T3>
33
- Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3) const;
34
-
35
- template<typename T0, typename T1, typename T2, typename T3, typename T4>
36
- Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4) const;
37
-
38
- template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
39
- Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) const;
40
-
41
- template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
42
- Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6) const;
43
-
44
- template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
45
- Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7) const;
46
-
47
- template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
48
- Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8) const;
49
-
50
- template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
51
- Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9) const;
52
-
53
- template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
54
- Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10) const;
55
-
56
- template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>
57
- Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11) const;
58
-
59
- template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12>
60
- Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12) const;
61
-
62
- template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13>
63
- Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13) const;
64
-
65
- template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14>
66
- Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14) const;
67
-
68
-
69
- #endif
@@ -1,131 +0,0 @@
1
- // This is a generated file. DO NOT EDIT!!
2
- #include "../protect.hpp"
3
- #include "../to_from_ruby.hpp"
4
-
5
- inline Rice::Object Rice::Object::
6
- call(Identifier id) const
7
- {
8
- VALUE args[] = { };
9
- return protect(rb_funcall2, value(), id, 0, args);
10
- }
11
-
12
- template<typename T0>
13
- inline Rice::Object Rice::Object::
14
- call(Identifier id, T0 arg0) const
15
- {
16
- VALUE args[] = { to_ruby(arg0) };
17
- return protect(rb_funcall2, value(), id, 1, args);
18
- }
19
-
20
- template<typename T0, typename T1>
21
- inline Rice::Object Rice::Object::
22
- call(Identifier id, T0 arg0, T1 arg1) const
23
- {
24
- VALUE args[] = { to_ruby(arg0), to_ruby(arg1) };
25
- return protect(rb_funcall2, value(), id, 2, args);
26
- }
27
-
28
- template<typename T0, typename T1, typename T2>
29
- inline Rice::Object Rice::Object::
30
- call(Identifier id, T0 arg0, T1 arg1, T2 arg2) const
31
- {
32
- VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2) };
33
- return protect(rb_funcall2, value(), id, 3, args);
34
- }
35
-
36
- template<typename T0, typename T1, typename T2, typename T3>
37
- inline Rice::Object Rice::Object::
38
- call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3) const
39
- {
40
- VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2), to_ruby(arg3) };
41
- return protect(rb_funcall2, value(), id, 4, args);
42
- }
43
-
44
- template<typename T0, typename T1, typename T2, typename T3, typename T4>
45
- inline Rice::Object Rice::Object::
46
- call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4) const
47
- {
48
- VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2), to_ruby(arg3), to_ruby(arg4) };
49
- return protect(rb_funcall2, value(), id, 5, args);
50
- }
51
-
52
- template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
53
- inline Rice::Object Rice::Object::
54
- call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) const
55
- {
56
- VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2), to_ruby(arg3), to_ruby(arg4), to_ruby(arg5) };
57
- return protect(rb_funcall2, value(), id, 6, args);
58
- }
59
-
60
- template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
61
- inline Rice::Object Rice::Object::
62
- call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6) const
63
- {
64
- VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2), to_ruby(arg3), to_ruby(arg4), to_ruby(arg5), to_ruby(arg6) };
65
- return protect(rb_funcall2, value(), id, 7, args);
66
- }
67
-
68
- template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
69
- inline Rice::Object Rice::Object::
70
- call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7) const
71
- {
72
- VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2), to_ruby(arg3), to_ruby(arg4), to_ruby(arg5), to_ruby(arg6), to_ruby(arg7) };
73
- return protect(rb_funcall2, value(), id, 8, args);
74
- }
75
-
76
- template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
77
- inline Rice::Object Rice::Object::
78
- call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8) const
79
- {
80
- VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2), to_ruby(arg3), to_ruby(arg4), to_ruby(arg5), to_ruby(arg6), to_ruby(arg7), to_ruby(arg8) };
81
- return protect(rb_funcall2, value(), id, 9, args);
82
- }
83
-
84
- template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
85
- inline Rice::Object Rice::Object::
86
- call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9) const
87
- {
88
- VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2), to_ruby(arg3), to_ruby(arg4), to_ruby(arg5), to_ruby(arg6), to_ruby(arg7), to_ruby(arg8), to_ruby(arg9) };
89
- return protect(rb_funcall2, value(), id, 10, args);
90
- }
91
-
92
- template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
93
- inline Rice::Object Rice::Object::
94
- call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10) const
95
- {
96
- VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2), to_ruby(arg3), to_ruby(arg4), to_ruby(arg5), to_ruby(arg6), to_ruby(arg7), to_ruby(arg8), to_ruby(arg9), to_ruby(arg10) };
97
- return protect(rb_funcall2, value(), id, 11, args);
98
- }
99
-
100
- template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>
101
- inline Rice::Object Rice::Object::
102
- call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11) const
103
- {
104
- VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2), to_ruby(arg3), to_ruby(arg4), to_ruby(arg5), to_ruby(arg6), to_ruby(arg7), to_ruby(arg8), to_ruby(arg9), to_ruby(arg10), to_ruby(arg11) };
105
- return protect(rb_funcall2, value(), id, 12, args);
106
- }
107
-
108
- template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12>
109
- inline Rice::Object Rice::Object::
110
- call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12) const
111
- {
112
- VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2), to_ruby(arg3), to_ruby(arg4), to_ruby(arg5), to_ruby(arg6), to_ruby(arg7), to_ruby(arg8), to_ruby(arg9), to_ruby(arg10), to_ruby(arg11), to_ruby(arg12) };
113
- return protect(rb_funcall2, value(), id, 13, args);
114
- }
115
-
116
- template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13>
117
- inline Rice::Object Rice::Object::
118
- call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13) const
119
- {
120
- VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2), to_ruby(arg3), to_ruby(arg4), to_ruby(arg5), to_ruby(arg6), to_ruby(arg7), to_ruby(arg8), to_ruby(arg9), to_ruby(arg10), to_ruby(arg11), to_ruby(arg12), to_ruby(arg13) };
121
- return protect(rb_funcall2, value(), id, 14, args);
122
- }
123
-
124
- template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14>
125
- inline Rice::Object Rice::Object::
126
- call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14) const
127
- {
128
- VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2), to_ruby(arg3), to_ruby(arg4), to_ruby(arg5), to_ruby(arg6), to_ruby(arg7), to_ruby(arg8), to_ruby(arg9), to_ruby(arg10), to_ruby(arg11), to_ruby(arg12), to_ruby(arg13), to_ruby(arg14) };
129
- return protect(rb_funcall2, value(), id, 15, args);
130
- }
131
-
@@ -1,29 +0,0 @@
1
- #include "protect.hpp"
2
- #include "../Exception.hpp"
3
- #include "../Jump_Tag.hpp"
4
-
5
- #ifndef TAG_RAISE
6
- #define TAG_RAISE 0x6
7
- #endif
8
-
9
- VALUE Rice::detail::
10
- protect(
11
- RUBY_VALUE_FUNC f,
12
- VALUE arg)
13
- {
14
- int state = 0;
15
- VALUE retval = rb_protect(f, arg, &state);
16
- if(state != 0)
17
- {
18
- VALUE err = rb_errinfo();
19
- if(state == TAG_RAISE && RTEST(err))
20
- {
21
- // TODO: convert NoMemoryError into bad_alloc?
22
- rb_set_errinfo(Rice::Nil);
23
- throw Rice::Exception(err);
24
- }
25
- throw Jump_Tag(state);
26
- }
27
- return retval;
28
- }
29
-
@@ -1,34 +0,0 @@
1
- #ifndef Rice__detail__protect__hpp_
2
- #define Rice__detail__protect__hpp_
3
-
4
- #include "ruby.hpp"
5
-
6
- /*! \file
7
- * \brief Functions for making exception-safe calls into Ruby code.
8
- * These are the building blocks for building other exception-safe
9
- * helper functions.
10
- */
11
-
12
- namespace Rice
13
- {
14
-
15
- namespace detail
16
- {
17
-
18
- //! Call the given function, converting Ruby exceptions to C++
19
- //! exceptions.
20
- /*! Call the function f with the parameter arg If f raises a Ruby
21
- * exception, then the exception is re-thrown as an Exception. If f
22
- * exits with any other non-zero tag (e.g. a Symbol is thrown), then the
23
- * tag is re-thrown as a Jump_Tag.
24
- */
25
- VALUE protect(
26
- RUBY_VALUE_FUNC f,
27
- VALUE arg);
28
-
29
- } // namespace detail
30
-
31
- } // namespace Rice
32
-
33
- #endif // Rice__detail__protect__hpp_
34
-
@@ -1,6 +0,0 @@
1
- #ifndef Rice__detail__ruby_version_code__hpp
2
- #define Rice__detail__ruby_version_code__hpp
3
-
4
- #define RICE__RUBY_VERSION_CODE 231
5
-
6
- #endif // Rice__detail__ruby_version_code__hpp
@@ -1,6 +0,0 @@
1
- #ifndef Rice__detail__ruby_version_code__hpp
2
- #define Rice__detail__ruby_version_code__hpp
3
-
4
- #define RICE__RUBY_VERSION_CODE @RUBY_VERSION_CODE@
5
-
6
- #endif // Rice__detail__ruby_version_code__hpp
data/rice/detail/st.hpp DELETED
@@ -1,22 +0,0 @@
1
- #ifndef Exc_Ruby___cpp__st__hpp_
2
- #define Exc_Ruby___cpp__st__hpp_
3
-
4
- /*! \file
5
- * \brief Hacks to allow functions in st.h to be called from C++
6
- * programs.
7
- */
8
-
9
- #include "ruby.hpp"
10
-
11
- // Ruby doesn't put extern "C" around st.h
12
-
13
- extern "C"
14
- {
15
- #ifdef RUBY_VM
16
- #include "ruby/st.h"
17
- #else
18
- #include "st.h"
19
- #endif
20
- }
21
-
22
- #endif // Exc_Ruby___cpp__st__hpp_
@@ -1,43 +0,0 @@
1
- #ifndef Rice__detail__traits__hpp_
2
- #define Rice__detail__traits__hpp_
3
-
4
- namespace Rice
5
- {
6
- namespace detail
7
- {
8
-
9
- /**
10
- * Remove const from a type
11
- */
12
- template<typename T>
13
- struct remove_const { typedef T Type; };
14
-
15
- template<typename T>
16
- struct remove_const<const T> { typedef T Type; };
17
-
18
- /**
19
- * Remove a reference from a type
20
- */
21
- template<typename T>
22
- struct remove_ref { typedef T Type; };
23
-
24
- template<typename T>
25
- struct remove_ref<T &> { typedef T Type; };
26
-
27
- /**
28
- * Do both of the above in one easy step
29
- */
30
- template<typename T>
31
- struct sanitize
32
- {
33
- typedef T Type;
34
- //typedef typename remove_const<
35
- //typename remove_ref<T>::Type
36
- //>::Type Type;
37
- };
38
-
39
- }
40
- }
41
-
42
-
43
- #endif // Rice__detail__traits__hpp_