gobject-introspection 3.4.0 → 3.4.1
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a4a0dcd42cc81ede7f2bf23f3c89249bdf37da5dc5ee5bf930638d7d087d6f79
|
4
|
+
data.tar.gz: 9fa9fcc1b10c554343c74f2d52c96713c1dec9b23f4f1243303731f29164a20d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '07637212088a8b3d07a699ee08367a40a4d403be2da5b00e3be860bd08512f4b8c072fe616974ab2cd7956e3f7832dcbc5c6f0b6de5444e24ea66469496ea313'
|
7
|
+
data.tar.gz: 6bbcab430782dec0a33411d26f98335c0a5bc91c96f680ccf84407c78eb0b26f5fc43db608c3980c26d171983d89aa2d69d29c761ffb135bb90b345b424f479d
|
@@ -120,7 +120,7 @@ rb_gi_ffi_closure_callback(G_GNUC_UNUSED ffi_cif *cif,
|
|
120
120
|
i = args.metadata->len - 1;
|
121
121
|
metadata = g_ptr_array_index(args.metadata, i);
|
122
122
|
if (metadata->type.tag == GI_TYPE_TAG_VOID &&
|
123
|
-
metadata->pointer_p &&
|
123
|
+
metadata->type.pointer_p &&
|
124
124
|
strcmp(metadata->name, "data") == 0) {
|
125
125
|
callback_data = *((RBGICallbackData **)(raw_args[i]));
|
126
126
|
}
|
@@ -721,26 +721,50 @@ rb_gi_arguments_in_init_arg_ruby_array_c_interface_struct(RBGIArguments *args,
|
|
721
721
|
{
|
722
722
|
GIStructInfo *struct_info =
|
723
723
|
(GIStructInfo *)(metadata->element_type.interface_info);
|
724
|
-
guint8 *raw_array;
|
725
|
-
gsize struct_size;
|
726
724
|
long i, n_elements;
|
727
725
|
|
728
726
|
n_elements = RARRAY_LEN(rb_array);
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
|
736
|
-
|
737
|
-
|
727
|
+
if (metadata->element_type.pointer_p) {
|
728
|
+
if (metadata->transfer != GI_TRANSFER_NOTHING) {
|
729
|
+
rb_raise(rb_eNotImpError,
|
730
|
+
"TODO: [%s::%s] %s "
|
731
|
+
"Ruby -> GIArgument(array/%s)[interface(%s)](%s)[%s]",
|
732
|
+
args->name,
|
733
|
+
metadata->name,
|
734
|
+
rb_gi_direction_to_string(metadata->direction),
|
735
|
+
rb_gi_array_type_to_string(metadata->array_type),
|
736
|
+
g_info_type_to_string(metadata->element_type.interface_type),
|
737
|
+
g_type_name(metadata->element_type.interface_gtype),
|
738
|
+
rb_gi_transfer_to_string(metadata->transfer));
|
739
|
+
}
|
740
|
+
gpointer *raw_array = ALLOC_N(gpointer, n_elements);
|
741
|
+
for (i = 0; i < n_elements; i++) {
|
742
|
+
VALUE rb_element = RARRAY_AREF(rb_array, i);
|
743
|
+
gpointer element;
|
744
|
+
element = rb_gi_struct_info_from_ruby(struct_info, rb_element);
|
745
|
+
raw_array[i] = element;
|
746
|
+
}
|
747
|
+
rb_gi_arguments_in_init_arg_ruby_array_c_generic(args,
|
748
|
+
metadata,
|
749
|
+
rb_array,
|
750
|
+
raw_array);
|
751
|
+
} else {
|
752
|
+
gsize struct_size = g_struct_info_get_size(struct_info);
|
753
|
+
guint8 *raw_array = ALLOC_N(guint8, struct_size * n_elements);
|
754
|
+
for (i = 0; i < n_elements; i++) {
|
755
|
+
VALUE rb_element = RARRAY_AREF(rb_array, i);
|
756
|
+
gpointer element;
|
757
|
+
element = rb_gi_struct_info_from_ruby(struct_info, rb_element);
|
758
|
+
memcpy(raw_array + (struct_size * i),
|
759
|
+
element,
|
760
|
+
struct_size);
|
761
|
+
}
|
762
|
+
rb_gi_arguments_in_init_arg_ruby_array_c_generic(args,
|
763
|
+
metadata,
|
764
|
+
rb_array,
|
765
|
+
raw_array);
|
738
766
|
}
|
739
767
|
|
740
|
-
rb_gi_arguments_in_init_arg_ruby_array_c_generic(args,
|
741
|
-
metadata,
|
742
|
-
rb_array,
|
743
|
-
raw_array);
|
744
768
|
metadata->free_func = rb_gi_arguments_in_free_array_c_interface_struct;
|
745
769
|
}
|
746
770
|
|
@@ -584,7 +584,7 @@ rb_gi_arguments_out_init_arg(RBGIArguments *args,
|
|
584
584
|
memset(argument, 0, sizeof(GIArgument));
|
585
585
|
switch (metadata->type.tag) {
|
586
586
|
case GI_TYPE_TAG_VOID:
|
587
|
-
if (metadata->pointer_p) {
|
587
|
+
if (metadata->type.pointer_p) {
|
588
588
|
gpointer *pointer = ALLOC(gpointer);
|
589
589
|
*pointer = NULL;
|
590
590
|
argument->v_pointer = pointer;
|
@@ -800,7 +800,7 @@ rb_gi_arguments_out_to_ruby_arg(RBGIArguments *args,
|
|
800
800
|
memset(&normalized_argument, 0, sizeof(GIArgument));
|
801
801
|
switch (metadata->type.tag) {
|
802
802
|
case GI_TYPE_TAG_VOID:
|
803
|
-
if (metadata->pointer_p) {
|
803
|
+
if (metadata->type.pointer_p) {
|
804
804
|
normalized_argument.v_pointer = *((gpointer *)(argument->v_pointer));
|
805
805
|
}
|
806
806
|
break;
|
@@ -57,12 +57,14 @@ rb_gi_arg_metadata_type_init(RBGIArgMetadataType *type,
|
|
57
57
|
GITypeInfo *type_info)
|
58
58
|
{
|
59
59
|
type->info = type_info;
|
60
|
+
type->pointer_p = FALSE;
|
60
61
|
type->tag = GI_TYPE_TAG_VOID;
|
61
62
|
type->interface_info = NULL;
|
62
63
|
type->interface_type = GI_INFO_TYPE_INVALID;
|
63
64
|
type->interface_gtype = G_TYPE_INVALID;
|
64
65
|
|
65
66
|
if (type->info) {
|
67
|
+
type->pointer_p = g_type_info_is_pointer(type->info);
|
66
68
|
type->tag = g_type_info_get_tag(type->info);
|
67
69
|
}
|
68
70
|
if (type->tag == GI_TYPE_TAG_INTERFACE) {
|
@@ -114,7 +116,6 @@ rb_gi_arg_metadata_new(GICallableInfo *callable_info, gint i)
|
|
114
116
|
metadata->array_p = (metadata->type.tag == GI_TYPE_TAG_ARRAY);
|
115
117
|
metadata->array_length_p = FALSE;
|
116
118
|
metadata->may_be_null_p = rb_gi_arg_info_may_be_null(arg_info);
|
117
|
-
metadata->pointer_p = g_type_info_is_pointer(type_info);
|
118
119
|
metadata->caller_allocates_p = g_arg_info_is_caller_allocates(arg_info);
|
119
120
|
metadata->zero_terminated_p = FALSE;
|
120
121
|
metadata->output_buffer_p = rb_gi_arg_info_is_output_buffer(arg_info);
|
@@ -40,6 +40,7 @@ typedef void (*RBGIArgFreeFunc)(RBGIArguments *args,
|
|
40
40
|
|
41
41
|
typedef struct {
|
42
42
|
GITypeInfo *info;
|
43
|
+
gboolean pointer_p;
|
43
44
|
GITypeTag tag;
|
44
45
|
GIBaseInfo *interface_info;
|
45
46
|
GIInfoType interface_type;
|
@@ -64,7 +65,6 @@ struct RBGIArgMetadata_ {
|
|
64
65
|
gboolean array_length_p;
|
65
66
|
gboolean interface_p;
|
66
67
|
gboolean may_be_null_p;
|
67
|
-
gboolean pointer_p;
|
68
68
|
gboolean caller_allocates_p;
|
69
69
|
gboolean zero_terminated_p;
|
70
70
|
gboolean output_buffer_p;
|
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.1
|
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: 2019-10-
|
11
|
+
date: 2019-10-16 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.1
|
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.1
|
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
|
@@ -154,7 +154,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
154
154
|
- !ruby/object:Gem::Version
|
155
155
|
version: '0'
|
156
156
|
requirements: []
|
157
|
-
|
157
|
+
rubyforge_project:
|
158
|
+
rubygems_version: 2.7.6.2
|
158
159
|
signing_key:
|
159
160
|
specification_version: 4
|
160
161
|
summary: Ruby/GObjectIntrospection is a Ruby binding of GObject Introspection.
|