gobject-introspection 3.1.6 → 3.1.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
  SHA1:
3
- metadata.gz: 0b0cf26de448b61b4341e1ad15eb9a04ae2828f7
4
- data.tar.gz: b772a02a70a314662153c9b4a5c35c8dbdcb9c14
3
+ metadata.gz: dbc48c4c3360aba4976bfc8a8428094760921932
4
+ data.tar.gz: 9f9943b50c151c7ab28378e4844dbd39fa4083d1
5
5
  SHA512:
6
- metadata.gz: 0aa60449ae273bb766b3813b8d23158afa68cd5205551ef9c8669092b9c92582884b64e5bc5e256305b0948c0f044c9ce7eb79228779763d30c8775fb95461a2
7
- data.tar.gz: 1429323eb665721178ea9ac4d4996f5e5f22ec4ac561d9563e9a743c9be978bbd7b19114558dcfb5397b763f3b391f390d71e84acc003495c1ce307722556dd9
6
+ metadata.gz: ecd9680ce20049cd212f26b46957b6f9481890b32a29f0192d8a99d562354135d64d539a45ca4ce4967b0f5a8fcf0957ad6a2329ac7c2bff8b63cc1805cdb1f6
7
+ data.tar.gz: bcb871a0fa09f4c32faafc6b1ca77e33222c160ccfdb70c297ca11c6bb04474145f96758073632501aba2366e05c22fa44e06a459653c29c5f531f94529deea4
data/Rakefile CHANGED
@@ -32,7 +32,7 @@ package_task = GNOME2::Rake::PackageTask.new do |package|
32
32
  :name => "glib",
33
33
  :download_site => :gnome,
34
34
  :label => "GLib",
35
- :version => "2.52.1",
35
+ :version => "2.52.3",
36
36
  :compression_method => "xz",
37
37
  :windows => {
38
38
  :build => false,
@@ -37,13 +37,7 @@ $LOAD_PATH.unshift(mkmf_gnome2_dir.to_s)
37
37
  module_name = "gobject_introspection"
38
38
  package_id = "gobject-introspection-1.0"
39
39
 
40
- begin
41
- require "mkmf-gnome2"
42
- rescue LoadError
43
- require "rubygems"
44
- gem "glib2"
45
- require "mkmf-gnome2"
46
- end
40
+ require "mkmf-gnome2"
47
41
 
48
42
  ["glib2"].each do |package|
49
43
  directory = "#{package}#{version_suffix}"
@@ -210,11 +210,22 @@ array_c_to_ruby_sized(gconstpointer *elements,
210
210
  }
211
211
  break;
212
212
  case GI_TYPE_TAG_INT16:
213
+ g_base_info_unref(element_type_info);
214
+ {
215
+ const gint16 *numbers = (const gint16 *)elements;
216
+ for (i = 0; i < n_elements; i++) {
217
+ rb_ary_push(rb_array, INT2NUM(numbers[i]));
218
+ }
219
+ }
220
+ break;
213
221
  case GI_TYPE_TAG_UINT16:
214
222
  g_base_info_unref(element_type_info);
215
- rb_raise(rb_eNotImpError,
216
- "TODO: GIArgument(array)[c][%s] -> Ruby",
217
- g_type_tag_to_string(element_type_tag));
223
+ {
224
+ const guint16 *numbers = (const guint16 *)elements;
225
+ for (i = 0; i < n_elements; i++) {
226
+ rb_ary_push(rb_array, UINT2NUM(numbers[i]));
227
+ }
228
+ }
218
229
  break;
219
230
  case GI_TYPE_TAG_INT32:
220
231
  g_base_info_unref(element_type_info);
@@ -227,9 +238,12 @@ array_c_to_ruby_sized(gconstpointer *elements,
227
238
  break;
228
239
  case GI_TYPE_TAG_UINT32:
229
240
  g_base_info_unref(element_type_info);
230
- rb_raise(rb_eNotImpError,
231
- "TODO: GIArgument(array)[c][%s] -> Ruby",
232
- g_type_tag_to_string(element_type_tag));
241
+ {
242
+ const guint32 *numbers = (const guint32 *)elements;
243
+ for (i = 0; i < n_elements; i++) {
244
+ rb_ary_push(rb_array, UINT2NUM(numbers[i]));
245
+ }
246
+ }
233
247
  break;
234
248
  case GI_TYPE_TAG_INT64:
235
249
  g_base_info_unref(element_type_info);
@@ -241,8 +255,32 @@ array_c_to_ruby_sized(gconstpointer *elements,
241
255
  }
242
256
  break;
243
257
  case GI_TYPE_TAG_UINT64:
258
+ g_base_info_unref(element_type_info);
259
+ {
260
+ const guint64 *numbers = (const guint64 *)elements;
261
+ for (i = 0; i < n_elements; i++) {
262
+ rb_ary_push(rb_array, ULL2NUM(numbers[i]));
263
+ }
264
+ }
265
+ break;
244
266
  case GI_TYPE_TAG_FLOAT:
267
+ g_base_info_unref(element_type_info);
268
+ {
269
+ const gfloat *numbers = (const gfloat *)elements;
270
+ for (i = 0; i < n_elements; i++) {
271
+ rb_ary_push(rb_array, rb_float_new(numbers[i]));
272
+ }
273
+ }
274
+ break;
245
275
  case GI_TYPE_TAG_DOUBLE:
276
+ g_base_info_unref(element_type_info);
277
+ {
278
+ const gdouble *numbers = (const gdouble *)elements;
279
+ for (i = 0; i < n_elements; i++) {
280
+ rb_ary_push(rb_array, rb_float_new(numbers[i]));
281
+ }
282
+ }
283
+ break;
246
284
  case GI_TYPE_TAG_GTYPE:
247
285
  g_base_info_unref(element_type_info);
248
286
  rb_raise(rb_eNotImpError,
@@ -2364,6 +2402,83 @@ rb_gi_return_argument_free_everything_glist(GIArgument *argument,
2364
2402
  }
2365
2403
  }
2366
2404
 
2405
+ static void
2406
+ rb_gi_return_argument_free_everything_gslist_interface(GIArgument *argument,
2407
+ G_GNUC_UNUSED GITypeInfo *type_info,
2408
+ GITypeInfo *element_type_info)
2409
+ {
2410
+ GIBaseInfo *interface_info;
2411
+ GIInfoType interface_type;
2412
+ const gchar *interface_name;
2413
+ GType gtype;
2414
+
2415
+ interface_info = g_type_info_get_interface(element_type_info);
2416
+ interface_type = g_base_info_get_type(interface_info);
2417
+ interface_name = g_info_type_to_string(interface_type);
2418
+ gtype = g_registered_type_info_get_g_type(interface_info);
2419
+ g_base_info_unref(interface_info);
2420
+ g_base_info_unref(element_type_info);
2421
+
2422
+ switch (interface_type) {
2423
+ case GI_INFO_TYPE_INVALID:
2424
+ case GI_INFO_TYPE_FUNCTION:
2425
+ case GI_INFO_TYPE_CALLBACK:
2426
+ rb_raise(rb_eNotImpError,
2427
+ "TODO: free GIArgument(GSList)[interface(%s)](%s) everything",
2428
+ interface_name,
2429
+ g_type_name(gtype));
2430
+ break;
2431
+ case GI_INFO_TYPE_STRUCT:
2432
+ if (gtype == G_TYPE_NONE) {
2433
+ rb_raise(rb_eNotImpError,
2434
+ "TODO: free GIArgument(GSList)[interface(%s)](%s) everything",
2435
+ interface_name,
2436
+ g_type_name(gtype));
2437
+ } else {
2438
+ g_slist_foreach(argument->v_pointer,
2439
+ rb_gi_boxed_free_callback,
2440
+ &gtype);
2441
+ g_slist_free(argument->v_pointer);
2442
+ }
2443
+ break;
2444
+ case GI_INFO_TYPE_BOXED:
2445
+ g_slist_foreach(argument->v_pointer, rb_gi_boxed_free_callback, &gtype);
2446
+ g_slist_free(argument->v_pointer);
2447
+ break;
2448
+ case GI_INFO_TYPE_ENUM:
2449
+ case GI_INFO_TYPE_FLAGS:
2450
+ rb_raise(rb_eNotImpError,
2451
+ "TODO: free GIArgument(GSList)[interface(%s)](%s) everything",
2452
+ interface_name,
2453
+ g_type_name(gtype));
2454
+ break;
2455
+ case GI_INFO_TYPE_OBJECT:
2456
+ case GI_INFO_TYPE_INTERFACE:
2457
+ g_slist_foreach(argument->v_pointer, (GFunc)g_object_unref, NULL);
2458
+ g_slist_free(argument->v_pointer);
2459
+ break;
2460
+ case GI_INFO_TYPE_CONSTANT:
2461
+ case GI_INFO_TYPE_INVALID_0:
2462
+ case GI_INFO_TYPE_UNION:
2463
+ case GI_INFO_TYPE_VALUE:
2464
+ case GI_INFO_TYPE_SIGNAL:
2465
+ case GI_INFO_TYPE_VFUNC:
2466
+ case GI_INFO_TYPE_PROPERTY:
2467
+ case GI_INFO_TYPE_FIELD:
2468
+ case GI_INFO_TYPE_ARG:
2469
+ case GI_INFO_TYPE_TYPE:
2470
+ case GI_INFO_TYPE_UNRESOLVED:
2471
+ rb_raise(rb_eNotImpError,
2472
+ "TODO: free GIArgument(GSList)[interface(%s)](%s) everything",
2473
+ interface_name,
2474
+ g_type_name(gtype));
2475
+ break;
2476
+ default:
2477
+ g_assert_not_reached();
2478
+ break;
2479
+ }
2480
+ }
2481
+
2367
2482
  static void
2368
2483
  rb_gi_return_argument_free_everything_gslist(GIArgument *argument,
2369
2484
  GITypeInfo *type_info)
@@ -2371,9 +2486,11 @@ rb_gi_return_argument_free_everything_gslist(GIArgument *argument,
2371
2486
  GITypeInfo *element_type_info;
2372
2487
  GITypeTag element_type_tag;
2373
2488
 
2489
+ if (!argument->v_pointer)
2490
+ return;
2491
+
2374
2492
  element_type_info = g_type_info_get_param_type(type_info, 0);
2375
2493
  element_type_tag = g_type_info_get_tag(element_type_info);
2376
- g_base_info_unref(element_type_info);
2377
2494
 
2378
2495
  switch (element_type_tag) {
2379
2496
  case GI_TYPE_TAG_VOID:
@@ -2389,34 +2506,40 @@ rb_gi_return_argument_free_everything_gslist(GIArgument *argument,
2389
2506
  case GI_TYPE_TAG_FLOAT:
2390
2507
  case GI_TYPE_TAG_DOUBLE:
2391
2508
  case GI_TYPE_TAG_GTYPE:
2509
+ g_base_info_unref(element_type_info);
2392
2510
  rb_raise(rb_eNotImpError,
2393
2511
  "TODO: free GIArgument(GSList)[%s] everything",
2394
2512
  g_type_tag_to_string(element_type_tag));
2395
2513
  break;
2396
2514
  case GI_TYPE_TAG_UTF8:
2397
2515
  case GI_TYPE_TAG_FILENAME:
2516
+ g_base_info_unref(element_type_info);
2398
2517
  g_slist_foreach(argument->v_pointer, (GFunc)g_free, NULL);
2399
2518
  g_slist_free(argument->v_pointer);
2400
2519
  break;
2401
2520
  case GI_TYPE_TAG_ARRAY:
2521
+ g_base_info_unref(element_type_info);
2402
2522
  rb_raise(rb_eNotImpError,
2403
2523
  "TODO: free GIArgument(GSList)[%s] everything",
2404
2524
  g_type_tag_to_string(element_type_tag));
2405
2525
  break;
2406
2526
  case GI_TYPE_TAG_INTERFACE:
2407
- g_slist_foreach(argument->v_pointer, (GFunc)g_object_unref, NULL);
2408
- g_slist_free(argument->v_pointer);
2527
+ rb_gi_return_argument_free_everything_gslist_interface(argument,
2528
+ type_info,
2529
+ element_type_info);
2409
2530
  break;
2410
2531
  case GI_TYPE_TAG_GLIST:
2411
2532
  case GI_TYPE_TAG_GSLIST:
2412
2533
  case GI_TYPE_TAG_GHASH:
2413
2534
  case GI_TYPE_TAG_ERROR:
2414
2535
  case GI_TYPE_TAG_UNICHAR:
2536
+ g_base_info_unref(element_type_info);
2415
2537
  rb_raise(rb_eNotImpError,
2416
2538
  "TODO: free GIArgument(GSList)[%s] everything",
2417
2539
  g_type_tag_to_string(element_type_tag));
2418
2540
  break;
2419
2541
  default:
2542
+ g_base_info_unref(element_type_info);
2420
2543
  g_assert_not_reached();
2421
2544
  break;
2422
2545
  }
@@ -1400,7 +1400,10 @@ rb_gi_function_info_invoke_raw(GIFunctionInfo *info,
1400
1400
  if (NIL_P(rb_receiver)) {
1401
1401
  receiver.v_pointer = NULL;
1402
1402
  } else {
1403
- if (gobject_based_p((GIBaseInfo *)info)) {
1403
+ VALUE rb_receiver_class;
1404
+ rb_receiver_class = rb_class_of(rb_receiver);
1405
+ if (gobject_based_p((GIBaseInfo *)info) ||
1406
+ rb_respond_to(rb_receiver_class, rb_intern("gtype"))) {
1404
1407
  receiver.v_pointer = RVAL2GOBJ(rb_receiver);
1405
1408
  } else if (RVAL2CBOOL(rb_obj_is_kind_of(rb_receiver, rb_cClass)) &&
1406
1409
  rb_respond_to(rb_receiver, rb_intern("gtype"))) {
@@ -546,6 +546,7 @@ module GObjectIntrospection
546
546
  def load_method_info(info, klass, method_name)
547
547
  define_method(info, klass, method_name)
548
548
  define_equal_style_setter(info, klass, method_name)
549
+ define_inspect(info, klass, method_name)
549
550
  end
550
551
 
551
552
  def remove_existing_method(klass, method_name)
@@ -591,6 +592,14 @@ module GObjectIntrospection
591
592
  end
592
593
  end
593
594
 
595
+ def define_inspect(info, klass, method_name)
596
+ if method_name == "to_s" and info.n_args.zero?
597
+ klass.__send__(:define_method, "inspect") do ||
598
+ super().gsub(/\>\z/) {" #{to_s}>"}
599
+ end
600
+ end
601
+ end
602
+
594
603
  def load_function_infos(infos, klass)
595
604
  infos.each do |info|
596
605
  name = rubyish_method_name(info)
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.1.6
4
+ version: 3.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Ruby-GNOME2 Project Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-03 00:00:00.000000000 Z
11
+ date: 2017-07-10 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.1.6
19
+ version: 3.1.7
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.1.6
26
+ version: 3.1.7
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: test-unit
29
29
  requirement: !ruby/object:Gem::Requirement