gobject-introspection 4.2.2 → 4.2.7

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: 5c61aee26486f30c6b35b119b1c35201c2685e48c7dd9a98dd5aebd72909be13
4
- data.tar.gz: e980ad964b3a3318743e893e0c7a22ba94070f4c4735b023fe7dec75e1dca24e
3
+ metadata.gz: 56c0dd8e60b55f1e3266c0de7f57f485f85e70e5ade87dccdc59c9197dcfbc0a
4
+ data.tar.gz: 37d13858c25e07f365468b479e830b9f925920a6991845fbfdde0aaef3330517
5
5
  SHA512:
6
- metadata.gz: 4e52bda34bc55b6bdd093038cd315e4c7cce19daf165a0e2e72f0848d867786e4120002b456f58c53767c1d82ce6338f82a87ca4516a7a168c85e2bc46c617cc
7
- data.tar.gz: 961ff4d28666a403b7c6465e7e8b66f02bcb2e04b38ceea9343d1a16883afc7a78ed77c50cf77ff99a0f7092228ac411ea54338e09f3b00c4a6d89214de41c97
6
+ metadata.gz: 3e37700bb0c08a31f0df8833a2ca4e8328d029fdcd1dc9bb5849c499f38b666f2c9a7fad8bc05f7cc721df6349658299fe37e613bce0a37c1860026ac9ea5845
7
+ data.tar.gz: 0af1bbeb5bfc6b56a2072fc6c597829be6516a5975a4dcdaeed966a557080312939158460454d7ff5542f719c0ae067c9f5fda48a794a9d6129b6fb705bb6b2c
data/README.md CHANGED
@@ -5,7 +5,7 @@ Ruby/GObjectIntrospection is a Ruby binding of GObject Introspect.
5
5
  ## Requirements
6
6
 
7
7
  * Ruby/GLib2 in
8
- [Ruby-GNOME2](https://ruby-gnome2.osdn.jp/)
8
+ [Ruby-GNOME2](https://ruby-gnome.github.io/)
9
9
  * [GObject Introspection](http://live.gnome.org/GObjectIntrospection)
10
10
 
11
11
  ## Install
@@ -21,4 +21,4 @@ under the terms of the GNU LESSER GENERAL PUBLIC LICENSE Version 2.1.
21
21
 
22
22
  ## Project Website
23
23
 
24
- https://ruby-gnome2.osdn.jp/
24
+ https://ruby-gnome.github.io/
data/Rakefile CHANGED
@@ -17,10 +17,10 @@
17
17
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
18
 
19
19
  $LOAD_PATH.unshift("./../glib2/lib")
20
- require "gnome2/rake/package-task"
20
+ require "gnome/rake/package-task"
21
21
 
22
22
  package_name = File.basename(__dir__)
23
23
  spec = Gem::Specification.load("#{package_name}.gemspec")
24
24
 
25
- GNOME2::Rake::PackageTask.define(spec, __dir__) do |package|
25
+ GNOME::Rake::PackageTask.define(spec, __dir__) do |package|
26
26
  end
@@ -103,14 +103,20 @@ rb_gi_arguments_out_free_array_c_interface(RBGIArguments *args,
103
103
  g_free(*target);
104
104
  break;
105
105
  case GI_TRANSFER_EVERYTHING:
106
- default:
107
- rb_raise(rb_eNotImpError,
108
- "TODO: [%s] %s free GIArgument(%s/%s)[%s]",
109
- metadata->name,
110
- rb_gi_direction_to_string(metadata->direction),
111
- g_type_tag_to_string(metadata->type.tag),
112
- rb_gi_array_type_to_string(metadata->array_type),
113
- rb_gi_transfer_to_string(metadata->transfer));
106
+ if (metadata->element_type.interface_gtype == G_TYPE_NONE) {
107
+ /* This assumes that this memory was allocated by
108
+ * g_new0(MyStruct, n). */
109
+ g_free(*target);
110
+ } else {
111
+ rb_raise(rb_eNotImpError,
112
+ "TODO: [%s] %s free GIArgument(%s/%s)[%s]",
113
+ metadata->name,
114
+ rb_gi_direction_to_string(metadata->direction),
115
+ g_type_tag_to_string(metadata->type.tag),
116
+ rb_gi_array_type_to_string(metadata->array_type),
117
+ rb_gi_transfer_to_string(metadata->transfer));
118
+ }
119
+ break;
114
120
  }
115
121
  xfree(target);
116
122
  }
@@ -337,6 +343,7 @@ rb_gi_arguments_out_init_arg_array_c(RBGIArguments *args,
337
343
  break;
338
344
  case GI_TYPE_TAG_UTF8:
339
345
  argument->v_pointer = ALLOC(gchar **);
346
+ *((gchar **)(argument->v_pointer)) = NULL;
340
347
  metadata->free_func = rb_gi_arguments_out_free_array_c_string;
341
348
  break;
342
349
  case GI_TYPE_TAG_FILENAME:
@@ -349,6 +356,7 @@ rb_gi_arguments_out_init_arg_array_c(RBGIArguments *args,
349
356
  break;
350
357
  case GI_TYPE_TAG_INTERFACE:
351
358
  argument->v_pointer = ALLOC(gpointer *);
359
+ *((gpointer *)(argument->v_pointer)) = NULL;
352
360
  metadata->free_func = rb_gi_arguments_out_free_array_c_interface;
353
361
  break;
354
362
  case GI_TYPE_TAG_GLIST:
@@ -1,6 +1,6 @@
1
1
  /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
2
  /*
3
- * Copyright (C) 2012-2022 Ruby-GNOME Project Team
3
+ * Copyright (C) 2012-2024 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
@@ -602,6 +602,12 @@ rb_gi_arguments_convert_arg_interface_body(VALUE user_data)
602
602
  }
603
603
  case GI_INFO_TYPE_OBJECT:
604
604
  case GI_INFO_TYPE_INTERFACE:
605
+ if (!G_IS_OBJECT(data->arg->v_pointer)) {
606
+ GIObjectInfoRefFunction ref = g_object_info_get_ref_function_pointer(data->arg_metadata->type.interface_info);
607
+ if (ref) {
608
+ ref(data->arg->v_pointer);
609
+ }
610
+ }
605
611
  return GOBJ2RVAL(data->arg->v_pointer);
606
612
  case GI_INFO_TYPE_CONSTANT:
607
613
  rb_raise(rb_eNotImpError,
@@ -683,10 +689,10 @@ rb_gi_arguments_convert_arg_array_like_ensure(VALUE user_data)
683
689
  return Qnil;
684
690
  }
685
691
 
686
- static gint64
687
- rb_gi_arguments_convert_arg_array_body_extract_length(GIArgument *arg,
688
- RBGIArgMetadata *metadata,
689
- gboolean is_pointer)
692
+ gint64
693
+ rb_gi_argument_out_array_get_length(GIArgument *arg,
694
+ RBGIArgMetadata *metadata,
695
+ gboolean is_pointer)
690
696
  {
691
697
  switch (metadata->type.tag) {
692
698
  case GI_TYPE_TAG_VOID:
@@ -697,49 +703,49 @@ rb_gi_arguments_convert_arg_array_body_extract_length(GIArgument *arg,
697
703
  return -1;
698
704
  case GI_TYPE_TAG_INT8:
699
705
  if (is_pointer) {
700
- return *((gint8 *)arg->v_pointer);
706
+ return *((gint8 *)(arg->v_pointer));
701
707
  } else {
702
708
  return arg->v_int8;
703
709
  }
704
710
  case GI_TYPE_TAG_UINT8:
705
711
  if (is_pointer) {
706
- return *((guint8 *)arg->v_pointer);
712
+ return *((guint8 *)(arg->v_pointer));
707
713
  } else {
708
714
  return arg->v_uint8;
709
715
  }
710
716
  case GI_TYPE_TAG_INT16:
711
717
  if (is_pointer) {
712
- return *((gint16 *)arg->v_pointer);
718
+ return *((gint16 *)(arg->v_pointer));
713
719
  } else {
714
720
  return arg->v_int16;
715
721
  }
716
722
  case GI_TYPE_TAG_UINT16:
717
723
  if (is_pointer) {
718
- return *((guint16 *)arg->v_pointer);
724
+ return *((guint16 *)(arg->v_pointer));
719
725
  } else {
720
726
  return arg->v_uint16;
721
727
  }
722
728
  case GI_TYPE_TAG_INT32:
723
729
  if (is_pointer) {
724
- return *((gint32 *)arg->v_pointer);
730
+ return *((gint32 *)(arg->v_pointer));
725
731
  } else {
726
732
  return arg->v_int32;
727
733
  }
728
734
  case GI_TYPE_TAG_UINT32:
729
735
  if (is_pointer) {
730
- return *((guint32 *)arg->v_pointer);
736
+ return *((guint32 *)(arg->v_pointer));
731
737
  } else {
732
738
  return arg->v_uint32;
733
739
  }
734
740
  case GI_TYPE_TAG_INT64:
735
741
  if (is_pointer) {
736
- return *((gint64 *)arg->v_pointer);
742
+ return *((gint64 *)(arg->v_pointer));
737
743
  } else {
738
744
  return arg->v_int64;
739
745
  }
740
746
  case GI_TYPE_TAG_UINT64:
741
747
  if (is_pointer) {
742
- return *((guint64 *)arg->v_pointer);
748
+ return *((guint64 *)(arg->v_pointer));
743
749
  } else {
744
750
  return arg->v_uint64;
745
751
  }
@@ -789,10 +795,9 @@ rb_gi_arguments_convert_arg_array_body_get_length(ArrayLikeToRubyData *data)
789
795
  data->arg_metadata->struct_info,
790
796
  data->arg_metadata->struct_memory);
791
797
  int64_t length =
792
- rb_gi_arguments_convert_arg_array_body_extract_length(
793
- &value,
794
- &length_metadata,
795
- FALSE);
798
+ rb_gi_argument_out_array_get_length(&value,
799
+ &length_metadata,
800
+ FALSE);
796
801
  /* TODO: Use ensure */
797
802
  rb_gi_arg_metadata_clear(&length_metadata);
798
803
  g_base_info_unref(field_info);
@@ -816,20 +821,16 @@ rb_gi_arguments_convert_arg_array_body_get_length(ArrayLikeToRubyData *data)
816
821
  gboolean is_pointer =
817
822
  !(length_metadata->array_metadata &&
818
823
  length_metadata->array_metadata->output_buffer_p);
819
- return
820
- rb_gi_arguments_convert_arg_array_body_extract_length(
821
- length_arg,
822
- length_metadata,
823
- is_pointer);
824
+ return rb_gi_argument_out_array_get_length(length_arg,
825
+ length_metadata,
826
+ is_pointer);
824
827
  } else {
825
828
  length_arg = &g_array_index(data->args->in_args,
826
829
  GIArgument,
827
830
  length_metadata->in_arg_index);
828
- return
829
- rb_gi_arguments_convert_arg_array_body_extract_length(
830
- length_arg,
831
- length_metadata,
832
- FALSE);
831
+ return rb_gi_argument_out_array_get_length(length_arg,
832
+ length_metadata,
833
+ FALSE);
833
834
  }
834
835
  }
835
836
 
@@ -1105,26 +1106,116 @@ static VALUE
1105
1106
  rb_gi_arguments_convert_arg_array_body_c_fixed_size(ArrayLikeToRubyData *data,
1106
1107
  gint fixed_size)
1107
1108
  {
1108
- const char *array_c_type = "[fixed-size]";
1109
+ const char *array_c_type = "fixed-size";
1109
1110
  switch (data->element_type_tag) {
1110
1111
  case GI_TYPE_TAG_VOID:
1111
1112
  case GI_TYPE_TAG_BOOLEAN:
1113
+ rb_raise(rb_eNotImpError,
1114
+ "TODO: GIArgument(array)[c][%s][%s] -> Ruby",
1115
+ array_c_type,
1116
+ g_type_tag_to_string(data->element_type_tag));
1117
+ return Qnil;
1112
1118
  case GI_TYPE_TAG_INT8:
1119
+ {
1120
+ gint8 *array = (gint8 *)(data->arg->v_pointer);
1121
+ VALUE rb_array = rb_ary_new_capa(fixed_size);
1122
+ gint i;
1123
+ for (i = 0; i < fixed_size; i++) {
1124
+ rb_ary_push(rb_array, RB_INT2NUM(array[i]));
1125
+ }
1126
+ return rb_array;
1127
+ }
1113
1128
  case GI_TYPE_TAG_UINT8:
1129
+ {
1130
+ guint8 *array = (guint8 *)(data->arg->v_pointer);
1131
+ VALUE rb_array = rb_ary_new_capa(fixed_size);
1132
+ gint i;
1133
+ for (i = 0; i < fixed_size; i++) {
1134
+ rb_ary_push(rb_array, RB_UINT2NUM(array[i]));
1135
+ }
1136
+ return rb_array;
1137
+ }
1114
1138
  case GI_TYPE_TAG_INT16:
1139
+ {
1140
+ gint16 *array = (gint16 *)(data->arg->v_pointer);
1141
+ VALUE rb_array = rb_ary_new_capa(fixed_size);
1142
+ gint i;
1143
+ for (i = 0; i < fixed_size; i++) {
1144
+ rb_ary_push(rb_array, RB_INT2NUM(array[i]));
1145
+ }
1146
+ return rb_array;
1147
+ }
1115
1148
  case GI_TYPE_TAG_UINT16:
1149
+ {
1150
+ guint16 *array = (guint16 *)(data->arg->v_pointer);
1151
+ VALUE rb_array = rb_ary_new_capa(fixed_size);
1152
+ gint i;
1153
+ for (i = 0; i < fixed_size; i++) {
1154
+ rb_ary_push(rb_array, RB_UINT2NUM(array[i]));
1155
+ }
1156
+ return rb_array;
1157
+ }
1116
1158
  case GI_TYPE_TAG_INT32:
1159
+ {
1160
+ gint32 *array = (gint32 *)(data->arg->v_pointer);
1161
+ VALUE rb_array = rb_ary_new_capa(fixed_size);
1162
+ gint i;
1163
+ for (i = 0; i < fixed_size; i++) {
1164
+ rb_ary_push(rb_array, RB_INT2NUM(array[i]));
1165
+ }
1166
+ return rb_array;
1167
+ }
1117
1168
  case GI_TYPE_TAG_UINT32:
1169
+ {
1170
+ guint32 *array = (guint32 *)(data->arg->v_pointer);
1171
+ VALUE rb_array = rb_ary_new_capa(fixed_size);
1172
+ gint i;
1173
+ for (i = 0; i < fixed_size; i++) {
1174
+ rb_ary_push(rb_array, RB_UINT2NUM(array[i]));
1175
+ }
1176
+ return rb_array;
1177
+ }
1118
1178
  case GI_TYPE_TAG_INT64:
1179
+ {
1180
+ gint64 *array = (gint64 *)(data->arg->v_pointer);
1181
+ VALUE rb_array = rb_ary_new_capa(fixed_size);
1182
+ gint i;
1183
+ for (i = 0; i < fixed_size; i++) {
1184
+ rb_ary_push(rb_array, RB_LL2NUM(array[i]));
1185
+ }
1186
+ return rb_array;
1187
+ }
1119
1188
  case GI_TYPE_TAG_UINT64:
1189
+ {
1190
+ guint64 *array = (guint64 *)(data->arg->v_pointer);
1191
+ VALUE rb_array = rb_ary_new_capa(fixed_size);
1192
+ gint i;
1193
+ for (i = 0; i < fixed_size; i++) {
1194
+ rb_ary_push(rb_array, RB_ULL2NUM(array[i]));
1195
+ }
1196
+ return rb_array;
1197
+ }
1120
1198
  case GI_TYPE_TAG_FLOAT:
1199
+ {
1200
+ float *array = (float *)(data->arg->v_pointer);
1201
+ VALUE rb_array = rb_ary_new_capa(fixed_size);
1202
+ gint i;
1203
+ for (i = 0; i < fixed_size; i++) {
1204
+ rb_ary_push(rb_array, rb_float_new(array[i]));
1205
+ }
1206
+ return rb_array;
1207
+ }
1121
1208
  case GI_TYPE_TAG_DOUBLE:
1209
+ {
1210
+ double *array = (double *)(data->arg->v_pointer);
1211
+ VALUE rb_array = rb_ary_new_capa(fixed_size);
1212
+ gint i;
1213
+ for (i = 0; i < fixed_size; i++) {
1214
+ rb_ary_push(rb_array, rb_float_new(array[i]));
1215
+ }
1216
+ return rb_array;
1217
+ }
1122
1218
  case GI_TYPE_TAG_GTYPE:
1123
- rb_raise(rb_eNotImpError,
1124
- "TODO: GIArgument(array)[c][%s][%s] -> Ruby",
1125
- array_c_type,
1126
- g_type_tag_to_string(data->element_type_tag));
1127
- return Qnil;
1128
1219
  case GI_TYPE_TAG_UTF8:
1129
1220
  case GI_TYPE_TAG_FILENAME:
1130
1221
  case GI_TYPE_TAG_ARRAY:
@@ -1764,6 +1855,10 @@ rb_gi_arguments_convert_arg_ghash(RBGIArguments *args,
1764
1855
  GIArgument *arg,
1765
1856
  RBGIArgMetadata *arg_metadata)
1766
1857
  {
1858
+ if (arg_metadata->may_be_null_p && !arg->v_pointer) {
1859
+ return Qnil;
1860
+ }
1861
+
1767
1862
  GHashToRubyData data;
1768
1863
 
1769
1864
  data.args = args;
@@ -2059,10 +2154,17 @@ rb_gi_arguments_convert_return_value_free_everything_interface(
2059
2154
  case GI_INFO_TYPE_OBJECT:
2060
2155
  {
2061
2156
  GObject *object = data->value->v_pointer;
2062
- if (g_object_is_floating(object)) {
2063
- g_object_ref_sink(object);
2157
+ if (G_IS_OBJECT(object)) {
2158
+ if (g_object_is_floating(object)) {
2159
+ g_object_ref_sink(object);
2160
+ }
2161
+ g_object_unref(object);
2162
+ } else {
2163
+ GIObjectInfoUnrefFunction unref = g_object_info_get_unref_function_pointer(data->metadata->type.interface_info);
2164
+ if (unref) {
2165
+ unref(object);
2166
+ }
2064
2167
  }
2065
- g_object_unref(object);
2066
2168
  }
2067
2169
  break;
2068
2170
  case GI_INFO_TYPE_INTERFACE:
@@ -2374,6 +2476,8 @@ rb_gi_arguments_convert_return_value_free_everything(ReturnValueToRubyData *data
2374
2476
  case GI_TYPE_TAG_UINT64:
2375
2477
  case GI_TYPE_TAG_FLOAT:
2376
2478
  case GI_TYPE_TAG_DOUBLE:
2479
+ /* We need to do nothing. */
2480
+ break;
2377
2481
  case GI_TYPE_TAG_GTYPE:
2378
2482
  rb_raise(rb_eNotImpError,
2379
2483
  "TODO: free GIArgument(%s) everything",
@@ -2858,12 +2962,21 @@ rb_gi_arguments_fill_raw_result(RBGIArguments *args,
2858
2962
  gpointer raw_result,
2859
2963
  GITypeInfo *type_info,
2860
2964
  GITransfer transfer,
2965
+ gboolean may_return_null,
2861
2966
  gboolean is_return_value)
2862
2967
  {
2863
2968
  GIFFIReturnValue *ffi_return_value = raw_result;
2864
- GITypeTag type_tag;
2865
2969
 
2866
- type_tag = g_type_info_get_tag(type_info);
2970
+ if (may_return_null && RB_NIL_P(rb_result)) {
2971
+ if (is_return_value) {
2972
+ ffi_return_value->v_pointer = NULL;
2973
+ } else {
2974
+ *((gpointer *)raw_result) = NULL;
2975
+ }
2976
+ return;
2977
+ }
2978
+
2979
+ GITypeTag type_tag = g_type_info_get_tag(type_info);
2867
2980
  switch (type_tag) {
2868
2981
  case GI_TYPE_TAG_VOID:
2869
2982
  g_assert_not_reached();
@@ -3044,8 +3157,8 @@ rb_gi_arguments_fill_raw_results(RBGIArguments *args,
3044
3157
  return_type_info = g_callable_info_get_return_type(args->info);
3045
3158
  return_type_tag = g_type_info_get_tag(return_type_info);
3046
3159
  if (return_type_tag != GI_TYPE_TAG_VOID) {
3047
- GITransfer transfer;
3048
- transfer = g_callable_info_get_caller_owns(args->info);
3160
+ GITransfer transfer = g_callable_info_get_caller_owns(args->info);
3161
+ gboolean may_return_null = g_callable_info_may_return_null(args->info);
3049
3162
  if (args->out_args->len == 0) {
3050
3163
  VALUE rb_return_value = rb_results;
3051
3164
  rb_gi_arguments_fill_raw_result(args,
@@ -3053,6 +3166,7 @@ rb_gi_arguments_fill_raw_results(RBGIArguments *args,
3053
3166
  raw_return_value,
3054
3167
  return_type_info,
3055
3168
  transfer,
3169
+ may_return_null,
3056
3170
  TRUE);
3057
3171
  } else {
3058
3172
  VALUE rb_return_value;
@@ -3067,6 +3181,7 @@ rb_gi_arguments_fill_raw_results(RBGIArguments *args,
3067
3181
  raw_return_value,
3068
3182
  return_type_info,
3069
3183
  transfer,
3184
+ may_return_null,
3070
3185
  TRUE);
3071
3186
  }
3072
3187
  }
@@ -3106,6 +3221,7 @@ rb_gi_arguments_fill_raw_results(RBGIArguments *args,
3106
3221
  argument->v_pointer,
3107
3222
  type_info,
3108
3223
  transfer,
3224
+ metadata->may_be_null_p,
3109
3225
  FALSE);
3110
3226
  g_base_info_unref(type_info);
3111
3227
  }
@@ -56,7 +56,8 @@ initialize_receiver(VALUE receiver,
56
56
  switch (interface_type) {
57
57
  case GI_INFO_TYPE_OBJECT:
58
58
  G_INITIALIZE(receiver, value->v_pointer);
59
- {
59
+ /* GTypeInstance * is also GI_INFO_TYPE_OBJECT. */
60
+ if (G_IS_OBJECT(value->v_pointer)) {
60
61
  gboolean was_floating;
61
62
  was_floating = g_object_is_floating(value->v_pointer);
62
63
  g_object_ref_sink(value->v_pointer);
@@ -101,6 +101,11 @@ rb_gi_arg_metadata_clear(RBGIArgMetadata *metadata);
101
101
  G_GNUC_INTERNAL void
102
102
  rb_gi_arg_metadata_free(RBGIArgMetadata *metadata);
103
103
 
104
+ G_GNUC_INTERNAL gint64
105
+ rb_gi_argument_out_array_get_length(GIArgument *arg,
106
+ RBGIArgMetadata *metadata,
107
+ gboolean is_pointer);
108
+
104
109
  G_GNUC_INTERNAL void
105
110
  rb_gi_arguments_init(RBGIArguments *args,
106
111
  GICallableInfo *info,
@@ -29,7 +29,7 @@ Gem::Specification.new do |s|
29
29
  "of any GObject C libraries"
30
30
  s.author = "The Ruby-GNOME Project Team"
31
31
  s.email = "ruby-gnome2-devel-en@lists.sourceforge.net"
32
- s.homepage = "https://ruby-gnome2.osdn.jp/"
32
+ s.homepage = "https://ruby-gnome.github.io/"
33
33
  s.licenses = ["LGPL-2.1+"]
34
34
  s.version = ruby_glib2_version
35
35
  s.extensions = ["ext/#{s.name}/extconf.rb"]
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2012-2023 Ruby-GNOME Project Team
1
+ # Copyright (C) 2012-2024 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
@@ -83,10 +83,12 @@ module GObjectIntrospection
83
83
  def load_function_info(info)
84
84
  name = rubyish_method_name(info)
85
85
  define_singleton_method(info, @base_module, name)
86
+ define_equal_style_setter(info, @base_module.singleton_class, name)
86
87
  end
87
88
 
88
89
  def load_function_info_singleton_method(info, klass, method_name)
89
90
  define_singleton_method(info, klass, method_name)
91
+ define_equal_style_setter(info, klass.singleton_class, method_name)
90
92
  end
91
93
 
92
94
  def define_module_function(function_info, target_module, name)
@@ -185,8 +187,8 @@ module GObjectIntrospection
185
187
  # TODO: Can we do the same things for flags on NONE GType?
186
188
  return if info.gtype == GLib::Type::NONE
187
189
  klass = self.class.define_class(info.gtype,
188
- rubyish_class_name(info),
189
- @base_module)
190
+ rubyish_class_name(info),
191
+ @base_module)
190
192
  prepare_class(klass) do
191
193
  load_methods(info, klass)
192
194
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gobject-introspection
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.2
4
+ version: 4.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Ruby-GNOME Project Team
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2024-04-02 00:00:00.000000000 Z
10
+ date: 2025-01-28 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: glib2
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 4.2.2
18
+ version: 4.2.7
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - '='
24
24
  - !ruby/object:Gem::Version
25
- version: 4.2.2
25
+ version: 4.2.7
26
26
  description: Ruby/GObjectIntrospection provides bindings of GObject Introspection
27
27
  and a loader module that can generate dynamically Ruby bindings of any GObject C
28
28
  libraries
@@ -129,7 +129,7 @@ files:
129
129
  - test/test-value-info.rb
130
130
  - test/test-version.rb
131
131
  - test/test-vfunc-info.rb
132
- homepage: https://ruby-gnome2.osdn.jp/
132
+ homepage: https://ruby-gnome.github.io/
133
133
  licenses:
134
134
  - LGPL-2.1+
135
135
  metadata:
@@ -148,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
148
  - !ruby/object:Gem::Version
149
149
  version: '0'
150
150
  requirements: []
151
- rubygems_version: 3.6.0.dev
151
+ rubygems_version: 3.6.2
152
152
  specification_version: 4
153
153
  summary: Ruby/GObjectIntrospection is a Ruby binding of GObject Introspection.
154
154
  test_files: []