rice2 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. checksums.yaml +7 -0
  2. data/COPYING +23 -0
  3. data/Doxyfile +2268 -0
  4. data/Makefile.am +26 -0
  5. data/Makefile.in +929 -0
  6. data/README.md +1054 -0
  7. data/README.mingw +8 -0
  8. data/Rakefile +24 -0
  9. data/aclocal.m4 +1090 -0
  10. data/bootstrap +8 -0
  11. data/config.guess +1667 -0
  12. data/config.sub +1793 -0
  13. data/configure +8209 -0
  14. data/configure.ac +55 -0
  15. data/depcomp +791 -0
  16. data/doxygen.ac +314 -0
  17. data/doxygen.am +186 -0
  18. data/extconf.rb +66 -0
  19. data/install-sh +529 -0
  20. data/missing +215 -0
  21. data/post-autoconf.rb +22 -0
  22. data/post-automake.rb +28 -0
  23. data/rice/Address_Registration_Guard.cpp +22 -0
  24. data/rice/Address_Registration_Guard.hpp +7 -0
  25. data/rice/Address_Registration_Guard.ipp +37 -0
  26. data/rice/Address_Registration_Guard_defn.hpp +75 -0
  27. data/rice/Arg.hpp +8 -0
  28. data/rice/Arg_impl.hpp +129 -0
  29. data/rice/Arg_operators.cpp +21 -0
  30. data/rice/Arg_operators.hpp +19 -0
  31. data/rice/Array.hpp +214 -0
  32. data/rice/Array.ipp +256 -0
  33. data/rice/Builtin_Object.hpp +8 -0
  34. data/rice/Builtin_Object.ipp +50 -0
  35. data/rice/Builtin_Object_defn.hpp +50 -0
  36. data/rice/Class.cpp +57 -0
  37. data/rice/Class.hpp +8 -0
  38. data/rice/Class.ipp +6 -0
  39. data/rice/Class_defn.hpp +83 -0
  40. data/rice/Constructor.hpp +47 -0
  41. data/rice/Data_Object.hpp +8 -0
  42. data/rice/Data_Object.ipp +133 -0
  43. data/rice/Data_Object_defn.hpp +138 -0
  44. data/rice/Data_Type.cpp +54 -0
  45. data/rice/Data_Type.hpp +8 -0
  46. data/rice/Data_Type.ipp +365 -0
  47. data/rice/Data_Type_defn.hpp +261 -0
  48. data/rice/Data_Type_fwd.hpp +12 -0
  49. data/rice/Director.cpp +13 -0
  50. data/rice/Director.hpp +39 -0
  51. data/rice/Enum.hpp +117 -0
  52. data/rice/Enum.ipp +246 -0
  53. data/rice/Exception.cpp +59 -0
  54. data/rice/Exception.hpp +13 -0
  55. data/rice/Exception_Base.hpp +8 -0
  56. data/rice/Exception_Base.ipp +13 -0
  57. data/rice/Exception_Base_defn.hpp +27 -0
  58. data/rice/Exception_defn.hpp +69 -0
  59. data/rice/Hash.hpp +227 -0
  60. data/rice/Hash.ipp +329 -0
  61. data/rice/Identifier.cpp +8 -0
  62. data/rice/Identifier.hpp +50 -0
  63. data/rice/Identifier.ipp +33 -0
  64. data/rice/Jump_Tag.hpp +24 -0
  65. data/rice/Makefile.am +122 -0
  66. data/rice/Makefile.in +885 -0
  67. data/rice/Module.cpp +84 -0
  68. data/rice/Module.hpp +8 -0
  69. data/rice/Module.ipp +6 -0
  70. data/rice/Module_defn.hpp +88 -0
  71. data/rice/Module_impl.hpp +281 -0
  72. data/rice/Module_impl.ipp +345 -0
  73. data/rice/Object.cpp +169 -0
  74. data/rice/Object.hpp +8 -0
  75. data/rice/Object.ipp +33 -0
  76. data/rice/Object_defn.hpp +214 -0
  77. data/rice/Require_Guard.hpp +21 -0
  78. data/rice/String.cpp +94 -0
  79. data/rice/String.hpp +91 -0
  80. data/rice/Struct.cpp +117 -0
  81. data/rice/Struct.hpp +162 -0
  82. data/rice/Struct.ipp +26 -0
  83. data/rice/Symbol.cpp +25 -0
  84. data/rice/Symbol.hpp +66 -0
  85. data/rice/Symbol.ipp +44 -0
  86. data/rice/config.hpp +47 -0
  87. data/rice/config.hpp.in +46 -0
  88. data/rice/detail/Arguments.hpp +118 -0
  89. data/rice/detail/Auto_Function_Wrapper.hpp +898 -0
  90. data/rice/detail/Auto_Function_Wrapper.ipp +3694 -0
  91. data/rice/detail/Auto_Member_Function_Wrapper.hpp +897 -0
  92. data/rice/detail/Auto_Member_Function_Wrapper.ipp +2774 -0
  93. data/rice/detail/Caster.hpp +103 -0
  94. data/rice/detail/Exception_Handler.hpp +8 -0
  95. data/rice/detail/Exception_Handler.ipp +68 -0
  96. data/rice/detail/Exception_Handler_defn.hpp +96 -0
  97. data/rice/detail/Iterator.hpp +93 -0
  98. data/rice/detail/Not_Copyable.hpp +25 -0
  99. data/rice/detail/Wrapped_Function.hpp +33 -0
  100. data/rice/detail/cfp.hpp +24 -0
  101. data/rice/detail/cfp.ipp +51 -0
  102. data/rice/detail/check_ruby_type.cpp +27 -0
  103. data/rice/detail/check_ruby_type.hpp +23 -0
  104. data/rice/detail/creation_funcs.hpp +37 -0
  105. data/rice/detail/creation_funcs.ipp +36 -0
  106. data/rice/detail/default_allocation_func.hpp +23 -0
  107. data/rice/detail/default_allocation_func.ipp +11 -0
  108. data/rice/detail/define_method_and_auto_wrap.hpp +31 -0
  109. data/rice/detail/define_method_and_auto_wrap.ipp +30 -0
  110. data/rice/detail/demangle.cpp +56 -0
  111. data/rice/detail/demangle.hpp +19 -0
  112. data/rice/detail/env.hpp +11 -0
  113. data/rice/detail/from_ruby.hpp +43 -0
  114. data/rice/detail/from_ruby.ipp +60 -0
  115. data/rice/detail/method_data.cpp +92 -0
  116. data/rice/detail/method_data.hpp +21 -0
  117. data/rice/detail/node.hpp +13 -0
  118. data/rice/detail/protect.cpp +29 -0
  119. data/rice/detail/protect.hpp +34 -0
  120. data/rice/detail/ruby.hpp +74 -0
  121. data/rice/detail/ruby_version_code.hpp +6 -0
  122. data/rice/detail/ruby_version_code.hpp.in +6 -0
  123. data/rice/detail/st.hpp +22 -0
  124. data/rice/detail/to_ruby.hpp +22 -0
  125. data/rice/detail/to_ruby.ipp +36 -0
  126. data/rice/detail/traits.hpp +43 -0
  127. data/rice/detail/win32.hpp +16 -0
  128. data/rice/detail/wrap_function.hpp +66 -0
  129. data/rice/global_function.hpp +33 -0
  130. data/rice/global_function.ipp +22 -0
  131. data/rice/protect.hpp +38 -0
  132. data/rice/protect.ipp +1134 -0
  133. data/rice/ruby_mark.hpp +13 -0
  134. data/rice/ruby_try_catch.hpp +86 -0
  135. data/rice/rubypp.rb +97 -0
  136. data/rice/to_from_ruby.hpp +8 -0
  137. data/rice/to_from_ruby.ipp +418 -0
  138. data/rice/to_from_ruby_defn.hpp +70 -0
  139. data/ruby.ac +135 -0
  140. data/ruby/Makefile.am +1 -0
  141. data/ruby/Makefile.in +628 -0
  142. data/ruby/lib/Makefile.am +3 -0
  143. data/ruby/lib/Makefile.in +506 -0
  144. data/ruby/lib/mkmf-rice.rb.in +217 -0
  145. data/ruby/lib/version.rb +3 -0
  146. data/sample/Makefile.am +47 -0
  147. data/sample/Makefile.in +489 -0
  148. data/sample/enum/extconf.rb +3 -0
  149. data/sample/enum/sample_enum.cpp +54 -0
  150. data/sample/enum/test.rb +8 -0
  151. data/sample/inheritance/animals.cpp +98 -0
  152. data/sample/inheritance/extconf.rb +3 -0
  153. data/sample/inheritance/test.rb +7 -0
  154. data/sample/map/extconf.rb +3 -0
  155. data/sample/map/map.cpp +81 -0
  156. data/sample/map/test.rb +7 -0
  157. data/test/Makefile.am +72 -0
  158. data/test/Makefile.in +1213 -0
  159. data/test/ext/Makefile.am +41 -0
  160. data/test/ext/Makefile.in +483 -0
  161. data/test/ext/t1/Foo.hpp +10 -0
  162. data/test/ext/t1/extconf.rb +2 -0
  163. data/test/ext/t1/t1.cpp +15 -0
  164. data/test/ext/t2/extconf.rb +2 -0
  165. data/test/ext/t2/t2.cpp +11 -0
  166. data/test/test_Address_Registration_Guard.cpp +43 -0
  167. data/test/test_Array.cpp +248 -0
  168. data/test/test_Builtin_Object.cpp +71 -0
  169. data/test/test_Class.cpp +496 -0
  170. data/test/test_Constructor.cpp +128 -0
  171. data/test/test_Data_Object.cpp +275 -0
  172. data/test/test_Data_Type.cpp +348 -0
  173. data/test/test_Director.cpp +308 -0
  174. data/test/test_Enum.cpp +215 -0
  175. data/test/test_Exception.cpp +47 -0
  176. data/test/test_Hash.cpp +212 -0
  177. data/test/test_Identifier.cpp +70 -0
  178. data/test/test_Jump_Tag.cpp +17 -0
  179. data/test/test_Memory_Management.cpp +50 -0
  180. data/test/test_Module.cpp +497 -0
  181. data/test/test_Object.cpp +159 -0
  182. data/test/test_String.cpp +107 -0
  183. data/test/test_Struct.cpp +205 -0
  184. data/test/test_Symbol.cpp +63 -0
  185. data/test/test_To_From_Ruby.cpp +428 -0
  186. data/test/test_global_functions.cpp +114 -0
  187. data/test/test_rice.rb +41 -0
  188. data/test/unittest.cpp +136 -0
  189. data/test/unittest.hpp +294 -0
  190. metadata +297 -0
@@ -0,0 +1,345 @@
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
+
@@ -0,0 +1,169 @@
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[0]);
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
+