gir_ffi 0.16.0 → 0.16.1

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: bfd3130c297141938f61b59a4e4be4ec2e76832cf38341533f18a5598ac6cd30
4
- data.tar.gz: 2e94de2c70d365baa1fc1fd506e5cadbaf5d3b9aaa36dbde69e7813f742ce357
3
+ metadata.gz: f895f96ce883cc8698a2b95c39e241313762a9235a5d6bb38f0ca6ce0cb72249
4
+ data.tar.gz: 31f7c7558d25116276e3857d7aca50272232753b49da125b208124d93f33c519
5
5
  SHA512:
6
- metadata.gz: 94de6fa54920e6c878d271f57c9c737aa5b6ca6025fe5d1d395e26e146208e8dafb9c43dc679984dcaa4216d373f658f25e8cdd676f96724cd7d8cbf7aae6012
7
- data.tar.gz: d4f06ba95a49d8ad6476cda459dc93d3630533b9dc48f1fc48917c86d7124965700771a71084925f5382836352fe9b203536c0df686fb2a554530fb27e203cbb
6
+ metadata.gz: 72e1eddb0fb987e2c2ad6805e6c2b3c1c6588997d30f3efaaac3de408585fda9fa50aca66b74ec9aa76ee253a2701bf747187556086f772f9d20c67f985a6ae9
7
+ data.tar.gz: 264a6574d5cde0c8d981553433b895ccd11e3ae61c1aeb315ca75c74ee563efe2d4944f1b344fee50844b1caef5e8a547da0d50c4571461d67bdabd016cda323
data/Changelog.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.16.1 / 2023-10-07
4
+
5
+ * Support Ruby 3.2 ([#331] by [mvz])
6
+ * Require at least ffi 1.16.3 to avoid 'Can't modify frozen Hash' error ([#350]
7
+ by [mvz])
8
+
9
+ [mvz]: https://github.com/mvz
10
+
11
+ [#331]: https://github.com/mvz/gir_ffi/pull/331
12
+ [#350]: https://github.com/mvz/gir_ffi/pull/350
13
+
3
14
  ## 0.16.0 / 2022-05-21
4
15
 
5
16
  * Support Ruby 3.1
data/README.md CHANGED
@@ -23,35 +23,41 @@ Ruby bindings for GNOME using the GObject Introspection Repository.
23
23
 
24
24
  ## Usage
25
25
 
26
- require 'gir_ffi'
26
+ ```ruby
27
+ require 'gir_ffi'
27
28
 
28
- # Set up the namespace you wish to use
29
- GirFFI.setup :Gio
29
+ # Set up the namespace you wish to use
30
+ GirFFI.setup :Gio
30
31
 
31
- # Create an object
32
- inet_address = Gio::InetAddress.new_from_string "127.0.0.1"
32
+ # Create an object
33
+ inet_address = Gio::InetAddress.new_from_string "127.0.0.1"
33
34
 
34
- # Call some methods on the object
35
- inet_address.is_loopback # => true
36
- inet_address.is_multicast # => false
35
+ # Call some methods on the object
36
+ inet_address.is_loopback # => true
37
+ inet_address.is_multicast # => false
37
38
 
38
- # Call a function in the namespace
39
- Gio.dbus_is_name "foo" # => false
39
+ # Call a function in the namespace
40
+ Gio.dbus_is_name "foo" # => false
41
+ ```
40
42
 
41
43
  See the [documentation](docs/Documentation.md) for more usage information.
42
44
 
43
45
  ## Examples
44
46
 
45
47
  Have a look in the `examples/` directory for some simple examples. More
46
- examples can be found in `gir_ffi-gtk` and `gir_ffi-gst`.
48
+ examples can be found in the repositories for
49
+ [`gir_ffi-gtk`](https://github.com/mvz/gir_ffi-gtk) and
50
+ [`gir_ffi-gst`](https://github.com/mvz/gir_ffi-gst/).
47
51
 
48
52
  ## Install
49
53
 
50
- gem install gir_ffi
54
+ ```bash
55
+ gem install gir_ffi
56
+ ```
51
57
 
52
58
  ## Requirements
53
59
 
54
- GirFFI is supported on CRuby 2.6, 2.7, 3.0 and 3.1.
60
+ GirFFI is supported on CRuby 2.7, 3.0 and 3.1.
55
61
 
56
62
  You will also need gobject-introspection installed with some
57
63
  introspection data.
@@ -104,7 +110,7 @@ The following people have contributed to GirFFI over the years:
104
110
 
105
111
  ## License
106
112
 
107
- Copyright © 2009–2021 [Matijs van Zuijlen](http://www.matijs.net)
113
+ Copyright © 2009–2022 [Matijs van Zuijlen](http://www.matijs.net)
108
114
 
109
115
  GirFFI is free software, distributed under the terms of the GNU Lesser
110
116
  General Public License, version 2.1 or later. See the file COPYING.LIB for
@@ -52,7 +52,7 @@ module GLib
52
52
  Lib.g_array_get_element_size self
53
53
  end
54
54
 
55
- alias element_size get_element_size
55
+ alias_method :element_size, :get_element_size
56
56
 
57
57
  def ==(other)
58
58
  to_a == other.to_a
@@ -58,8 +58,8 @@ module GLib
58
58
  current_loop.quit
59
59
  end
60
60
 
61
- alias run_without_thread_enabler run
62
- alias run run_with_thread_enabler
61
+ alias_method :run_without_thread_enabler, :run
62
+ alias_method :run, :run_with_thread_enabler
63
63
  end
64
64
  end
65
65
 
@@ -11,8 +11,8 @@ module GLib
11
11
  get_string_without_override.first
12
12
  end
13
13
 
14
- alias get_string_without_override get_string
15
- alias get_string get_string_with_override
14
+ alias_method :get_string_without_override, :get_string
15
+ alias_method :get_string, :get_string_with_override
16
16
 
17
17
  # Initializing method used in constructors. For Variant the constructing
18
18
  # functions all return floating references, so this is need to take full
@@ -33,8 +33,8 @@ module GObject
33
33
  store_pointer ptr
34
34
  end
35
35
 
36
- alias old_initialze initialize
37
- alias initialize initialize_with_properties
36
+ alias_method :old_initialze, :initialize
37
+ alias_method :initialize, :initialize_with_properties
38
38
  remove_method :old_initialze
39
39
 
40
40
  def self.new(*args, &block)
@@ -43,7 +43,7 @@ module GObject
43
43
  obj
44
44
  end
45
45
 
46
- alias base_initialize initialize
46
+ alias_method :base_initialize, :initialize
47
47
 
48
48
  private :base_initialize
49
49
 
@@ -82,7 +82,7 @@ module GObject
82
82
  setup_instance_method! "get_property"
83
83
  setup_instance_method! "set_property"
84
84
  setup_instance_method! "is_floating"
85
- alias floating? is_floating
85
+ alias_method :floating?, :is_floating
86
86
 
87
87
  private
88
88
 
@@ -81,7 +81,7 @@ module GObject
81
81
  send set_method, val
82
82
  end
83
83
 
84
- alias value= set_value
84
+ alias_method :value=, :set_value
85
85
 
86
86
  def current_gtype
87
87
  struct[:g_type]
@@ -16,6 +16,6 @@ module GObjectIntrospection
16
16
  Lib.g_registered_type_info_get_g_type self
17
17
  end
18
18
 
19
- alias gtype g_type
19
+ alias_method :gtype, :g_type
20
20
  end
21
21
  end
@@ -28,7 +28,7 @@ module GirFFI
28
28
  # Methods used by MethodTemplate
29
29
 
30
30
  def invocation
31
- "#{lib_name}.#{@info.symbol} #{function_call_arguments.join(', ')}".strip
31
+ "#{lib_name}.#{@info.symbol} #{function_call_arguments.join(", ")}".strip
32
32
  end
33
33
 
34
34
  def method_arguments
@@ -45,7 +45,7 @@ module GirFFI
45
45
  end
46
46
 
47
47
  def invocation
48
- "obj.__send__ #{initializer_name.to_sym.inspect}, #{method_arguments.join(', ')}"
48
+ "obj.__send__ #{initializer_name.to_sym.inspect}, #{method_arguments.join(", ")}"
49
49
  end
50
50
 
51
51
  def result
@@ -18,7 +18,7 @@ module GirFFI
18
18
 
19
19
  def result
20
20
  if argument_builder_collection.has_return_values?
21
- ["return #{argument_builder_collection.return_value_names.join(', ')}"]
21
+ ["return #{argument_builder_collection.return_value_names.join(", ")}"]
22
22
  else
23
23
  []
24
24
  end
@@ -39,7 +39,7 @@ module GirFFI
39
39
  if param_names.size == 1
40
40
  ["#{param_names.first} = param_values.first.get_value_plain"]
41
41
  else
42
- ["#{param_names.join(', ')} = param_values.map(&:get_value_plain)"]
42
+ ["#{param_names.join(", ")} = param_values.map(&:get_value_plain)"]
43
43
  end
44
44
  end
45
45
 
@@ -19,7 +19,7 @@ module GirFFI
19
19
 
20
20
  def method_definition
21
21
  code = +"def #{qualified_method_name}"
22
- code << "(#{method_arguments.join(', ')})" if method_arguments.any?
22
+ code << "(#{method_arguments.join(", ")})" if method_arguments.any?
23
23
  method_lines.each { |line| code << "\n #{line}" }
24
24
  code << "\nend\n"
25
25
  end
@@ -27,7 +27,7 @@ module GirFFI
27
27
  private
28
28
 
29
29
  def qualified_method_name
30
- "#{@builder.singleton_method? ? 'self.' : ''}#{@builder.method_name}"
30
+ "#{@builder.singleton_method? ? "self." : ""}#{@builder.method_name}"
31
31
  end
32
32
 
33
33
  def method_arguments
@@ -23,7 +23,7 @@ module GirFFI
23
23
  when Module
24
24
  args = [value_exp, ptr_exp]
25
25
  args << offset unless offset == 0
26
- "#{ffi_type_spec}.copy_value_to_pointer(#{args.join(', ')})"
26
+ "#{ffi_type_spec}.copy_value_to_pointer(#{args.join(", ")})"
27
27
  when Symbol
28
28
  "#{ptr_exp}.put_#{ffi_type_spec} #{offset}, #{value_exp}"
29
29
  end
@@ -4,6 +4,25 @@ module GirFFI
4
4
  module FFIExt
5
5
  # Extensions to FFI::Pointer
6
6
  module Pointer
7
+ def self.prepended(base)
8
+ base.class_eval do
9
+ size_t_getter =
10
+ case (size = FFI.type_size(:size_t))
11
+ when 4
12
+ :get_uint32
13
+ when 8
14
+ :get_uint64
15
+ else
16
+ raise NotImplementedError,
17
+ "Don't know how to handle size_t types of size #{size}"
18
+ end
19
+
20
+ alias_method :get_size_t, size_t_getter
21
+
22
+ alias_method :get_gtype, :get_size_t
23
+ end
24
+ end
25
+
7
26
  def to_ptr
8
27
  self
9
28
  end
@@ -23,16 +42,7 @@ module GirFFI
23
42
  end
24
43
  end
25
44
 
26
- FFI::Pointer.prepend GirFFI::FFIExt::Pointer
27
-
28
- FFI::Pointer.class_eval do
29
- size_t_getter = case FFI.type_size(:size_t)
30
- when 4
31
- :get_uint32
32
- when 8
33
- :get_uint64
34
- end
35
-
36
- alias_method :get_size_t, size_t_getter
37
- alias_method :get_gtype, :get_size_t
45
+ # @api private
46
+ class FFI::Pointer # rubocop:disable Style/ClassAndModuleChildren
47
+ prepend GirFFI::FFIExt::Pointer
38
48
  end
@@ -20,7 +20,7 @@ module GirFFI
20
20
 
21
21
  def find_instance_method(method)
22
22
  info = find_method method
23
- return info if info&.method?
23
+ info if info&.method?
24
24
  end
25
25
 
26
26
  def find_method(_method)
@@ -10,7 +10,7 @@ module GirFFI
10
10
 
11
11
  def method_stub
12
12
  <<~STUB
13
- def #{@info.method? ? '' : 'self.'}#{@info.safe_name} *args, &block
13
+ def #{@info.method? ? "" : "self."}#{@info.safe_name} *args, &block
14
14
  setup_and_call "#{@info.name}", args, &block
15
15
  end
16
16
  STUB
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Current GirFFI version
4
4
  module GirFFI
5
- VERSION = "0.16.0"
5
+ VERSION = "0.16.1"
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.16.0
4
+ version: 0.16.1
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: 2022-05-21 00:00:00.000000000 Z
11
+ date: 2023-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -16,14 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.8'
19
+ version: '1.16'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.16.3
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
26
- version: '1.8'
29
+ version: '1.16'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.16.3
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: ffi-bit_masks
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -148,70 +154,70 @@ dependencies:
148
154
  requirements:
149
155
  - - "~>"
150
156
  - !ruby/object:Gem::Version
151
- version: '1.25'
157
+ version: '1.56'
152
158
  type: :development
153
159
  prerelease: false
154
160
  version_requirements: !ruby/object:Gem::Requirement
155
161
  requirements:
156
162
  - - "~>"
157
163
  - !ruby/object:Gem::Version
158
- version: '1.25'
164
+ version: '1.56'
159
165
  - !ruby/object:Gem::Dependency
160
166
  name: rubocop-minitest
161
167
  requirement: !ruby/object:Gem::Requirement
162
168
  requirements:
163
169
  - - "~>"
164
170
  - !ruby/object:Gem::Version
165
- version: 0.19.0
171
+ version: 0.32.2
166
172
  type: :development
167
173
  prerelease: false
168
174
  version_requirements: !ruby/object:Gem::Requirement
169
175
  requirements:
170
176
  - - "~>"
171
177
  - !ruby/object:Gem::Version
172
- version: 0.19.0
178
+ version: 0.32.2
173
179
  - !ruby/object:Gem::Dependency
174
180
  name: rubocop-packaging
175
181
  requirement: !ruby/object:Gem::Requirement
176
182
  requirements:
177
183
  - - "~>"
178
184
  - !ruby/object:Gem::Version
179
- version: 0.5.0
185
+ version: 0.5.2
180
186
  type: :development
181
187
  prerelease: false
182
188
  version_requirements: !ruby/object:Gem::Requirement
183
189
  requirements:
184
190
  - - "~>"
185
191
  - !ruby/object:Gem::Version
186
- version: 0.5.0
192
+ version: 0.5.2
187
193
  - !ruby/object:Gem::Dependency
188
194
  name: rubocop-performance
189
195
  requirement: !ruby/object:Gem::Requirement
190
196
  requirements:
191
197
  - - "~>"
192
198
  - !ruby/object:Gem::Version
193
- version: '1.13'
199
+ version: '1.19'
194
200
  type: :development
195
201
  prerelease: false
196
202
  version_requirements: !ruby/object:Gem::Requirement
197
203
  requirements:
198
204
  - - "~>"
199
205
  - !ruby/object:Gem::Version
200
- version: '1.13'
206
+ version: '1.19'
201
207
  - !ruby/object:Gem::Dependency
202
208
  name: simplecov
203
209
  requirement: !ruby/object:Gem::Requirement
204
210
  requirements:
205
211
  - - "~>"
206
212
  - !ruby/object:Gem::Version
207
- version: 0.21.0
213
+ version: 0.22.0
208
214
  type: :development
209
215
  prerelease: false
210
216
  version_requirements: !ruby/object:Gem::Requirement
211
217
  requirements:
212
218
  - - "~>"
213
219
  - !ruby/object:Gem::Version
214
- version: 0.21.0
220
+ version: 0.22.0
215
221
  description: |
216
222
  GirFFI creates bindings for GObject-based libraries at runtime based on introspection
217
223
  data provided by the GObject Introspection Repository (GIR) system. Bindings are created
@@ -434,7 +440,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
434
440
  - !ruby/object:Gem::Version
435
441
  version: '0'
436
442
  requirements: []
437
- rubygems_version: 3.3.7
443
+ rubygems_version: 3.4.20
438
444
  signing_key:
439
445
  specification_version: 4
440
446
  summary: FFI-based GObject binding using the GObject Introspection Repository