gir_ffi 0.16.0 → 0.17.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 +17 -0
- data/README.md +20 -14
- data/lib/ffi-glib/array.rb +1 -1
- data/lib/ffi-glib/main_loop.rb +2 -2
- data/lib/ffi-glib/variant.rb +2 -2
- data/lib/ffi-gobject/object.rb +8 -8
- data/lib/ffi-gobject/value.rb +1 -1
- data/lib/ffi-gobject_introspection/i_registered_type_info.rb +1 -1
- data/lib/ffi-gobject_introspection/lib.rb +1 -1
- data/lib/gir_ffi/array_element_convertor.rb +1 -1
- data/lib/gir_ffi/builders/argument_builder.rb +1 -1
- data/lib/gir_ffi/builders/base_method_builder.rb +1 -1
- data/lib/gir_ffi/builders/constructor_builder.rb +1 -1
- data/lib/gir_ffi/builders/function_builder.rb +1 -1
- data/lib/gir_ffi/builders/marshalling_method_builder.rb +1 -1
- data/lib/gir_ffi/builders/method_template.rb +2 -2
- data/lib/gir_ffi/builders/pointer_value_convertor.rb +1 -1
- data/lib/gir_ffi/builders/user_defined_builder.rb +1 -1
- data/lib/gir_ffi/ffi_ext/pointer.rb +22 -12
- data/lib/gir_ffi/in_pointer.rb +2 -2
- data/lib/gir_ffi/info_ext/i_registered_type_info.rb +1 -1
- data/lib/gir_ffi/method_stubber.rb +1 -1
- data/lib/gir_ffi/module_base.rb +2 -2
- data/lib/gir_ffi/type_map.rb +1 -1
- data/lib/gir_ffi/version.rb +1 -1
- metadata +22 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5d9166ab1e26f13ddc3aa9c5695fb67d4530491f56c01d1e78ad7648f5ea8583
|
4
|
+
data.tar.gz: 5a2e96556fcd892f0cd143c51a21df6c18475950a166c90a994b38a33777281e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9252568631fc6355af2ee913e73fd363ccf04714c9702d93c6fc26119180046f4345232c66d47a93dcc872024f6a855a1d268b3eff23b49f18fd136d9ef5ef4
|
7
|
+
data.tar.gz: e289ed1d545a09f5bb2d67a91101fd6cd7510a1a69e721f07f85fd82a352f4922316a3cf92b67a57216e8e203ec5f3232d60e7634e4c9509e6a65819f42a0dcb
|
data/Changelog.md
CHANGED
@@ -1,5 +1,22 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.17.0 / 2023-12-31
|
4
|
+
|
5
|
+
* Support Ruby 3.0 and up, dropping support for Ruby 2.7 ([#356] by [mvz])
|
6
|
+
|
7
|
+
[#356]: https://github.com/mvz/gir_ffi/pull/356
|
8
|
+
|
9
|
+
## 0.16.1 / 2023-10-07
|
10
|
+
|
11
|
+
* Support Ruby 3.2 ([#331] by [mvz])
|
12
|
+
* Require at least ffi 1.16.3 to avoid 'Can't modify frozen Hash' error ([#350]
|
13
|
+
by [mvz])
|
14
|
+
|
15
|
+
[mvz]: https://github.com/mvz
|
16
|
+
|
17
|
+
[#331]: https://github.com/mvz/gir_ffi/pull/331
|
18
|
+
[#350]: https://github.com/mvz/gir_ffi/pull/350
|
19
|
+
|
3
20
|
## 0.16.0 / 2022-05-21
|
4
21
|
|
5
22
|
* 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
|
-
|
26
|
+
```ruby
|
27
|
+
require 'gir_ffi'
|
27
28
|
|
28
|
-
|
29
|
-
|
29
|
+
# Set up the namespace you wish to use
|
30
|
+
GirFFI.setup :Gio
|
30
31
|
|
31
|
-
|
32
|
-
|
32
|
+
# Create an object
|
33
|
+
inet_address = Gio::InetAddress.new_from_string "127.0.0.1"
|
33
34
|
|
34
|
-
|
35
|
-
|
36
|
-
|
35
|
+
# Call some methods on the object
|
36
|
+
inet_address.is_loopback # => true
|
37
|
+
inet_address.is_multicast # => false
|
37
38
|
|
38
|
-
|
39
|
-
|
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
|
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
|
-
|
54
|
+
```bash
|
55
|
+
gem install gir_ffi
|
56
|
+
```
|
51
57
|
|
52
58
|
## Requirements
|
53
59
|
|
54
|
-
GirFFI is supported on CRuby 2.
|
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–
|
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
|
data/lib/ffi-glib/array.rb
CHANGED
data/lib/ffi-glib/main_loop.rb
CHANGED
data/lib/ffi-glib/variant.rb
CHANGED
@@ -11,8 +11,8 @@ module GLib
|
|
11
11
|
get_string_without_override.first
|
12
12
|
end
|
13
13
|
|
14
|
-
|
15
|
-
|
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
|
data/lib/ffi-gobject/object.rb
CHANGED
@@ -11,9 +11,9 @@ module GObject
|
|
11
11
|
[:size_t, :uint32, :pointer, :pointer],
|
12
12
|
:pointer)
|
13
13
|
|
14
|
-
def self.new_with_properties(
|
14
|
+
def self.new_with_properties(...)
|
15
15
|
obj = allocate
|
16
|
-
obj.__send__
|
16
|
+
obj.__send__(:initialize_with_properties, ...)
|
17
17
|
obj
|
18
18
|
end
|
19
19
|
|
@@ -33,17 +33,17 @@ module GObject
|
|
33
33
|
store_pointer ptr
|
34
34
|
end
|
35
35
|
|
36
|
-
|
37
|
-
|
36
|
+
alias_method :old_initialze, :initialize
|
37
|
+
alias_method :initialize, :initialize_with_properties
|
38
38
|
remove_method :old_initialze
|
39
39
|
|
40
|
-
def self.new(
|
40
|
+
def self.new(...)
|
41
41
|
obj = allocate
|
42
|
-
obj.__send__
|
42
|
+
obj.__send__(:initialize, ...)
|
43
43
|
obj
|
44
44
|
end
|
45
45
|
|
46
|
-
|
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
|
-
|
85
|
+
alias_method :floating?, :is_floating
|
86
86
|
|
87
87
|
private
|
88
88
|
|
data/lib/ffi-gobject/value.rb
CHANGED
@@ -258,7 +258,7 @@ module GObjectIntrospection
|
|
258
258
|
|
259
259
|
# Union type representing an argument value
|
260
260
|
class GIArgument < FFI::Union
|
261
|
-
signed_size_t = "int#{FFI.type_size(:size_t) * 8}"
|
261
|
+
signed_size_t = :"int#{FFI.type_size(:size_t) * 8}"
|
262
262
|
|
263
263
|
layout :v_boolean, :int,
|
264
264
|
:v_int8, :int8,
|
@@ -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(
|
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(
|
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? ?
|
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
|
@@ -128,7 +128,7 @@ module GirFFI
|
|
128
128
|
|
129
129
|
def property_setter_func
|
130
130
|
setter = proc do |object, _property_id, value, pspec|
|
131
|
-
object.send("#{pspec.accessor_name}=", value.get_value)
|
131
|
+
object.send(:"#{pspec.accessor_name}=", value.get_value)
|
132
132
|
end
|
133
133
|
GObject::ObjectSetPropertyFunc.from setter
|
134
134
|
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
|
-
|
27
|
-
|
28
|
-
|
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
|
data/lib/gir_ffi/in_pointer.rb
CHANGED
@@ -57,7 +57,7 @@ module GirFFI
|
|
57
57
|
ffi_type = TypeMap.type_specification_to_ffi_type type
|
58
58
|
FFI::MemoryPointer.new(ffi_type).tap do |block|
|
59
59
|
block.autorelease = false
|
60
|
-
block.send "put_#{ffi_type}", 0, value
|
60
|
+
block.send :"put_#{ffi_type}", 0, value
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
@@ -137,7 +137,7 @@ module GirFFI
|
|
137
137
|
type_size = FFI.type_size(ffi_type)
|
138
138
|
FFI::MemoryPointer.new(type_size * (ary.length + 1)).tap do |block|
|
139
139
|
block.autorelease = false
|
140
|
-
block.send "put_array_of_#{ffi_type}", 0, ary
|
140
|
+
block.send :"put_array_of_#{ffi_type}", 0, ary
|
141
141
|
end
|
142
142
|
end
|
143
143
|
end
|
data/lib/gir_ffi/module_base.rb
CHANGED
@@ -7,11 +7,11 @@ module GirFFI
|
|
7
7
|
module ModuleBase
|
8
8
|
include MethodSetup
|
9
9
|
|
10
|
-
def method_missing(method,
|
10
|
+
def method_missing(method, ...)
|
11
11
|
result = setup_method method.to_s
|
12
12
|
return super unless result
|
13
13
|
|
14
|
-
send
|
14
|
+
send(method, ...)
|
15
15
|
end
|
16
16
|
|
17
17
|
def respond_to_missing?(method, *)
|
data/lib/gir_ffi/type_map.rb
CHANGED
data/lib/gir_ffi/version.rb
CHANGED
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.17.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:
|
11
|
+
date: 2023-12-31 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.
|
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.
|
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.
|
157
|
+
version: '1.59'
|
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.
|
164
|
+
version: '1.59'
|
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.
|
171
|
+
version: 0.34.1
|
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.
|
178
|
+
version: 0.34.1
|
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.
|
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.
|
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.
|
199
|
+
version: '1.20'
|
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.
|
206
|
+
version: '1.20'
|
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.
|
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.
|
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
|
@@ -427,14 +433,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
427
433
|
requirements:
|
428
434
|
- - ">="
|
429
435
|
- !ruby/object:Gem::Version
|
430
|
-
version:
|
436
|
+
version: 3.0.0
|
431
437
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
432
438
|
requirements:
|
433
439
|
- - ">="
|
434
440
|
- !ruby/object:Gem::Version
|
435
441
|
version: '0'
|
436
442
|
requirements: []
|
437
|
-
rubygems_version: 3.3
|
443
|
+
rubygems_version: 3.5.3
|
438
444
|
signing_key:
|
439
445
|
specification_version: 4
|
440
446
|
summary: FFI-based GObject binding using the GObject Introspection Repository
|