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.
- checksums.yaml +7 -0
- data/COPYING +23 -0
- data/Doxyfile +2268 -0
- data/Makefile.am +26 -0
- data/Makefile.in +929 -0
- data/README.md +1054 -0
- data/README.mingw +8 -0
- data/Rakefile +24 -0
- data/aclocal.m4 +1090 -0
- data/bootstrap +8 -0
- data/config.guess +1667 -0
- data/config.sub +1793 -0
- data/configure +8209 -0
- data/configure.ac +55 -0
- data/depcomp +791 -0
- data/doxygen.ac +314 -0
- data/doxygen.am +186 -0
- data/extconf.rb +66 -0
- data/install-sh +529 -0
- data/missing +215 -0
- data/post-autoconf.rb +22 -0
- data/post-automake.rb +28 -0
- data/rice/Address_Registration_Guard.cpp +22 -0
- data/rice/Address_Registration_Guard.hpp +7 -0
- data/rice/Address_Registration_Guard.ipp +37 -0
- data/rice/Address_Registration_Guard_defn.hpp +75 -0
- data/rice/Arg.hpp +8 -0
- data/rice/Arg_impl.hpp +129 -0
- data/rice/Arg_operators.cpp +21 -0
- data/rice/Arg_operators.hpp +19 -0
- data/rice/Array.hpp +214 -0
- data/rice/Array.ipp +256 -0
- data/rice/Builtin_Object.hpp +8 -0
- data/rice/Builtin_Object.ipp +50 -0
- data/rice/Builtin_Object_defn.hpp +50 -0
- data/rice/Class.cpp +57 -0
- data/rice/Class.hpp +8 -0
- data/rice/Class.ipp +6 -0
- data/rice/Class_defn.hpp +83 -0
- data/rice/Constructor.hpp +47 -0
- data/rice/Data_Object.hpp +8 -0
- data/rice/Data_Object.ipp +133 -0
- data/rice/Data_Object_defn.hpp +138 -0
- data/rice/Data_Type.cpp +54 -0
- data/rice/Data_Type.hpp +8 -0
- data/rice/Data_Type.ipp +365 -0
- data/rice/Data_Type_defn.hpp +261 -0
- data/rice/Data_Type_fwd.hpp +12 -0
- data/rice/Director.cpp +13 -0
- data/rice/Director.hpp +39 -0
- data/rice/Enum.hpp +117 -0
- data/rice/Enum.ipp +246 -0
- data/rice/Exception.cpp +59 -0
- data/rice/Exception.hpp +13 -0
- data/rice/Exception_Base.hpp +8 -0
- data/rice/Exception_Base.ipp +13 -0
- data/rice/Exception_Base_defn.hpp +27 -0
- data/rice/Exception_defn.hpp +69 -0
- data/rice/Hash.hpp +227 -0
- data/rice/Hash.ipp +329 -0
- data/rice/Identifier.cpp +8 -0
- data/rice/Identifier.hpp +50 -0
- data/rice/Identifier.ipp +33 -0
- data/rice/Jump_Tag.hpp +24 -0
- data/rice/Makefile.am +122 -0
- data/rice/Makefile.in +885 -0
- data/rice/Module.cpp +84 -0
- data/rice/Module.hpp +8 -0
- data/rice/Module.ipp +6 -0
- data/rice/Module_defn.hpp +88 -0
- data/rice/Module_impl.hpp +281 -0
- data/rice/Module_impl.ipp +345 -0
- data/rice/Object.cpp +169 -0
- data/rice/Object.hpp +8 -0
- data/rice/Object.ipp +33 -0
- data/rice/Object_defn.hpp +214 -0
- data/rice/Require_Guard.hpp +21 -0
- data/rice/String.cpp +94 -0
- data/rice/String.hpp +91 -0
- data/rice/Struct.cpp +117 -0
- data/rice/Struct.hpp +162 -0
- data/rice/Struct.ipp +26 -0
- data/rice/Symbol.cpp +25 -0
- data/rice/Symbol.hpp +66 -0
- data/rice/Symbol.ipp +44 -0
- data/rice/config.hpp +47 -0
- data/rice/config.hpp.in +46 -0
- data/rice/detail/Arguments.hpp +118 -0
- data/rice/detail/Auto_Function_Wrapper.hpp +898 -0
- data/rice/detail/Auto_Function_Wrapper.ipp +3694 -0
- data/rice/detail/Auto_Member_Function_Wrapper.hpp +897 -0
- data/rice/detail/Auto_Member_Function_Wrapper.ipp +2774 -0
- data/rice/detail/Caster.hpp +103 -0
- data/rice/detail/Exception_Handler.hpp +8 -0
- data/rice/detail/Exception_Handler.ipp +68 -0
- data/rice/detail/Exception_Handler_defn.hpp +96 -0
- data/rice/detail/Iterator.hpp +93 -0
- data/rice/detail/Not_Copyable.hpp +25 -0
- data/rice/detail/Wrapped_Function.hpp +33 -0
- data/rice/detail/cfp.hpp +24 -0
- data/rice/detail/cfp.ipp +51 -0
- data/rice/detail/check_ruby_type.cpp +27 -0
- data/rice/detail/check_ruby_type.hpp +23 -0
- data/rice/detail/creation_funcs.hpp +37 -0
- data/rice/detail/creation_funcs.ipp +36 -0
- data/rice/detail/default_allocation_func.hpp +23 -0
- data/rice/detail/default_allocation_func.ipp +11 -0
- data/rice/detail/define_method_and_auto_wrap.hpp +31 -0
- data/rice/detail/define_method_and_auto_wrap.ipp +30 -0
- data/rice/detail/demangle.cpp +56 -0
- data/rice/detail/demangle.hpp +19 -0
- data/rice/detail/env.hpp +11 -0
- data/rice/detail/from_ruby.hpp +43 -0
- data/rice/detail/from_ruby.ipp +60 -0
- data/rice/detail/method_data.cpp +92 -0
- data/rice/detail/method_data.hpp +21 -0
- data/rice/detail/node.hpp +13 -0
- data/rice/detail/protect.cpp +29 -0
- data/rice/detail/protect.hpp +34 -0
- data/rice/detail/ruby.hpp +74 -0
- data/rice/detail/ruby_version_code.hpp +6 -0
- data/rice/detail/ruby_version_code.hpp.in +6 -0
- data/rice/detail/st.hpp +22 -0
- data/rice/detail/to_ruby.hpp +22 -0
- data/rice/detail/to_ruby.ipp +36 -0
- data/rice/detail/traits.hpp +43 -0
- data/rice/detail/win32.hpp +16 -0
- data/rice/detail/wrap_function.hpp +66 -0
- data/rice/global_function.hpp +33 -0
- data/rice/global_function.ipp +22 -0
- data/rice/protect.hpp +38 -0
- data/rice/protect.ipp +1134 -0
- data/rice/ruby_mark.hpp +13 -0
- data/rice/ruby_try_catch.hpp +86 -0
- data/rice/rubypp.rb +97 -0
- data/rice/to_from_ruby.hpp +8 -0
- data/rice/to_from_ruby.ipp +418 -0
- data/rice/to_from_ruby_defn.hpp +70 -0
- data/ruby.ac +135 -0
- data/ruby/Makefile.am +1 -0
- data/ruby/Makefile.in +628 -0
- data/ruby/lib/Makefile.am +3 -0
- data/ruby/lib/Makefile.in +506 -0
- data/ruby/lib/mkmf-rice.rb.in +217 -0
- data/ruby/lib/version.rb +3 -0
- data/sample/Makefile.am +47 -0
- data/sample/Makefile.in +489 -0
- data/sample/enum/extconf.rb +3 -0
- data/sample/enum/sample_enum.cpp +54 -0
- data/sample/enum/test.rb +8 -0
- data/sample/inheritance/animals.cpp +98 -0
- data/sample/inheritance/extconf.rb +3 -0
- data/sample/inheritance/test.rb +7 -0
- data/sample/map/extconf.rb +3 -0
- data/sample/map/map.cpp +81 -0
- data/sample/map/test.rb +7 -0
- data/test/Makefile.am +72 -0
- data/test/Makefile.in +1213 -0
- data/test/ext/Makefile.am +41 -0
- data/test/ext/Makefile.in +483 -0
- data/test/ext/t1/Foo.hpp +10 -0
- data/test/ext/t1/extconf.rb +2 -0
- data/test/ext/t1/t1.cpp +15 -0
- data/test/ext/t2/extconf.rb +2 -0
- data/test/ext/t2/t2.cpp +11 -0
- data/test/test_Address_Registration_Guard.cpp +43 -0
- data/test/test_Array.cpp +248 -0
- data/test/test_Builtin_Object.cpp +71 -0
- data/test/test_Class.cpp +496 -0
- data/test/test_Constructor.cpp +128 -0
- data/test/test_Data_Object.cpp +275 -0
- data/test/test_Data_Type.cpp +348 -0
- data/test/test_Director.cpp +308 -0
- data/test/test_Enum.cpp +215 -0
- data/test/test_Exception.cpp +47 -0
- data/test/test_Hash.cpp +212 -0
- data/test/test_Identifier.cpp +70 -0
- data/test/test_Jump_Tag.cpp +17 -0
- data/test/test_Memory_Management.cpp +50 -0
- data/test/test_Module.cpp +497 -0
- data/test/test_Object.cpp +159 -0
- data/test/test_String.cpp +107 -0
- data/test/test_Struct.cpp +205 -0
- data/test/test_Symbol.cpp +63 -0
- data/test/test_To_From_Ruby.cpp +428 -0
- data/test/test_global_functions.cpp +114 -0
- data/test/test_rice.rb +41 -0
- data/test/unittest.cpp +136 -0
- data/test/unittest.hpp +294 -0
- 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
|
+
|
data/rice/Object.cpp
ADDED
@@ -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
|
+
|