rice 2.1.2 → 4.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (245) 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 +45 -1028
  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 -276
  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 +120 -136
  128. data/Doxyfile +0 -2268
  129. data/Makefile.am +0 -26
  130. data/Makefile.in +0 -920
  131. data/README.mingw +0 -8
  132. data/aclocal.m4 +0 -1088
  133. data/bootstrap +0 -8
  134. data/check_stdcxx_11.ac +0 -142
  135. data/config.guess +0 -1421
  136. data/config.sub +0 -1807
  137. data/configure +0 -7481
  138. data/configure.ac +0 -55
  139. data/depcomp +0 -791
  140. data/doxygen.ac +0 -314
  141. data/doxygen.am +0 -186
  142. data/extconf.rb +0 -69
  143. data/install-sh +0 -501
  144. data/missing +0 -215
  145. data/post-autoconf.rb +0 -22
  146. data/post-automake.rb +0 -28
  147. data/rice/Address_Registration_Guard.cpp +0 -22
  148. data/rice/Arg_impl.hpp +0 -129
  149. data/rice/Arg_operators.cpp +0 -21
  150. data/rice/Arg_operators.hpp +0 -19
  151. data/rice/Array.hpp +0 -214
  152. data/rice/Array.ipp +0 -256
  153. data/rice/Builtin_Object.hpp +0 -8
  154. data/rice/Builtin_Object.ipp +0 -50
  155. data/rice/Builtin_Object_defn.hpp +0 -50
  156. data/rice/Class.cpp +0 -57
  157. data/rice/Class.hpp +0 -8
  158. data/rice/Class.ipp +0 -6
  159. data/rice/Class_defn.hpp +0 -83
  160. data/rice/Data_Type.cpp +0 -54
  161. data/rice/Data_Type_fwd.hpp +0 -12
  162. data/rice/Director.cpp +0 -13
  163. data/rice/Exception.cpp +0 -59
  164. data/rice/Exception_Base.hpp +0 -8
  165. data/rice/Exception_Base.ipp +0 -13
  166. data/rice/Exception_Base_defn.hpp +0 -27
  167. data/rice/Hash.hpp +0 -227
  168. data/rice/Hash.ipp +0 -329
  169. data/rice/Identifier.cpp +0 -8
  170. data/rice/Jump_Tag.hpp +0 -24
  171. data/rice/Makefile.am +0 -124
  172. data/rice/Makefile.in +0 -839
  173. data/rice/Module.cpp +0 -84
  174. data/rice/Module.hpp +0 -8
  175. data/rice/Module.ipp +0 -6
  176. data/rice/Module_defn.hpp +0 -88
  177. data/rice/Module_impl.hpp +0 -281
  178. data/rice/Module_impl.ipp +0 -345
  179. data/rice/Object.cpp +0 -169
  180. data/rice/Object.hpp +0 -8
  181. data/rice/Object.ipp +0 -19
  182. data/rice/Object_defn.hpp +0 -191
  183. data/rice/Require_Guard.hpp +0 -21
  184. data/rice/String.cpp +0 -94
  185. data/rice/String.hpp +0 -91
  186. data/rice/Struct.cpp +0 -117
  187. data/rice/Struct.hpp +0 -162
  188. data/rice/Struct.ipp +0 -26
  189. data/rice/Symbol.cpp +0 -25
  190. data/rice/Symbol.hpp +0 -66
  191. data/rice/Symbol.ipp +0 -44
  192. data/rice/config.hpp +0 -47
  193. data/rice/config.hpp.in +0 -46
  194. data/rice/detail/Arguments.hpp +0 -118
  195. data/rice/detail/Auto_Function_Wrapper.hpp +0 -898
  196. data/rice/detail/Auto_Function_Wrapper.ipp +0 -3694
  197. data/rice/detail/Auto_Member_Function_Wrapper.hpp +0 -897
  198. data/rice/detail/Auto_Member_Function_Wrapper.ipp +0 -2774
  199. data/rice/detail/Caster.hpp +0 -103
  200. data/rice/detail/Not_Copyable.hpp +0 -25
  201. data/rice/detail/Wrapped_Function.hpp +0 -33
  202. data/rice/detail/cfp.hpp +0 -24
  203. data/rice/detail/cfp.ipp +0 -51
  204. data/rice/detail/check_ruby_type.cpp +0 -27
  205. data/rice/detail/check_ruby_type.hpp +0 -23
  206. data/rice/detail/creation_funcs.hpp +0 -37
  207. data/rice/detail/creation_funcs.ipp +0 -36
  208. data/rice/detail/define_method_and_auto_wrap.hpp +0 -31
  209. data/rice/detail/define_method_and_auto_wrap.ipp +0 -30
  210. data/rice/detail/demangle.cpp +0 -56
  211. data/rice/detail/demangle.hpp +0 -19
  212. data/rice/detail/env.hpp +0 -11
  213. data/rice/detail/method_data.cpp +0 -86
  214. data/rice/detail/node.hpp +0 -13
  215. data/rice/detail/object_call.hpp +0 -69
  216. data/rice/detail/object_call.ipp +0 -131
  217. data/rice/detail/protect.cpp +0 -29
  218. data/rice/detail/protect.hpp +0 -34
  219. data/rice/detail/ruby_version_code.hpp +0 -6
  220. data/rice/detail/ruby_version_code.hpp.in +0 -6
  221. data/rice/detail/st.hpp +0 -22
  222. data/rice/detail/traits.hpp +0 -43
  223. data/rice/detail/win32.hpp +0 -16
  224. data/rice/detail/wrap_function.hpp +0 -341
  225. data/rice/detail/wrap_function.ipp +0 -514
  226. data/rice/protect.hpp +0 -92
  227. data/rice/protect.ipp +0 -1134
  228. data/rice/rubypp.rb +0 -97
  229. data/rice/to_from_ruby.hpp +0 -8
  230. data/rice/to_from_ruby.ipp +0 -294
  231. data/rice/to_from_ruby_defn.hpp +0 -70
  232. data/ruby.ac +0 -135
  233. data/ruby/Makefile.am +0 -1
  234. data/ruby/Makefile.in +0 -625
  235. data/ruby/lib/Makefile.am +0 -3
  236. data/ruby/lib/Makefile.in +0 -503
  237. data/ruby/lib/mkmf-rice.rb.in +0 -217
  238. data/ruby/lib/version.rb +0 -3
  239. data/sample/Makefile.am +0 -47
  240. data/sample/Makefile.in +0 -486
  241. data/test/Makefile.am +0 -72
  242. data/test/Makefile.in +0 -1150
  243. data/test/ext/Makefile.am +0 -41
  244. data/test/ext/Makefile.in +0 -480
  245. 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 241
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_