gir_ffi 0.15.8 → 0.15.9

Sign up to get free protection for your applications and to get access to all the features.
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