rice 3.0.0 → 4.0.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 +4 -4
- data/CHANGELOG.md +121 -0
- data/CONTRIBUTORS.md +19 -0
- data/Gemfile +3 -0
- data/README.md +44 -1025
- data/Rakefile +95 -12
- data/include/rice/rice.hpp +7766 -0
- data/lib/mkmf-rice.rb +127 -0
- data/lib/version.rb +3 -0
- data/rice/Address_Registration_Guard.ipp +75 -32
- data/rice/Address_Registration_Guard_defn.hpp +60 -56
- data/rice/Arg.hpp +80 -4
- data/rice/Arg.ipp +51 -0
- data/rice/Constructor.hpp +12 -14
- data/rice/Data_Object.ipp +234 -107
- data/rice/Data_Object_defn.hpp +77 -117
- data/rice/Data_Type.hpp +1 -2
- data/rice/Data_Type.ipp +251 -295
- data/rice/Data_Type_defn.hpp +175 -243
- data/rice/Director.hpp +11 -6
- data/rice/Enum.hpp +54 -104
- data/rice/Enum.ipp +104 -230
- data/rice/Exception.hpp +2 -8
- data/rice/Exception.ipp +65 -0
- data/rice/Exception_defn.hpp +46 -47
- data/rice/Identifier.hpp +28 -28
- data/rice/Identifier.ipp +23 -27
- data/rice/Return.hpp +39 -0
- data/rice/Return.ipp +33 -0
- data/rice/detail/Exception_Handler.ipp +22 -62
- data/rice/detail/Exception_Handler_defn.hpp +76 -91
- data/rice/detail/Iterator.hpp +18 -88
- data/rice/detail/Iterator.ipp +47 -0
- data/rice/detail/Jump_Tag.hpp +21 -0
- data/rice/detail/MethodInfo.hpp +44 -0
- data/rice/detail/MethodInfo.ipp +78 -0
- data/rice/detail/NativeAttribute.hpp +53 -0
- data/rice/detail/NativeAttribute.ipp +83 -0
- data/rice/detail/NativeFunction.hpp +69 -0
- data/rice/detail/NativeFunction.ipp +248 -0
- data/rice/detail/RubyFunction.hpp +39 -0
- data/rice/detail/RubyFunction.ipp +92 -0
- data/rice/detail/Type.hpp +29 -0
- data/rice/detail/Type.ipp +138 -0
- data/rice/detail/TypeRegistry.hpp +50 -0
- data/rice/detail/TypeRegistry.ipp +106 -0
- data/rice/detail/Wrapper.hpp +51 -0
- data/rice/detail/Wrapper.ipp +151 -0
- data/rice/detail/default_allocation_func.hpp +8 -19
- data/rice/detail/default_allocation_func.ipp +9 -8
- data/rice/detail/from_ruby.hpp +2 -37
- data/rice/detail/from_ruby.ipp +1020 -46
- data/rice/detail/from_ruby_defn.hpp +38 -0
- data/rice/detail/function_traits.hpp +124 -0
- data/rice/detail/method_data.hpp +23 -15
- data/rice/detail/method_data.ipp +53 -0
- data/rice/detail/rice_traits.hpp +116 -0
- data/rice/detail/ruby.hpp +9 -46
- data/rice/detail/to_ruby.hpp +3 -17
- data/rice/detail/to_ruby.ipp +409 -31
- data/rice/detail/to_ruby_defn.hpp +48 -0
- data/rice/forward_declares.ipp +82 -0
- data/rice/global_function.hpp +16 -20
- data/rice/global_function.ipp +8 -17
- data/rice/rice.hpp +59 -0
- data/rice/ruby_mark.hpp +5 -3
- data/rice/ruby_try_catch.hpp +4 -4
- data/rice/stl.hpp +11 -0
- data/sample/callbacks/extconf.rb +3 -0
- data/sample/callbacks/sample_callbacks.cpp +10 -13
- data/sample/enum/extconf.rb +3 -0
- data/sample/enum/sample_enum.cpp +3 -17
- data/sample/enum/test.rb +2 -2
- data/sample/inheritance/animals.cpp +8 -24
- data/sample/inheritance/extconf.rb +3 -0
- data/sample/inheritance/test.rb +1 -1
- data/sample/map/extconf.rb +3 -0
- data/sample/map/map.cpp +10 -18
- data/sample/map/test.rb +1 -1
- data/test/embed_ruby.cpp +18 -5
- data/test/ext/t1/extconf.rb +3 -0
- data/test/ext/t1/t1.cpp +1 -3
- data/test/ext/t2/extconf.rb +3 -0
- data/test/ext/t2/t2.cpp +1 -1
- data/test/extconf.rb +23 -0
- data/test/ruby/test_callbacks_sample.rb +28 -0
- data/test/ruby/test_multiple_extensions.rb +18 -0
- data/test/ruby/test_multiple_extensions_same_class.rb +14 -0
- data/test/ruby/test_multiple_extensions_with_inheritance.rb +20 -0
- data/test/test_Address_Registration_Guard.cpp +23 -10
- data/test/test_Array.cpp +129 -73
- data/test/test_Attribute.cpp +147 -0
- data/test/test_Builtin_Object.cpp +34 -14
- data/test/test_Class.cpp +149 -275
- data/test/test_Constructor.cpp +10 -9
- data/test/test_Data_Object.cpp +133 -192
- data/test/test_Data_Type.cpp +322 -252
- data/test/test_Director.cpp +54 -41
- data/test/test_Enum.cpp +228 -103
- data/test/test_Exception.cpp +5 -6
- data/test/test_Hash.cpp +31 -30
- data/test/test_Identifier.cpp +4 -5
- data/test/test_Inheritance.cpp +221 -0
- data/test/test_Iterator.cpp +161 -0
- data/test/test_Jump_Tag.cpp +1 -1
- data/test/test_Keep_Alive.cpp +161 -0
- data/test/test_Memory_Management.cpp +2 -4
- data/test/test_Module.cpp +167 -110
- data/test/test_Object.cpp +41 -21
- data/test/test_Ownership.cpp +275 -0
- data/test/test_Self.cpp +205 -0
- data/test/test_Stl_Optional.cpp +90 -0
- data/test/test_Stl_Pair.cpp +144 -0
- data/test/test_Stl_SmartPointer.cpp +200 -0
- data/test/test_Stl_String.cpp +74 -0
- data/test/test_Stl_Vector.cpp +652 -0
- data/test/test_String.cpp +1 -2
- data/test/test_Struct.cpp +29 -39
- data/test/test_Symbol.cpp +1 -2
- data/test/test_To_From_Ruby.cpp +249 -285
- data/test/test_global_functions.cpp +39 -19
- data/test/unittest.hpp +0 -4
- metadata +63 -139
- data/Doxyfile +0 -2268
- data/Makefile.am +0 -26
- data/Makefile.in +0 -931
- data/README.mingw +0 -8
- data/aclocal.m4 +0 -1085
- data/ax_cxx_compile_stdcxx.m4 +0 -951
- data/bootstrap +0 -8
- data/config.guess +0 -1421
- data/config.sub +0 -1807
- data/configure +0 -7792
- data/configure.ac +0 -55
- data/depcomp +0 -791
- data/doxygen.ac +0 -314
- data/doxygen.am +0 -186
- data/extconf.rb +0 -70
- data/install-sh +0 -501
- data/missing +0 -215
- data/post-autoconf.rb +0 -22
- data/post-automake.rb +0 -28
- data/rice/Address_Registration_Guard.cpp +0 -22
- data/rice/Arg_impl.hpp +0 -129
- data/rice/Arg_operators.cpp +0 -21
- data/rice/Arg_operators.hpp +0 -19
- data/rice/Array.hpp +0 -214
- data/rice/Array.ipp +0 -256
- data/rice/Builtin_Object.hpp +0 -8
- data/rice/Builtin_Object.ipp +0 -50
- data/rice/Builtin_Object_defn.hpp +0 -50
- data/rice/Class.cpp +0 -57
- data/rice/Class.hpp +0 -8
- data/rice/Class.ipp +0 -6
- data/rice/Class_defn.hpp +0 -84
- data/rice/Data_Type.cpp +0 -54
- data/rice/Data_Type_fwd.hpp +0 -12
- data/rice/Director.cpp +0 -13
- data/rice/Exception.cpp +0 -54
- data/rice/Exception_Base.hpp +0 -8
- data/rice/Exception_Base.ipp +0 -13
- data/rice/Exception_Base_defn.hpp +0 -27
- data/rice/Hash.hpp +0 -230
- data/rice/Hash.ipp +0 -329
- data/rice/Identifier.cpp +0 -8
- data/rice/Jump_Tag.hpp +0 -24
- data/rice/Makefile.am +0 -121
- data/rice/Makefile.in +0 -884
- data/rice/Module.cpp +0 -84
- data/rice/Module.hpp +0 -8
- data/rice/Module.ipp +0 -6
- data/rice/Module_defn.hpp +0 -88
- data/rice/Module_impl.hpp +0 -281
- data/rice/Module_impl.ipp +0 -345
- data/rice/Object.cpp +0 -169
- data/rice/Object.hpp +0 -8
- data/rice/Object.ipp +0 -33
- data/rice/Object_defn.hpp +0 -214
- data/rice/Require_Guard.hpp +0 -21
- data/rice/String.cpp +0 -89
- data/rice/String.hpp +0 -91
- data/rice/Struct.cpp +0 -117
- data/rice/Struct.hpp +0 -162
- data/rice/Struct.ipp +0 -26
- data/rice/Symbol.cpp +0 -25
- data/rice/Symbol.hpp +0 -66
- data/rice/Symbol.ipp +0 -44
- data/rice/config.hpp +0 -47
- data/rice/config.hpp.in +0 -46
- data/rice/detail/Arguments.hpp +0 -118
- data/rice/detail/Auto_Function_Wrapper.hpp +0 -898
- data/rice/detail/Auto_Function_Wrapper.ipp +0 -3181
- data/rice/detail/Auto_Member_Function_Wrapper.hpp +0 -897
- data/rice/detail/Auto_Member_Function_Wrapper.ipp +0 -2501
- data/rice/detail/Caster.hpp +0 -103
- data/rice/detail/Not_Copyable.hpp +0 -25
- data/rice/detail/Wrapped_Function.hpp +0 -33
- data/rice/detail/cfp.hpp +0 -24
- data/rice/detail/cfp.ipp +0 -51
- data/rice/detail/check_ruby_type.cpp +0 -27
- data/rice/detail/check_ruby_type.hpp +0 -23
- data/rice/detail/creation_funcs.hpp +0 -37
- data/rice/detail/creation_funcs.ipp +0 -36
- data/rice/detail/define_method_and_auto_wrap.hpp +0 -31
- data/rice/detail/define_method_and_auto_wrap.ipp +0 -30
- data/rice/detail/demangle.cpp +0 -56
- data/rice/detail/demangle.hpp +0 -19
- data/rice/detail/env.hpp +0 -11
- data/rice/detail/method_data.cpp +0 -92
- data/rice/detail/node.hpp +0 -13
- data/rice/detail/protect.cpp +0 -29
- data/rice/detail/protect.hpp +0 -34
- data/rice/detail/ruby_version_code.hpp +0 -6
- data/rice/detail/ruby_version_code.hpp.in +0 -6
- data/rice/detail/st.hpp +0 -22
- data/rice/detail/win32.hpp +0 -16
- data/rice/detail/wrap_function.hpp +0 -66
- data/rice/protect.hpp +0 -38
- data/rice/protect.ipp +0 -1134
- data/rice/rubypp.rb +0 -97
- data/rice/to_from_ruby.hpp +0 -8
- data/rice/to_from_ruby.ipp +0 -418
- data/rice/to_from_ruby_defn.hpp +0 -70
- data/ruby.ac +0 -135
- data/ruby/Makefile.am +0 -1
- data/ruby/Makefile.in +0 -628
- data/ruby/lib/Makefile.am +0 -3
- data/ruby/lib/Makefile.in +0 -506
- data/ruby/lib/mkmf-rice.rb.in +0 -217
- data/ruby/lib/version.rb +0 -3
- data/sample/Makefile.am +0 -53
- data/sample/Makefile.in +0 -495
- data/test/Makefile.am +0 -73
- data/test/Makefile.in +0 -1219
- data/test/ext/Makefile.am +0 -41
- data/test/ext/Makefile.in +0 -483
- data/test/test_rice.rb +0 -45
data/rice/detail/to_ruby.hpp
CHANGED
@@ -1,22 +1,8 @@
|
|
1
1
|
#ifndef Rice__detail__to_ruby__hpp_
|
2
2
|
#define Rice__detail__to_ruby__hpp_
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
namespace detail
|
7
|
-
{
|
8
|
-
template<typename T>
|
9
|
-
struct to_ruby_
|
10
|
-
{
|
11
|
-
static Rice::Object convert(T const & x);
|
12
|
-
};
|
13
|
-
|
14
|
-
template<typename T>
|
15
|
-
struct to_ruby_<T *>
|
16
|
-
{
|
17
|
-
static Rice::Object convert(T * x);
|
18
|
-
};
|
19
|
-
} // detail
|
20
|
-
} // Rice
|
4
|
+
#include "to_ruby_defn.hpp"
|
5
|
+
#include "to_ruby.ipp"
|
21
6
|
|
22
7
|
#endif // Rice__detail__to_ruby__hpp_
|
8
|
+
|
data/rice/detail/to_ruby.ipp
CHANGED
@@ -1,36 +1,414 @@
|
|
1
|
-
#include "
|
1
|
+
#include "RubyFunction.hpp"
|
2
|
+
#include "../Return.hpp"
|
2
3
|
|
3
|
-
|
4
|
-
Rice::Object
|
5
|
-
Rice::detail::to_ruby_<T>::
|
6
|
-
convert(T const & x)
|
4
|
+
namespace Rice
|
7
5
|
{
|
8
|
-
|
6
|
+
namespace detail
|
9
7
|
{
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
}
|
8
|
+
template<>
|
9
|
+
class To_Ruby<void>
|
10
|
+
{
|
11
|
+
public:
|
12
|
+
VALUE convert(void const*)
|
13
|
+
{
|
14
|
+
return Qnil;
|
15
|
+
}
|
16
|
+
};
|
19
17
|
|
20
|
-
template
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
18
|
+
template<>
|
19
|
+
class To_Ruby<std::nullptr_t>
|
20
|
+
{
|
21
|
+
public:
|
22
|
+
VALUE convert(std::nullptr_t const)
|
23
|
+
{
|
24
|
+
return Qnil;
|
25
|
+
}
|
26
|
+
};
|
27
|
+
|
28
|
+
template<>
|
29
|
+
class To_Ruby<short>
|
30
|
+
{
|
31
|
+
public:
|
32
|
+
VALUE convert(short const& x)
|
33
|
+
{
|
34
|
+
#ifdef rb_int2num_inline
|
35
|
+
return protect(rb_int2num_inline, (int)x);
|
36
|
+
#else
|
37
|
+
return RB_INT2NUM(x);
|
38
|
+
#endif
|
39
|
+
}
|
40
|
+
};
|
41
|
+
|
42
|
+
template<>
|
43
|
+
class To_Ruby<short&>
|
44
|
+
{
|
45
|
+
public:
|
46
|
+
VALUE convert(short const& x)
|
47
|
+
{
|
48
|
+
#ifdef rb_int2num_inline
|
49
|
+
return protect(rb_int2num_inline, (int)x);
|
50
|
+
#else
|
51
|
+
return RB_INT2NUM(x);
|
52
|
+
#endif
|
53
|
+
}
|
54
|
+
};
|
55
|
+
|
56
|
+
template<>
|
57
|
+
class To_Ruby<int>
|
58
|
+
{
|
59
|
+
public:
|
60
|
+
VALUE convert(int const& x)
|
61
|
+
{
|
62
|
+
#ifdef rb_int2num_inline
|
63
|
+
return protect(rb_int2num_inline, (int)x);
|
64
|
+
#else
|
65
|
+
return RB_INT2NUM(x);
|
66
|
+
#endif
|
67
|
+
}
|
68
|
+
};
|
69
|
+
|
70
|
+
template<>
|
71
|
+
class To_Ruby<int&>
|
72
|
+
{
|
73
|
+
public:
|
74
|
+
VALUE convert(int const& x)
|
75
|
+
{
|
76
|
+
#ifdef rb_int2num_inline
|
77
|
+
return protect(rb_int2num_inline, (int)x);
|
78
|
+
#else
|
79
|
+
return RB_INT2NUM(x);
|
80
|
+
#endif
|
81
|
+
}
|
82
|
+
};
|
83
|
+
|
84
|
+
template<>
|
85
|
+
class To_Ruby<long>
|
86
|
+
{
|
87
|
+
public:
|
88
|
+
VALUE convert(long const& x)
|
89
|
+
{
|
90
|
+
return protect(rb_long2num_inline, x);
|
91
|
+
}
|
92
|
+
};
|
93
|
+
|
94
|
+
template<>
|
95
|
+
class To_Ruby<long&>
|
96
|
+
{
|
97
|
+
public:
|
98
|
+
VALUE convert(long const& x)
|
99
|
+
{
|
100
|
+
return protect(rb_long2num_inline, x);
|
101
|
+
}
|
102
|
+
};
|
103
|
+
|
104
|
+
template<>
|
105
|
+
class To_Ruby<long long>
|
106
|
+
{
|
107
|
+
public:
|
108
|
+
VALUE convert(long long const& x)
|
109
|
+
{
|
110
|
+
return protect(rb_ll2inum, x);
|
111
|
+
}
|
112
|
+
};
|
113
|
+
|
114
|
+
template<>
|
115
|
+
class To_Ruby<long long&>
|
116
|
+
{
|
117
|
+
public:
|
118
|
+
VALUE convert(long long const& x)
|
119
|
+
{
|
120
|
+
return protect(rb_ll2inum, x);
|
121
|
+
}
|
122
|
+
};
|
123
|
+
|
124
|
+
template<>
|
125
|
+
class To_Ruby<unsigned short>
|
126
|
+
{
|
127
|
+
public:
|
128
|
+
VALUE convert(unsigned short const& x)
|
129
|
+
{
|
130
|
+
#ifdef rb_int2num_inline
|
131
|
+
return protect(rb_uint2num_inline, (unsigned int)x);
|
132
|
+
#else
|
133
|
+
return RB_UINT2NUM(x);
|
134
|
+
#endif
|
135
|
+
}
|
136
|
+
};
|
137
|
+
|
138
|
+
template<>
|
139
|
+
class To_Ruby<unsigned short&>
|
140
|
+
{
|
141
|
+
public:
|
142
|
+
VALUE convert(unsigned short const& x)
|
143
|
+
{
|
144
|
+
#ifdef rb_int2num_inline
|
145
|
+
return protect(rb_uint2num_inline, (unsigned int)x);
|
146
|
+
#else
|
147
|
+
return RB_UINT2NUM(x);
|
148
|
+
#endif
|
149
|
+
}
|
150
|
+
};
|
151
|
+
|
152
|
+
template<>
|
153
|
+
class To_Ruby<unsigned int>
|
154
|
+
{
|
155
|
+
public:
|
156
|
+
VALUE convert(unsigned int const& x)
|
157
|
+
{
|
158
|
+
#ifdef rb_int2num_inline
|
159
|
+
return protect(rb_uint2num_inline, (unsigned int)x);
|
160
|
+
#else
|
161
|
+
return RB_UINT2NUM(x);
|
162
|
+
#endif
|
163
|
+
}
|
164
|
+
};
|
165
|
+
|
166
|
+
template<>
|
167
|
+
class To_Ruby<unsigned int&>
|
168
|
+
{
|
169
|
+
public:
|
170
|
+
VALUE convert(unsigned int const& x)
|
171
|
+
{
|
172
|
+
#ifdef rb_int2num_inline
|
173
|
+
return protect(rb_uint2num_inline, (unsigned int)x);
|
174
|
+
#else
|
175
|
+
return RB_UINT2NUM(x);
|
176
|
+
#endif
|
177
|
+
}
|
178
|
+
};
|
179
|
+
|
180
|
+
template<>
|
181
|
+
class To_Ruby<unsigned long>
|
182
|
+
{
|
183
|
+
public:
|
184
|
+
To_Ruby() = default;
|
185
|
+
|
186
|
+
explicit To_Ruby(Return* returnInfo) : returnInfo_(returnInfo)
|
187
|
+
{
|
188
|
+
}
|
189
|
+
|
190
|
+
VALUE convert(unsigned long const& x)
|
191
|
+
{
|
192
|
+
if (this->returnInfo_ && this->returnInfo_->getIsValue())
|
193
|
+
{
|
194
|
+
return x;
|
195
|
+
}
|
196
|
+
else
|
197
|
+
{
|
198
|
+
return protect(rb_ulong2num_inline, x);
|
199
|
+
}
|
200
|
+
}
|
201
|
+
|
202
|
+
private:
|
203
|
+
Return* returnInfo_ = nullptr;
|
204
|
+
};
|
205
|
+
|
206
|
+
template<>
|
207
|
+
class To_Ruby<unsigned long&>
|
208
|
+
{
|
209
|
+
public:
|
210
|
+
To_Ruby() = default;
|
211
|
+
|
212
|
+
explicit To_Ruby(Return* returnInfo) : returnInfo_(returnInfo)
|
213
|
+
{
|
214
|
+
}
|
215
|
+
|
216
|
+
VALUE convert(unsigned long const& x)
|
217
|
+
{
|
218
|
+
if (this->returnInfo_ && this->returnInfo_->getIsValue())
|
219
|
+
{
|
220
|
+
return x;
|
221
|
+
}
|
222
|
+
else
|
223
|
+
{
|
224
|
+
return protect(rb_ulong2num_inline, x);
|
225
|
+
}
|
226
|
+
}
|
227
|
+
|
228
|
+
private:
|
229
|
+
Return* returnInfo_ = nullptr;
|
230
|
+
};
|
231
|
+
|
232
|
+
template<>
|
233
|
+
class To_Ruby<unsigned long long>
|
234
|
+
{
|
235
|
+
public:
|
236
|
+
To_Ruby() = default;
|
237
|
+
|
238
|
+
explicit To_Ruby(Return* returnInfo) : returnInfo_(returnInfo)
|
239
|
+
{
|
240
|
+
}
|
241
|
+
|
242
|
+
VALUE convert(unsigned long long const& x)
|
243
|
+
{
|
244
|
+
if (this->returnInfo_ && this->returnInfo_->getIsValue())
|
245
|
+
{
|
246
|
+
return x;
|
247
|
+
}
|
248
|
+
else
|
249
|
+
{
|
250
|
+
return protect(rb_ull2inum, (unsigned long long)x);
|
251
|
+
}
|
252
|
+
}
|
253
|
+
|
254
|
+
private:
|
255
|
+
Return* returnInfo_ = nullptr;
|
256
|
+
};
|
257
|
+
|
258
|
+
template<>
|
259
|
+
class To_Ruby<unsigned long long&>
|
260
|
+
{
|
261
|
+
public:
|
262
|
+
To_Ruby() = default;
|
263
|
+
|
264
|
+
explicit To_Ruby(Return* returnInfo) : returnInfo_(returnInfo)
|
265
|
+
{
|
266
|
+
}
|
267
|
+
|
268
|
+
VALUE convert(unsigned long long const& x)
|
269
|
+
{
|
270
|
+
if (this->returnInfo_ && this->returnInfo_->getIsValue())
|
271
|
+
{
|
272
|
+
return x;
|
273
|
+
}
|
274
|
+
else
|
275
|
+
{
|
276
|
+
return protect(rb_ull2inum, (unsigned long long)x);
|
277
|
+
}
|
278
|
+
}
|
279
|
+
|
280
|
+
private:
|
281
|
+
Return* returnInfo_ = nullptr;
|
282
|
+
};
|
283
|
+
|
284
|
+
template<>
|
285
|
+
class To_Ruby<float>
|
286
|
+
{
|
287
|
+
public:
|
288
|
+
VALUE convert(float const& x)
|
289
|
+
{
|
290
|
+
return protect(rb_float_new, (double)x);
|
291
|
+
}
|
292
|
+
};
|
293
|
+
|
294
|
+
template<>
|
295
|
+
class To_Ruby<float&>
|
296
|
+
{
|
297
|
+
public:
|
298
|
+
VALUE convert(float const& x)
|
299
|
+
{
|
300
|
+
return protect(rb_float_new, (double)x);
|
301
|
+
}
|
302
|
+
};
|
303
|
+
|
304
|
+
template<>
|
305
|
+
class To_Ruby<double>
|
306
|
+
{
|
307
|
+
public:
|
308
|
+
VALUE convert(double const& x)
|
309
|
+
{
|
310
|
+
return protect(rb_float_new, x);
|
311
|
+
}
|
312
|
+
};
|
313
|
+
|
314
|
+
template<>
|
315
|
+
class To_Ruby<double&>
|
316
|
+
{
|
317
|
+
public:
|
318
|
+
VALUE convert(double const& x)
|
319
|
+
{
|
320
|
+
return protect(rb_float_new, x);
|
321
|
+
}
|
322
|
+
};
|
323
|
+
|
324
|
+
template<>
|
325
|
+
class To_Ruby<bool>
|
326
|
+
{
|
327
|
+
public:
|
328
|
+
VALUE convert(bool const& x)
|
329
|
+
{
|
330
|
+
return x ? Qtrue : Qfalse;
|
331
|
+
}
|
332
|
+
};
|
333
|
+
|
334
|
+
template<>
|
335
|
+
class To_Ruby<bool&>
|
336
|
+
{
|
337
|
+
public:
|
338
|
+
VALUE convert(bool const& x)
|
339
|
+
{
|
340
|
+
return x ? Qtrue : Qfalse;
|
341
|
+
}
|
342
|
+
};
|
343
|
+
|
344
|
+
template<>
|
345
|
+
class To_Ruby<char>
|
346
|
+
{
|
347
|
+
public:
|
348
|
+
VALUE convert(char const& x)
|
349
|
+
{
|
350
|
+
return To_Ruby<int>().convert(x);
|
351
|
+
}
|
352
|
+
};
|
353
|
+
|
354
|
+
template<>
|
355
|
+
class To_Ruby<char&>
|
356
|
+
{
|
357
|
+
public:
|
358
|
+
VALUE convert(char const& x)
|
359
|
+
{
|
360
|
+
return To_Ruby<int>().convert(x);
|
361
|
+
}
|
362
|
+
};
|
363
|
+
|
364
|
+
template<>
|
365
|
+
class To_Ruby<unsigned char>
|
366
|
+
{
|
367
|
+
public:
|
368
|
+
VALUE convert(unsigned char const& x)
|
369
|
+
{
|
370
|
+
return To_Ruby<unsigned int>().convert(x);
|
371
|
+
}
|
372
|
+
};
|
373
|
+
|
374
|
+
template<>
|
375
|
+
class To_Ruby<unsigned char&>
|
376
|
+
{
|
377
|
+
public:
|
378
|
+
VALUE convert(unsigned char const& x)
|
379
|
+
{
|
380
|
+
return To_Ruby<unsigned int>().convert(x);
|
381
|
+
}
|
382
|
+
};
|
383
|
+
|
384
|
+
template<>
|
385
|
+
class To_Ruby<signed char>
|
386
|
+
{
|
387
|
+
public:
|
388
|
+
VALUE convert(signed char const& x)
|
389
|
+
{
|
390
|
+
return To_Ruby<signed int>().convert(x);
|
391
|
+
}
|
392
|
+
};
|
393
|
+
|
394
|
+
template<>
|
395
|
+
class To_Ruby<signed char&>
|
396
|
+
{
|
397
|
+
public:
|
398
|
+
VALUE convert(signed char const& x)
|
399
|
+
{
|
400
|
+
return To_Ruby<signed int>().convert(x);
|
401
|
+
}
|
402
|
+
};
|
403
|
+
|
404
|
+
template<>
|
405
|
+
class To_Ruby<char*>
|
406
|
+
{
|
407
|
+
public:
|
408
|
+
VALUE convert(char const* x)
|
409
|
+
{
|
410
|
+
return protect(rb_str_new2, x);
|
411
|
+
}
|
412
|
+
};
|
35
413
|
}
|
36
|
-
}
|
414
|
+
}
|