gobject-introspection 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. data/ext/gobject-introspection/depend +10 -0
  2. data/ext/gobject-introspection/rb-gi-arg-info.c +1 -1
  3. data/ext/gobject-introspection/rb-gi-argument.c +30 -12
  4. data/ext/gobject-introspection/rb-gi-base-info.c +1 -1
  5. data/ext/gobject-introspection/rb-gi-boxed-info.c +1 -1
  6. data/ext/gobject-introspection/rb-gi-callable-info.c +1 -1
  7. data/ext/gobject-introspection/rb-gi-callback-info.c +1 -1
  8. data/ext/gobject-introspection/rb-gi-constant-info.c +1 -1
  9. data/ext/gobject-introspection/rb-gi-constructor-info.c +1 -1
  10. data/ext/gobject-introspection/rb-gi-enum-info.c +1 -1
  11. data/ext/gobject-introspection/rb-gi-field-info.c +1 -1
  12. data/ext/gobject-introspection/rb-gi-flags-info.c +1 -1
  13. data/ext/gobject-introspection/rb-gi-function-info.c +122 -81
  14. data/ext/gobject-introspection/rb-gi-interface-info.c +1 -1
  15. data/ext/gobject-introspection/rb-gi-loader.c +9 -1
  16. data/ext/gobject-introspection/rb-gi-method-info.c +6 -2
  17. data/ext/gobject-introspection/rb-gi-object-info.c +1 -1
  18. data/ext/gobject-introspection/rb-gi-private.h +110 -0
  19. data/ext/gobject-introspection/rb-gi-property-info.c +1 -1
  20. data/ext/gobject-introspection/rb-gi-registered-type-info.c +1 -1
  21. data/ext/gobject-introspection/rb-gi-repository.c +1 -1
  22. data/ext/gobject-introspection/rb-gi-signal-info.c +1 -1
  23. data/ext/gobject-introspection/rb-gi-struct-info.c +1 -1
  24. data/ext/gobject-introspection/rb-gi-type-info.c +1 -1
  25. data/ext/gobject-introspection/rb-gi-type-tag.c +1 -1
  26. data/ext/gobject-introspection/rb-gi-union-info.c +1 -1
  27. data/ext/gobject-introspection/rb-gi-unresolved-info.c +1 -1
  28. data/ext/gobject-introspection/rb-gi-value-info.c +1 -1
  29. data/ext/gobject-introspection/rb-gi-vfunc-info.c +1 -1
  30. data/ext/gobject-introspection/rb-gobject-introspection.c +1 -1
  31. data/ext/gobject-introspection/rb-gobject-introspection.h +30 -81
  32. data/lib/gobject-introspection/callable-info.rb +38 -2
  33. data/lib/gobject-introspection/loader.rb +81 -15
  34. metadata +92 -108
@@ -50,6 +50,8 @@ module GObjectIntrospection
50
50
  load_function_info(info)
51
51
  when StructInfo
52
52
  load_struct_info(info)
53
+ when FlagsInfo
54
+ load_flags_info(info)
53
55
  when EnumInfo
54
56
  load_enum_info(info)
55
57
  when ObjectInfo
@@ -64,12 +66,17 @@ module GObjectIntrospection
64
66
  end
65
67
 
66
68
  def load_function_info(info)
67
- define_module_function(@base_module, info.name, info)
69
+ name = rubyish_method_name(info)
70
+ define_module_function(@base_module, name, info)
68
71
  end
69
72
 
70
73
  def define_module_function(target_module, name, function_info)
74
+ validate = lambda do |arguments|
75
+ validate_arguments(function_info, arguments)
76
+ end
71
77
  target_module.module_eval do
72
78
  define_method(name) do |*arguments, &block|
79
+ validate.call(arguments, &block)
73
80
  function_info.invoke(*arguments, &block)
74
81
  end
75
82
  module_function(name)
@@ -82,7 +89,7 @@ module GObjectIntrospection
82
89
  :parent => options[:parent])
83
90
  else
84
91
  klass = self.class.define_class(info.gtype, info.name, @base_module,
85
- :parent => options[:parent])
92
+ :parent => options[:parent])
86
93
  end
87
94
  load_fields(info, klass)
88
95
  load_methods(info, klass)
@@ -94,8 +101,36 @@ module GObjectIntrospection
94
101
  define_struct(info)
95
102
  end
96
103
 
104
+ def load_enum_value(value_info, enum_module)
105
+ enum_module.const_set(value_info.name.upcase, value_info.value)
106
+ end
107
+
97
108
  def load_enum_info(info)
98
- self.class.define_class(info.gtype, info.name, @base_module)
109
+ if info.gtype == GLib::Type::NONE
110
+ enum_module = Module.new
111
+ info.values.each do |value_info|
112
+ load_enum_value(value_info, enum_module)
113
+ end
114
+ @base_module.const_set(info.name, enum_module)
115
+ else
116
+ self.class.define_class(info.gtype, info.name, @base_module)
117
+ end
118
+ end
119
+
120
+ def load_flag_value(value_info, flags_module)
121
+ flags_module.const_set(value_info.name.upcase, value_info.value)
122
+ end
123
+
124
+ def load_flags_info(info)
125
+ if info.gtype == GLib::Type::NONE
126
+ flags_module = Module.new
127
+ info.values.each do |value_info|
128
+ load_flag_value(value_info, flags_module)
129
+ end
130
+ @base_module.const_set(info.name, flags_module)
131
+ else
132
+ self.class.define_class(info.gtype, info.name, @base_module)
133
+ end
99
134
  end
100
135
 
101
136
  def load_object_info(info)
@@ -111,7 +146,7 @@ module GObjectIntrospection
111
146
  flags = field_info.flags
112
147
 
113
148
  if flags.readable?
114
- klass.__send__(:define_method, name) do
149
+ klass.__send__(:define_method, name) do ||
115
150
  info.get_field_value(self, i)
116
151
  end
117
152
  end
@@ -155,6 +190,7 @@ module GObjectIntrospection
155
190
  validate.call(info, arguments, &block)
156
191
  info.invoke(self, *arguments, &block)
157
192
  end
193
+ klass.__send__(:private, name)
158
194
  end
159
195
 
160
196
  find_info = lambda do |arguments|
@@ -167,10 +203,17 @@ module GObjectIntrospection
167
203
  end
168
204
 
169
205
  def validate_arguments(info, arguments)
170
- if arguments.size != info.n_in_args
171
- details = "#{arguments.size} for #{info.n_in_args}"
172
- raise ArgumentError, "wrong number of arguments (#{detail})"
206
+ n_in_args = info.n_in_args
207
+ n_required_in_args = info.n_required_in_args
208
+ return if (n_required_in_args..n_in_args).cover?(arguments.size)
209
+
210
+ detail = "#{arguments.size} for "
211
+ if n_in_args == n_required_in_args
212
+ detail << "#{info.n_in_args}"
213
+ else
214
+ detail << "#{info.n_required_in_args}..#{info.n_in_args}"
173
215
  end
216
+ raise ArgumentError, "wrong number of arguments (#{detail})"
174
217
  end
175
218
 
176
219
  def find_suitable_callable_info(infos, arguments)
@@ -191,9 +234,9 @@ module GObjectIntrospection
191
234
  raise ArgumentError, "wrong number of arguments (#{detail})"
192
235
  end
193
236
 
194
- def rubyish_method_name(method_info)
195
- name = method_info.name
196
- return_type = method_info.return_type
237
+ def rubyish_method_name(function_info)
238
+ name = function_info.name
239
+ return_type = function_info.return_type
197
240
  if return_type.tag == GObjectIntrospection::TypeTag::BOOLEAN
198
241
  case name
199
242
  when /\A(?:is|get_is|get)_/
@@ -203,10 +246,17 @@ module GObjectIntrospection
203
246
  else
204
247
  name
205
248
  end
206
- elsif /\Aget_/ =~ name and method_info.n_in_args.zero?
249
+ elsif /\Aget_/ =~ name and function_info.n_in_args.zero?
207
250
  $POSTMATCH
208
251
  else
209
- name
252
+ case name
253
+ when "to_string"
254
+ "to_s"
255
+ when "foreach"
256
+ "each"
257
+ else
258
+ name
259
+ end
210
260
  end
211
261
  end
212
262
 
@@ -221,19 +271,35 @@ module GObjectIntrospection
221
271
  end
222
272
 
223
273
  def load_method_info(info, klass, method_name)
274
+ validate = lambda do |arguments|
275
+ validate_arguments(info, arguments)
276
+ end
224
277
  klass.__send__(:define_method, method_name) do |*arguments, &block|
225
- info.invoke(self, *arguments, &block)
278
+ validate.call(arguments, &block)
279
+ if block.nil? and info.require_callback?
280
+ Enumerator.new(self, method_name, *arguments)
281
+ else
282
+ info.invoke(self, *arguments, &block)
283
+ end
226
284
  end
227
285
  end
228
286
 
229
287
  def load_function_infos(infos, klass)
230
288
  infos.each do |info|
231
- name = info.name
289
+ name = rubyish_method_name(info)
232
290
  next if name == "new"
233
291
  next if name == "alloc"
292
+ validate = lambda do |arguments|
293
+ validate_arguments(info, arguments)
294
+ end
234
295
  singleton_class = (class << klass; self; end)
235
296
  singleton_class.__send__(:define_method, name) do |*arguments, &block|
236
- info.invoke(*arguments, &block)
297
+ validate.call(arguments, &block)
298
+ if block.nil? and info.require_callback?
299
+ Enumerator.new(self, name, *arguments)
300
+ else
301
+ info.invoke(*arguments, &block)
302
+ end
237
303
  end
238
304
  end
239
305
  end
metadata CHANGED
@@ -1,163 +1,147 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: gobject-introspection
3
- version: !ruby/object:Gem::Version
4
- hash: 29
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.2.2
5
5
  prerelease:
6
- segments:
7
- - 1
8
- - 2
9
- - 1
10
- version: 1.2.1
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - The Ruby-GNOME2 Project Team
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2013-01-30 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2013-03-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: glib2
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 29
29
- segments:
30
- - 1
31
- - 2
32
- - 1
33
- version: 1.2.1
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 1.2.2
34
22
  type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: test-unit
38
23
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.2.2
30
+ - !ruby/object:Gem::Dependency
31
+ name: test-unit
32
+ requirement: !ruby/object:Gem::Requirement
40
33
  none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 7
45
- segments:
46
- - 2
47
- version: "2"
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '2'
48
38
  type: :development
49
- version_requirements: *id002
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '2'
50
46
  description: Ruby/GObjectIntrospection is a Ruby binding of GObjectIntrospection.
51
47
  email: ruby-gnome2-devel-en@lists.sourceforge.net
52
48
  executables: []
53
-
54
- extensions:
49
+ extensions:
55
50
  - ext/gobject-introspection/extconf.rb
56
51
  extra_rdoc_files: []
57
-
58
- files:
52
+ files:
59
53
  - Rakefile
60
54
  - extconf.rb
61
55
  - lib/gobject-introspection.rb
56
+ - lib/gobject-introspection/callable-info.rb
57
+ - lib/gobject-introspection/collection-reader.rb
62
58
  - lib/gobject-introspection/interface-info.rb
63
- - lib/gobject-introspection/union-info.rb
64
- - lib/gobject-introspection/object-info.rb
65
59
  - lib/gobject-introspection/loader.rb
66
- - lib/gobject-introspection/callable-info.rb
60
+ - lib/gobject-introspection/object-info.rb
67
61
  - lib/gobject-introspection/repository.rb
68
- - lib/gobject-introspection/collection-reader.rb
69
62
  - lib/gobject-introspection/struct-info.rb
70
- - ext/gobject-introspection/rb-gi-union-info.c
63
+ - lib/gobject-introspection/union-info.rb
64
+ - ext/gobject-introspection/depend
65
+ - ext/gobject-introspection/extconf.rb
66
+ - ext/gobject-introspection/rb-gi-arg-info.c
71
67
  - ext/gobject-introspection/rb-gi-argument.c
68
+ - ext/gobject-introspection/rb-gi-base-info.c
69
+ - ext/gobject-introspection/rb-gi-boxed-info.c
70
+ - ext/gobject-introspection/rb-gi-callable-info.c
72
71
  - ext/gobject-introspection/rb-gi-callback-info.c
72
+ - ext/gobject-introspection/rb-gi-constant-info.c
73
+ - ext/gobject-introspection/rb-gi-constructor-info.c
74
+ - ext/gobject-introspection/rb-gi-conversions.h
75
+ - ext/gobject-introspection/rb-gi-enum-info.c
76
+ - ext/gobject-introspection/rb-gi-field-info.c
77
+ - ext/gobject-introspection/rb-gi-flags-info.c
78
+ - ext/gobject-introspection/rb-gi-function-info.c
79
+ - ext/gobject-introspection/rb-gi-interface-info.c
80
+ - ext/gobject-introspection/rb-gi-loader.c
73
81
  - ext/gobject-introspection/rb-gi-method-info.c
82
+ - ext/gobject-introspection/rb-gi-object-info.c
83
+ - ext/gobject-introspection/rb-gi-private.h
84
+ - ext/gobject-introspection/rb-gi-property-info.c
74
85
  - ext/gobject-introspection/rb-gi-registered-type-info.c
75
- - ext/gobject-introspection/rb-gi-conversions.h
76
86
  - ext/gobject-introspection/rb-gi-repository.c
77
- - ext/gobject-introspection/rb-gi-struct-info.c
78
- - ext/gobject-introspection/rb-gobject-introspection.h
79
87
  - ext/gobject-introspection/rb-gi-signal-info.c
80
- - ext/gobject-introspection/rb-gi-flags-info.c
81
- - ext/gobject-introspection/rb-gi-property-info.c
88
+ - ext/gobject-introspection/rb-gi-struct-info.c
89
+ - ext/gobject-introspection/rb-gi-type-info.c
90
+ - ext/gobject-introspection/rb-gi-type-tag.c
82
91
  - ext/gobject-introspection/rb-gi-types.h
92
+ - ext/gobject-introspection/rb-gi-union-info.c
83
93
  - ext/gobject-introspection/rb-gi-unresolved-info.c
84
- - ext/gobject-introspection/rb-gi-boxed-info.c
85
94
  - ext/gobject-introspection/rb-gi-value-info.c
86
- - ext/gobject-introspection/extconf.rb
87
- - ext/gobject-introspection/rb-gobject-introspection.c
88
- - ext/gobject-introspection/rb-gi-function-info.c
89
- - ext/gobject-introspection/rb-gi-field-info.c
90
- - ext/gobject-introspection/rb-gi-object-info.c
91
- - ext/gobject-introspection/rb-gi-constant-info.c
92
- - ext/gobject-introspection/rb-gi-arg-info.c
93
- - ext/gobject-introspection/rb-gi-type-info.c
94
- - ext/gobject-introspection/rb-gi-constructor-info.c
95
- - ext/gobject-introspection/rb-gi-base-info.c
96
- - ext/gobject-introspection/rb-gi-loader.c
97
- - ext/gobject-introspection/rb-gi-callable-info.c
98
- - ext/gobject-introspection/rb-gi-interface-info.c
99
- - ext/gobject-introspection/rb-gi-enum-info.c
100
95
  - ext/gobject-introspection/rb-gi-vfunc-info.c
101
- - ext/gobject-introspection/rb-gi-type-tag.c
102
- - test/test-type-info.rb
103
- - test/test-union-info.rb
104
- - test/test-interface-info.rb
105
- - test/test-enum-info.rb
106
- - test/test-arg-info.rb
107
- - test/test-repository.rb
108
- - test/test-type-tag.rb
109
- - test/test-loader.rb
110
- - test/test-struct-info.rb
111
- - test/test-flags-info.rb
112
- - test/test-registered-type-info.rb
113
- - test/test-property-info.rb
114
- - test/test-constant-info.rb
96
+ - ext/gobject-introspection/rb-gobject-introspection.c
97
+ - ext/gobject-introspection/rb-gobject-introspection.h
98
+ - test/gobject-introspection-test-utils.rb
115
99
  - test/run-test.rb
116
- - test/test-function-info.rb
117
- - test/test-callable-info.rb
100
+ - test/test-arg-info.rb
118
101
  - test/test-base-info.rb
102
+ - test/test-boxed-info.rb
103
+ - test/test-callable-info.rb
119
104
  - test/test-callback-info.rb
120
- - test/gobject-introspection-test-utils.rb
105
+ - test/test-constant-info.rb
106
+ - test/test-enum-info.rb
121
107
  - test/test-field-type.rb
122
- - test/test-vfunc-info.rb
123
- - test/test-signal-info.rb
108
+ - test/test-flags-info.rb
109
+ - test/test-function-info.rb
110
+ - test/test-interface-info.rb
111
+ - test/test-loader.rb
124
112
  - test/test-object-info.rb
125
- - test/test-boxed-info.rb
113
+ - test/test-property-info.rb
114
+ - test/test-registered-type-info.rb
115
+ - test/test-repository.rb
116
+ - test/test-signal-info.rb
117
+ - test/test-struct-info.rb
118
+ - test/test-type-info.rb
119
+ - test/test-type-tag.rb
120
+ - test/test-union-info.rb
126
121
  - test/test-value-info.rb
122
+ - test/test-vfunc-info.rb
127
123
  homepage: http://ruby-gnome2.sourceforge.jp/
128
124
  licenses: []
129
-
130
125
  post_install_message:
131
126
  rdoc_options: []
132
-
133
- require_paths:
127
+ require_paths:
134
128
  - lib
135
- required_ruby_version: !ruby/object:Gem::Requirement
129
+ required_ruby_version: !ruby/object:Gem::Requirement
136
130
  none: false
137
- requirements:
138
- - - ">="
139
- - !ruby/object:Gem::Version
140
- hash: 61
141
- segments:
142
- - 1
143
- - 8
144
- - 5
131
+ requirements:
132
+ - - ! '>='
133
+ - !ruby/object:Gem::Version
145
134
  version: 1.8.5
146
- required_rubygems_version: !ruby/object:Gem::Requirement
135
+ required_rubygems_version: !ruby/object:Gem::Requirement
147
136
  none: false
148
- requirements:
149
- - - ">="
150
- - !ruby/object:Gem::Version
151
- hash: 3
152
- segments:
153
- - 0
154
- version: "0"
137
+ requirements:
138
+ - - ! '>='
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
155
141
  requirements: []
156
-
157
142
  rubyforge_project:
158
- rubygems_version: 1.8.24
143
+ rubygems_version: 1.8.23
159
144
  signing_key:
160
145
  specification_version: 3
161
146
  summary: Ruby/GObjectIntrospection is a Ruby binding of GObjectIntrospection.
162
147
  test_files: []
163
-