gobject-introspection 3.4.3 → 3.4.4
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 +4 -4
- data/ext/gobject-introspection/extconf.rb +1 -4
- data/ext/gobject-introspection/rb-gi-arguments-in.c +1 -10
- data/ext/gobject-introspection/rb-gi-arguments-out.c +20 -2
- data/ext/gobject-introspection/rb-gi-arguments.c +1 -10
- data/ext/gobject-introspection/rb-gi-interface-info.c +1 -7
- data/ext/gobject-introspection/rb-gi-loader.c +5 -9
- data/ext/gobject-introspection/rb-gi-repository.c +1 -1
- data/ext/gobject-introspection/rb-gi-struct-info.c +2 -2
- data/test/gobject-introspection-test-utils.rb +2 -2
- data/test/run-test.rb +14 -25
- data/test/test-callable-info.rb +9 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d072b72b786e12f881fea9bde17a9eff9a4c71bedd25f4ecdd2b18267b8ba051
|
4
|
+
data.tar.gz: c9e9e78f5c492cb8fea24a1b54e05c2cedad2ec6ce877030cdb3782863340673
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a24acd65c6f1ddfe47665819bbb37c6121e2c154183c23f64512e4e6ad3b9ba52cde4f035d06754f45071afed0a3db82024efe2ceac596b3d45eeb2027d182d2
|
7
|
+
data.tar.gz: 1cdf78cd475b3401ecbd261b182b4271989600a2aef1f572e14c460fa25a84350c0c515edd301c4af7e27ad79943d9c33e24f21fa01c2d5634e7cbd9aec51d38
|
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
#
|
3
|
-
# Copyright (C) 2012-
|
3
|
+
# Copyright (C) 2012-2021 Ruby-GNOME Project Team
|
4
4
|
#
|
5
5
|
# This library is free software; you can redistribute it and/or
|
6
6
|
# modify it under the terms of the GNU Lesser General Public
|
@@ -62,9 +62,6 @@ end
|
|
62
62
|
# TODO: Remove this when we dropped support for GObject Introspection < 1.60
|
63
63
|
make_version_header("GI", package_id, ".")
|
64
64
|
|
65
|
-
gi_headers = ["girepository.h"]
|
66
|
-
have_func("g_interface_info_find_signal", gi_headers)
|
67
|
-
|
68
65
|
enum_type_prefix = "gobject-introspection-enum-types"
|
69
66
|
include_paths = PKGConfig.cflags_only_I(package_id)
|
70
67
|
headers = include_paths.split.inject([]) do |result, path|
|
@@ -682,7 +682,7 @@ rb_gi_arguments_in_init_arg_ruby_array_c_gtype(RBGIArguments *args,
|
|
682
682
|
raw_array = ALLOC_N(GType, n_elements);
|
683
683
|
for (i = 0; i < n_elements; i++) {
|
684
684
|
VALUE rb_type = RARRAY_AREF(rb_array, i);
|
685
|
-
raw_array[i] =
|
685
|
+
raw_array[i] = rbgobj_gtype_from_ruby(rb_type);
|
686
686
|
}
|
687
687
|
|
688
688
|
rb_gi_arguments_in_init_arg_ruby_array_c_generic(args,
|
@@ -1262,15 +1262,6 @@ rb_gi_arguments_in_init_arg_ruby_interface(RBGIArguments *args,
|
|
1262
1262
|
rb_gi_transfer_to_string(metadata->transfer));
|
1263
1263
|
break;
|
1264
1264
|
case GI_INFO_TYPE_STRUCT:
|
1265
|
-
if (metadata->transfer != GI_TRANSFER_NOTHING) {
|
1266
|
-
rb_raise(rb_eNotImpError,
|
1267
|
-
"TODO: [%s] %s Ruby -> GIArgument(interface)[%s][%s][%s]",
|
1268
|
-
metadata->name,
|
1269
|
-
rb_gi_direction_to_string(metadata->direction),
|
1270
|
-
g_info_type_to_string(metadata->type.interface_type),
|
1271
|
-
g_type_name(metadata->type.interface_gtype),
|
1272
|
-
rb_gi_transfer_to_string(metadata->transfer));
|
1273
|
-
}
|
1274
1265
|
metadata->free_func = rb_gi_arguments_in_free_interface_struct;
|
1275
1266
|
if (metadata->type.interface_gtype == G_TYPE_VALUE) {
|
1276
1267
|
GValue *gvalue;
|
@@ -105,10 +105,11 @@ rb_gi_arguments_out_free_array_c_interface(RBGIArguments *args,
|
|
105
105
|
case GI_TRANSFER_EVERYTHING:
|
106
106
|
default:
|
107
107
|
rb_raise(rb_eNotImpError,
|
108
|
-
"TODO: [%s] %s free GIArgument(%s)[%s]",
|
108
|
+
"TODO: [%s] %s free GIArgument(%s/%s)[%s]",
|
109
109
|
metadata->name,
|
110
110
|
rb_gi_direction_to_string(metadata->direction),
|
111
111
|
g_type_tag_to_string(metadata->type.tag),
|
112
|
+
rb_gi_array_type_to_string(metadata->array_type),
|
112
113
|
rb_gi_transfer_to_string(metadata->transfer));
|
113
114
|
}
|
114
115
|
xfree(target);
|
@@ -120,17 +121,34 @@ rb_gi_arguments_out_free_array_array_interface_struct(RBGIArguments *args,
|
|
120
121
|
gpointer user_data)
|
121
122
|
{
|
122
123
|
GArray *target = metadata->out_arg->v_pointer;
|
124
|
+
GType gtype = metadata->element_type.interface_gtype;
|
123
125
|
switch (metadata->transfer) {
|
124
126
|
case GI_TRANSFER_NOTHING:
|
125
127
|
break;
|
126
128
|
case GI_TRANSFER_CONTAINER:
|
129
|
+
break;
|
127
130
|
case GI_TRANSFER_EVERYTHING:
|
131
|
+
if (gtype == G_TYPE_NONE) {
|
132
|
+
/* If the target struct is raw (not GType-ed) struct, we
|
133
|
+
* can't know how to free fields in the target struct. We
|
134
|
+
* assume that the target struct doesn't allocate nothing
|
135
|
+
* for its fields.
|
136
|
+
*
|
137
|
+
* e.g.: The attributes out argument in
|
138
|
+
* vte_terminal_get_text_range():
|
139
|
+
* https://developer.gnome.org/vte/unstable/VteTerminal.html#vte-terminal-get-text-range
|
140
|
+
*/
|
141
|
+
break;
|
142
|
+
}
|
128
143
|
default:
|
129
144
|
rb_raise(rb_eNotImpError,
|
130
|
-
"TODO: [%s] %s free GIArgument(%s)[%s]",
|
145
|
+
"TODO: [%s] %s free GIArgument(%s/%s)[interface(%s)](%s)[%s]",
|
131
146
|
metadata->name,
|
132
147
|
rb_gi_direction_to_string(metadata->direction),
|
133
148
|
g_type_tag_to_string(metadata->type.tag),
|
149
|
+
rb_gi_array_type_to_string(metadata->array_type),
|
150
|
+
g_info_type_to_string(metadata->element_type.interface_type),
|
151
|
+
g_type_name(metadata->element_type.interface_gtype),
|
134
152
|
rb_gi_transfer_to_string(metadata->transfer));
|
135
153
|
}
|
136
154
|
g_array_free(target, TRUE);
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2012-
|
3
|
+
* Copyright (C) 2012-2021 Ruby-GNOME Project Team
|
4
4
|
*
|
5
5
|
* This library is free software; you can redistribute it and/or
|
6
6
|
* modify it under the terms of the GNU Lesser General Public
|
@@ -23,16 +23,7 @@
|
|
23
23
|
static gboolean
|
24
24
|
rb_gi_arg_info_may_be_null(GIArgInfo *arg_info)
|
25
25
|
{
|
26
|
-
#if GI_CHECK_VERSION(1, 42, 0)
|
27
26
|
return g_arg_info_may_be_null(arg_info);
|
28
|
-
#else
|
29
|
-
/*
|
30
|
-
GObject Introspection < 1.42 doesn't support "(nullable)" yet.
|
31
|
-
So, we assume that all argument may be NULL. It's danger but
|
32
|
-
convenient.
|
33
|
-
*/
|
34
|
-
return TRUE;
|
35
|
-
#endif
|
36
27
|
}
|
37
28
|
|
38
29
|
static gboolean
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2012-
|
3
|
+
* Copyright (C) 2012-2021 Ruby-GNOME Project Team
|
4
4
|
*
|
5
5
|
* This library is free software; you can redistribute it and/or
|
6
6
|
* modify it under the terms of the GNU Lesser General Public
|
@@ -125,15 +125,9 @@ rg_get_signal(VALUE self, VALUE rb_n_or_name)
|
|
125
125
|
n = NUM2INT(rb_n_or_name);
|
126
126
|
signal_info = g_interface_info_get_signal(info, n);
|
127
127
|
} else {
|
128
|
-
#ifdef HAVE_G_INTERFACE_INFO_FIND_SIGNAL
|
129
128
|
const char *name;
|
130
129
|
name = RVAL2CSTR(rb_n_or_name);
|
131
130
|
signal_info = g_interface_info_find_signal(info, name);
|
132
|
-
#else
|
133
|
-
rb_raise(rb_eArgError,
|
134
|
-
"g_interface_info_find_signal() is defined "
|
135
|
-
"since GObjectIntrospection 1.34");
|
136
|
-
#endif
|
137
131
|
}
|
138
132
|
|
139
133
|
return GI_BASE_INFO2RVAL_WITH_UNREF(signal_info);
|
@@ -39,7 +39,7 @@ rg_s_define_class(int argc, VALUE *argv, G_GNUC_UNUSED VALUE klass)
|
|
39
39
|
"size", &rb_size,
|
40
40
|
NULL);
|
41
41
|
|
42
|
-
gtype =
|
42
|
+
gtype = rbgobj_gtype_from_ruby(rb_gtype);
|
43
43
|
rb_class = G_DEF_CLASS_WITH_PARENT(gtype, RVAL2CSTR(rb_name),
|
44
44
|
rb_module, rb_parent);
|
45
45
|
if (!NIL_P(rb_size)) {
|
@@ -54,7 +54,7 @@ rg_s_define_interface(G_GNUC_UNUSED VALUE klass,
|
|
54
54
|
{
|
55
55
|
GType gtype;
|
56
56
|
|
57
|
-
gtype =
|
57
|
+
gtype = rbgobj_gtype_from_ruby(rb_gtype);
|
58
58
|
return G_DEF_INTERFACE(gtype, RVAL2CSTR(rb_name), rb_module);
|
59
59
|
}
|
60
60
|
|
@@ -133,7 +133,7 @@ rg_s_define_error(int argc, VALUE *argv, G_GNUC_UNUSED VALUE klass)
|
|
133
133
|
}
|
134
134
|
|
135
135
|
if (!NIL_P(rb_gtype)) {
|
136
|
-
gtype =
|
136
|
+
gtype = rbgobj_gtype_from_ruby(rb_gtype);
|
137
137
|
}
|
138
138
|
|
139
139
|
return G_DEF_ERROR(domain, name, rb_module, rb_parent, gtype);
|
@@ -173,12 +173,10 @@ rg_s_register_boxed_class_converter(VALUE klass, VALUE rb_gtype)
|
|
173
173
|
{
|
174
174
|
RGConvertTable table;
|
175
175
|
BoxedInstance2RObjData *data;
|
176
|
-
ID id_to_i;
|
177
176
|
VALUE boxed_class_converters;
|
178
177
|
|
179
178
|
memset(&table, 0, sizeof(RGConvertTable));
|
180
|
-
|
181
|
-
table.type = NUM2ULONG(rb_funcall(rb_gtype, id_to_i, 0));
|
179
|
+
table.type = rbgobj_gtype_from_ruby(rb_gtype);
|
182
180
|
table.klass = Qnil;
|
183
181
|
table.instance2robj = boxed_instance2robj;
|
184
182
|
|
@@ -243,12 +241,10 @@ rg_s_register_object_class_converter(VALUE klass, VALUE rb_gtype)
|
|
243
241
|
{
|
244
242
|
RGConvertTable table;
|
245
243
|
ObjectInstance2RObjData *data;
|
246
|
-
ID id_to_i;
|
247
244
|
VALUE object_class_converters;
|
248
245
|
|
249
246
|
memset(&table, 0, sizeof(RGConvertTable));
|
250
|
-
|
251
|
-
table.type = NUM2ULONG(rb_funcall(rb_gtype, id_to_i, 0));
|
247
|
+
table.type = rbgobj_gtype_from_ruby(rb_gtype);
|
252
248
|
table.klass = Qnil;
|
253
249
|
table.instance2robj = object_instance2robj;
|
254
250
|
|
@@ -228,7 +228,7 @@ rg_find(int argc, VALUE *argv, VALUE self)
|
|
228
228
|
VALUE rb_gtype;
|
229
229
|
GType gtype;
|
230
230
|
rb_gtype = argv[0];
|
231
|
-
gtype =
|
231
|
+
gtype = rbgobj_gtype_from_ruby(rb_gtype);
|
232
232
|
info = g_irepository_find_by_gtype(SELF(self), gtype);
|
233
233
|
} else {
|
234
234
|
VALUE rb_namespace, rb_name;
|
@@ -84,7 +84,7 @@ rb_gi_struct_get_raw(VALUE rb_struct, GType gtype)
|
|
84
84
|
if (rb_respond_to(rb_struct_class, rb_intern("gtype"))) {
|
85
85
|
VALUE rb_gtype;
|
86
86
|
rb_gtype = rb_funcall(rb_struct_class, rb_intern("gtype"), 0);
|
87
|
-
gtype =
|
87
|
+
gtype = rbgobj_gtype_from_ruby(rb_gtype);
|
88
88
|
}
|
89
89
|
}
|
90
90
|
if (gtype == G_TYPE_NONE) {
|
@@ -146,7 +146,7 @@ rb_gi_struct_info_to_ruby(GIStructInfo *info,
|
|
146
146
|
GType gtype;
|
147
147
|
|
148
148
|
rb_gtype = rb_funcall(rb_class, rb_intern("gtype"), 0);
|
149
|
-
gtype =
|
149
|
+
gtype = rbgobj_gtype_from_ruby(rb_gtype);
|
150
150
|
return BOXED2RVAL(object, gtype);
|
151
151
|
}
|
152
152
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2012 Ruby-
|
1
|
+
# Copyright (C) 2012-2021 Ruby-GNOME Project Team
|
2
2
|
#
|
3
3
|
# This library is free software; you can redistribute it and/or
|
4
4
|
# modify it under the terms of the GNU Lesser General Public
|
@@ -14,7 +14,7 @@
|
|
14
14
|
# License along with this library; if not, write to the Free Software
|
15
15
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
16
|
|
17
|
-
require "
|
17
|
+
require "gobject-introspection"
|
18
18
|
|
19
19
|
module GObjectIntrospectionTestUtils
|
20
20
|
def require_version(major, minor, micro)
|
data/test/run-test.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
#
|
3
|
-
# Copyright (C) 2012-
|
3
|
+
# Copyright (C) 2012-2021 Ruby-GNOME Project Team
|
4
4
|
#
|
5
5
|
# This library is free software; you can redistribute it and/or
|
6
6
|
# modify it under the terms of the GNU Lesser General Public
|
@@ -16,31 +16,20 @@
|
|
16
16
|
# License along with this library; if not, write to the Free Software
|
17
17
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
18
18
|
|
19
|
-
|
20
|
-
ruby_gnome_base = File.expand_path(ruby_gnome_base)
|
19
|
+
require_relative "../../glib2/test/run-test"
|
21
20
|
|
22
|
-
|
23
|
-
|
21
|
+
run_test(__dir__,
|
22
|
+
[
|
23
|
+
"glib2",
|
24
|
+
"gobject-introspection",
|
25
|
+
]) do |context|
|
26
|
+
require_relative "gobject-introspection-test-utils"
|
24
27
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
`make -C #{target.dump} > /dev/null` or exit(false)
|
28
|
+
begin
|
29
|
+
repository = GObjectIntrospection::Repository.default
|
30
|
+
repository.require("Gio")
|
31
|
+
rescue GObjectIntrospection::RepositoryError
|
32
|
+
puts("Omit because typelib file doesn't exist: #{$!.message}")
|
33
|
+
exit(true)
|
32
34
|
end
|
33
|
-
$LOAD_PATH.unshift(File.join(target, "ext", module_name))
|
34
|
-
$LOAD_PATH.unshift(File.join(target, "lib"))
|
35
35
|
end
|
36
|
-
|
37
|
-
$LOAD_PATH.unshift(File.join(glib_base, "test"))
|
38
|
-
require "glib-test-init"
|
39
|
-
|
40
|
-
$LOAD_PATH.unshift(File.join(gobject_introspection_base, "test"))
|
41
|
-
require "gobject-introspection-test-utils"
|
42
|
-
|
43
|
-
require "gobject-introspection"
|
44
|
-
|
45
|
-
exit Test::Unit::AutoRunner.run(true,
|
46
|
-
File.join(gobject_introspection_base, "test"))
|
data/test/test-callable-info.rb
CHANGED
@@ -32,7 +32,15 @@ class TestCallableInfo < Test::Unit::TestCase
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def test_may_return_null?
|
35
|
-
|
35
|
+
if GObjectIntrospection::Version.or_later?(1, 67, 0)
|
36
|
+
assert do
|
37
|
+
@info.may_return_null?
|
38
|
+
end
|
39
|
+
else
|
40
|
+
assert do
|
41
|
+
not @info.may_return_null?
|
42
|
+
end
|
43
|
+
end
|
36
44
|
end
|
37
45
|
|
38
46
|
def test_n_args
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gobject-introspection
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.4.
|
4
|
+
version: 3.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- The Ruby-GNOME Project Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-04-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: glib2
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 3.4.
|
19
|
+
version: 3.4.4
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 3.4.
|
26
|
+
version: 3.4.4
|
27
27
|
description: Ruby/GObjectIntrospection provides bindings of GObject Introspection
|
28
28
|
and a loader module that can generate dynamically Ruby bindings of any GObject C
|
29
29
|
libraries
|
@@ -151,7 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
requirements: []
|
154
|
-
rubygems_version: 3.
|
154
|
+
rubygems_version: 3.3.0.dev
|
155
155
|
signing_key:
|
156
156
|
specification_version: 4
|
157
157
|
summary: Ruby/GObjectIntrospection is a Ruby binding of GObject Introspection.
|