gir_ffi 0.13.1 → 0.14.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Changelog.md +5 -0
- data/lib/ffi-gobject/param_spec.rb +11 -0
- data/lib/gir_ffi/builders/object_builder.rb +0 -16
- data/lib/gir_ffi/user_defined_property_info.rb +1 -1
- data/lib/gir_ffi/version.rb +1 -1
- data/test/ffi-gobject/gobject_test.rb +3 -3
- data/test/ffi-gobject/object_test.rb +2 -2
- data/test/ffi-gobject/param_spec_test.rb +3 -2
- data/test/ffi-gobject/value_test.rb +2 -2
- data/test/gir_ffi/builders/object_builder_test.rb +0 -17
- data/test/gir_ffi/builders/user_defined_builder_test.rb +4 -3
- data/test/gir_ffi/sized_array_test.rb +1 -1
- data/test/gir_ffi_test_helper.rb +2 -2
- data/test/integration/generated_gimarshallingtests_test.rb +12 -17
- data/test/integration/generated_regress_test.rb +11 -14
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2fc709e79ed9d8d423b39d2793e648a3d4cf62603496f5398fe80515a756fe96
|
4
|
+
data.tar.gz: 2ca46650022b545f0dff670fc8bbaa27c159ed43c101fde1d674ab064b4dec36
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad913da79bffc07e693e94aa2e56aa0b425c48999b84ffcee0a92a06439b75a46cd7db04f19cb5bc87b8869c541b7b374538c9aea300c2ffbf973d50f8b8bc5c
|
7
|
+
data.tar.gz: d661d30631b2470b85f9ff59abf36e2c63f380ba94f40a5b98eb0e5fd1ebb0943b94c5b6dff2cb6737bc264746c014f5c24e080fceea13b7eb20a2de8077f54e
|
data/Changelog.md
CHANGED
@@ -5,6 +5,9 @@ GObject.load_class :ParamSpec
|
|
5
5
|
module GObject
|
6
6
|
# Overrides for GParamSpec, GObject's base class for parameter specifications.
|
7
7
|
class ParamSpec
|
8
|
+
VALUE_TYPE_OFFSET = Struct.offset_of :value_type
|
9
|
+
FLAGS_OFFSET = Struct.offset_of :flags
|
10
|
+
|
8
11
|
def ref
|
9
12
|
Lib.g_param_spec_ref self
|
10
13
|
self
|
@@ -13,5 +16,13 @@ module GObject
|
|
13
16
|
def accessor_name
|
14
17
|
get_name.tr('-', '_')
|
15
18
|
end
|
19
|
+
|
20
|
+
def value_type
|
21
|
+
to_ptr.get_gtype(VALUE_TYPE_OFFSET)
|
22
|
+
end
|
23
|
+
|
24
|
+
def flags
|
25
|
+
GObject::ParamFlags.get_value_from_pointer(to_ptr, FLAGS_OFFSET)
|
26
|
+
end
|
16
27
|
end
|
17
28
|
end
|
@@ -39,15 +39,6 @@ module GirFFI
|
|
39
39
|
@ancestor_infos ||= [info] + info.interfaces + parent_ancestor_infos
|
40
40
|
end
|
41
41
|
|
42
|
-
def eligible_fields
|
43
|
-
info.fields.reject do |finfo|
|
44
|
-
fname = finfo.name
|
45
|
-
fname == 'parent_instance' ||
|
46
|
-
info.find_instance_method("get_#{fname}") ||
|
47
|
-
info.find_property(fname)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
42
|
def eligible_properties
|
52
43
|
info.properties.reject do |pinfo|
|
53
44
|
info.find_instance_method("get_#{pinfo.name}")
|
@@ -67,7 +58,6 @@ module GirFFI
|
|
67
58
|
setup_layout
|
68
59
|
setup_constants
|
69
60
|
stub_methods
|
70
|
-
setup_field_accessors
|
71
61
|
setup_property_accessors
|
72
62
|
setup_vfunc_invokers
|
73
63
|
setup_interfaces
|
@@ -99,12 +89,6 @@ module GirFFI
|
|
99
89
|
@parent_ancestor_infos ||= parent_builder.ancestor_infos
|
100
90
|
end
|
101
91
|
|
102
|
-
def setup_field_accessors
|
103
|
-
eligible_fields.each do |finfo|
|
104
|
-
FieldBuilder.new(finfo, klass).build
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
92
|
def setup_property_accessors
|
109
93
|
eligible_properties.each do |prop|
|
110
94
|
PropertyBuilder.new(prop).build
|
data/lib/gir_ffi/version.rb
CHANGED
@@ -63,9 +63,9 @@ describe GObject do
|
|
63
63
|
10, 20, 15,
|
64
64
|
3)
|
65
65
|
spec.must_be_instance_of GObject::ParamSpecInt
|
66
|
-
spec.minimum.must_equal 10
|
67
|
-
spec.maximum.must_equal 20
|
68
|
-
spec.
|
66
|
+
spec.struct[:minimum].must_equal 10
|
67
|
+
spec.struct[:maximum].must_equal 20
|
68
|
+
spec.get_default_value.must_equal 15
|
69
69
|
end
|
70
70
|
end
|
71
71
|
end
|
@@ -124,7 +124,7 @@ describe GObject::Object do
|
|
124
124
|
skip 'cannot be reliably tested on JRuby and Rubinius' if jruby? || rubinius?
|
125
125
|
|
126
126
|
ptr = GObject::Object.new.to_ptr
|
127
|
-
|
127
|
+
object_ref_count(ptr).must_equal 1
|
128
128
|
|
129
129
|
GC.start
|
130
130
|
# Creating a new object is sometimes needed to trigger enough garbage collection.
|
@@ -134,7 +134,7 @@ describe GObject::Object do
|
|
134
134
|
GC.start
|
135
135
|
GC.start
|
136
136
|
|
137
|
-
|
137
|
+
object_ref_count(ptr).must_equal 0
|
138
138
|
end
|
139
139
|
end
|
140
140
|
end
|
@@ -10,12 +10,13 @@ describe GObject::ParamSpec do
|
|
10
10
|
1, 3, 2,
|
11
11
|
readable: true, writable: true)
|
12
12
|
end
|
13
|
+
let(:pspec_struct) { GObject::ParamSpec::Struct.new(pspec.to_ptr) }
|
13
14
|
|
14
15
|
describe '#ref' do
|
15
16
|
it 'increases the ref count' do
|
16
|
-
old =
|
17
|
+
old = pspec_struct[:ref_count]
|
17
18
|
pspec.ref
|
18
|
-
|
19
|
+
pspec_struct[:ref_count].must_equal old + 1
|
19
20
|
end
|
20
21
|
end
|
21
22
|
|
@@ -70,9 +70,9 @@ describe GObject::Value do
|
|
70
70
|
it 'wraps object values' do
|
71
71
|
value = GObject::Object.new({})
|
72
72
|
gv = GObject::Value.wrap_ruby_value value
|
73
|
-
value.
|
73
|
+
object_ref_count(value).must_equal 2
|
74
74
|
gv.get_value.must_equal value
|
75
|
-
value.
|
75
|
+
object_ref_count(value).must_equal 3
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
@@ -79,23 +79,6 @@ describe GirFFI::Builders::ObjectBuilder do
|
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
82
|
-
describe '#eligible_fields' do
|
83
|
-
it 'skips fields that have a matching getter method' do
|
84
|
-
result = param_spec_builder.eligible_fields
|
85
|
-
result.map(&:name).wont_include 'name'
|
86
|
-
end
|
87
|
-
|
88
|
-
it 'skips fields that have a matching property' do
|
89
|
-
result = obj_builder.eligible_fields
|
90
|
-
result.map(&:name).wont_include 'hash_table'
|
91
|
-
end
|
92
|
-
|
93
|
-
it 'skips the parent instance field' do
|
94
|
-
result = obj_builder.eligible_fields
|
95
|
-
result.map(&:name).wont_include 'parent_instance'
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
82
|
describe '#eligible_properties' do
|
100
83
|
let(:wi_builder) do
|
101
84
|
GirFFI::Builders::ObjectBuilder.new(
|
@@ -185,15 +185,16 @@ describe GirFFI::Builders::UserDefinedBuilder do
|
|
185
185
|
obj = derived_class.new
|
186
186
|
object = GIMarshallingTests::Object.new 42
|
187
187
|
obj.object_prop = object
|
188
|
-
object.
|
188
|
+
object_ref_count(object).must_equal 2
|
189
189
|
end
|
190
190
|
|
191
191
|
it 'handles reference counting correctly when using the set_property method' do
|
192
192
|
obj = derived_class.new
|
193
193
|
object = GIMarshallingTests::Object.new 42
|
194
|
-
|
194
|
+
|
195
|
+
object_ref_count(object).must_equal 1
|
195
196
|
obj.set_property('object_prop', object)
|
196
|
-
object.
|
197
|
+
object_ref_count(object).must_equal 4 # Due to extra Value#set_value + Value#get_value
|
197
198
|
end
|
198
199
|
end
|
199
200
|
|
data/test/gir_ffi_test_helper.rb
CHANGED
@@ -31,8 +31,8 @@ module GirFFITestExtensions
|
|
31
31
|
SAVED_MODULES.delete name
|
32
32
|
end
|
33
33
|
|
34
|
-
def
|
35
|
-
GObject::Object::Struct.new(ptr)[:ref_count]
|
34
|
+
def object_ref_count(ptr)
|
35
|
+
GObject::Object::Struct.new(ptr.to_ptr)[:ref_count]
|
36
36
|
end
|
37
37
|
|
38
38
|
def max_for_unsigned_type(type)
|
@@ -302,12 +302,12 @@ describe GIMarshallingTests do
|
|
302
302
|
|
303
303
|
it 'has a working function #full_inout' do
|
304
304
|
ob = GIMarshallingTests::Object.new 42
|
305
|
-
ob.
|
305
|
+
object_ref_count(ob).must_equal 1
|
306
306
|
|
307
307
|
res = GIMarshallingTests::Object.full_inout ob
|
308
308
|
|
309
|
-
ob.
|
310
|
-
res.
|
309
|
+
object_ref_count(ob).must_equal 1
|
310
|
+
object_ref_count(res).must_equal 1
|
311
311
|
|
312
312
|
res.must_be_instance_of GIMarshallingTests::Object
|
313
313
|
res.int.must_equal 0
|
@@ -316,23 +316,23 @@ describe GIMarshallingTests do
|
|
316
316
|
it 'has a working function #full_out' do
|
317
317
|
res = GIMarshallingTests::Object.full_out
|
318
318
|
res.must_be_instance_of GIMarshallingTests::Object
|
319
|
-
res.
|
319
|
+
object_ref_count(res).must_equal 1
|
320
320
|
end
|
321
321
|
|
322
322
|
it 'has a working function #full_return' do
|
323
323
|
res = GIMarshallingTests::Object.full_return
|
324
324
|
res.must_be_instance_of GIMarshallingTests::Object
|
325
|
-
res.
|
325
|
+
object_ref_count(res).must_equal 1
|
326
326
|
end
|
327
327
|
|
328
328
|
it 'has a working function #none_inout' do
|
329
329
|
ob = GIMarshallingTests::Object.new 42
|
330
|
-
ob.
|
330
|
+
object_ref_count(ob).must_equal 1
|
331
331
|
|
332
332
|
res = GIMarshallingTests::Object.none_inout ob
|
333
333
|
|
334
|
-
ob.
|
335
|
-
res.
|
334
|
+
object_ref_count(ob).must_equal 1
|
335
|
+
object_ref_count(res).must_equal 2
|
336
336
|
|
337
337
|
res.must_be_instance_of GIMarshallingTests::Object
|
338
338
|
ob.int.must_equal 42
|
@@ -342,13 +342,13 @@ describe GIMarshallingTests do
|
|
342
342
|
it 'has a working function #none_out' do
|
343
343
|
res = GIMarshallingTests::Object.none_out
|
344
344
|
res.must_be_instance_of GIMarshallingTests::Object
|
345
|
-
res.
|
345
|
+
object_ref_count(res).must_equal 2
|
346
346
|
end
|
347
347
|
|
348
348
|
it 'has a working function #none_return' do
|
349
349
|
res = GIMarshallingTests::Object.none_return
|
350
350
|
res.must_be_instance_of GIMarshallingTests::Object
|
351
|
-
res.
|
351
|
+
object_ref_count(res).must_equal 2
|
352
352
|
end
|
353
353
|
|
354
354
|
it 'has a working function #static_method' do
|
@@ -411,7 +411,7 @@ describe GIMarshallingTests do
|
|
411
411
|
end
|
412
412
|
result = derived_instance.
|
413
413
|
get_ref_info_for_vfunc_in_object_transfer_none GIMarshallingTests::Object.gtype
|
414
|
-
obj.
|
414
|
+
object_ref_count(obj).must_be :>, 0
|
415
415
|
result.must_equal [2, false]
|
416
416
|
obj.must_be_instance_of GIMarshallingTests::Object
|
417
417
|
end
|
@@ -426,7 +426,7 @@ describe GIMarshallingTests do
|
|
426
426
|
}
|
427
427
|
end
|
428
428
|
result = derived_instance.get_ref_info_for_vfunc_out_object_transfer_full
|
429
|
-
obj.
|
429
|
+
object_ref_count(obj).must_be :>, 0
|
430
430
|
# TODO: Check desired result
|
431
431
|
result.must_equal [2, false]
|
432
432
|
end
|
@@ -752,11 +752,6 @@ describe GIMarshallingTests do
|
|
752
752
|
instance.wont_respond_to :parent_instance
|
753
753
|
instance.wont_respond_to :parent_instance=
|
754
754
|
end
|
755
|
-
|
756
|
-
it 'has a readable field long_' do
|
757
|
-
instance.long_.must_equal 0
|
758
|
-
instance.wont_respond_to :long_=
|
759
|
-
end
|
760
755
|
end
|
761
756
|
|
762
757
|
describe 'GIMarshallingTests::OverridesStruct' do
|
@@ -1444,7 +1444,7 @@ describe Regress do
|
|
1444
1444
|
end
|
1445
1445
|
|
1446
1446
|
it 'has a reference count of 1' do
|
1447
|
-
assert_equal 1, @o
|
1447
|
+
assert_equal 1, object_ref_count(@o)
|
1448
1448
|
end
|
1449
1449
|
|
1450
1450
|
it 'has been sunk' do
|
@@ -1463,17 +1463,18 @@ describe Regress do
|
|
1463
1463
|
end
|
1464
1464
|
|
1465
1465
|
let(:derived_instance) { Regress::TestFundamentalSubObject.new 'foo' }
|
1466
|
+
let(:base_struct) { Regress::TestFundamentalObject::Struct.new derived_instance.to_ptr }
|
1466
1467
|
|
1467
1468
|
it 'has a working method #ref' do
|
1468
|
-
|
1469
|
+
base_struct[:refcount].must_equal 1
|
1469
1470
|
derived_instance.ref
|
1470
|
-
|
1471
|
+
base_struct[:refcount].must_equal 2
|
1471
1472
|
end
|
1472
1473
|
|
1473
1474
|
it 'has a working method #unref' do
|
1474
|
-
|
1475
|
+
base_struct[:refcount].must_equal 1
|
1475
1476
|
derived_instance.unref
|
1476
|
-
|
1477
|
+
base_struct[:refcount].must_equal 0
|
1477
1478
|
end
|
1478
1479
|
end
|
1479
1480
|
|
@@ -1490,11 +1491,7 @@ describe Regress do
|
|
1490
1491
|
end
|
1491
1492
|
|
1492
1493
|
it 'has a field :data storing the constructor parameter' do
|
1493
|
-
assert_equal 'foo', instance.data
|
1494
|
-
end
|
1495
|
-
|
1496
|
-
it "can access its parent class' fields directly" do
|
1497
|
-
instance.flags.must_equal 0
|
1494
|
+
assert_equal 'foo', instance.struct[:data].to_utf8
|
1498
1495
|
end
|
1499
1496
|
end
|
1500
1497
|
|
@@ -1605,7 +1602,7 @@ describe Regress do
|
|
1605
1602
|
end
|
1606
1603
|
|
1607
1604
|
it 'has a reference count of 1' do
|
1608
|
-
assert_equal 1, instance
|
1605
|
+
assert_equal 1, object_ref_count(instance)
|
1609
1606
|
end
|
1610
1607
|
|
1611
1608
|
it 'does not float' do
|
@@ -1687,9 +1684,9 @@ describe Regress do
|
|
1687
1684
|
|
1688
1685
|
it 'has a working method #instance_method_full' do
|
1689
1686
|
skip unless get_method_introspection_data('Regress', 'TestObj', 'instance_method_full')
|
1690
|
-
instance.
|
1687
|
+
object_ref_count(instance).must_equal 1
|
1691
1688
|
instance.instance_method_full
|
1692
|
-
instance.
|
1689
|
+
object_ref_count(instance).must_equal 1
|
1693
1690
|
end
|
1694
1691
|
|
1695
1692
|
it 'has a working method #not_nullable_element_typed_gpointer_in' do
|
@@ -3211,7 +3208,7 @@ describe Regress do
|
|
3211
3208
|
skip unless get_introspection_data 'Regress', 'test_callback_return_full'
|
3212
3209
|
obj = Regress::TestObj.constructor
|
3213
3210
|
Regress.test_callback_return_full { obj }
|
3214
|
-
obj.
|
3211
|
+
object_ref_count(obj).must_equal 1
|
3215
3212
|
end
|
3216
3213
|
|
3217
3214
|
it 'has a working function #test_callback_thaw_async' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gir_ffi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matijs van Zuijlen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-09-
|
11
|
+
date: 2018-09-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|