rice 2.2.0 → 3.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.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/COPYING +2 -2
  3. data/Doxyfile +1 -1
  4. data/Makefile.in +15 -7
  5. data/README.md +115 -117
  6. data/aclocal.m4 +25 -28
  7. data/ax_cxx_compile_stdcxx.m4 +951 -0
  8. data/configure +486 -61
  9. data/configure.ac +3 -3
  10. data/extconf.rb +6 -2
  11. data/rice/Array.hpp +16 -16
  12. data/rice/Array.ipp +11 -11
  13. data/rice/Class_defn.hpp +1 -0
  14. data/rice/Constructor.hpp +27 -371
  15. data/rice/Director.hpp +3 -3
  16. data/rice/Exception.cpp +2 -7
  17. data/rice/Hash.hpp +8 -5
  18. data/rice/Makefile.am +0 -4
  19. data/rice/Makefile.in +6 -10
  20. data/rice/Object.cpp +1 -1
  21. data/rice/Object.ipp +15 -1
  22. data/rice/Object_defn.hpp +24 -1
  23. data/rice/String.cpp +2 -7
  24. data/rice/Struct.cpp +2 -2
  25. data/rice/Struct.hpp +1 -1
  26. data/rice/Struct.ipp +1 -1
  27. data/rice/config.hpp +2 -2
  28. data/rice/config.hpp.in +2 -2
  29. data/rice/detail/Arguments.hpp +1 -1
  30. data/rice/detail/Auto_Function_Wrapper.ipp +512 -1025
  31. data/rice/detail/Auto_Member_Function_Wrapper.ipp +272 -545
  32. data/rice/detail/ruby.hpp +0 -4
  33. data/rice/detail/ruby_version_code.hpp +1 -1
  34. data/rice/detail/wrap_function.hpp +32 -307
  35. data/rice/protect.hpp +3 -57
  36. data/rice/to_from_ruby.ipp +3 -3
  37. data/ruby/Makefile.in +4 -4
  38. data/ruby/lib/Makefile.in +4 -4
  39. data/ruby/lib/version.rb +1 -1
  40. data/sample/Makefile.am +10 -4
  41. data/sample/Makefile.in +14 -8
  42. data/sample/callbacks/extconf.rb +3 -0
  43. data/sample/callbacks/sample_callbacks.cpp +38 -0
  44. data/sample/callbacks/test.rb +28 -0
  45. data/test/Makefile.am +1 -0
  46. data/test/Makefile.in +15 -9
  47. data/test/embed_ruby.cpp +21 -0
  48. data/test/embed_ruby.hpp +4 -0
  49. data/test/ext/Makefile.in +4 -4
  50. data/test/test_Address_Registration_Guard.cpp +2 -1
  51. data/test/test_Array.cpp +2 -1
  52. data/test/test_Builtin_Object.cpp +2 -1
  53. data/test/test_Class.cpp +2 -1
  54. data/test/test_Data_Object.cpp +2 -1
  55. data/test/test_Data_Type.cpp +2 -1
  56. data/test/test_Director.cpp +2 -1
  57. data/test/test_Enum.cpp +2 -1
  58. data/test/test_Exception.cpp +2 -1
  59. data/test/test_Hash.cpp +2 -1
  60. data/test/test_Identifier.cpp +2 -1
  61. data/test/test_Memory_Management.cpp +2 -1
  62. data/test/test_Module.cpp +2 -1
  63. data/test/test_Object.cpp +13 -1
  64. data/test/test_String.cpp +2 -1
  65. data/test/test_Struct.cpp +2 -1
  66. data/test/test_Symbol.cpp +2 -1
  67. data/test/test_To_From_Ruby.cpp +2 -1
  68. data/test/test_global_functions.cpp +2 -1
  69. data/test/test_rice.rb +4 -0
  70. data/test/unittest.cpp +34 -8
  71. metadata +26 -11
  72. data/check_stdcxx_11.ac +0 -103
  73. data/rice/detail/object_call.hpp +0 -69
  74. data/rice/detail/object_call.ipp +0 -131
  75. data/rice/detail/traits.hpp +0 -43
  76. data/rice/detail/wrap_function.ipp +0 -514
@@ -1,4 +1,5 @@
1
1
  #include "unittest.hpp"
2
+ #include "embed_ruby.hpp"
2
3
  #include "rice/Builtin_Object.hpp"
3
4
  #include "rice/Class.hpp"
4
5
 
@@ -8,7 +9,7 @@ TESTSUITE(Builtin_Object);
8
9
 
9
10
  SETUP(Builtin_Object)
10
11
  {
11
- ruby_init();
12
+ embed_ruby();
12
13
  }
13
14
 
14
15
  TESTCASE(construct_with_object)
@@ -1,4 +1,5 @@
1
1
  #include "unittest.hpp"
2
+ #include "embed_ruby.hpp"
2
3
  #include "rice/Class.hpp"
3
4
  #include "rice/Constructor.hpp"
4
5
  #include "rice/protect.hpp"
@@ -15,7 +16,7 @@ TESTSUITE(Class);
15
16
 
16
17
  SETUP(Class)
17
18
  {
18
- ruby_init();
19
+ embed_ruby();
19
20
  }
20
21
 
21
22
  TESTCASE(construct)
@@ -1,4 +1,5 @@
1
1
  #include "unittest.hpp"
2
+ #include "embed_ruby.hpp"
2
3
  #include "rice/Data_Object.hpp"
3
4
  #include "rice/Data_Type.hpp"
4
5
  #include "rice/Exception.hpp"
@@ -22,7 +23,7 @@ void ruby_mark(Foo * foo)
22
23
 
23
24
  SETUP(Data_Object)
24
25
  {
25
- ruby_init();
26
+ embed_ruby();
26
27
 
27
28
  if(!Data_Type<Foo>::is_bound())
28
29
  {
@@ -1,4 +1,5 @@
1
1
  #include "unittest.hpp"
2
+ #include "embed_ruby.hpp"
2
3
  #include "rice/Data_Type.hpp"
3
4
  #include "rice/Exception.hpp"
4
5
  #include "rice/Constructor.hpp"
@@ -63,7 +64,7 @@ namespace {
63
64
 
64
65
  SETUP(Data_Type)
65
66
  {
66
- ruby_init();
67
+ embed_ruby();
67
68
 
68
69
  define_class<Listener>("Listener")
69
70
  .define_constructor(Constructor<Listener>())
@@ -1,4 +1,5 @@
1
1
  #include "unittest.hpp"
2
+ #include "embed_ruby.hpp"
2
3
  #include "rice/Exception.hpp"
3
4
  #include "rice/Director.hpp"
4
5
  #include "rice/Constructor.hpp"
@@ -87,7 +88,7 @@ namespace {
87
88
 
88
89
  SETUP(Director)
89
90
  {
90
- ruby_init();
91
+ embed_ruby();
91
92
  }
92
93
 
93
94
  TESTCASE(exposes_worker_as_instantiatable_class)
@@ -1,4 +1,5 @@
1
1
  #include "unittest.hpp"
2
+ #include "embed_ruby.hpp"
2
3
  #include "rice/Enum.hpp"
3
4
  #include "rice/Array.hpp"
4
5
  #include "rice/String.hpp"
@@ -26,7 +27,7 @@ namespace
26
27
 
27
28
  SETUP(Enum)
28
29
  {
29
- ruby_init();
30
+ embed_ruby();
30
31
  }
31
32
 
32
33
  TESTCASE(copy_construct)
@@ -1,4 +1,5 @@
1
1
  #include "unittest.hpp"
2
+ #include "embed_ruby.hpp"
2
3
  #include "rice/Exception.hpp"
3
4
  #include "rice/String.hpp"
4
5
 
@@ -8,7 +9,7 @@ TESTSUITE(Exception);
8
9
 
9
10
  SETUP(Exception)
10
11
  {
11
- ruby_init();
12
+ embed_ruby();
12
13
  }
13
14
 
14
15
  TESTCASE(construct_from_exception_object)
@@ -1,4 +1,5 @@
1
1
  #include "unittest.hpp"
2
+ #include "embed_ruby.hpp"
2
3
  #include "rice/Hash.hpp"
3
4
  #include "rice/global_function.hpp"
4
5
  #include <vector>
@@ -11,7 +12,7 @@ TESTSUITE(Hash);
11
12
 
12
13
  SETUP(Hash)
13
14
  {
14
- ruby_init();
15
+ embed_ruby();
15
16
  }
16
17
 
17
18
  TESTCASE(default_construct)
@@ -1,4 +1,5 @@
1
1
  #include "unittest.hpp"
2
+ #include "embed_ruby.hpp"
2
3
  #include "rice/Identifier.hpp"
3
4
  #include "rice/Symbol.hpp"
4
5
 
@@ -8,7 +9,7 @@ TESTSUITE(Identifier);
8
9
 
9
10
  SETUP(Identifier)
10
11
  {
11
- ruby_init();
12
+ embed_ruby();
12
13
  }
13
14
 
14
15
  TESTCASE(construct_from_id)
@@ -1,4 +1,5 @@
1
1
  #include "unittest.hpp"
2
+ #include "embed_ruby.hpp"
2
3
  #include "rice/String.hpp"
3
4
  #include "rice/Class.hpp"
4
5
  #include "rice/global_function.hpp"
@@ -9,7 +10,7 @@ TESTSUITE(Memory_Management);
9
10
 
10
11
  SETUP(Memory_Management)
11
12
  {
12
- ruby_init();
13
+ embed_ruby();
13
14
  }
14
15
 
15
16
  namespace
@@ -1,4 +1,5 @@
1
1
  #include "unittest.hpp"
2
+ #include "embed_ruby.hpp"
2
3
  #include "rice/Module.hpp"
3
4
  #include "rice/Exception.hpp"
4
5
  #include "rice/Array.hpp"
@@ -12,7 +13,7 @@ TESTSUITE(Module);
12
13
 
13
14
  SETUP(Object)
14
15
  {
15
- ruby_init();
16
+ embed_ruby();
16
17
  }
17
18
 
18
19
  TESTCASE(construct_from_value)
@@ -1,4 +1,5 @@
1
1
  #include "unittest.hpp"
2
+ #include "embed_ruby.hpp"
2
3
  #include "rice/Object.hpp"
3
4
  #include "rice/Class.hpp"
4
5
  #include "rice/String.hpp"
@@ -10,7 +11,7 @@ TESTSUITE(Object);
10
11
 
11
12
  SETUP(Object)
12
13
  {
13
- ruby_init();
14
+ embed_ruby();
14
15
  }
15
16
 
16
17
  TESTCASE(default_construct)
@@ -146,3 +147,14 @@ TESTCASE(rb_type)
146
147
  ASSERT_EQUAL(T_UNDEF, Object(Qundef).rb_type());
147
148
  }
148
149
 
150
+ TESTCASE(call_no_arguments)
151
+ {
152
+ Object three = to_ruby(3).call("to_s");
153
+ ASSERT_EQUAL(String("3"), three);
154
+ }
155
+
156
+ TESTCASE(call_return_rice_object)
157
+ {
158
+ Object three = to_ruby(1).call("+", 2);
159
+ ASSERT_EQUAL(to_ruby(3), three);
160
+ }
@@ -1,4 +1,5 @@
1
1
  #include "unittest.hpp"
2
+ #include "embed_ruby.hpp"
2
3
  #include "rice/String.hpp"
3
4
  #include "rice/global_function.hpp"
4
5
 
@@ -8,7 +9,7 @@ TESTSUITE(String);
8
9
 
9
10
  SETUP(String)
10
11
  {
11
- ruby_init();
12
+ embed_ruby();
12
13
  }
13
14
 
14
15
  TESTCASE(default_construct)
@@ -1,4 +1,5 @@
1
1
  #include "unittest.hpp"
2
+ #include "embed_ruby.hpp"
2
3
  #include "rice/Struct.hpp"
3
4
  #include "rice/Symbol.hpp"
4
5
  #include "rice/global_function.hpp"
@@ -22,7 +23,7 @@ namespace
22
23
 
23
24
  SETUP(Struct)
24
25
  {
25
- ruby_init();
26
+ embed_ruby();
26
27
  }
27
28
 
28
29
  TESTCASE(default_construct)
@@ -1,4 +1,5 @@
1
1
  #include "unittest.hpp"
2
+ #include "embed_ruby.hpp"
2
3
  #include "rice/Symbol.hpp"
3
4
  #include "rice/Identifier.hpp"
4
5
 
@@ -8,7 +9,7 @@ TESTSUITE(Symbol);
8
9
 
9
10
  SETUP(Symbol)
10
11
  {
11
- ruby_init();
12
+ embed_ruby();
12
13
  }
13
14
 
14
15
  TESTCASE(construct_from_symbol)
@@ -1,4 +1,5 @@
1
1
  #include "unittest.hpp"
2
+ #include "embed_ruby.hpp"
2
3
  #include "rice/to_from_ruby.hpp"
3
4
  #include "rice/String.hpp"
4
5
  #include "rice/Array.hpp"
@@ -12,7 +13,7 @@ TESTSUITE(To_From_Ruby);
12
13
 
13
14
  SETUP(To_From_Ruby)
14
15
  {
15
- ruby_init();
16
+ embed_ruby();
16
17
  }
17
18
 
18
19
  TESTCASE(object_to_ruby)
@@ -1,4 +1,5 @@
1
1
  #include "unittest.hpp"
2
+ #include "embed_ruby.hpp"
2
3
  #include "rice/global_function.hpp"
3
4
 
4
5
  using namespace Rice;
@@ -7,7 +8,7 @@ TESTSUITE(GlobalFunction);
7
8
 
8
9
  SETUP(GlobalFunction)
9
10
  {
10
- ruby_init();
11
+ embed_ruby();
11
12
  }
12
13
 
13
14
  namespace {
@@ -26,6 +26,10 @@ class RiceTest < Minitest::Test
26
26
  run_external_test("#{RUBY} test_multiple_extensions_same_class.rb")
27
27
  end
28
28
 
29
+ def test_callbacks_sample
30
+ run_external_test("#{RUBY} test_callbacks_sample.rb")
31
+ end
32
+
29
33
  def run_external_test(executable)
30
34
  if VERBOSE then
31
35
  system(executable)
@@ -1,3 +1,4 @@
1
+ #include <algorithm>
1
2
  #include <iostream>
2
3
  #include <map>
3
4
  #include "unittest.hpp"
@@ -85,18 +86,43 @@ run(Test_Result & result)
85
86
  }
86
87
  }
87
88
 
88
- int main()
89
+ char* findOption(char** begin, char** end, const std::string& option)
89
90
  {
91
+ char** itr = std::find(begin, end, option);
92
+ if (itr != end && ++itr != end)
93
+ {
94
+ return *itr;
95
+ }
96
+ return nullptr;
97
+ }
98
+
99
+ int main(int argc, char** argv)
100
+ {
101
+ std::vector<Test_Suite> suites;
102
+
103
+ char* moduleName = findOption(argv, argv + argc, "--suite");
104
+ if (moduleName)
105
+ {
106
+ Test_Suite suite = test_suites()[moduleName];
107
+ suites.push_back(suite);
108
+ }
109
+ else
110
+ {
111
+ std::transform(test_suites().begin(), test_suites().end(),
112
+ std::back_inserter(suites),
113
+ [](auto& pair)
114
+ {
115
+ return pair.second;
116
+ });
117
+ }
118
+
90
119
  Test_Result result;
91
120
  size_t num_tests = 0;
92
-
93
- for(Test_Suites::iterator it = test_suites().begin(),
94
- end = test_suites().end();
95
- it != end;
96
- ++it)
121
+
122
+ for (Test_Suite& suite : suites)
97
123
  {
98
- it->second.run(result);
99
- num_tests += it->second.size();
124
+ suite.run(result);
125
+ num_tests += suite.size();
100
126
  }
101
127
 
102
128
  std::cout << std::endl;
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rice
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Brannan
8
8
  - Jason Roelofs
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-01-11 00:00:00.000000000 Z
12
+ date: 2021-01-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -53,6 +53,20 @@ dependencies:
53
53
  - - ">="
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: mustache
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
56
70
  description: |
57
71
  Rice is a C++ interface to Ruby's C API. It provides a type-safe and
58
72
  exception-safe interface in order to make embedding Ruby and writing
@@ -76,8 +90,8 @@ files:
76
90
  - README.mingw
77
91
  - Rakefile
78
92
  - aclocal.m4
93
+ - ax_cxx_compile_stdcxx.m4
79
94
  - bootstrap
80
- - check_stdcxx_11.ac
81
95
  - config.guess
82
96
  - config.sub
83
97
  - configure
@@ -185,8 +199,6 @@ files:
185
199
  - rice/detail/method_data.cpp
186
200
  - rice/detail/method_data.hpp
187
201
  - rice/detail/node.hpp
188
- - rice/detail/object_call.hpp
189
- - rice/detail/object_call.ipp
190
202
  - rice/detail/protect.cpp
191
203
  - rice/detail/protect.hpp
192
204
  - rice/detail/ruby.hpp
@@ -195,10 +207,8 @@ files:
195
207
  - rice/detail/st.hpp
196
208
  - rice/detail/to_ruby.hpp
197
209
  - rice/detail/to_ruby.ipp
198
- - rice/detail/traits.hpp
199
210
  - rice/detail/win32.hpp
200
211
  - rice/detail/wrap_function.hpp
201
- - rice/detail/wrap_function.ipp
202
212
  - rice/global_function.hpp
203
213
  - rice/global_function.ipp
204
214
  - rice/protect.hpp
@@ -218,6 +228,9 @@ files:
218
228
  - ruby/lib/version.rb
219
229
  - sample/Makefile.am
220
230
  - sample/Makefile.in
231
+ - sample/callbacks/extconf.rb
232
+ - sample/callbacks/sample_callbacks.cpp
233
+ - sample/callbacks/test.rb
221
234
  - sample/enum/extconf.rb
222
235
  - sample/enum/sample_enum.cpp
223
236
  - sample/enum/test.rb
@@ -229,6 +242,8 @@ files:
229
242
  - sample/map/test.rb
230
243
  - test/Makefile.am
231
244
  - test/Makefile.in
245
+ - test/embed_ruby.cpp
246
+ - test/embed_ruby.hpp
232
247
  - test/ext/Makefile.am
233
248
  - test/ext/Makefile.in
234
249
  - test/ext/t1/Foo.hpp
@@ -264,7 +279,7 @@ homepage: https://github.com/jasonroelofs/rice
264
279
  licenses:
265
280
  - MIT
266
281
  metadata: {}
267
- post_install_message:
282
+ post_install_message:
268
283
  rdoc_options: []
269
284
  require_paths:
270
285
  - ruby/lib
@@ -279,8 +294,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
279
294
  - !ruby/object:Gem::Version
280
295
  version: '0'
281
296
  requirements: []
282
- rubygems_version: 3.1.2
283
- signing_key:
297
+ rubygems_version: 3.2.3
298
+ signing_key:
284
299
  specification_version: 4
285
300
  summary: Ruby Interface for C++ Extensions
286
301
  test_files: