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 +4 -4
- data/Changelog.md +11 -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 +4 -4
- data/lib/ffi-gobject/value.rb +1 -1
- data/lib/ffi-gobject_introspection/i_registered_type_info.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/ffi_ext/pointer.rb +22 -12
- 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/version.rb +1 -1
- metadata +21 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f895f96ce883cc8698a2b95c39e241313762a9235a5d6bb38f0ca6ce0cb72249
|
4
|
+
data.tar.gz: 31f7c7558d25116276e3857d7aca50272232753b49da125b208124d93f33c519
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
@@ -33,8 +33,8 @@ 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
40
|
def self.new(*args, &block)
|
@@ -43,7 +43,7 @@ module GObject
|
|
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
@@ -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
|
@@ -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/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.16.
|
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:
|
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.
|
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.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.
|
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.
|
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.
|
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.
|
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.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.
|
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.
|
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
|
@@ -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.
|
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
|