gobject-introspection 3.0.8-x64-mingw32 → 3.0.9-x64-mingw32

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.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +1 -1
  3. data/ext/gobject-introspection/rb-gi-argument.c +91 -4
  4. data/ext/gobject-introspection/rb-gi-function-info.c +27 -3
  5. data/lib/2.2/gobject_introspection.so +0 -0
  6. data/lib/2.3/gobject_introspection.so +0 -0
  7. data/lib/gobject-introspection/arg-info.rb +7 -0
  8. data/lib/gobject-introspection/callable-info.rb +42 -37
  9. data/lib/gobject-introspection/collection-reader.rb +10 -3
  10. data/lib/gobject-introspection/loader.rb +40 -21
  11. data/vendor/local/bin/g-ir-compiler.exe +0 -0
  12. data/vendor/local/lib/girepository-1.0/GLib-2.0.typelib +0 -0
  13. data/vendor/local/lib/gobject-introspection/giscanner/__init__.pyc +0 -0
  14. data/vendor/local/lib/gobject-introspection/giscanner/__init__.pyo +0 -0
  15. data/vendor/local/lib/gobject-introspection/giscanner/annotationmain.pyc +0 -0
  16. data/vendor/local/lib/gobject-introspection/giscanner/annotationmain.pyo +0 -0
  17. data/vendor/local/lib/gobject-introspection/giscanner/annotationparser.pyc +0 -0
  18. data/vendor/local/lib/gobject-introspection/giscanner/annotationparser.pyo +0 -0
  19. data/vendor/local/lib/gobject-introspection/giscanner/ast.pyc +0 -0
  20. data/vendor/local/lib/gobject-introspection/giscanner/ast.pyo +0 -0
  21. data/vendor/local/lib/gobject-introspection/giscanner/cachestore.pyc +0 -0
  22. data/vendor/local/lib/gobject-introspection/giscanner/cachestore.pyo +0 -0
  23. data/vendor/local/lib/gobject-introspection/giscanner/ccompiler.pyc +0 -0
  24. data/vendor/local/lib/gobject-introspection/giscanner/ccompiler.pyo +0 -0
  25. data/vendor/local/lib/gobject-introspection/giscanner/codegen.pyc +0 -0
  26. data/vendor/local/lib/gobject-introspection/giscanner/codegen.pyo +0 -0
  27. data/vendor/local/lib/gobject-introspection/giscanner/collections/__init__.pyc +0 -0
  28. data/vendor/local/lib/gobject-introspection/giscanner/collections/__init__.pyo +0 -0
  29. data/vendor/local/lib/gobject-introspection/giscanner/collections/counter.pyc +0 -0
  30. data/vendor/local/lib/gobject-introspection/giscanner/collections/counter.pyo +0 -0
  31. data/vendor/local/lib/gobject-introspection/giscanner/collections/ordereddict.pyc +0 -0
  32. data/vendor/local/lib/gobject-introspection/giscanner/collections/ordereddict.pyo +0 -0
  33. data/vendor/local/lib/gobject-introspection/giscanner/docmain.pyc +0 -0
  34. data/vendor/local/lib/gobject-introspection/giscanner/docmain.pyo +0 -0
  35. data/vendor/local/lib/gobject-introspection/giscanner/docwriter.pyc +0 -0
  36. data/vendor/local/lib/gobject-introspection/giscanner/docwriter.pyo +0 -0
  37. data/vendor/local/lib/gobject-introspection/giscanner/dumper.pyc +0 -0
  38. data/vendor/local/lib/gobject-introspection/giscanner/dumper.pyo +0 -0
  39. data/vendor/local/lib/gobject-introspection/giscanner/gdumpparser.pyc +0 -0
  40. data/vendor/local/lib/gobject-introspection/giscanner/gdumpparser.pyo +0 -0
  41. data/vendor/local/lib/gobject-introspection/giscanner/girparser.pyc +0 -0
  42. data/vendor/local/lib/gobject-introspection/giscanner/girparser.pyo +0 -0
  43. data/vendor/local/lib/gobject-introspection/giscanner/girwriter.pyc +0 -0
  44. data/vendor/local/lib/gobject-introspection/giscanner/girwriter.pyo +0 -0
  45. data/vendor/local/lib/gobject-introspection/giscanner/introspectablepass.pyc +0 -0
  46. data/vendor/local/lib/gobject-introspection/giscanner/introspectablepass.pyo +0 -0
  47. data/vendor/local/lib/gobject-introspection/giscanner/libtoolimporter.pyc +0 -0
  48. data/vendor/local/lib/gobject-introspection/giscanner/libtoolimporter.pyo +0 -0
  49. data/vendor/local/lib/gobject-introspection/giscanner/maintransformer.pyc +0 -0
  50. data/vendor/local/lib/gobject-introspection/giscanner/maintransformer.pyo +0 -0
  51. data/vendor/local/lib/gobject-introspection/giscanner/message.pyc +0 -0
  52. data/vendor/local/lib/gobject-introspection/giscanner/message.pyo +0 -0
  53. data/vendor/local/lib/gobject-introspection/giscanner/msvccompiler.pyc +0 -0
  54. data/vendor/local/lib/gobject-introspection/giscanner/msvccompiler.pyo +0 -0
  55. data/vendor/local/lib/gobject-introspection/giscanner/scannermain.pyc +0 -0
  56. data/vendor/local/lib/gobject-introspection/giscanner/scannermain.pyo +0 -0
  57. data/vendor/local/lib/gobject-introspection/giscanner/sectionparser.pyc +0 -0
  58. data/vendor/local/lib/gobject-introspection/giscanner/sectionparser.pyo +0 -0
  59. data/vendor/local/lib/gobject-introspection/giscanner/shlibs.pyc +0 -0
  60. data/vendor/local/lib/gobject-introspection/giscanner/shlibs.pyo +0 -0
  61. data/vendor/local/lib/gobject-introspection/giscanner/sourcescanner.pyc +0 -0
  62. data/vendor/local/lib/gobject-introspection/giscanner/sourcescanner.pyo +0 -0
  63. data/vendor/local/lib/gobject-introspection/giscanner/testcodegen.pyc +0 -0
  64. data/vendor/local/lib/gobject-introspection/giscanner/testcodegen.pyo +0 -0
  65. data/vendor/local/lib/gobject-introspection/giscanner/transformer.pyc +0 -0
  66. data/vendor/local/lib/gobject-introspection/giscanner/transformer.pyo +0 -0
  67. data/vendor/local/lib/gobject-introspection/giscanner/utils.pyc +0 -0
  68. data/vendor/local/lib/gobject-introspection/giscanner/utils.pyo +0 -0
  69. data/vendor/local/lib/gobject-introspection/giscanner/xmlwriter.pyc +0 -0
  70. data/vendor/local/lib/gobject-introspection/giscanner/xmlwriter.pyo +0 -0
  71. data/vendor/local/lib/libgirepository-1.0.dll.a +0 -0
  72. data/vendor/local/share/gir-1.0/GLib-2.0.gir +2 -2
  73. metadata +5 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5b164584d05ef18276ccd59ee0da7c383531a35e
4
- data.tar.gz: d7bb1108963bd2b53333680ef4637e6dc71e1f3f
3
+ metadata.gz: d0bc2284cca56f4a2387ad477e3c2dad10ae1a82
4
+ data.tar.gz: 54fce020c48c4f56b5269f16568feb6c7e0ebbf5
5
5
  SHA512:
6
- metadata.gz: 7f74ea9fd6e26b4f403280926cb5b27fa7fb4b475ab1d53a01cddcc6fa00319bdefdc2c4a3d82321e6a608878a1af815863728bc144b24895378197714412206
7
- data.tar.gz: 80403ac4794b20f6fefd9aeaba4d2e0b0487fba5d79009c9c7289cd176e514b5557cd9a5291853a3d7578ed4f79e3eebee7d1fd68c1784180528acd99659f883
6
+ metadata.gz: 14af21663b2f053c1d01a38b3cfcd7aa8a5ed12cf03f4083c306710b7fe00d6335398c3f7e45ca863d669dd200df2cd95e2b5799b8e0cb59e56b12aa5116de37
7
+ data.tar.gz: 8000394c87c1fb0b4ec39be777113b1d52febffac102c10bb9acd297d43d9b1f77c9692dbfa89ae902e31903555d23095e0930e63d3a890e533728c193a8ca73
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.48.0",
35
+ :version => "2.48.1",
36
36
  :compression_method => "xz",
37
37
  :windows => {
38
38
  :build => false,
@@ -1,6 +1,6 @@
1
1
  /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
2
  /*
3
- * Copyright (C) 2012-2015 Ruby-GNOME2 Project Team
3
+ * Copyright (C) 2012-2016 Ruby-GNOME2 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
@@ -191,7 +191,7 @@ array_c_to_ruby_sized(gconstpointer *elements,
191
191
  case GI_TYPE_TAG_INT32:
192
192
  g_base_info_unref(element_type_info);
193
193
  {
194
- const gint8 *numbers = (const gint8 *)elements;
194
+ const gint32 *numbers = (const gint32 *)elements;
195
195
  for (i = 0; i < n_elements; i++) {
196
196
  rb_ary_push(rb_array, INT2NUM(numbers[i]));
197
197
  }
@@ -945,6 +945,86 @@ rb_gi_argument_to_ruby_glist(GIArgument *argument, GITypeInfo *type_info)
945
945
  return rb_argument;
946
946
  }
947
947
 
948
+ static VALUE
949
+ rb_gi_argument_to_ruby_gslist_interface(GIArgument *argument,
950
+ G_GNUC_UNUSED GITypeInfo *type_info,
951
+ GITypeInfo *element_type_info)
952
+ {
953
+ VALUE rb_argument = Qnil;
954
+ GIBaseInfo *interface_info;
955
+ GIInfoType interface_type;
956
+ const gchar *interface_name;
957
+ GType gtype;
958
+
959
+ interface_info = g_type_info_get_interface(element_type_info);
960
+ interface_type = g_base_info_get_type(interface_info);
961
+ interface_name = g_info_type_to_string(interface_type);
962
+ gtype = g_registered_type_info_get_g_type(interface_info);
963
+
964
+ switch (interface_type) {
965
+ case GI_INFO_TYPE_INVALID:
966
+ case GI_INFO_TYPE_FUNCTION:
967
+ case GI_INFO_TYPE_CALLBACK:
968
+ g_base_info_unref(interface_info);
969
+ g_base_info_unref(element_type_info);
970
+ rb_raise(rb_eNotImpError,
971
+ "TODO: GIArgument(GSList)[interface(%s)](%s) -> Ruby",
972
+ interface_name,
973
+ g_type_name(gtype));
974
+ break;
975
+ case GI_INFO_TYPE_STRUCT:
976
+ if (gtype == G_TYPE_NONE) {
977
+ GSList *node;
978
+ rb_argument = rb_ary_new();
979
+ for (node = argument->v_pointer; node; node = g_slist_next(node)) {
980
+ rb_ary_push(rb_argument,
981
+ interface_struct_to_ruby(node->data,
982
+ FALSE,
983
+ element_type_info,
984
+ interface_info));
985
+ }
986
+ } else {
987
+ rb_argument = BOXEDGLIST2RVAL(argument->v_pointer, gtype);
988
+ }
989
+ break;
990
+ case GI_INFO_TYPE_BOXED:
991
+ rb_argument = BOXEDGLIST2RVAL(argument->v_pointer, gtype);
992
+ break;
993
+ case GI_INFO_TYPE_ENUM:
994
+ case GI_INFO_TYPE_FLAGS:
995
+ case GI_INFO_TYPE_OBJECT:
996
+ case GI_INFO_TYPE_INTERFACE:
997
+ rb_argument = GOBJGLIST2RVAL(argument->v_pointer);
998
+ break;
999
+ case GI_INFO_TYPE_CONSTANT:
1000
+ case GI_INFO_TYPE_INVALID_0:
1001
+ case GI_INFO_TYPE_UNION:
1002
+ case GI_INFO_TYPE_VALUE:
1003
+ case GI_INFO_TYPE_SIGNAL:
1004
+ case GI_INFO_TYPE_VFUNC:
1005
+ case GI_INFO_TYPE_PROPERTY:
1006
+ case GI_INFO_TYPE_FIELD:
1007
+ case GI_INFO_TYPE_ARG:
1008
+ case GI_INFO_TYPE_TYPE:
1009
+ case GI_INFO_TYPE_UNRESOLVED:
1010
+ g_base_info_unref(interface_info);
1011
+ g_base_info_unref(element_type_info);
1012
+ rb_raise(rb_eNotImpError,
1013
+ "TODO: GIArgument(GSList)[interface(%s)](%s) -> Ruby",
1014
+ interface_name,
1015
+ g_type_name(gtype));
1016
+ break;
1017
+ default:
1018
+ g_assert_not_reached();
1019
+ break;
1020
+ }
1021
+
1022
+ g_base_info_unref(interface_info);
1023
+ g_base_info_unref(element_type_info);
1024
+
1025
+ return rb_argument;
1026
+ }
1027
+
948
1028
  static VALUE
949
1029
  rb_gi_argument_to_ruby_gslist(GIArgument *argument, GITypeInfo *type_info)
950
1030
  {
@@ -954,7 +1034,6 @@ rb_gi_argument_to_ruby_gslist(GIArgument *argument, GITypeInfo *type_info)
954
1034
 
955
1035
  element_type_info = g_type_info_get_param_type(type_info, 0);
956
1036
  element_type_tag = g_type_info_get_tag(element_type_info);
957
- g_base_info_unref(element_type_info);
958
1037
 
959
1038
  switch (element_type_tag) {
960
1039
  case GI_TYPE_TAG_VOID:
@@ -970,34 +1049,42 @@ rb_gi_argument_to_ruby_gslist(GIArgument *argument, GITypeInfo *type_info)
970
1049
  case GI_TYPE_TAG_FLOAT:
971
1050
  case GI_TYPE_TAG_DOUBLE:
972
1051
  case GI_TYPE_TAG_GTYPE:
1052
+ g_base_info_unref(element_type_info);
973
1053
  rb_raise(rb_eNotImpError,
974
1054
  "TODO: GIArgument(GSList)[%s] -> Ruby",
975
1055
  g_type_tag_to_string(element_type_tag));
976
1056
  break;
977
1057
  case GI_TYPE_TAG_UTF8:
1058
+ g_base_info_unref(element_type_info);
978
1059
  rb_argument = CSTRGSLIST2RVAL(argument->v_pointer);
979
1060
  break;
980
1061
  case GI_TYPE_TAG_FILENAME:
1062
+ g_base_info_unref(element_type_info);
981
1063
  rb_argument = FILENAMEGSLIST2RVAL(argument->v_pointer);
982
1064
  break;
983
1065
  case GI_TYPE_TAG_ARRAY:
1066
+ g_base_info_unref(element_type_info);
984
1067
  rb_raise(rb_eNotImpError,
985
1068
  "TODO: GIArgument(GSList)[%s] -> Ruby",
986
1069
  g_type_tag_to_string(element_type_tag));
987
1070
  break;
988
1071
  case GI_TYPE_TAG_INTERFACE:
989
- rb_argument = GOBJGSLIST2RVAL(argument->v_pointer);
1072
+ rb_argument = rb_gi_argument_to_ruby_gslist_interface(argument,
1073
+ type_info,
1074
+ element_type_info);
990
1075
  break;
991
1076
  case GI_TYPE_TAG_GLIST:
992
1077
  case GI_TYPE_TAG_GSLIST:
993
1078
  case GI_TYPE_TAG_GHASH:
994
1079
  case GI_TYPE_TAG_ERROR:
995
1080
  case GI_TYPE_TAG_UNICHAR:
1081
+ g_base_info_unref(element_type_info);
996
1082
  rb_raise(rb_eNotImpError,
997
1083
  "TODO: GIArgument(GSList)[%s] -> Ruby",
998
1084
  g_type_tag_to_string(element_type_tag));
999
1085
  break;
1000
1086
  default:
1087
+ g_base_info_unref(element_type_info);
1001
1088
  g_assert_not_reached();
1002
1089
  break;
1003
1090
  }
@@ -214,6 +214,29 @@ fill_metadata_array(GPtrArray *args_metadata)
214
214
  }
215
215
  }
216
216
 
217
+ static void
218
+ fill_metadata_array_from_callable_info(GPtrArray *args_metadata,
219
+ GICallableInfo *info)
220
+ {
221
+ GITypeInfo return_type_info;
222
+ RBGIArgMetadata *array_length_metadata;
223
+ gint array_length_index = -1;
224
+
225
+ g_callable_info_load_return_type(info, &return_type_info);
226
+ if (g_type_info_get_tag(&return_type_info) != GI_TYPE_TAG_ARRAY) {
227
+ return;
228
+ }
229
+
230
+ array_length_index = g_type_info_get_array_length(&return_type_info);
231
+ if (array_length_index == -1) {
232
+ return;
233
+ }
234
+
235
+ array_length_metadata = g_ptr_array_index(args_metadata, array_length_index);
236
+ array_length_metadata->array_length_p = TRUE;
237
+ array_length_metadata->rb_arg_index = -1;
238
+ }
239
+
217
240
  static void
218
241
  fill_metadata_rb_arg_index(GPtrArray *args_metadata)
219
242
  {
@@ -251,10 +274,11 @@ fill_metadata_rb_arg_index(GPtrArray *args_metadata)
251
274
  }
252
275
 
253
276
  static void
254
- fill_metadata(GPtrArray *args_metadata)
277
+ fill_metadata(GPtrArray *args_metadata, GICallableInfo *info)
255
278
  {
256
279
  fill_metadata_callback(args_metadata);
257
280
  fill_metadata_array(args_metadata);
281
+ fill_metadata_array_from_callable_info(args_metadata, info);
258
282
  fill_metadata_rb_arg_index(args_metadata);
259
283
  }
260
284
 
@@ -866,7 +890,7 @@ ffi_closure_callback(G_GNUC_UNUSED ffi_cif *cif,
866
890
  in_args,
867
891
  out_args,
868
892
  args_metadata);
869
- fill_metadata(args_metadata);
893
+ fill_metadata(args_metadata, callback->callback_info);
870
894
  arguments_from_raw_data(callback->callback_info,
871
895
  raw_args,
872
896
  in_args,
@@ -1071,7 +1095,7 @@ arguments_from_ruby(GICallableInfo *info, VALUE self, VALUE rb_arguments,
1071
1095
  gint i, n_args;
1072
1096
 
1073
1097
  allocate_arguments(info, in_args, out_args, args_metadata);
1074
- fill_metadata(args_metadata);
1098
+ fill_metadata(args_metadata, info);
1075
1099
 
1076
1100
  n_args = g_callable_info_get_n_args(info);
1077
1101
  for (i = 0; i < n_args; i++) {
@@ -17,6 +17,13 @@
17
17
  module GObjectIntrospection
18
18
  class ArgInfo
19
19
  def gclosure?
20
+ @gclosure_p ||= nil
21
+ return @gclosure_p unless @gclosure_p.nil?
22
+ @gclosure_p = compute_gclosure?
23
+ end
24
+
25
+ private
26
+ def compute_gclosure?
20
27
  type_info = type
21
28
  return false if type_info.tag != TypeTag::INTERFACE
22
29
 
@@ -23,6 +23,48 @@ module GObjectIntrospection
23
23
  collection_reader("args")
24
24
 
25
25
  def in_args
26
+ @in_args ||= compute_in_args
27
+ end
28
+
29
+ def required_in_args
30
+ @required_in_args ||= in_args.reject do |arg|
31
+ arg.may_be_null?
32
+ end
33
+ end
34
+
35
+ def n_in_args
36
+ in_args.size
37
+ end
38
+
39
+ def n_required_in_args
40
+ required_in_args.size
41
+ end
42
+
43
+ def require_callback?
44
+ args.any? do |arg|
45
+ arg.direction == Direction::IN and
46
+ arg.scope != ScopeType::INVALID and
47
+ !arg.may_be_null?
48
+ end
49
+ end
50
+
51
+ def out_args
52
+ @out_args ||= args.find_all do |arg|
53
+ case arg.direction
54
+ when Direction::OUT, Direction::INOUT
55
+ true
56
+ else
57
+ false
58
+ end
59
+ end
60
+ end
61
+
62
+ def n_out_args
63
+ out_args.size
64
+ end
65
+
66
+ private
67
+ def compute_in_args
26
68
  array_length_indexes = []
27
69
  callback_indexes = []
28
70
  closure_indexes = []
@@ -61,42 +103,5 @@ module GObjectIntrospection
61
103
  end
62
104
  end
63
105
  end
64
-
65
- def required_in_args
66
- in_args.reject do |arg|
67
- arg.may_be_null?
68
- end
69
- end
70
-
71
- def n_in_args
72
- in_args.size
73
- end
74
-
75
- def n_required_in_args
76
- required_in_args.size
77
- end
78
-
79
- def require_callback?
80
- args.any? do |arg|
81
- arg.direction == Direction::IN and
82
- arg.scope != ScopeType::INVALID and
83
- !arg.may_be_null?
84
- end
85
- end
86
-
87
- def out_args
88
- args.find_all do |arg|
89
- case arg.direction
90
- when Direction::OUT, Direction::INOUT
91
- true
92
- else
93
- false
94
- end
95
- end
96
- end
97
-
98
- def n_out_args
99
- out_args.size
100
- end
101
106
  end
102
107
  end
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2012 Ruby-GNOME2 Project Team
1
+ # Copyright (C) 2012-2016 Ruby-GNOME2 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
@@ -24,9 +24,16 @@ module GObjectIntrospection
24
24
  singular = name.sub(/s\z/, "")
25
25
  end
26
26
  getter = "get_#{singular}"
27
+ cache_name = "@#{name}"
27
28
  define_method(name) do
28
- send(n_getter).times.collect do |i|
29
- send(getter, i)
29
+ if instance_variable_defined?(cache_name)
30
+ instance_variable_get(cache_name)
31
+ else
32
+ collection = send(n_getter).times.collect do |i|
33
+ send(getter, i)
34
+ end
35
+ instance_variable_set(cache_name, collection)
36
+ collection
30
37
  end
31
38
  end
32
39
  end
@@ -121,11 +121,12 @@ module GObjectIntrospection
121
121
  end
122
122
 
123
123
  def define_struct(info, options={})
124
+ name = rubyish_class_name(info)
124
125
  if info.gtype == GLib::Type::NONE
125
- klass = self.class.define_struct(info.size, info.name, @base_module,
126
+ klass = self.class.define_struct(info.size, name, @base_module,
126
127
  :parent => options[:parent])
127
128
  else
128
- klass = self.class.define_class(info.gtype, info.name, @base_module,
129
+ klass = self.class.define_class(info.gtype, name, @base_module,
129
130
  :parent => options[:parent],
130
131
  :size => info.size)
131
132
  end
@@ -136,7 +137,7 @@ module GObjectIntrospection
136
137
  def load_struct_info(info)
137
138
  case info.name
138
139
  when /Class\z/
139
- base_class_name = $PREMATCH
140
+ base_class_name = rubyish_class_name(info)
140
141
  method_infos = info.methods.find_all do |method_info|
141
142
  method_info.is_a?(MethodInfo)
142
143
  end
@@ -169,26 +170,18 @@ module GObjectIntrospection
169
170
 
170
171
  def define_enum(info)
171
172
  self.class.define_class(info.gtype,
172
- enum_class_name(info),
173
+ rubyish_class_name(info),
173
174
  @base_module)
174
175
  end
175
176
 
176
- def enum_class_name(info)
177
- info.name
178
- end
179
-
180
177
  def define_error(info)
181
178
  self.class.define_error(info.error_domain,
182
- error_class_name(info),
179
+ rubyish_class_name(info),
183
180
  @base_module,
184
181
  :parent => error_parent_class(info),
185
182
  :gtype => info.gtype)
186
183
  end
187
184
 
188
- def error_class_name(info)
189
- info.name
190
- end
191
-
192
185
  def error_parent_class(info)
193
186
  nil
194
187
  end
@@ -199,7 +192,7 @@ module GObjectIntrospection
199
192
  info.values.each do |value_info|
200
193
  load_enum_value(value_info, enum_module)
201
194
  end
202
- @base_module.const_set(info.name, enum_module)
195
+ @base_module.const_set(rubyish_class_name(info), enum_module)
203
196
  else
204
197
  if info.error_domain
205
198
  define_error(info)
@@ -219,7 +212,7 @@ module GObjectIntrospection
219
212
  info.values.each do |value_info|
220
213
  load_flag_value(value_info, flags_module)
221
214
  end
222
- @base_module.const_set(info.name, flags_module)
215
+ @base_module.const_set(rubyish_class_name(info), flags_module)
223
216
  else
224
217
  self.class.define_class(info.gtype, flags_class_name(info), @base_module)
225
218
  end
@@ -230,7 +223,9 @@ module GObjectIntrospection
230
223
  end
231
224
 
232
225
  def load_object_info(info)
233
- klass = self.class.define_class(info.gtype, info.name, @base_module)
226
+ klass = self.class.define_class(info.gtype,
227
+ rubyish_class_name(info),
228
+ @base_module)
234
229
  load_fields(info, klass)
235
230
  load_methods(info, klass)
236
231
  end
@@ -414,7 +409,9 @@ module GObjectIntrospection
414
409
  when InfoType::STRUCT
415
410
  match_argument_interface_struct?(arg_info, interface, argument)
416
411
  when InfoType::OBJECT,
417
- InfoType::INTERFACE
412
+ InfoType::INTERFACE,
413
+ InfoType::FLAGS,
414
+ InfoType::ENUM
418
415
  argument.is_a?(interface.gtype.to_class)
419
416
  else
420
417
  # TODO
@@ -468,7 +465,7 @@ module GObjectIntrospection
468
465
  else
469
466
  name
470
467
  end
471
- when /\A(?:has|use|can|in|.*_is)_/
468
+ when /\A(?:has|use|can|in|on|.*_is)_/
472
469
  "#{name}?"
473
470
  when "exists"
474
471
  "exist?"
@@ -504,6 +501,21 @@ module GObjectIntrospection
504
501
  end
505
502
  end
506
503
 
504
+ def rubyish_class_name(info)
505
+ name = info.name
506
+ case info
507
+ when StructInfo
508
+ case name
509
+ when /Class\z/
510
+ $PREMATCH
511
+ else
512
+ name
513
+ end
514
+ else
515
+ name
516
+ end
517
+ end
518
+
507
519
  def should_unlock_gvl?(function_info, klass)
508
520
  false
509
521
  end
@@ -537,10 +549,11 @@ module GObjectIntrospection
537
549
  validate_arguments(info, "#{klass}\##{method_name}", arguments)
538
550
  [arguments, block]
539
551
  end
552
+ require_callback_p = info.require_callback?
540
553
  klass.__send__(:define_method, method_name) do |*arguments, &block|
541
554
  arguments = [self] + arguments if function_info_p
542
555
  arguments, block = prepare.call(arguments, &block)
543
- if block.nil? and info.require_callback?
556
+ if block.nil? and require_callback_p
544
557
  to_enum(method_name, *arguments)
545
558
  else
546
559
  options = {
@@ -577,12 +590,18 @@ module GObjectIntrospection
577
590
 
578
591
  def load_interface_info(info)
579
592
  interface_module =
580
- self.class.define_interface(info.gtype, info.name, @base_module)
593
+ self.class.define_interface(info.gtype,
594
+ rubyish_class_name(info),
595
+ @base_module)
581
596
  load_methods(info, interface_module)
582
597
  end
583
598
 
584
599
  def load_constant_info(info)
585
- @base_module.const_set(info.name, info.value)
600
+ define_constant(info.name, info)
601
+ end
602
+
603
+ def define_constant(name, info)
604
+ @base_module.const_set(name, info.value)
586
605
  end
587
606
 
588
607
  def load_union_info(info)
@@ -12964,7 +12964,7 @@ linked against at application run time.</doc>
12964
12964
  <doc xml:space="preserve">The maximum value which can be held in a #guint8.</doc>
12965
12965
  <type name="guint8" c:type="guint8"/>
12966
12966
  </constant>
12967
- <constant name="MICRO_VERSION" value="0" c:type="GLIB_MICRO_VERSION">
12967
+ <constant name="MICRO_VERSION" value="1" c:type="GLIB_MICRO_VERSION">
12968
12968
  <doc xml:space="preserve">The micro version number of the GLib library.
12969
12969
 
12970
12970
  Like #gtk_micro_version, but from the headers used at
@@ -20515,7 +20515,7 @@ it using g_strfreev()</doc>
20515
20515
  value="112"
20516
20516
  c:identifier="G_REGEX_ERROR_UNRECOGNIZED_CHARACTER">
20517
20517
  <doc xml:space="preserve">Unrecognized character after "(?",
20518
- "(?&amp;lt;" or "(?P". Since 2.16</doc>
20518
+ "(?&lt;" or "(?P". Since 2.16</doc>
20519
20519
  </member>
20520
20520
  <member name="posix_named_class_outside_class"
20521
20521
  value="113"
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.0.8
4
+ version: 3.0.9
5
5
  platform: x64-mingw32
6
6
  authors:
7
7
  - The Ruby-GNOME2 Project Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-03 00:00:00.000000000 Z
11
+ date: 2016-08-12 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.0.8
19
+ version: 3.0.9
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.0.8
26
+ version: 3.0.9
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: test-unit
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -352,7 +352,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
352
352
  requirements:
353
353
  - - ">="
354
354
  - !ruby/object:Gem::Version
355
- version: 1.9.3
355
+ version: 2.1.0
356
356
  required_rubygems_version: !ruby/object:Gem::Requirement
357
357
  requirements:
358
358
  - - ">="