rice 1.4.3 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/COPYING +2 -2
- data/Doxyfile +1 -1
- data/Makefile.in +296 -166
- data/README +18 -13
- data/Rakefile +3 -2
- data/aclocal.m4 +375 -248
- data/config.guess +296 -261
- data/config.sub +268 -94
- data/configure +2789 -3054
- data/configure.ac +1 -1
- data/depcomp +403 -197
- data/extconf.rb +14 -3
- data/install-sh +139 -119
- data/missing +154 -306
- data/rice/Builtin_Object_defn.hpp +0 -1
- data/rice/Constructor.hpp +31 -30
- data/rice/Data_Object_defn.hpp +8 -2
- data/rice/Hash.hpp +26 -9
- data/rice/Hash.ipp +52 -60
- data/rice/Makefile.am +0 -1
- data/rice/Makefile.in +278 -152
- data/rice/Module_impl.ipp +1 -1
- data/rice/VM.cpp +1 -11
- data/rice/config.hpp +3 -0
- data/rice/config.hpp.in +3 -0
- data/rice/detail/Auto_Function_Wrapper.hpp +69 -0
- data/rice/detail/Auto_Function_Wrapper.ipp +815 -512
- data/rice/detail/Auto_Member_Function_Wrapper.hpp +69 -0
- data/rice/detail/Auto_Member_Function_Wrapper.ipp +543 -272
- data/rice/detail/object_call.hpp +1 -0
- data/rice/detail/ruby.hpp +0 -9
- data/rice/detail/ruby_version_code.hpp +1 -1
- data/rice/detail/st.hpp +0 -38
- data/rice/protect.hpp +1 -0
- data/rice/protect.ipp +1 -0
- data/rice/to_from_ruby.ipp +1 -1
- data/ruby.ac +2 -2
- data/ruby/Makefile.in +221 -134
- data/ruby/lib/Makefile.in +133 -44
- data/ruby/lib/mkmf-rice.rb.in +1 -4
- data/ruby/lib/version.rb +1 -1
- data/sample/Makefile.in +96 -31
- data/test/Makefile.am +0 -1
- data/test/Makefile.in +617 -219
- data/test/ext/Makefile.in +96 -31
- data/test/test_Class.cpp +2 -2
- data/test/test_Data_Object.cpp +11 -11
- data/test/test_Hash.cpp +7 -4
- data/test/test_Module.cpp +17 -1
- data/test/test_To_From_Ruby.cpp +44 -0
- data/test/test_rice.rb +2 -2
- metadata +29 -43
- data/rice/Allocation_Strategies.hpp +0 -37
- data/test/test_Allocation_Strategies.cpp +0 -77
data/test/test_To_From_Ruby.cpp
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
#include "unittest.hpp"
|
2
2
|
#include "rice/to_from_ruby.hpp"
|
3
3
|
#include "rice/String.hpp"
|
4
|
+
#include "rice/Array.hpp"
|
5
|
+
#include "rice/Hash.hpp"
|
4
6
|
#include <limits>
|
5
7
|
#include <cmath>
|
6
8
|
|
@@ -249,6 +251,24 @@ TESTCASE(char_const_ptr_from_ruby)
|
|
249
251
|
ASSERT_EQUAL("foo", from_ruby<char const *>(rb_str_new2("foo")));
|
250
252
|
}
|
251
253
|
|
254
|
+
TESTCASE(char_from_ruby_single_character_string)
|
255
|
+
{
|
256
|
+
ASSERT_EQUAL('x', from_ruby<char>(rb_str_new2("x")));
|
257
|
+
}
|
258
|
+
|
259
|
+
TESTCASE(char_from_ruby_longer_string)
|
260
|
+
{
|
261
|
+
ASSERT_EXCEPTION(
|
262
|
+
std::invalid_argument,
|
263
|
+
from_ruby<char>(rb_str_new2("xy"))
|
264
|
+
);
|
265
|
+
}
|
266
|
+
|
267
|
+
TESTCASE(char_from_ruby_fixnum)
|
268
|
+
{
|
269
|
+
ASSERT_EQUAL('1', from_ruby<char>(INT2NUM(49)));
|
270
|
+
}
|
271
|
+
|
252
272
|
TESTCASE(std_string_to_ruby)
|
253
273
|
{
|
254
274
|
ASSERT_EQUAL(String(""), to_ruby(std::string("")));
|
@@ -275,3 +295,27 @@ TESTCASE(std_string_from_ruby_with_binary)
|
|
275
295
|
ASSERT_EQUAL(5, got.length());
|
276
296
|
ASSERT_EQUAL(std::string("\000test", 5), got);
|
277
297
|
}
|
298
|
+
|
299
|
+
TESTCASE(array_to_ruby)
|
300
|
+
{
|
301
|
+
Array a(rb_ary_new());
|
302
|
+
ASSERT_EQUAL(a.value(), to_ruby(a).value());
|
303
|
+
}
|
304
|
+
|
305
|
+
TESTCASE(array_from_ruby)
|
306
|
+
{
|
307
|
+
Array a(rb_ary_new());
|
308
|
+
ASSERT_EQUAL(a.value(), from_ruby<Array>(a).value());
|
309
|
+
}
|
310
|
+
|
311
|
+
TESTCASE(hash_to_ruby)
|
312
|
+
{
|
313
|
+
Hash h(rb_hash_new());
|
314
|
+
ASSERT_EQUAL(h.value(), to_ruby(h).value());
|
315
|
+
}
|
316
|
+
|
317
|
+
TESTCASE(hash_from_ruby)
|
318
|
+
{
|
319
|
+
Hash h(rb_hash_new());
|
320
|
+
ASSERT_EQUAL(h.value(), from_ruby<Hash>(h).value());
|
321
|
+
}
|
data/test/test_rice.rb
CHANGED
@@ -5,8 +5,8 @@ class RiceTest < Test::Unit::TestCase
|
|
5
5
|
# TODO: probably a better way to find this out...
|
6
6
|
VERBOSE = ARGV.include?('-v')
|
7
7
|
|
8
|
-
EXEEXT =
|
9
|
-
RUBY =
|
8
|
+
EXEEXT = RbConfig::CONFIG['EXEEXT']
|
9
|
+
RUBY = RbConfig::CONFIG['RUBY_INSTALL_NAME']
|
10
10
|
|
11
11
|
def test_unittest
|
12
12
|
run_external_test("./unittest#{EXEEXT}")
|
metadata
CHANGED
@@ -1,41 +1,38 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rice
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.5.0
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 4
|
9
|
-
- 3
|
10
|
-
version: 1.4.3
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Paul Brannan
|
14
9
|
- Jason Roelofs
|
15
10
|
autorequire:
|
16
11
|
bindir: bin
|
17
12
|
cert_chain: []
|
18
|
-
|
19
|
-
date: 2011-10-09 00:00:00 Z
|
13
|
+
date: 2013-05-01 00:00:00.000000000 Z
|
20
14
|
dependencies: []
|
15
|
+
description: ! 'Rice is a C++ interface to Ruby''s C API. It provides a type-safe
|
16
|
+
and
|
21
17
|
|
22
|
-
description: |
|
23
|
-
Rice is a C++ interface to Ruby's C API. It provides a type-safe and
|
24
18
|
exception-safe interface in order to make embedding Ruby and writing
|
19
|
+
|
25
20
|
Ruby extensions with C++ easier. It is similar to Boost.Python in many
|
21
|
+
|
26
22
|
ways, but also attempts to provide an object-oriented interface to all
|
23
|
+
|
27
24
|
of the Ruby C API.
|
28
25
|
|
29
|
-
|
26
|
+
'
|
27
|
+
email:
|
30
28
|
- curlypaul924@gmail.com
|
31
|
-
-
|
29
|
+
- jasonroelofs@gmail.com
|
32
30
|
executables: []
|
33
|
-
|
34
|
-
extensions:
|
31
|
+
extensions:
|
35
32
|
- extconf.rb
|
36
|
-
extra_rdoc_files:
|
33
|
+
extra_rdoc_files:
|
37
34
|
- README
|
38
|
-
files:
|
35
|
+
files:
|
39
36
|
- COPYING
|
40
37
|
- README
|
41
38
|
- README.mingw
|
@@ -72,7 +69,6 @@ files:
|
|
72
69
|
- rice/Address_Registration_Guard.hpp
|
73
70
|
- rice/Address_Registration_Guard.ipp
|
74
71
|
- rice/Address_Registration_Guard_defn.hpp
|
75
|
-
- rice/Allocation_Strategies.hpp
|
76
72
|
- rice/Arg.hpp
|
77
73
|
- rice/Arg_impl.hpp
|
78
74
|
- rice/Arg_operators.cpp
|
@@ -205,7 +201,6 @@ files:
|
|
205
201
|
- sample/inheritance/animals.cpp
|
206
202
|
- sample/inheritance/test.rb
|
207
203
|
- test/test_Address_Registration_Guard.cpp
|
208
|
-
- test/test_Allocation_Strategies.cpp
|
209
204
|
- test/test_Array.cpp
|
210
205
|
- test/test_Builtin_Object.cpp
|
211
206
|
- test/test_Class.cpp
|
@@ -240,36 +235,27 @@ files:
|
|
240
235
|
- test/test_rice.rb
|
241
236
|
homepage: http://rice.rubyforge.org/
|
242
237
|
licenses: []
|
243
|
-
|
244
238
|
post_install_message:
|
245
239
|
rdoc_options: []
|
246
|
-
|
247
|
-
require_paths:
|
240
|
+
require_paths:
|
248
241
|
- ruby/lib
|
249
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
242
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
250
243
|
none: false
|
251
|
-
requirements:
|
252
|
-
- -
|
253
|
-
- !ruby/object:Gem::Version
|
254
|
-
|
255
|
-
|
256
|
-
- 0
|
257
|
-
version: "0"
|
258
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
244
|
+
requirements:
|
245
|
+
- - ! '>='
|
246
|
+
- !ruby/object:Gem::Version
|
247
|
+
version: '0'
|
248
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
259
249
|
none: false
|
260
|
-
requirements:
|
261
|
-
- -
|
262
|
-
- !ruby/object:Gem::Version
|
263
|
-
|
264
|
-
segments:
|
265
|
-
- 0
|
266
|
-
version: "0"
|
250
|
+
requirements:
|
251
|
+
- - ! '>='
|
252
|
+
- !ruby/object:Gem::Version
|
253
|
+
version: '0'
|
267
254
|
requirements: []
|
268
|
-
|
269
255
|
rubyforge_project: rice
|
270
|
-
rubygems_version: 1.8.
|
256
|
+
rubygems_version: 1.8.25
|
271
257
|
signing_key:
|
272
258
|
specification_version: 3
|
273
259
|
summary: Ruby Interface for C++ Extensions
|
274
|
-
test_files:
|
260
|
+
test_files:
|
275
261
|
- test/test_rice.rb
|
@@ -1,37 +0,0 @@
|
|
1
|
-
#ifndef Rice__Default_Allocation_Strategy__hpp_
|
2
|
-
#define Rice__Default_Allocation_Strategy__hpp_
|
3
|
-
|
4
|
-
#include "detail/ruby.hpp"
|
5
|
-
|
6
|
-
/*! \file
|
7
|
-
* \brief Strategies for allocation/deallocation of objects.
|
8
|
-
*/
|
9
|
-
|
10
|
-
namespace Rice
|
11
|
-
{
|
12
|
-
|
13
|
-
template<typename T>
|
14
|
-
struct Default_Allocation_Strategy
|
15
|
-
{
|
16
|
-
//! Allocate an object using operator new.
|
17
|
-
static T * allocate() { return new T; }
|
18
|
-
|
19
|
-
//! Delete obj using the delete operator.
|
20
|
-
static void free(T * obj) { delete obj; }
|
21
|
-
};
|
22
|
-
|
23
|
-
template<typename T>
|
24
|
-
struct Xmalloc_Allocation_Strategy
|
25
|
-
{
|
26
|
-
//! Allocate an array of objects using operator new and xmalloc.
|
27
|
-
static T * allocate() { T * obj = static_cast<T *>(::xmalloc(sizeof(T))); new(obj) T; return obj; }
|
28
|
-
|
29
|
-
//! Delete obj by calling the destructor explicitly and calling xfree.
|
30
|
-
static void free(T * obj) { obj->~T(); ::xfree(obj); }
|
31
|
-
};
|
32
|
-
|
33
|
-
// TODO: array allocation
|
34
|
-
|
35
|
-
} // namespace Rice
|
36
|
-
|
37
|
-
#endif // Rice__Default_Allocation_Strategy__hpp_
|
@@ -1,77 +0,0 @@
|
|
1
|
-
#include "unittest.hpp"
|
2
|
-
#include "rice/Allocation_Strategies.hpp"
|
3
|
-
|
4
|
-
using namespace Rice;
|
5
|
-
|
6
|
-
namespace
|
7
|
-
{
|
8
|
-
|
9
|
-
bool constructor_called = false;
|
10
|
-
bool destructor_called = false;
|
11
|
-
|
12
|
-
class Foo
|
13
|
-
{
|
14
|
-
public:
|
15
|
-
Foo()
|
16
|
-
{
|
17
|
-
constructor_called = true;
|
18
|
-
}
|
19
|
-
|
20
|
-
~Foo()
|
21
|
-
{
|
22
|
-
destructor_called = true;
|
23
|
-
}
|
24
|
-
};
|
25
|
-
|
26
|
-
} // namespace
|
27
|
-
|
28
|
-
TESTSUITE(Allocation_Strategies);
|
29
|
-
|
30
|
-
SETUP(Allocation_Strategies)
|
31
|
-
{
|
32
|
-
ruby_init();
|
33
|
-
constructor_called = false;
|
34
|
-
destructor_called = false;
|
35
|
-
}
|
36
|
-
|
37
|
-
TESTCASE(default_allocation_strategy_allocate)
|
38
|
-
{
|
39
|
-
Foo * t = Default_Allocation_Strategy<Foo>::allocate();
|
40
|
-
ASSERT(constructor_called);
|
41
|
-
ASSERT(!destructor_called);
|
42
|
-
delete t;
|
43
|
-
ASSERT(constructor_called);
|
44
|
-
ASSERT(destructor_called);
|
45
|
-
}
|
46
|
-
|
47
|
-
TESTCASE(default_allocation_strategy_free)
|
48
|
-
{
|
49
|
-
Foo * t = new Foo;
|
50
|
-
ASSERT(constructor_called);
|
51
|
-
ASSERT(!destructor_called);
|
52
|
-
Default_Allocation_Strategy<Foo>::free(t);
|
53
|
-
ASSERT(constructor_called);
|
54
|
-
ASSERT(destructor_called);
|
55
|
-
}
|
56
|
-
|
57
|
-
TESTCASE(xmalloc_allocation_strategy_allocate)
|
58
|
-
{
|
59
|
-
Foo * t = Xmalloc_Allocation_Strategy<Foo>::allocate();
|
60
|
-
ASSERT(constructor_called);
|
61
|
-
ASSERT(!destructor_called);
|
62
|
-
t->~Foo();
|
63
|
-
xfree(t);
|
64
|
-
ASSERT(constructor_called);
|
65
|
-
ASSERT(destructor_called);
|
66
|
-
}
|
67
|
-
|
68
|
-
TESTCASE(xmalloc_allocation_strategy_free)
|
69
|
-
{
|
70
|
-
Foo * t = Xmalloc_Allocation_Strategy<Foo>::allocate();
|
71
|
-
ASSERT(constructor_called);
|
72
|
-
ASSERT(!destructor_called);
|
73
|
-
Xmalloc_Allocation_Strategy<Foo>::free(t);
|
74
|
-
ASSERT(constructor_called);
|
75
|
-
ASSERT(destructor_called);
|
76
|
-
}
|
77
|
-
|