gir_ffi 0.15.8 → 0.15.9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b7c0566bc2fcd7e7b5ab1381448f4738fdebd617743c524ea18c343e1d3fbce5
4
- data.tar.gz: 5008632e7cd2fa2190c12f056257f68a94b03fa4a8f225df54fae006b6127db1
3
+ metadata.gz: 240502b5086fedd9c4f52a114faf67c5021f03c4fedc10dd6fbfabd064a64aca
4
+ data.tar.gz: b89d501796ee980af6d731758f144a9eba21472353bae02029548f6541787db4
5
5
  SHA512:
6
- metadata.gz: 7a0f1e2330171a92b26a1c476e0c5b7beaeb2e38e6e0e81d9bb47247b74b02ed7e0e5261c2e7adf33f93860b284e2eddf61a938c584c5cccaab69b2b85d5109c
7
- data.tar.gz: ddb889010ccc55495ffb306e3996fa6ce37367bbc65ff78f0024df244b3663691879be7f78c53c9543f90b4360dfca35b47bf35a9acf7382271a685aea542cbe
6
+ metadata.gz: a6f7df11953d3b1a88c3fa515207d3f15883e79de7114fb6ad55bf1545e1e023a6b1b7b83199fd3ef0a45ab762d240a9b59eec8c4aac660b1d8d83363de51c0a
7
+ data.tar.gz: 18ca30c7f7f54daeff80c3045d24e1231d0a927e68f0ae8877a548b95cdc8602298b602925e3ad20e6b26049b62a7541b85d7f2d56b328594d22ca39b960146c
data/Changelog.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.15.9 / 2021-12-05
4
+
5
+ * Skip setting destroy notifier state if types don't make sense
6
+ * Handle functions with multiple user-supplied callback arguments
7
+
3
8
  ## 0.15.8 / 2021-11-20
4
9
 
5
10
  * Drop support for Ruby 2.5
@@ -87,7 +87,14 @@ module GirFFI
87
87
  def set_up_destroy_notifier_relations
88
88
  @base_argument_builders.each do |bldr|
89
89
  if (idx = bldr.destroy_idx) >= 0
90
- @base_argument_builders[idx].mark_as_destroy_notifier bldr
90
+ target = @base_argument_builders[idx]
91
+ if target.specialized_type_tag == :callback &&
92
+ bldr.specialized_type_tag == :callback
93
+ target.mark_as_destroy_notifier bldr
94
+ else
95
+ warn "Not marking #{target.name} (#{target.specialized_type_tag})" \
96
+ " as destroy notifier for #{bldr.name} (#{bldr.specialized_type_tag})"
97
+ end
91
98
  end
92
99
  end
93
100
  end
@@ -132,7 +139,12 @@ module GirFFI
132
139
  def split_off_block_argument
133
140
  builders_with_name = argument_builders.select(&:method_argument_name)
134
141
  blocks, base = builders_with_name.partition(&:block_argument?)
135
- return base, blocks.first
142
+ case blocks.count
143
+ when 1
144
+ return base, blocks.first
145
+ else
146
+ return builders_with_name, nil
147
+ end
136
148
  end
137
149
 
138
150
  def base_argument_names(arguments)
@@ -38,7 +38,7 @@ module GirFFI
38
38
  ["obj = allocate"]
39
39
  else
40
40
  [
41
- "raise NoMethodError unless self == #{@info.container.full_type_name}",
41
+ "raise NoMethodError unless self == #{@info.container.full_name}",
42
42
  "obj = allocate"
43
43
  ]
44
44
  end
@@ -44,7 +44,7 @@ module GirFFI
44
44
  end
45
45
 
46
46
  def gtype_struct_parent
47
- full_name = info.full_type_name
47
+ full_name = info.full_name
48
48
  if full_name == "GObject::InitiallyUnownedClass"
49
49
  GObject::ObjectClass
50
50
  else
@@ -2,11 +2,12 @@
2
2
 
3
3
  module GirFFI
4
4
  module InfoExt
5
- # Extension module provinding a #full_type_name method suitable for
5
+ # Extension module provinding a #full_name method suitable for
6
6
  # callbacks, constants and registered types. Signals and vfuncs need a
7
7
  # different implementation.
8
+ #
8
9
  module FullTypeName
9
- def full_type_name
10
+ def full_name
10
11
  "#{safe_namespace}::#{safe_name}"
11
12
  end
12
13
  end
@@ -14,6 +14,16 @@ module GirFFI
14
14
  def return_ffi_type
15
15
  return_type.to_ffi_type
16
16
  end
17
+
18
+ def full_name
19
+ if method?
20
+ "#{container.full_name}##{safe_name}"
21
+ elsif container
22
+ "#{container.full_name}.#{safe_name}"
23
+ else
24
+ "#{safe_namespace}.#{safe_name}"
25
+ end
26
+ end
17
27
  end
18
28
  end
19
29
  end
@@ -106,7 +106,7 @@ module GirFFI
106
106
  end
107
107
 
108
108
  def interface_class_name
109
- interface.full_type_name if tag == :interface
109
+ interface.full_name if tag == :interface
110
110
  end
111
111
 
112
112
  def to_ffi_type
@@ -22,6 +22,10 @@ module GirFFI
22
22
  def has_invoker?
23
23
  invoker
24
24
  end
25
+
26
+ def full_name
27
+ "#{container.full_name}::#{safe_name}"
28
+ end
25
29
  end
26
30
  end
27
31
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Current GirFFI version
4
4
  module GirFFI
5
- VERSION = "0.15.8"
5
+ VERSION = "0.15.9"
6
6
  end
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.15.8
4
+ version: 0.15.9
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: 2021-11-20 00:00:00.000000000 Z
11
+ date: 2021-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -156,14 +156,14 @@ dependencies:
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: 0.16.0
159
+ version: 0.17.0
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: 0.16.0
166
+ version: 0.17.0
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: rubocop-packaging
169
169
  requirement: !ruby/object:Gem::Requirement
@@ -428,7 +428,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
428
428
  - !ruby/object:Gem::Version
429
429
  version: '0'
430
430
  requirements: []
431
- rubygems_version: 3.2.22
431
+ rubygems_version: 3.2.32
432
432
  signing_key:
433
433
  specification_version: 4
434
434
  summary: FFI-based GObject binding using the GObject Introspection Repository