gir_ffi 0.7.10 → 0.8.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 +6 -0
- data/Gemfile +3 -1
- data/README.md +5 -2
- data/lib/ffi-glib.rb +1 -0
- data/lib/ffi-glib/array.rb +6 -6
- data/lib/ffi-glib/array_methods.rb +1 -1
- data/lib/ffi-glib/byte_array.rb +1 -1
- data/lib/ffi-glib/bytes.rb +3 -3
- data/lib/ffi-glib/container_class_methods.rb +2 -2
- data/lib/ffi-glib/error.rb +2 -2
- data/lib/ffi-glib/hash_table.rb +9 -9
- data/lib/ffi-glib/iconv.rb +1 -1
- data/lib/ffi-glib/list.rb +2 -2
- data/lib/ffi-glib/list_methods.rb +8 -7
- data/lib/ffi-glib/main_loop.rb +1 -1
- data/lib/ffi-glib/ptr_array.rb +7 -7
- data/lib/ffi-glib/s_list.rb +2 -2
- data/lib/ffi-glib/strv.rb +3 -3
- data/lib/ffi-glib/variant.rb +9 -2
- data/lib/ffi-gobject.rb +10 -10
- data/lib/ffi-gobject/closure.rb +1 -1
- data/lib/ffi-gobject/initially_unowned.rb +4 -3
- data/lib/ffi-gobject/object.rb +19 -19
- data/lib/ffi-gobject/object_class.rb +2 -2
- data/lib/ffi-gobject/ruby_closure.rb +5 -4
- data/lib/ffi-gobject/value.rb +15 -20
- data/lib/ffi-gobject_introspection/g_error.rb +1 -1
- data/lib/ffi-gobject_introspection/i_base_info.rb +6 -6
- data/lib/ffi-gobject_introspection/i_callable_info.rb +1 -1
- data/lib/ffi-gobject_introspection/i_enum_info.rb +2 -2
- data/lib/ffi-gobject_introspection/i_interface_info.rb +8 -8
- data/lib/ffi-gobject_introspection/i_object_info.rb +9 -9
- data/lib/ffi-gobject_introspection/i_repository.rb +13 -13
- data/lib/ffi-gobject_introspection/i_struct_info.rb +2 -2
- data/lib/ffi-gobject_introspection/i_type_info.rb +1 -1
- data/lib/ffi-gobject_introspection/i_union_info.rb +3 -3
- data/lib/ffi-gobject_introspection/lib.rb +4 -4
- data/lib/gir_ffi-base/glib/boolean.rb +4 -4
- data/lib/gir_ffi-base/glib/strv.rb +2 -2
- data/lib/gir_ffi/allocation_helper.rb +1 -1
- data/lib/gir_ffi/arg_helper.rb +8 -8
- data/lib/gir_ffi/boxed_base.rb +5 -9
- data/lib/gir_ffi/builder.rb +4 -4
- data/lib/gir_ffi/builder_helper.rb +3 -3
- data/lib/gir_ffi/builders/argument_builder_collection.rb +1 -1
- data/lib/gir_ffi/builders/base_argument_builder.rb +3 -3
- data/lib/gir_ffi/builders/base_method_builder.rb +71 -0
- data/lib/gir_ffi/builders/base_type_builder.rb +1 -1
- data/lib/gir_ffi/builders/boxed_builder.rb +3 -2
- data/lib/gir_ffi/builders/c_to_ruby_convertor.rb +1 -1
- data/lib/gir_ffi/builders/closure_convertor.rb +1 -1
- data/lib/gir_ffi/builders/closure_to_pointer_convertor.rb +1 -1
- data/lib/gir_ffi/builders/constructor_builder.rb +52 -0
- data/lib/gir_ffi/builders/enum_builder.rb +3 -3
- data/lib/gir_ffi/builders/field_builder.rb +3 -2
- data/lib/gir_ffi/builders/function_builder.rb +9 -50
- data/lib/gir_ffi/builders/initializer_builder.rb +32 -0
- data/lib/gir_ffi/builders/initializer_return_value_builder.rb +16 -0
- data/lib/gir_ffi/builders/mapping_method_builder.rb +7 -5
- data/lib/gir_ffi/builders/marshalling_method_builder.rb +5 -3
- data/lib/gir_ffi/builders/method_template.rb +1 -1
- data/lib/gir_ffi/builders/module_builder.rb +8 -7
- data/lib/gir_ffi/builders/null_convertor.rb +1 -1
- data/lib/gir_ffi/builders/null_return_value_builder.rb +21 -0
- data/lib/gir_ffi/builders/object_builder.rb +3 -3
- data/lib/gir_ffi/builders/property_builder.rb +1 -1
- data/lib/gir_ffi/builders/registered_type_builder.rb +31 -15
- data/lib/gir_ffi/builders/return_value_builder.rb +1 -14
- data/lib/gir_ffi/builders/ruby_to_c_convertor.rb +2 -2
- data/lib/gir_ffi/builders/signal_closure_builder.rb +1 -1
- data/lib/gir_ffi/builders/type_builder.rb +2 -2
- data/lib/gir_ffi/builders/unintrospectable_builder.rb +1 -1
- data/lib/gir_ffi/builders/user_defined_builder.rb +11 -11
- data/lib/gir_ffi/builders/vfunc_builder.rb +1 -1
- data/lib/gir_ffi/callback_base.rb +8 -13
- data/lib/gir_ffi/class_base.rb +41 -45
- data/lib/gir_ffi/core.rb +2 -2
- data/lib/gir_ffi/enum_base.rb +9 -14
- data/lib/gir_ffi/field_argument_info.rb +1 -1
- data/lib/gir_ffi/g_type.rb +1 -1
- data/lib/gir_ffi/glib_error.rb +1 -1
- data/lib/gir_ffi/in_out_pointer.rb +4 -4
- data/lib/gir_ffi/in_pointer.rb +12 -12
- data/lib/gir_ffi/info_ext/i_arg_info.rb +0 -10
- data/lib/gir_ffi/info_ext/i_callback_info.rb +0 -5
- data/lib/gir_ffi/info_ext/i_property_info.rb +1 -1
- data/lib/gir_ffi/info_ext/i_registered_type_info.rb +1 -6
- data/lib/gir_ffi/info_ext/i_signal_info.rb +2 -2
- data/lib/gir_ffi/info_ext/i_type_info.rb +2 -17
- data/lib/gir_ffi/info_ext/i_unresolved_info.rb +0 -5
- data/lib/gir_ffi/info_ext/i_vfunc_info.rb +2 -2
- data/lib/gir_ffi/interface_base.rb +2 -7
- data/lib/gir_ffi/method_stubber.rb +1 -1
- data/lib/gir_ffi/module_base.rb +4 -7
- data/lib/gir_ffi/object_base.rb +4 -9
- data/lib/gir_ffi/receiver_argument_info.rb +1 -1
- data/lib/gir_ffi/receiver_type_info.rb +1 -1
- data/lib/gir_ffi/registered_type_base.rb +0 -5
- data/lib/gir_ffi/return_value_info.rb +1 -1
- data/lib/gir_ffi/sized_array.rb +10 -10
- data/lib/gir_ffi/type_map.rb +3 -3
- data/lib/gir_ffi/unintrospectable_type_info.rb +3 -1
- data/lib/gir_ffi/user_data_argument_info.rb +1 -1
- data/lib/gir_ffi/user_defined_property_info.rb +1 -1
- data/lib/gir_ffi/user_defined_type_info.rb +4 -4
- data/lib/gir_ffi/version.rb +1 -1
- data/lib/gir_ffi/vfunc_implementation.rb +1 -1
- data/lib/gir_ffi/zero_terminated.rb +6 -6
- data/test/base_test_helper.rb +13 -13
- data/test/ffi-gobject/object_test.rb +22 -1
- data/test/ffi-gobject/value_test.rb +24 -24
- data/test/ffi-gobject_introspection/i_registered_type_info_test.rb +4 -4
- data/test/ffi-gobject_introspection/i_type_info_test.rb +2 -2
- data/test/ffi-gobject_test.rb +2 -2
- data/test/gir_ffi/builders/argument_builder_test.rb +60 -60
- data/test/gir_ffi/builders/callback_argument_builder_test.rb +8 -8
- data/test/gir_ffi/builders/callback_builder_test.rb +4 -4
- data/test/gir_ffi/builders/callback_return_value_builder_test.rb +8 -8
- data/test/gir_ffi/builders/constructor_builder_test.rb +34 -0
- data/test/gir_ffi/builders/function_builder_test.rb +8 -24
- data/test/gir_ffi/builders/initializer_builder_test.rb +36 -0
- data/test/gir_ffi/builders/interface_builder_test.rb +2 -2
- data/test/gir_ffi/builders/object_builder_test.rb +6 -18
- data/test/gir_ffi/builders/property_builder_test.rb +2 -2
- data/test/gir_ffi/builders/return_value_builder_test.rb +54 -79
- data/test/gir_ffi/builders/signal_closure_builder_test.rb +14 -14
- data/test/gir_ffi/builders/user_defined_builder_test.rb +8 -8
- data/test/gir_ffi/builders/vfunc_builder_test.rb +22 -22
- data/test/gir_ffi/class_base_test.rb +9 -7
- data/test/gir_ffi/in_pointer_test.rb +1 -1
- data/test/gir_ffi/info_ext/i_callable_info_test.rb +2 -2
- data/test/gir_ffi/info_ext/i_callback_info_test.rb +2 -2
- data/test/gir_ffi/info_ext/i_field_info_test.rb +2 -2
- data/test/gir_ffi/info_ext/i_function_info_test.rb +2 -2
- data/test/gir_ffi/info_ext/i_signal_info_test.rb +2 -2
- data/test/gir_ffi/info_ext/i_type_info_test.rb +18 -18
- data/test/gir_ffi/info_ext/i_unresolved_info_test.rb +2 -2
- data/test/gir_ffi/info_ext/safe_constant_name_test.rb +2 -2
- data/test/gir_ffi/info_ext/safe_function_name_test.rb +2 -2
- data/test/gir_ffi/method_stubber_test.rb +6 -6
- data/test/gir_ffi/user_defined_type_info_test.rb +3 -3
- data/test/gir_ffi_test_helper.rb +12 -12
- data/test/integration/derived_classes_test.rb +7 -3
- data/test/integration/generated_gimarshallingtests_test.rb +10 -10
- data/test/integration/generated_regress_test.rb +11 -20
- data/test/introspection_test_helper.rb +1 -1
- data/test/minitest/stats_plugin.rb +3 -3
- metadata +9 -3
- data/lib/gir_ffi/builders/constructor_result_convertor.rb +0 -14
data/lib/gir_ffi/object_base.rb
CHANGED
@@ -3,7 +3,7 @@ module GirFFI
|
|
3
3
|
class ObjectBase < ClassBase
|
4
4
|
# Wrap the passed pointer in an instance of its type's corresponding class,
|
5
5
|
# generally assumed to be a descendant of the current type.
|
6
|
-
def self.wrap
|
6
|
+
def self.wrap(ptr)
|
7
7
|
ptr.to_object
|
8
8
|
end
|
9
9
|
|
@@ -14,7 +14,7 @@ module GirFFI
|
|
14
14
|
#
|
15
15
|
# @return [GObjectIntrospection::IPropertyInfo] The property's info
|
16
16
|
#
|
17
|
-
def self.find_property
|
17
|
+
def self.find_property(name)
|
18
18
|
gir_ffi_builder.find_property name
|
19
19
|
end
|
20
20
|
|
@@ -25,20 +25,15 @@ module GirFFI
|
|
25
25
|
#
|
26
26
|
# @return [GObjectIntrospection::ISignalInfo] The signal's info
|
27
27
|
#
|
28
|
-
def self.find_signal
|
28
|
+
def self.find_signal(name)
|
29
29
|
gir_ffi_builder.find_signal name
|
30
30
|
end
|
31
31
|
|
32
|
-
# @deprecated Use #to_ffi_type instead. Will be removed in 0.8.0.
|
33
|
-
def self.to_ffitype
|
34
|
-
to_ffi_type
|
35
|
-
end
|
36
|
-
|
37
32
|
def self.to_ffi_type
|
38
33
|
:pointer
|
39
34
|
end
|
40
35
|
|
41
|
-
def self.copy_value_to_pointer
|
36
|
+
def self.copy_value_to_pointer(value, pointer, offset = 0)
|
42
37
|
pointer.put_pointer offset, value.to_ptr
|
43
38
|
end
|
44
39
|
|
data/lib/gir_ffi/sized_array.rb
CHANGED
@@ -4,7 +4,7 @@ module GirFFI
|
|
4
4
|
include Enumerable
|
5
5
|
attr_reader :element_type, :size
|
6
6
|
|
7
|
-
def initialize
|
7
|
+
def initialize(element_type, size, pointer)
|
8
8
|
@element_type = element_type
|
9
9
|
@size = size
|
10
10
|
@pointer = pointer
|
@@ -14,7 +14,7 @@ module GirFFI
|
|
14
14
|
@pointer
|
15
15
|
end
|
16
16
|
|
17
|
-
def index
|
17
|
+
def index(idx)
|
18
18
|
ptr = GirFFI::InOutPointer.new element_type, @pointer + idx * element_size
|
19
19
|
ptr.to_ruby_value
|
20
20
|
end
|
@@ -25,7 +25,7 @@ module GirFFI
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
def ==
|
28
|
+
def ==(other)
|
29
29
|
to_a == other.to_a
|
30
30
|
end
|
31
31
|
|
@@ -33,11 +33,11 @@ module GirFFI
|
|
33
33
|
size * element_size
|
34
34
|
end
|
35
35
|
|
36
|
-
def self.get_value_from_pointer
|
36
|
+
def self.get_value_from_pointer(pointer)
|
37
37
|
pointer
|
38
38
|
end
|
39
39
|
|
40
|
-
def self.copy_value_to_pointer
|
40
|
+
def self.copy_value_to_pointer(value, pointer)
|
41
41
|
size = value.size_in_bytes
|
42
42
|
pointer.put_bytes(0, value.to_ptr.read_bytes(size), 0, size)
|
43
43
|
end
|
@@ -52,12 +52,12 @@ module GirFFI
|
|
52
52
|
@element_size ||= FFI.type_size element_ffi_type
|
53
53
|
end
|
54
54
|
|
55
|
-
def self.wrap
|
55
|
+
def self.wrap(element_type, size, pointer)
|
56
56
|
new element_type, size, pointer unless pointer.null?
|
57
57
|
end
|
58
58
|
|
59
59
|
class << self
|
60
|
-
def from
|
60
|
+
def from(element_type, size, item)
|
61
61
|
return unless item
|
62
62
|
|
63
63
|
case item
|
@@ -72,19 +72,19 @@ module GirFFI
|
|
72
72
|
|
73
73
|
private
|
74
74
|
|
75
|
-
def from_sized_array
|
75
|
+
def from_sized_array(size, sized_array)
|
76
76
|
check_size size, sized_array.size
|
77
77
|
sized_array
|
78
78
|
end
|
79
79
|
|
80
|
-
def from_enumerable
|
80
|
+
def from_enumerable(element_type, expected_size, arr)
|
81
81
|
size = arr.size
|
82
82
|
check_size expected_size, size
|
83
83
|
ptr = GirFFI::InPointer.from_array element_type, arr
|
84
84
|
wrap element_type, size, ptr
|
85
85
|
end
|
86
86
|
|
87
|
-
def check_size
|
87
|
+
def check_size(expected_size, size)
|
88
88
|
if expected_size > 0 && size != expected_size
|
89
89
|
raise ArgumentError, "Expected size #{expected_size}, got #{size}"
|
90
90
|
end
|
data/lib/gir_ffi/type_map.rb
CHANGED
@@ -38,16 +38,16 @@ module GirFFI
|
|
38
38
|
void: :void
|
39
39
|
}
|
40
40
|
|
41
|
-
def self.map_basic_type
|
41
|
+
def self.map_basic_type(type)
|
42
42
|
sym = type.to_sym
|
43
43
|
TAG_TYPE_MAP[sym] || sym
|
44
44
|
end
|
45
45
|
|
46
|
-
def self.type_specification_to_ffitype
|
46
|
+
def self.type_specification_to_ffitype(type)
|
47
47
|
type_specification_to_ffi_type type
|
48
48
|
end
|
49
49
|
|
50
|
-
def self.type_specification_to_ffi_type
|
50
|
+
def self.type_specification_to_ffi_type(type)
|
51
51
|
case type
|
52
52
|
when Module
|
53
53
|
type.to_ffi_type
|
@@ -6,7 +6,9 @@ module GirFFI
|
|
6
6
|
class UnintrospectableTypeInfo
|
7
7
|
attr_reader :g_type
|
8
8
|
|
9
|
-
def initialize
|
9
|
+
def initialize(gtype,
|
10
|
+
gir = GObjectIntrospection::IRepository.default,
|
11
|
+
gobject = GObject)
|
10
12
|
@g_type = gtype
|
11
13
|
@gir = gir
|
12
14
|
@gobject = gobject
|
@@ -2,7 +2,7 @@ module GirFFI
|
|
2
2
|
# Represents a property of a user defined type, conforming, as needed, to the
|
3
3
|
# interface of GObjectIntrospection::IPropertyInfo.
|
4
4
|
class UserDefinedPropertyInfo
|
5
|
-
def initialize
|
5
|
+
def initialize(param_spec)
|
6
6
|
@param_spec = param_spec
|
7
7
|
end
|
8
8
|
|
@@ -8,7 +8,7 @@ module GirFFI
|
|
8
8
|
class UserDefinedTypeInfo
|
9
9
|
attr_reader :properties, :vfunc_implementations
|
10
10
|
|
11
|
-
def initialize
|
11
|
+
def initialize(klass)
|
12
12
|
@klass = klass
|
13
13
|
@properties = []
|
14
14
|
@vfunc_implementations = []
|
@@ -19,15 +19,15 @@ module GirFFI
|
|
19
19
|
@klass
|
20
20
|
end
|
21
21
|
|
22
|
-
def install_property
|
22
|
+
def install_property(property)
|
23
23
|
@properties << UserDefinedPropertyInfo.new(property)
|
24
24
|
end
|
25
25
|
|
26
|
-
def install_vfunc_implementation
|
26
|
+
def install_vfunc_implementation(name, implementation)
|
27
27
|
@vfunc_implementations << VFuncImplementation.new(name, implementation)
|
28
28
|
end
|
29
29
|
|
30
|
-
def find_instance_method
|
30
|
+
def find_instance_method(_method)
|
31
31
|
nil
|
32
32
|
end
|
33
33
|
|
data/lib/gir_ffi/version.rb
CHANGED
@@ -5,7 +5,7 @@ module GirFFI
|
|
5
5
|
|
6
6
|
attr_reader :element_type
|
7
7
|
|
8
|
-
def initialize
|
8
|
+
def initialize(elm_t, ptr)
|
9
9
|
@element_type = elm_t
|
10
10
|
@ptr = ptr
|
11
11
|
end
|
@@ -14,11 +14,11 @@ module GirFFI
|
|
14
14
|
@ptr
|
15
15
|
end
|
16
16
|
|
17
|
-
def self.from
|
17
|
+
def self.from(type, arg)
|
18
18
|
new type, InPointer.from_array(type, arg)
|
19
19
|
end
|
20
20
|
|
21
|
-
def self.wrap
|
21
|
+
def self.wrap(type, arg)
|
22
22
|
new type, arg
|
23
23
|
end
|
24
24
|
|
@@ -31,13 +31,13 @@ module GirFFI
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
def ==
|
34
|
+
def ==(other)
|
35
35
|
to_a == other.to_a
|
36
36
|
end
|
37
37
|
|
38
38
|
private
|
39
39
|
|
40
|
-
def read_value
|
40
|
+
def read_value(offset)
|
41
41
|
val = @ptr.send(getter_method, offset)
|
42
42
|
val unless val.zero?
|
43
43
|
end
|
@@ -46,7 +46,7 @@ module GirFFI
|
|
46
46
|
@getter_method ||= "get_#{ffi_type}"
|
47
47
|
end
|
48
48
|
|
49
|
-
def wrap_value
|
49
|
+
def wrap_value(val)
|
50
50
|
case element_type
|
51
51
|
when Array
|
52
52
|
element_type.last.wrap val
|
data/test/base_test_helper.rb
CHANGED
@@ -23,7 +23,7 @@ GObjectIntrospection::IRepository.prepend_search_path File.join(File.dirname(__F
|
|
23
23
|
|
24
24
|
module GObjectIntrospection
|
25
25
|
class IRepository
|
26
|
-
def shared_library_with_regress
|
26
|
+
def shared_library_with_regress(namespace)
|
27
27
|
case namespace
|
28
28
|
when 'Regress'
|
29
29
|
return File.join(File.dirname(__FILE__), 'lib', 'libregress.so')
|
@@ -42,41 +42,41 @@ end
|
|
42
42
|
Thread.abort_on_exception = true
|
43
43
|
|
44
44
|
module BaseTestExtensions
|
45
|
-
def assert_defines_singleton_method
|
45
|
+
def assert_defines_singleton_method(klass, method, msg = nil)
|
46
46
|
method = method.to_sym
|
47
47
|
methods = klass.singleton_methods(false).map(&:to_sym)
|
48
|
-
msg = message(msg)
|
48
|
+
msg = message(msg) do
|
49
49
|
"Expected #{mu_pp(klass)} to define singleton method #{mu_pp(method)}, " \
|
50
50
|
"but only found #{mu_pp(methods)}"
|
51
|
-
|
51
|
+
end
|
52
52
|
assert_includes methods, method, msg
|
53
53
|
end
|
54
54
|
|
55
|
-
def refute_defines_singleton_method
|
55
|
+
def refute_defines_singleton_method(klass, method, msg = nil)
|
56
56
|
method = method.to_sym
|
57
57
|
methods = klass.singleton_methods(false).map(&:to_sym)
|
58
|
-
msg = message(msg)
|
58
|
+
msg = message(msg) do
|
59
59
|
"Expected #{mu_pp(klass)} not to define singleton method #{mu_pp(method)}"
|
60
|
-
|
60
|
+
end
|
61
61
|
refute_includes methods, method, msg
|
62
62
|
end
|
63
63
|
|
64
|
-
def assert_defines_instance_method
|
64
|
+
def assert_defines_instance_method(klass, method, msg = nil)
|
65
65
|
method = method.to_sym
|
66
66
|
methods = klass.instance_methods(false).map(&:to_sym)
|
67
|
-
msg = message(msg)
|
67
|
+
msg = message(msg) do
|
68
68
|
"Expected #{mu_pp(klass)} to define instance method #{mu_pp(method)}, " \
|
69
69
|
"but only found #{mu_pp(methods)}"
|
70
|
-
|
70
|
+
end
|
71
71
|
assert_includes methods, method, msg
|
72
72
|
end
|
73
73
|
|
74
|
-
def refute_defines_instance_method
|
74
|
+
def refute_defines_instance_method(klass, method, msg = nil)
|
75
75
|
method = method.to_sym
|
76
76
|
methods = klass.instance_methods(false).map(&:to_sym)
|
77
|
-
msg = message(msg)
|
77
|
+
msg = message(msg) do
|
78
78
|
"Expected #{mu_pp(klass)} not to define instance method #{mu_pp(method)}"
|
79
|
-
|
79
|
+
end
|
80
80
|
refute_includes methods, method, msg
|
81
81
|
end
|
82
82
|
end
|
@@ -15,7 +15,7 @@ describe GObject::Object do
|
|
15
15
|
@x
|
16
16
|
end
|
17
17
|
|
18
|
-
def set_x
|
18
|
+
def set_x(val)
|
19
19
|
@x = val
|
20
20
|
end
|
21
21
|
end
|
@@ -68,4 +68,25 @@ describe GObject::Object do
|
|
68
68
|
end
|
69
69
|
end
|
70
70
|
end
|
71
|
+
|
72
|
+
describe 'upon garbage collection' do
|
73
|
+
it 'lowers the reference count' do
|
74
|
+
if defined?(RUBY_ENGINE) && %w(jruby rbx).include?(RUBY_ENGINE)
|
75
|
+
skip 'cannot be reliably tested on JRuby and Rubinius'
|
76
|
+
end
|
77
|
+
|
78
|
+
object = GObject::Object.new GObject::TYPE_OBJECT, nil
|
79
|
+
ptr = object.to_ptr
|
80
|
+
ref_count(ptr).must_equal 1
|
81
|
+
|
82
|
+
# Lose reference to object to allow garbage collection
|
83
|
+
object = nil # rubocop:disable Lint/UselessAssignment
|
84
|
+
|
85
|
+
GC.start
|
86
|
+
GC.start
|
87
|
+
GC.start
|
88
|
+
|
89
|
+
ref_count(ptr).must_equal 0
|
90
|
+
end
|
91
|
+
end
|
71
92
|
end
|
@@ -45,77 +45,77 @@ describe GObject::Value do
|
|
45
45
|
describe '#set_value' do
|
46
46
|
it 'handles char values' do
|
47
47
|
value = 83
|
48
|
-
gv = GObject::Value.
|
48
|
+
gv = GObject::Value.for_gtype GObject::TYPE_CHAR
|
49
49
|
gv.set_value value
|
50
50
|
gv.get_char.must_equal value
|
51
51
|
end
|
52
52
|
|
53
53
|
it 'handles enum values presented as symbols' do
|
54
54
|
value = :value2
|
55
|
-
gv = GObject::Value.
|
55
|
+
gv = GObject::Value.for_gtype Regress::TestEnum.gtype
|
56
56
|
gv.set_value value
|
57
57
|
gv.get_value.must_equal value
|
58
58
|
end
|
59
59
|
|
60
60
|
it 'handles enum values presented as numbers' do
|
61
61
|
value = :value2
|
62
|
-
gv = GObject::Value.
|
62
|
+
gv = GObject::Value.for_gtype Regress::TestEnum.gtype
|
63
63
|
gv.set_value Regress::TestEnum[value]
|
64
64
|
gv.get_value.must_equal value
|
65
65
|
end
|
66
66
|
|
67
67
|
it 'handles GType values' do
|
68
68
|
value = GObject::TYPE_STRING
|
69
|
-
gv = GObject::Value.
|
69
|
+
gv = GObject::Value.for_gtype GObject::TYPE_GTYPE
|
70
70
|
gv.set_value value
|
71
71
|
gv.get_gtype.must_equal value
|
72
72
|
end
|
73
73
|
|
74
74
|
it 'handles int64 values' do
|
75
75
|
value = 0x1234_5678_9012_3456
|
76
|
-
gv = GObject::Value.
|
76
|
+
gv = GObject::Value.for_gtype GObject::TYPE_INT64
|
77
77
|
gv.set_value value
|
78
78
|
gv.get_int64.must_equal value
|
79
79
|
end
|
80
80
|
|
81
81
|
it 'handles long values' do
|
82
82
|
value = FFI.type_size(:long) == 8 ? 0x1234_5678_9012_3456 : 0x1234_5678
|
83
|
-
gv = GObject::Value.
|
83
|
+
gv = GObject::Value.for_gtype GObject::TYPE_LONG
|
84
84
|
gv.set_value value
|
85
85
|
gv.get_long.must_equal value
|
86
86
|
end
|
87
87
|
|
88
88
|
it 'handles uchar values' do
|
89
89
|
value = 83
|
90
|
-
gv = GObject::Value.
|
90
|
+
gv = GObject::Value.for_gtype GObject::TYPE_UCHAR
|
91
91
|
gv.set_value value
|
92
92
|
gv.get_uchar.must_equal value
|
93
93
|
end
|
94
94
|
|
95
95
|
it 'handles uint values' do
|
96
96
|
value = 0x1234_5678
|
97
|
-
gv = GObject::Value.
|
97
|
+
gv = GObject::Value.for_gtype GObject::TYPE_UINT
|
98
98
|
gv.set_value value
|
99
99
|
gv.get_uint.must_equal value
|
100
100
|
end
|
101
101
|
|
102
102
|
it 'handles uint64 values' do
|
103
103
|
value = 0x1234_5678_9012_3456
|
104
|
-
gv = GObject::Value.
|
104
|
+
gv = GObject::Value.for_gtype GObject::TYPE_UINT64
|
105
105
|
gv.set_value value
|
106
106
|
gv.get_uint64.must_equal value
|
107
107
|
end
|
108
108
|
|
109
109
|
it 'handles ulong values' do
|
110
110
|
value = FFI.type_size(:long) == 8 ? 0x1234_5678_9012_3456 : 0x1234_5678
|
111
|
-
gv = GObject::Value.
|
111
|
+
gv = GObject::Value.for_gtype GObject::TYPE_ULONG
|
112
112
|
gv.set_value value
|
113
113
|
gv.get_ulong.must_equal value
|
114
114
|
end
|
115
115
|
|
116
116
|
it 'handles variant values' do
|
117
117
|
value = GLib::Variant.new_string('Foo')
|
118
|
-
gv = GObject::Value.
|
118
|
+
gv = GObject::Value.for_gtype GObject::TYPE_VARIANT
|
119
119
|
gv.set_value value
|
120
120
|
gv.get_variant.must_equal value
|
121
121
|
end
|
@@ -136,84 +136,84 @@ describe GObject::Value do
|
|
136
136
|
|
137
137
|
it 'unwraps a char' do
|
138
138
|
value = 3
|
139
|
-
gv = GObject::Value.
|
139
|
+
gv = GObject::Value.for_gtype GObject::TYPE_CHAR
|
140
140
|
gv.set_char value
|
141
141
|
gv.get_value.must_equal value
|
142
142
|
end
|
143
143
|
|
144
144
|
it 'unwraps an enum value' do
|
145
145
|
value = :value2
|
146
|
-
gv = GObject::Value.
|
146
|
+
gv = GObject::Value.for_gtype Regress::TestEnum.gtype
|
147
147
|
gv.set_enum Regress::TestEnum[value]
|
148
148
|
gv.get_value.must_equal value
|
149
149
|
end
|
150
150
|
|
151
151
|
it 'unwraps a flags value' do
|
152
152
|
value = Regress::TestFlags[:flag1] | Regress::TestFlags[:flag3]
|
153
|
-
gv = GObject::Value.
|
153
|
+
gv = GObject::Value.for_gtype Regress::TestFlags.gtype
|
154
154
|
gv.set_flags value
|
155
155
|
gv.get_value.must_equal value
|
156
156
|
end
|
157
157
|
|
158
158
|
it 'unwraps a GType' do
|
159
159
|
value = GObject::TYPE_STRING
|
160
|
-
gv = GObject::Value.
|
160
|
+
gv = GObject::Value.for_gtype GObject::TYPE_GTYPE
|
161
161
|
gv.set_gtype value
|
162
162
|
gv.get_value.must_equal value
|
163
163
|
end
|
164
164
|
|
165
165
|
it 'unwraps an int64' do
|
166
166
|
value = 0x1234_5678_9012_3456
|
167
|
-
gv = GObject::Value.
|
167
|
+
gv = GObject::Value.for_gtype GObject::TYPE_INT64
|
168
168
|
gv.set_int64 value
|
169
169
|
gv.get_value.must_equal value
|
170
170
|
end
|
171
171
|
|
172
172
|
it 'unwraps a long' do
|
173
173
|
value = FFI.type_size(:long) == 8 ? 0x1234_5678_9012_3456 : 0x1234_5678
|
174
|
-
gv = GObject::Value.
|
174
|
+
gv = GObject::Value.for_gtype GObject::TYPE_LONG
|
175
175
|
gv.set_long value
|
176
176
|
gv.get_value.must_equal value
|
177
177
|
end
|
178
178
|
|
179
179
|
it 'unwraps an uchar' do
|
180
180
|
value = 3
|
181
|
-
gv = GObject::Value.
|
181
|
+
gv = GObject::Value.for_gtype GObject::TYPE_UCHAR
|
182
182
|
gv.set_uchar value
|
183
183
|
gv.get_value.must_equal value
|
184
184
|
end
|
185
185
|
|
186
186
|
it 'unwraps an uint' do
|
187
187
|
value = 0x1234_5678
|
188
|
-
gv = GObject::Value.
|
188
|
+
gv = GObject::Value.for_gtype GObject::TYPE_UINT
|
189
189
|
gv.set_uint value
|
190
190
|
gv.get_value.must_equal value
|
191
191
|
end
|
192
192
|
|
193
193
|
it 'unwraps an uint64' do
|
194
194
|
value = 0x1234_5678_9012_3456
|
195
|
-
gv = GObject::Value.
|
195
|
+
gv = GObject::Value.for_gtype GObject::TYPE_UINT64
|
196
196
|
gv.set_uint64 value
|
197
197
|
gv.get_value.must_equal value
|
198
198
|
end
|
199
199
|
|
200
200
|
it 'unwraps a ulong' do
|
201
201
|
value = FFI.type_size(:long) == 8 ? 0x1234_5678_9012_3456 : 0x1234_5678
|
202
|
-
gv = GObject::Value.
|
202
|
+
gv = GObject::Value.for_gtype GObject::TYPE_ULONG
|
203
203
|
gv.set_ulong value
|
204
204
|
gv.get_value.must_equal value
|
205
205
|
end
|
206
206
|
|
207
207
|
it 'unwraps a variant' do
|
208
208
|
value = GLib::Variant.new_string('Foo')
|
209
|
-
gv = GObject::Value.
|
209
|
+
gv = GObject::Value.for_gtype GObject::TYPE_VARIANT
|
210
210
|
gv.set_variant value
|
211
211
|
gv.get_value.must_equal value
|
212
212
|
end
|
213
213
|
|
214
214
|
it 'works with a ByteArray' do
|
215
215
|
ba = GLib::ByteArray.new.append('some bytes')
|
216
|
-
v = GObject::Value.
|
216
|
+
v = GObject::Value.for_gtype GObject::TYPE_BYTE_ARRAY
|
217
217
|
v.set_boxed ba
|
218
218
|
|
219
219
|
result = v.get_value
|
@@ -224,7 +224,7 @@ describe GObject::Value do
|
|
224
224
|
|
225
225
|
it 'works with an Array' do
|
226
226
|
arr = GLib::Array.from(:uint, [1, 2, 3])
|
227
|
-
v = GObject::Value.
|
227
|
+
v = GObject::Value.for_gtype GObject::TYPE_ARRAY
|
228
228
|
v.set_boxed arr
|
229
229
|
|
230
230
|
result = v.get_value
|