rice 4.5.0 → 4.6.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 +23 -0
- data/CMakeLists.txt +31 -0
- data/CMakePresets.json +75 -0
- data/COPYING +3 -2
- data/FindRuby.cmake +437 -0
- data/Rakefile +5 -4
- data/include/rice/rice.hpp +5436 -3201
- data/include/rice/stl.hpp +2355 -1269
- data/lib/make_rice_headers.rb +79 -0
- data/lib/mkmf-rice.rb +4 -0
- data/lib/rice/version.rb +3 -0
- data/lib/rice.rb +1 -0
- data/lib/rubygems/builder.rb +11 -0
- data/lib/rubygems/cmake_builder.rb +113 -0
- data/lib/rubygems_plugin.rb +9 -0
- data/rice/Arg.hpp +7 -1
- data/rice/Arg.ipp +11 -2
- data/rice/Buffer.hpp +123 -0
- data/rice/Buffer.ipp +599 -0
- data/rice/Constructor.ipp +3 -3
- data/rice/Data_Object.hpp +2 -3
- data/rice/Data_Object.ipp +188 -188
- data/rice/Data_Type.hpp +4 -5
- data/rice/Data_Type.ipp +42 -26
- data/rice/Enum.hpp +0 -1
- data/rice/Enum.ipp +26 -23
- data/rice/Init.hpp +8 -0
- data/rice/Init.ipp +8 -0
- data/rice/MemoryView.ipp +1 -41
- data/rice/Return.hpp +1 -1
- data/rice/Return.ipp +6 -0
- data/rice/cpp_api/Array.hpp +209 -0
- data/rice/cpp_api/Array.ipp +304 -0
- data/rice/cpp_api/Builtin_Object.hpp +31 -0
- data/rice/cpp_api/Builtin_Object.ipp +37 -0
- data/rice/cpp_api/Class.hpp +70 -0
- data/rice/cpp_api/Class.ipp +97 -0
- data/rice/cpp_api/Encoding.hpp +32 -0
- data/rice/cpp_api/Encoding.ipp +59 -0
- data/rice/cpp_api/Hash.hpp +194 -0
- data/rice/cpp_api/Hash.ipp +257 -0
- data/rice/cpp_api/Identifier.hpp +46 -0
- data/rice/cpp_api/Identifier.ipp +31 -0
- data/rice/cpp_api/Module.hpp +72 -0
- data/rice/cpp_api/Module.ipp +101 -0
- data/rice/cpp_api/Object.hpp +272 -0
- data/rice/cpp_api/Object.ipp +235 -0
- data/rice/cpp_api/String.hpp +74 -0
- data/rice/cpp_api/String.ipp +120 -0
- data/rice/cpp_api/Struct.hpp +113 -0
- data/rice/cpp_api/Struct.ipp +92 -0
- data/rice/cpp_api/Symbol.hpp +46 -0
- data/rice/cpp_api/Symbol.ipp +93 -0
- data/rice/cpp_api/shared_methods.hpp +134 -0
- data/rice/detail/MethodInfo.hpp +1 -9
- data/rice/detail/MethodInfo.ipp +5 -72
- data/rice/detail/Native.hpp +3 -2
- data/rice/detail/Native.ipp +32 -4
- data/rice/detail/NativeAttributeGet.hpp +3 -2
- data/rice/detail/NativeAttributeGet.ipp +8 -2
- data/rice/detail/NativeAttributeSet.hpp +3 -2
- data/rice/detail/NativeAttributeSet.ipp +8 -2
- data/rice/detail/NativeCallbackFFI.ipp +1 -1
- data/rice/detail/NativeFunction.hpp +17 -6
- data/rice/detail/NativeFunction.ipp +168 -64
- data/rice/detail/NativeIterator.hpp +3 -2
- data/rice/detail/NativeIterator.ipp +8 -2
- data/rice/detail/RubyType.hpp +2 -5
- data/rice/detail/RubyType.ipp +50 -5
- data/rice/detail/Type.hpp +3 -1
- data/rice/detail/Type.ipp +61 -31
- data/rice/detail/Wrapper.hpp +68 -33
- data/rice/detail/Wrapper.ipp +103 -113
- data/rice/detail/from_ruby.hpp +5 -4
- data/rice/detail/from_ruby.ipp +737 -365
- data/rice/detail/to_ruby.ipp +1092 -186
- data/rice/global_function.ipp +1 -1
- data/rice/libc/file.hpp +11 -0
- data/rice/libc/file.ipp +32 -0
- data/rice/rice.hpp +23 -16
- data/rice/stl/complex.hpp +6 -0
- data/rice/stl/complex.ipp +93 -0
- data/rice/stl/exception.hpp +11 -0
- data/rice/stl/exception.ipp +29 -0
- data/rice/stl/exception_ptr.hpp +6 -0
- data/rice/stl/exception_ptr.ipp +27 -0
- data/rice/stl/map.hpp +12 -0
- data/rice/stl/map.ipp +469 -0
- data/rice/stl/monostate.hpp +6 -0
- data/rice/stl/monostate.ipp +80 -0
- data/rice/stl/multimap.hpp +14 -0
- data/rice/stl/multimap.ipp +448 -0
- data/rice/stl/optional.hpp +6 -0
- data/rice/stl/optional.ipp +118 -0
- data/rice/stl/pair.hpp +13 -0
- data/rice/stl/pair.ipp +155 -0
- data/rice/stl/reference_wrapper.hpp +6 -0
- data/rice/stl/reference_wrapper.ipp +41 -0
- data/rice/stl/set.hpp +12 -0
- data/rice/stl/set.ipp +495 -0
- data/rice/stl/shared_ptr.hpp +28 -0
- data/rice/stl/shared_ptr.ipp +224 -0
- data/rice/stl/string.hpp +6 -0
- data/rice/stl/string.ipp +158 -0
- data/rice/stl/string_view.hpp +6 -0
- data/rice/stl/string_view.ipp +65 -0
- data/rice/stl/tuple.hpp +6 -0
- data/rice/stl/tuple.ipp +128 -0
- data/rice/stl/type_index.hpp +6 -0
- data/rice/stl/type_index.ipp +30 -0
- data/rice/stl/type_info.hpp +6 -0
- data/rice/stl/type_info.ipp +29 -0
- data/rice/stl/unique_ptr.hpp +22 -0
- data/rice/stl/unique_ptr.ipp +139 -0
- data/rice/stl/unordered_map.hpp +12 -0
- data/rice/stl/unordered_map.ipp +469 -0
- data/rice/stl/variant.hpp +6 -0
- data/rice/stl/variant.ipp +242 -0
- data/rice/stl/vector.hpp +12 -0
- data/rice/stl/vector.ipp +590 -0
- data/rice/stl.hpp +7 -3
- data/rice/traits/attribute_traits.hpp +26 -0
- data/rice/traits/function_traits.hpp +95 -0
- data/rice/traits/method_traits.hpp +47 -0
- data/rice/traits/rice_traits.hpp +160 -0
- data/rice.gemspec +85 -0
- data/test/embed_ruby.cpp +3 -0
- data/test/ruby/test_multiple_extensions_same_class.rb +14 -14
- data/test/test_Array.cpp +6 -3
- data/test/test_Attribute.cpp +34 -1
- data/test/test_Buffer.cpp +285 -0
- data/test/test_Callback.cpp +2 -3
- data/test/test_Data_Object.cpp +88 -34
- data/test/test_Data_Type.cpp +106 -65
- data/test/test_Director.cpp +7 -3
- data/test/test_Enum.cpp +5 -2
- data/test/test_File.cpp +1 -1
- data/test/test_From_Ruby.cpp +181 -114
- data/test/test_Iterator.cpp +1 -1
- data/test/{test_JumpException.cpp → test_Jump_Exception.cpp} +1 -0
- data/test/test_Keep_Alive.cpp +7 -18
- data/test/test_Keep_Alive_No_Wrapper.cpp +0 -1
- data/test/test_Module.cpp +13 -6
- data/test/test_Native_Registry.cpp +0 -1
- data/test/test_Overloads.cpp +180 -5
- data/test/test_Ownership.cpp +100 -57
- data/test/test_Proc.cpp +0 -1
- data/test/test_Self.cpp +4 -4
- data/test/test_Stl_Map.cpp +37 -39
- data/test/test_Stl_Multimap.cpp +693 -0
- data/test/test_Stl_Pair.cpp +8 -8
- data/test/test_Stl_Reference_Wrapper.cpp +4 -2
- data/test/test_Stl_Set.cpp +790 -0
- data/test/{test_Stl_SmartPointer.cpp → test_Stl_SharedPtr.cpp} +97 -127
- data/test/test_Stl_Tuple.cpp +116 -0
- data/test/test_Stl_Type.cpp +1 -1
- data/test/test_Stl_UniquePtr.cpp +202 -0
- data/test/test_Stl_Unordered_Map.cpp +28 -34
- data/test/test_Stl_Variant.cpp +217 -89
- data/test/test_Stl_Vector.cpp +209 -83
- data/test/test_To_Ruby.cpp +373 -1
- data/test/test_Type.cpp +85 -14
- data/test/test_global_functions.cpp +17 -4
- metadata +94 -10
- data/rice/detail/TupleIterator.hpp +0 -14
data/test/test_Stl_Pair.cpp
CHANGED
@@ -23,7 +23,7 @@ TESTCASE(CreatePair)
|
|
23
23
|
{
|
24
24
|
Module m = define_module("Testing");
|
25
25
|
|
26
|
-
Class c = define_pair<
|
26
|
+
Class c = define_pair<int32_t, std::optional<std::string>>("IntStringPair");
|
27
27
|
|
28
28
|
Object pair = c.call("new", 0, nullptr);
|
29
29
|
|
@@ -50,7 +50,7 @@ TESTCASE(CreatePairConst)
|
|
50
50
|
{
|
51
51
|
Module m = define_module("Testing");
|
52
52
|
|
53
|
-
Class c = define_pair<
|
53
|
+
Class c = define_pair<const std::string, const std::string>("ConstStringPair");
|
54
54
|
Object pair = c.call("new", "pair1", "pair2");
|
55
55
|
|
56
56
|
Object result = pair.call("first");
|
@@ -107,7 +107,7 @@ TESTCASE(AutoRegister)
|
|
107
107
|
|
108
108
|
Object pair = someClass.call("pair");
|
109
109
|
String name = pair.class_name();
|
110
|
-
ASSERT_EQUAL(
|
110
|
+
ASSERT_EQUAL("Std::Pair≺string‚ double≻", detail::From_Ruby<std::string>().convert(name));
|
111
111
|
|
112
112
|
Class pairKlass1 = pair.class_of();
|
113
113
|
Class pairKlass2 = Data_Type<std::pair<std::string, double>>::klass();
|
@@ -130,14 +130,14 @@ TESTCASE(AutoRegister)
|
|
130
130
|
ASSERT_EQUAL(3.2, detail::From_Ruby<double>().convert(result));
|
131
131
|
|
132
132
|
// Now register the pair again
|
133
|
-
define_pair<std::
|
134
|
-
std::string code = R"(pair = SomePair.new('string', 2.0))";
|
133
|
+
define_pair<std::string, double>("SomePair");
|
134
|
+
std::string code = R"(pair = Std::SomePair.new('string', 2.0))";
|
135
135
|
result = m.module_eval(code);
|
136
136
|
ASSERT(result.is_instance_of(pair.class_of()));
|
137
137
|
|
138
138
|
// And again in the module
|
139
|
-
|
140
|
-
code = R"(pair =
|
139
|
+
define_pair<std::string, double>("SomePair2");
|
140
|
+
code = R"(pair = Std::SomePair2.new('string', 3.0))";
|
141
141
|
result = m.module_eval(code);
|
142
142
|
ASSERT(result.is_instance_of(pair.class_of()));
|
143
143
|
}
|
@@ -156,7 +156,7 @@ TESTCASE(ReferenceReturned)
|
|
156
156
|
define_constructor(Constructor<SomeStruct>()).
|
157
157
|
define_attr("value", &SomeStruct::value);
|
158
158
|
|
159
|
-
define_pair<
|
159
|
+
define_pair<char, SomeStruct>("CharSomeStructPair");
|
160
160
|
|
161
161
|
std::pair<char, SomeStruct> aPair;
|
162
162
|
aPair.first = 'a';
|
@@ -92,7 +92,8 @@ TESTCASE(RoundTrip)
|
|
92
92
|
Object result = myClass.call("roundtrip_class", myClass);
|
93
93
|
Data_Object<MyClass> finish(result);
|
94
94
|
|
95
|
-
ASSERT_EQUAL(
|
95
|
+
ASSERT_EQUAL(detail::unwrap<MyClass>(myClass, Data_Type<MyClass>::ruby_data_type(), false),
|
96
|
+
detail::unwrap<MyClass>(result, Data_Type<MyClass>::ruby_data_type(), false));
|
96
97
|
}
|
97
98
|
|
98
99
|
TESTCASE(RoundTripInVariant)
|
@@ -103,5 +104,6 @@ TESTCASE(RoundTripInVariant)
|
|
103
104
|
Object result = myClass.call("roundtrip_class_in_variant", myClass);
|
104
105
|
Data_Object<MyClass> finish(result);
|
105
106
|
|
106
|
-
ASSERT_EQUAL(
|
107
|
+
ASSERT_EQUAL(detail::unwrap<MyClass>(myClass, Data_Type<MyClass>::ruby_data_type(), false),
|
108
|
+
detail::unwrap<MyClass>(result, Data_Type<MyClass>::ruby_data_type(), false));
|
107
109
|
}
|