rice2 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
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
+