rice 3.0.0 → 4.0.3

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 (238) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +121 -0
  3. data/CONTRIBUTORS.md +19 -0
  4. data/Gemfile +3 -0
  5. data/README.md +44 -1025
  6. data/Rakefile +95 -12
  7. data/include/rice/rice.hpp +7766 -0
  8. data/include/rice/stl.hpp +1113 -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 +12 -14
  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 +11 -6
  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 -46
  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 +3 -0
  71. data/sample/callbacks/sample_callbacks.cpp +10 -13
  72. data/sample/enum/extconf.rb +3 -0
  73. data/sample/enum/sample_enum.cpp +3 -17
  74. data/sample/enum/test.rb +2 -2
  75. data/sample/inheritance/animals.cpp +8 -24
  76. data/sample/inheritance/extconf.rb +3 -0
  77. data/sample/inheritance/test.rb +1 -1
  78. data/sample/map/extconf.rb +3 -0
  79. data/sample/map/map.cpp +10 -18
  80. data/sample/map/test.rb +1 -1
  81. data/test/embed_ruby.cpp +18 -5
  82. data/test/ext/t1/extconf.rb +3 -0
  83. data/test/ext/t1/t1.cpp +1 -3
  84. data/test/ext/t2/extconf.rb +3 -0
  85. data/test/ext/t2/t2.cpp +1 -1
  86. data/test/extconf.rb +23 -0
  87. data/test/ruby/test_callbacks_sample.rb +28 -0
  88. data/test/ruby/test_multiple_extensions.rb +18 -0
  89. data/test/ruby/test_multiple_extensions_same_class.rb +14 -0
  90. data/test/ruby/test_multiple_extensions_with_inheritance.rb +20 -0
  91. data/test/test_Address_Registration_Guard.cpp +23 -10
  92. data/test/test_Array.cpp +129 -73
  93. data/test/test_Attribute.cpp +147 -0
  94. data/test/test_Builtin_Object.cpp +34 -14
  95. data/test/test_Class.cpp +149 -275
  96. data/test/test_Constructor.cpp +10 -9
  97. data/test/test_Data_Object.cpp +133 -192
  98. data/test/test_Data_Type.cpp +322 -252
  99. data/test/test_Director.cpp +54 -41
  100. data/test/test_Enum.cpp +228 -103
  101. data/test/test_Exception.cpp +5 -6
  102. data/test/test_Hash.cpp +31 -30
  103. data/test/test_Identifier.cpp +4 -5
  104. data/test/test_Inheritance.cpp +221 -0
  105. data/test/test_Iterator.cpp +161 -0
  106. data/test/test_Jump_Tag.cpp +1 -1
  107. data/test/test_Keep_Alive.cpp +161 -0
  108. data/test/test_Memory_Management.cpp +2 -4
  109. data/test/test_Module.cpp +167 -110
  110. data/test/test_Object.cpp +41 -21
  111. data/test/test_Ownership.cpp +275 -0
  112. data/test/test_Self.cpp +205 -0
  113. data/test/test_Stl_Optional.cpp +90 -0
  114. data/test/test_Stl_Pair.cpp +144 -0
  115. data/test/test_Stl_SmartPointer.cpp +200 -0
  116. data/test/test_Stl_String.cpp +74 -0
  117. data/test/test_Stl_Vector.cpp +652 -0
  118. data/test/test_String.cpp +1 -2
  119. data/test/test_Struct.cpp +29 -39
  120. data/test/test_Symbol.cpp +1 -2
  121. data/test/test_To_From_Ruby.cpp +249 -285
  122. data/test/test_global_functions.cpp +39 -19
  123. data/test/unittest.hpp +0 -4
  124. metadata +70 -141
  125. data/Doxyfile +0 -2268
  126. data/Makefile.am +0 -26
  127. data/Makefile.in +0 -931
  128. data/README.mingw +0 -8
  129. data/aclocal.m4 +0 -1085
  130. data/ax_cxx_compile_stdcxx.m4 +0 -951
  131. data/bootstrap +0 -8
  132. data/config.guess +0 -1421
  133. data/config.sub +0 -1807
  134. data/configure +0 -7792
  135. data/configure.ac +0 -55
  136. data/depcomp +0 -791
  137. data/doxygen.ac +0 -314
  138. data/doxygen.am +0 -186
  139. data/extconf.rb +0 -70
  140. data/install-sh +0 -501
  141. data/missing +0 -215
  142. data/post-autoconf.rb +0 -22
  143. data/post-automake.rb +0 -28
  144. data/rice/Address_Registration_Guard.cpp +0 -22
  145. data/rice/Arg_impl.hpp +0 -129
  146. data/rice/Arg_operators.cpp +0 -21
  147. data/rice/Arg_operators.hpp +0 -19
  148. data/rice/Array.hpp +0 -214
  149. data/rice/Array.ipp +0 -256
  150. data/rice/Builtin_Object.hpp +0 -8
  151. data/rice/Builtin_Object.ipp +0 -50
  152. data/rice/Builtin_Object_defn.hpp +0 -50
  153. data/rice/Class.cpp +0 -57
  154. data/rice/Class.hpp +0 -8
  155. data/rice/Class.ipp +0 -6
  156. data/rice/Class_defn.hpp +0 -84
  157. data/rice/Data_Type.cpp +0 -54
  158. data/rice/Data_Type_fwd.hpp +0 -12
  159. data/rice/Director.cpp +0 -13
  160. data/rice/Exception.cpp +0 -54
  161. data/rice/Exception_Base.hpp +0 -8
  162. data/rice/Exception_Base.ipp +0 -13
  163. data/rice/Exception_Base_defn.hpp +0 -27
  164. data/rice/Hash.hpp +0 -230
  165. data/rice/Hash.ipp +0 -329
  166. data/rice/Identifier.cpp +0 -8
  167. data/rice/Jump_Tag.hpp +0 -24
  168. data/rice/Makefile.am +0 -121
  169. data/rice/Makefile.in +0 -884
  170. data/rice/Module.cpp +0 -84
  171. data/rice/Module.hpp +0 -8
  172. data/rice/Module.ipp +0 -6
  173. data/rice/Module_defn.hpp +0 -88
  174. data/rice/Module_impl.hpp +0 -281
  175. data/rice/Module_impl.ipp +0 -345
  176. data/rice/Object.cpp +0 -169
  177. data/rice/Object.hpp +0 -8
  178. data/rice/Object.ipp +0 -33
  179. data/rice/Object_defn.hpp +0 -214
  180. data/rice/Require_Guard.hpp +0 -21
  181. data/rice/String.cpp +0 -89
  182. data/rice/String.hpp +0 -91
  183. data/rice/Struct.cpp +0 -117
  184. data/rice/Struct.hpp +0 -162
  185. data/rice/Struct.ipp +0 -26
  186. data/rice/Symbol.cpp +0 -25
  187. data/rice/Symbol.hpp +0 -66
  188. data/rice/Symbol.ipp +0 -44
  189. data/rice/config.hpp +0 -47
  190. data/rice/config.hpp.in +0 -46
  191. data/rice/detail/Arguments.hpp +0 -118
  192. data/rice/detail/Auto_Function_Wrapper.hpp +0 -898
  193. data/rice/detail/Auto_Function_Wrapper.ipp +0 -3181
  194. data/rice/detail/Auto_Member_Function_Wrapper.hpp +0 -897
  195. data/rice/detail/Auto_Member_Function_Wrapper.ipp +0 -2501
  196. data/rice/detail/Caster.hpp +0 -103
  197. data/rice/detail/Not_Copyable.hpp +0 -25
  198. data/rice/detail/Wrapped_Function.hpp +0 -33
  199. data/rice/detail/cfp.hpp +0 -24
  200. data/rice/detail/cfp.ipp +0 -51
  201. data/rice/detail/check_ruby_type.cpp +0 -27
  202. data/rice/detail/check_ruby_type.hpp +0 -23
  203. data/rice/detail/creation_funcs.hpp +0 -37
  204. data/rice/detail/creation_funcs.ipp +0 -36
  205. data/rice/detail/define_method_and_auto_wrap.hpp +0 -31
  206. data/rice/detail/define_method_and_auto_wrap.ipp +0 -30
  207. data/rice/detail/demangle.cpp +0 -56
  208. data/rice/detail/demangle.hpp +0 -19
  209. data/rice/detail/env.hpp +0 -11
  210. data/rice/detail/method_data.cpp +0 -92
  211. data/rice/detail/node.hpp +0 -13
  212. data/rice/detail/protect.cpp +0 -29
  213. data/rice/detail/protect.hpp +0 -34
  214. data/rice/detail/ruby_version_code.hpp +0 -6
  215. data/rice/detail/ruby_version_code.hpp.in +0 -6
  216. data/rice/detail/st.hpp +0 -22
  217. data/rice/detail/win32.hpp +0 -16
  218. data/rice/detail/wrap_function.hpp +0 -66
  219. data/rice/protect.hpp +0 -38
  220. data/rice/protect.ipp +0 -1134
  221. data/rice/rubypp.rb +0 -97
  222. data/rice/to_from_ruby.hpp +0 -8
  223. data/rice/to_from_ruby.ipp +0 -418
  224. data/rice/to_from_ruby_defn.hpp +0 -70
  225. data/ruby/Makefile.am +0 -1
  226. data/ruby/Makefile.in +0 -628
  227. data/ruby/lib/Makefile.am +0 -3
  228. data/ruby/lib/Makefile.in +0 -506
  229. data/ruby/lib/mkmf-rice.rb.in +0 -217
  230. data/ruby/lib/version.rb +0 -3
  231. data/ruby.ac +0 -135
  232. data/sample/Makefile.am +0 -53
  233. data/sample/Makefile.in +0 -495
  234. data/test/Makefile.am +0 -73
  235. data/test/Makefile.in +0 -1219
  236. data/test/ext/Makefile.am +0 -41
  237. data/test/ext/Makefile.in +0 -483
  238. data/test/test_rice.rb +0 -45
data/rice/Module_impl.ipp DELETED
@@ -1,345 +0,0 @@
1
- #include "detail/define_method_and_auto_wrap.hpp"
2
- #include "Object.hpp"
3
- #include "Address_Registration_Guard.hpp"
4
- #include "Data_Object.hpp"
5
- #include "Data_Type.hpp"
6
- #include "Symbol.hpp"
7
- #include "protect.hpp"
8
-
9
- #include "Module.hpp"
10
- #include "Class.hpp"
11
- #include "Data_Type.hpp"
12
-
13
- #include "detail/ruby.hpp"
14
- #include "detail/method_data.hpp"
15
- #include "detail/Iterator.hpp"
16
-
17
-
18
- inline
19
- Rice::Module_base::
20
- Module_base(VALUE v)
21
- : Object(v)
22
- , handler_(Qnil)
23
- , handler_guard_(&handler_)
24
- {
25
- }
26
-
27
- inline
28
- Rice::Module_base::
29
- Module_base(Module_base const & other)
30
- : Object(other)
31
- , handler_(other.handler_)
32
- , handler_guard_(&handler_)
33
- {
34
- }
35
-
36
- inline
37
- Rice::Module_base &
38
- Rice::Module_base::
39
- operator=(Module_base const & other)
40
- {
41
- Module_base tmp(other);
42
- swap(tmp);
43
- return *this;
44
- }
45
-
46
- inline
47
- void
48
- Rice::Module_base::
49
- swap(Module_base & other)
50
- {
51
- std::swap(handler_, other.handler_);
52
- Object::swap(other);
53
- }
54
-
55
- template<typename Exception_T, typename Functor_T>
56
- inline
57
- void
58
- Rice::Module_base::
59
- add_handler(Functor_T functor)
60
- {
61
- Data_Object<detail::Exception_Handler> handler(
62
- new detail::
63
- Functor_Exception_Handler<Exception_T, Functor_T>(
64
- functor,
65
- this->handler()),
66
- rb_cObject);
67
- this->handler_.swap(handler);
68
- }
69
-
70
- inline
71
- Rice::Object
72
- Rice::Module_base::
73
- handler() const
74
- {
75
- if(!handler_.test())
76
- {
77
- Data_Object<Rice::detail::Default_Exception_Handler> handler(
78
- new Rice::detail::Default_Exception_Handler,
79
- rb_cObject);
80
- handler_.swap(handler);
81
- }
82
-
83
- return handler_;
84
- }
85
-
86
- template<typename Base_T, typename Derived_T>
87
- inline
88
- Rice::Module_impl<Base_T, Derived_T>::
89
- Module_impl()
90
- : Base_T()
91
- {
92
- }
93
-
94
- template<typename Base_T, typename Derived_T>
95
- template<typename T>
96
- inline
97
- Rice::Module_impl<Base_T, Derived_T>::
98
- Module_impl(T const & arg)
99
- : Base_T(arg)
100
- {
101
- }
102
-
103
- template<typename Base_T, typename Derived_T>
104
- template<typename Exception_T, typename Functor_T>
105
- inline
106
- Derived_T &
107
- Rice::Module_impl<Base_T, Derived_T>::
108
- add_handler(
109
- Functor_T functor)
110
- {
111
- Module_base::add_handler<Exception_T>(functor);
112
- return (Derived_T &)*this;
113
- }
114
-
115
- template<typename Base_T, typename Derived_T>
116
- template<typename Func_T>
117
- inline
118
- Derived_T &
119
- Rice::Module_impl<Base_T, Derived_T>::
120
- define_method(
121
- Identifier name,
122
- Func_T func,
123
- Arguments* arguments)
124
- {
125
- detail::define_method_and_auto_wrap(
126
- *this, name, func, this->handler(), arguments);
127
- return (Derived_T &)*this;
128
- }
129
-
130
- template<typename Base_T, typename Derived_T>
131
- template<typename Func_T>
132
- inline
133
- Derived_T &
134
- Rice::Module_impl<Base_T, Derived_T>::
135
- define_method(
136
- Identifier name,
137
- Func_T func,
138
- Arg const& arg)
139
- {
140
- Arguments* args = new Arguments();
141
- args->add(arg);
142
- return define_method(name, func, args);
143
- }
144
-
145
-
146
- template<typename Base_T, typename Derived_T>
147
- template<typename Func_T>
148
- inline
149
- Derived_T &
150
- Rice::Module_impl<Base_T, Derived_T>::
151
- define_singleton_method(
152
- Identifier name,
153
- Func_T func,
154
- Arguments* arguments)
155
- {
156
- detail::define_method_and_auto_wrap(
157
- rb_singleton_class(*this), name, func, this->handler(), arguments);
158
- return (Derived_T &)*this;
159
- }
160
-
161
- template<typename Base_T, typename Derived_T>
162
- template<typename Func_T>
163
- inline
164
- Derived_T &
165
- Rice::Module_impl<Base_T, Derived_T>::
166
- define_singleton_method(
167
- Identifier name,
168
- Func_T func,
169
- Arg const& arg)
170
- {
171
- Arguments* args = new Arguments();
172
- args->add(arg);
173
- return define_singleton_method(name, func, args);
174
- }
175
-
176
- template<typename Base_T, typename Derived_T>
177
- template<typename Func_T>
178
- inline
179
- Derived_T &
180
- Rice::Module_impl<Base_T, Derived_T>::
181
- define_module_function(
182
- Identifier name,
183
- Func_T func,
184
- Arguments* arguments)
185
- {
186
- if(this->rb_type() != T_MODULE)
187
- {
188
- throw std::runtime_error("can only define module functions for modules");
189
- }
190
-
191
- define_method(name, func, arguments);
192
- define_singleton_method(name, func, arguments);
193
- return (Derived_T &)*this;
194
- }
195
-
196
- template<typename Base_T, typename Derived_T>
197
- template<typename Func_T>
198
- inline
199
- Derived_T &
200
- Rice::Module_impl<Base_T, Derived_T>::
201
- define_module_function(
202
- Identifier name,
203
- Func_T func,
204
- Arg const& arg)
205
- {
206
- Arguments* args = new Arguments();
207
- args->add(arg);
208
- return define_module_function(name, func, args);
209
- }
210
-
211
- template<typename Base_T, typename Derived_T>
212
- template<typename T, typename Iterator_T>
213
- inline
214
- Derived_T &
215
- Rice::Module_impl<Base_T, Derived_T>::
216
- define_iterator(
217
- Iterator_T (T::*begin)(),
218
- Iterator_T (T::*end)(),
219
- Identifier name)
220
- {
221
- detail::define_iterator(*this, name, begin, end);
222
- return (Derived_T &)*this;
223
- }
224
-
225
- namespace Rice
226
- {
227
-
228
- namespace detail
229
- {
230
-
231
- inline VALUE
232
- include_module(VALUE mod, VALUE inc)
233
- {
234
- rb_include_module(mod, inc);
235
- return Qnil;
236
- }
237
-
238
- inline VALUE
239
- const_set(VALUE mod, ID name, VALUE value)
240
- {
241
- rb_const_set(mod, name, value);
242
- return Qnil;
243
- }
244
-
245
- } // namespace detail
246
-
247
- } // namespace Rice
248
-
249
- template<typename Base_T, typename Derived_T>
250
- inline
251
- Derived_T &
252
- Rice::Module_impl<Base_T, Derived_T>::
253
- include_module(
254
- Module const & inc)
255
- {
256
- protect(detail::include_module, *this, inc);
257
- return (Derived_T &)*this;
258
- }
259
-
260
- template<typename Base_T, typename Derived_T>
261
- inline
262
- Derived_T &
263
- Rice::Module_impl<Base_T, Derived_T>::
264
- const_set(
265
- Identifier name,
266
- Object value)
267
- {
268
- protect(detail::const_set, *this, name, value);
269
- return (Derived_T &)*this;
270
- }
271
-
272
- template<typename Base_T, typename Derived_T>
273
- inline
274
- Rice::Object
275
- Rice::Module_impl<Base_T, Derived_T>::
276
- const_get(
277
- Identifier name) const
278
- {
279
- return protect(rb_const_get, *this, name);
280
- }
281
-
282
- template<typename Base_T, typename Derived_T>
283
- inline
284
- bool
285
- Rice::Module_impl<Base_T, Derived_T>::
286
- const_defined(Identifier name) const
287
- {
288
- size_t result = protect(rb_const_defined, *this, name);
289
- return bool(result);
290
- }
291
-
292
- template<typename Base_T, typename Derived_T>
293
- inline
294
- void
295
- Rice::Module_impl<Base_T, Derived_T>::
296
- remove_const(Identifier name)
297
- {
298
- protect(rb_mod_remove_const, *this, name.to_sym());
299
- }
300
-
301
- template<typename Base_T, typename Derived_T>
302
- inline
303
- Rice::Module
304
- Rice::Module_impl<Base_T, Derived_T>::
305
- define_module(
306
- char const * name)
307
- {
308
- return Rice::define_module_under(*this, name);
309
- }
310
-
311
- template<typename Base_T, typename Derived_T>
312
- inline
313
- Rice::Class
314
- Rice::Module_impl<Base_T, Derived_T>::
315
- define_class(
316
- char const * name,
317
- Object superclass)
318
- {
319
- return Rice::define_class_under(*this, name, superclass);
320
- }
321
-
322
- template<typename Base_T, typename Derived_T>
323
- template<typename T>
324
- inline
325
- Rice::Data_Type<T>
326
- Rice::Module_impl<Base_T, Derived_T>::
327
- define_class_with_object_as_base(
328
- char const * name)
329
- {
330
- return Rice::define_class_under<T>(*this, name);
331
- }
332
-
333
- template<typename Base_T, typename Derived_T>
334
- template<typename T, typename T_Base_T>
335
- inline
336
- Rice::Data_Type<T>
337
- Rice::Module_impl<Base_T, Derived_T>::
338
- define_class(
339
- char const * name)
340
- {
341
- return Rice::define_class_under<T, T_Base_T>(
342
- *this,
343
- name);
344
- }
345
-
data/rice/Object.cpp DELETED
@@ -1,169 +0,0 @@
1
- #include "Object.hpp"
2
- #include "Class.hpp"
3
- #include "String.hpp"
4
- #include "Array.hpp"
5
-
6
- #include <algorithm>
7
- #include <iostream>
8
-
9
- namespace Rice
10
- {
11
-
12
- Object const Nil(Qnil);
13
- Object const True(Qtrue);
14
- Object const False(Qfalse);
15
- Object const Undef(Qundef);
16
-
17
- }
18
-
19
- Rice::Class Rice::Object::
20
- class_of() const {
21
- return rb_class_of(value_);
22
- }
23
-
24
- int Rice::Object::
25
- compare(Object const & other) const
26
- {
27
- Object result = call("<=>", other);
28
- return from_ruby<int>(result);
29
- }
30
-
31
- void Rice::Object::
32
- freeze()
33
- {
34
- protect(rb_obj_freeze, value());
35
- }
36
-
37
- bool Rice::Object::
38
- is_frozen() const
39
- {
40
- return bool(OBJ_FROZEN(value()));
41
- }
42
-
43
- Rice::String Rice::Object::
44
- to_s() const {
45
- return call("to_s");
46
- }
47
-
48
- Rice::String Rice::Object::
49
- inspect() const {
50
- return call("inspect");
51
- }
52
-
53
- void Rice::Object::
54
- swap(Rice::Object & other)
55
- {
56
- std::swap(value_, other.value_);
57
- }
58
-
59
- Rice::Object Rice::Object::
60
- instance_eval(String const & s)
61
- {
62
- VALUE argv[] = { s.value() };
63
- return protect(rb_obj_instance_eval, 1, &argv[0], *this);
64
- }
65
-
66
- int Rice::Object::
67
- rb_type() const
68
- {
69
- return ::rb_type(*this);
70
- }
71
-
72
- bool Rice::Object::
73
- is_a(Object klass) const
74
- {
75
- Object result = protect(rb_obj_is_kind_of, *this, klass);
76
- return result.test();
77
- }
78
-
79
- bool Rice::Object::
80
- respond_to(Identifier id) const
81
- {
82
- return bool(rb_respond_to(*this, id));
83
- }
84
-
85
- bool Rice::Object::
86
- is_instance_of(Object klass) const
87
- {
88
- Object result = protect(rb_obj_is_instance_of, *this, klass);
89
- return result.test();
90
- }
91
-
92
- Rice::Object Rice::Object::
93
- iv_get(
94
- Identifier name) const
95
- {
96
- return protect(rb_ivar_get, *this, name.id());
97
- }
98
-
99
- Rice::Object Rice::Object::
100
- attr_get(
101
- Identifier name) const
102
- {
103
- return protect(rb_attr_get, *this, name.id());
104
- }
105
-
106
- Rice::Object Rice::Object::
107
- vcall(
108
- Identifier id,
109
- Array args)
110
- {
111
- std::vector<VALUE> a(args.size());
112
-
113
- Array::const_iterator it = args.begin();
114
- Array::const_iterator end = args.end();
115
-
116
- for(int i = 0 ;it != end; i++, ++it) {
117
- a[i] = it->value();
118
- }
119
-
120
- return protect(rb_funcall3, *this, id, (int)args.size(), a.data());
121
- }
122
-
123
- void Rice::Object::
124
- mark() const
125
- {
126
- rb_gc_mark(*this);
127
- }
128
-
129
- void Rice::Object::
130
- set_value(VALUE v)
131
- {
132
- value_ = v;
133
- }
134
-
135
- std::ostream & Rice::
136
- operator<<(std::ostream & out, Rice::Object const & obj)
137
- {
138
- String s(obj.to_s());
139
- out << s.c_str();
140
- return out;
141
- }
142
-
143
- bool Rice::
144
- operator==(Rice::Object const & lhs, Rice::Object const & rhs)
145
- {
146
- Object result = lhs.call("==", rhs);
147
- return result.test();
148
- }
149
-
150
- bool Rice::
151
- operator!=(Rice::Object const & lhs, Rice::Object const & rhs)
152
- {
153
- return !(lhs == rhs);
154
- }
155
-
156
- bool Rice::
157
- operator<(Rice::Object const & lhs, Rice::Object const & rhs)
158
- {
159
- Object result = lhs.call("<", rhs);
160
- return result.test();
161
- }
162
-
163
- bool Rice::
164
- operator>(Rice::Object const & lhs, Rice::Object const & rhs)
165
- {
166
- Object result = lhs.call(">", rhs);
167
- return result.test();
168
- }
169
-
data/rice/Object.hpp DELETED
@@ -1,8 +0,0 @@
1
- #ifndef Rice__Object__hpp_
2
- #define Rice__Object__hpp_
3
-
4
- #include "Object_defn.hpp"
5
- #include "Object.ipp"
6
-
7
- #endif // Rice__Object__hpp_
8
-
data/rice/Object.ipp DELETED
@@ -1,33 +0,0 @@
1
- #ifndef Rice__Object__ipp_
2
- #define Rice__Object__ipp_
3
-
4
- #include "protect.hpp"
5
- #include "detail/ruby.hpp"
6
- #include "to_from_ruby.hpp"
7
-
8
- #include <vector>
9
-
10
- template<typename ...ArgT>
11
- inline Rice::Object Rice::Object::
12
- call(Identifier id, ArgT... args) const
13
- {
14
- auto asList = this->convert_args<ArgT...>(args...);
15
- return protect(rb_funcall2, value(), id, (int)asList.size(), asList.data());
16
- }
17
-
18
- template<typename ...ArgT>
19
- std::vector<VALUE> Rice::Object::convert_args(ArgT&... args) const {
20
- return std::vector<VALUE>{ to_ruby(args)... };
21
- }
22
-
23
- template<typename T>
24
- void Rice::Object::
25
- iv_set(
26
- Identifier name,
27
- T const & value)
28
- {
29
- protect(rb_ivar_set, *this, name.id(), to_ruby(value));
30
- }
31
-
32
- #endif // Rice__Object__ipp_
33
-