gir_ffi 0.7.4 → 0.7.5

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 (123) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +7 -0
  3. data/TODO.md +8 -0
  4. data/lib/ffi-glib/array.rb +7 -7
  5. data/lib/ffi-glib/byte_array.rb +3 -4
  6. data/lib/ffi-glib/bytes.rb +3 -3
  7. data/lib/ffi-glib/error.rb +2 -2
  8. data/lib/ffi-glib/hash_table.rb +7 -7
  9. data/lib/ffi-glib/iconv.rb +3 -4
  10. data/lib/ffi-glib/list.rb +3 -3
  11. data/lib/ffi-glib/list_methods.rb +3 -3
  12. data/lib/ffi-glib/ptr_array.rb +6 -6
  13. data/lib/ffi-glib/s_list.rb +3 -3
  14. data/lib/ffi-glib/strv.rb +3 -3
  15. data/lib/ffi-glib/variant.rb +6 -2
  16. data/lib/ffi-glib.rb +3 -0
  17. data/lib/ffi-gobject/base.rb +1 -0
  18. data/lib/ffi-gobject/closure.rb +2 -2
  19. data/lib/ffi-gobject/initially_unowned.rb +4 -3
  20. data/lib/ffi-gobject/object.rb +5 -5
  21. data/lib/ffi-gobject/object_class.rb +2 -2
  22. data/lib/ffi-gobject/ruby_closure.rb +2 -3
  23. data/lib/ffi-gobject/value.rb +5 -5
  24. data/lib/ffi-gobject.rb +17 -22
  25. data/lib/ffi-gobject_introspection/i_arg_info.rb +0 -1
  26. data/lib/ffi-gobject_introspection/i_base_info.rb +3 -4
  27. data/lib/ffi-gobject_introspection/i_callable_info.rb +1 -2
  28. data/lib/ffi-gobject_introspection/i_constant_info.rb +19 -11
  29. data/lib/ffi-gobject_introspection/i_enum_info.rb +4 -3
  30. data/lib/ffi-gobject_introspection/i_function_info.rb +7 -1
  31. data/lib/ffi-gobject_introspection/i_interface_info.rb +12 -0
  32. data/lib/ffi-gobject_introspection/i_object_info.rb +19 -8
  33. data/lib/ffi-gobject_introspection/i_registered_type_info.rb +0 -1
  34. data/lib/ffi-gobject_introspection/i_repository.rb +10 -15
  35. data/lib/ffi-gobject_introspection/i_struct_info.rb +4 -2
  36. data/lib/ffi-gobject_introspection/i_type_info.rb +4 -2
  37. data/lib/ffi-gobject_introspection/i_union_info.rb +7 -3
  38. data/lib/ffi-gobject_introspection/i_value_info.rb +0 -1
  39. data/lib/ffi-gobject_introspection/lib.rb +1 -2
  40. data/lib/ffi-gobject_introspection.rb +0 -1
  41. data/lib/gir_ffi/allocation_helper.rb +2 -1
  42. data/lib/gir_ffi/arg_helper.rb +6 -2
  43. data/lib/gir_ffi/builder_helper.rb +1 -0
  44. data/lib/gir_ffi/builders/argument_builder_collection.rb +67 -0
  45. data/lib/gir_ffi/builders/c_to_ruby_convertor.rb +2 -0
  46. data/lib/gir_ffi/builders/callback_argument_builder.rb +7 -5
  47. data/lib/gir_ffi/builders/callback_builder.rb +3 -1
  48. data/lib/gir_ffi/builders/callback_return_value_builder.rb +2 -0
  49. data/lib/gir_ffi/builders/closure_argument_builder.rb +13 -0
  50. data/lib/gir_ffi/builders/closure_convertor.rb +2 -0
  51. data/lib/gir_ffi/builders/closure_to_pointer_convertor.rb +2 -0
  52. data/lib/gir_ffi/builders/constructor_result_convertor.rb +1 -0
  53. data/lib/gir_ffi/builders/enum_builder.rb +1 -4
  54. data/lib/gir_ffi/builders/field_builder.rb +2 -2
  55. data/lib/gir_ffi/builders/function_builder.rb +2 -1
  56. data/lib/gir_ffi/builders/interface_builder.rb +0 -3
  57. data/lib/gir_ffi/builders/mapping_method_builder.rb +24 -92
  58. data/lib/gir_ffi/builders/marshalling_method_builder.rb +73 -0
  59. data/lib/gir_ffi/builders/null_argument_builder.rb +3 -0
  60. data/lib/gir_ffi/builders/null_builder.rb +1 -0
  61. data/lib/gir_ffi/builders/object_builder.rb +0 -2
  62. data/lib/gir_ffi/builders/property_builder.rb +4 -4
  63. data/lib/gir_ffi/builders/registered_type_builder.rb +35 -1
  64. data/lib/gir_ffi/builders/return_value_builder.rb +4 -6
  65. data/lib/gir_ffi/builders/ruby_to_c_convertor.rb +2 -0
  66. data/lib/gir_ffi/builders/signal_closure_builder.rb +46 -0
  67. data/lib/gir_ffi/builders/struct_builder.rb +0 -2
  68. data/lib/gir_ffi/builders/type_builder.rb +1 -1
  69. data/lib/gir_ffi/builders/unintrospectable_builder.rb +1 -1
  70. data/lib/gir_ffi/builders/union_builder.rb +0 -2
  71. data/lib/gir_ffi/builders/user_defined_builder.rb +6 -18
  72. data/lib/gir_ffi/builders/vfunc_builder.rb +6 -4
  73. data/lib/gir_ffi/builders/with_layout.rb +1 -2
  74. data/lib/gir_ffi/callback_base.rb +4 -4
  75. data/lib/gir_ffi/class_base.rb +28 -18
  76. data/lib/gir_ffi/enum_base.rb +2 -2
  77. data/lib/gir_ffi/ffi_ext/pointer.rb +1 -0
  78. data/lib/gir_ffi/in_out_pointer.rb +4 -4
  79. data/lib/gir_ffi/in_pointer.rb +2 -2
  80. data/lib/gir_ffi/info_ext/full_type_name.rb +16 -0
  81. data/lib/gir_ffi/info_ext/i_arg_info.rb +2 -3
  82. data/lib/gir_ffi/info_ext/i_callback_info.rb +1 -8
  83. data/lib/gir_ffi/info_ext/i_property_info.rb +0 -1
  84. data/lib/gir_ffi/info_ext/i_registered_type_info.rb +0 -1
  85. data/lib/gir_ffi/info_ext/i_signal_info.rb +8 -40
  86. data/lib/gir_ffi/info_ext/i_type_info.rb +12 -2
  87. data/lib/gir_ffi/info_ext/i_vfunc_info.rb +1 -6
  88. data/lib/gir_ffi/info_ext/safe_constant_name.rb +0 -5
  89. data/lib/gir_ffi/info_ext.rb +1 -0
  90. data/lib/gir_ffi/lib_c.rb +1 -0
  91. data/lib/gir_ffi/module_base.rb +2 -2
  92. data/lib/gir_ffi/object_base.rb +0 -16
  93. data/lib/gir_ffi/receiver_argument_info.rb +0 -4
  94. data/lib/gir_ffi/registered_type_base.rb +0 -1
  95. data/lib/gir_ffi/sized_array.rb +5 -5
  96. data/lib/gir_ffi/struct_base.rb +4 -0
  97. data/lib/gir_ffi/type_base.rb +2 -2
  98. data/lib/gir_ffi/type_map.rb +1 -0
  99. data/lib/gir_ffi/unintrospectable_type_info.rb +1 -3
  100. data/lib/gir_ffi/user_data_type_info.rb +2 -0
  101. data/lib/gir_ffi/version.rb +2 -1
  102. data/lib/gir_ffi/zero_terminated.rb +6 -6
  103. data/lib/gir_ffi-base/glib/boolean.rb +2 -2
  104. data/lib/gir_ffi-base/glib/strv.rb +1 -1
  105. data/lib/gir_ffi-base/gobject/lib.rb +1 -0
  106. data/lib/gir_ffi-base/gobject.rb +1 -1
  107. data/lib/gir_ffi.rb +2 -0
  108. data/test/ffi-glib/hash_table_test.rb +1 -1
  109. data/test/ffi-glib/strv_test.rb +27 -0
  110. data/test/ffi-gobject_introspection/i_constant_info_test.rb +1 -5
  111. data/test/ffi-gobject_test.rb +3 -3
  112. data/test/gir_ffi/builders/{with_methods_test.rb → registered_type_builder_test.rb} +1 -1
  113. data/test/gir_ffi/builders/signal_closure_builder_test.rb +136 -0
  114. data/test/gir_ffi/builders/user_defined_builder_test.rb +2 -1
  115. data/test/gir_ffi/info_ext/i_signal_info_test.rb +0 -11
  116. data/test/integration/generated_gimarshallingtests_test.rb +47 -2
  117. data/test/integration/generated_regress_test.rb +19 -11
  118. metadata +82 -25
  119. data/lib/gir_ffi/builders/signal_builder.rb +0 -51
  120. data/lib/gir_ffi/builders/with_methods.rb +0 -45
  121. data/lib/gir_ffi/signal_base.rb +0 -21
  122. data/lib/gir_ffi/vfunc_base.rb +0 -9
  123. data/test/gir_ffi/builders/signal_builder_test.rb +0 -106
metadata CHANGED
@@ -1,85 +1,141 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gir_ffi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.4
4
+ version: 0.7.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matijs van Zuijlen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-03 00:00:00.000000000 Z
11
+ date: 2014-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.8'
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
26
  version: '1.8'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: indentation
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: 0.1.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.1.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 5.2.3
47
+ version: '5.2'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 5.2.3
54
+ version: '5.2'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rr
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: 1.1.2
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.1.2
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '10.1'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '10.1'
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: repl_rake
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: yard
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
83
139
  description: |2
84
140
  GirFFI creates bindings for GObject-based libraries at runtime based on introspection
85
141
  data provided by the GObject Introspection Repository (GIR) system. Bindings are created
@@ -164,12 +220,14 @@ files:
164
220
  - lib/gir_ffi/builder.rb
165
221
  - lib/gir_ffi/builder_helper.rb
166
222
  - lib/gir_ffi/builders/argument_builder.rb
223
+ - lib/gir_ffi/builders/argument_builder_collection.rb
167
224
  - lib/gir_ffi/builders/base_argument_builder.rb
168
225
  - lib/gir_ffi/builders/base_type_builder.rb
169
226
  - lib/gir_ffi/builders/c_to_ruby_convertor.rb
170
227
  - lib/gir_ffi/builders/callback_argument_builder.rb
171
228
  - lib/gir_ffi/builders/callback_builder.rb
172
229
  - lib/gir_ffi/builders/callback_return_value_builder.rb
230
+ - lib/gir_ffi/builders/closure_argument_builder.rb
173
231
  - lib/gir_ffi/builders/closure_convertor.rb
174
232
  - lib/gir_ffi/builders/closure_to_pointer_convertor.rb
175
233
  - lib/gir_ffi/builders/constant_builder.rb
@@ -180,6 +238,7 @@ files:
180
238
  - lib/gir_ffi/builders/function_builder.rb
181
239
  - lib/gir_ffi/builders/interface_builder.rb
182
240
  - lib/gir_ffi/builders/mapping_method_builder.rb
241
+ - lib/gir_ffi/builders/marshalling_method_builder.rb
183
242
  - lib/gir_ffi/builders/module_builder.rb
184
243
  - lib/gir_ffi/builders/null_argument_builder.rb
185
244
  - lib/gir_ffi/builders/null_builder.rb
@@ -189,7 +248,7 @@ files:
189
248
  - lib/gir_ffi/builders/registered_type_builder.rb
190
249
  - lib/gir_ffi/builders/return_value_builder.rb
191
250
  - lib/gir_ffi/builders/ruby_to_c_convertor.rb
192
- - lib/gir_ffi/builders/signal_builder.rb
251
+ - lib/gir_ffi/builders/signal_closure_builder.rb
193
252
  - lib/gir_ffi/builders/struct_builder.rb
194
253
  - lib/gir_ffi/builders/type_builder.rb
195
254
  - lib/gir_ffi/builders/unintrospectable_builder.rb
@@ -197,7 +256,6 @@ files:
197
256
  - lib/gir_ffi/builders/user_defined_builder.rb
198
257
  - lib/gir_ffi/builders/vfunc_builder.rb
199
258
  - lib/gir_ffi/builders/with_layout.rb
200
- - lib/gir_ffi/builders/with_methods.rb
201
259
  - lib/gir_ffi/callback_base.rb
202
260
  - lib/gir_ffi/class_base.rb
203
261
  - lib/gir_ffi/enum_base.rb
@@ -211,6 +269,7 @@ files:
211
269
  - lib/gir_ffi/in_out_pointer.rb
212
270
  - lib/gir_ffi/in_pointer.rb
213
271
  - lib/gir_ffi/info_ext.rb
272
+ - lib/gir_ffi/info_ext/full_type_name.rb
214
273
  - lib/gir_ffi/info_ext/i_arg_info.rb
215
274
  - lib/gir_ffi/info_ext/i_callable_info.rb
216
275
  - lib/gir_ffi/info_ext/i_callback_info.rb
@@ -232,7 +291,6 @@ files:
232
291
  - lib/gir_ffi/receiver_type_info.rb
233
292
  - lib/gir_ffi/registered_type_base.rb
234
293
  - lib/gir_ffi/return_value_info.rb
235
- - lib/gir_ffi/signal_base.rb
236
294
  - lib/gir_ffi/sized_array.rb
237
295
  - lib/gir_ffi/struct_base.rb
238
296
  - lib/gir_ffi/type_base.rb
@@ -245,7 +303,6 @@ files:
245
303
  - lib/gir_ffi/user_defined_type_info.rb
246
304
  - lib/gir_ffi/variable_name_generator.rb
247
305
  - lib/gir_ffi/version.rb
248
- - lib/gir_ffi/vfunc_base.rb
249
306
  - lib/gir_ffi/vfunc_implementation.rb
250
307
  - lib/gir_ffi/zero_terminated.rb
251
308
  - tasks/test.rake
@@ -292,14 +349,14 @@ files:
292
349
  - test/gir_ffi/builders/module_builder_test.rb
293
350
  - test/gir_ffi/builders/object_builder_test.rb
294
351
  - test/gir_ffi/builders/property_builder_test.rb
352
+ - test/gir_ffi/builders/registered_type_builder_test.rb
295
353
  - test/gir_ffi/builders/return_value_builder_test.rb
296
- - test/gir_ffi/builders/signal_builder_test.rb
354
+ - test/gir_ffi/builders/signal_closure_builder_test.rb
297
355
  - test/gir_ffi/builders/struct_builder_test.rb
298
356
  - test/gir_ffi/builders/unintrospectable_builder_test.rb
299
357
  - test/gir_ffi/builders/union_builder_test.rb
300
358
  - test/gir_ffi/builders/user_defined_builder_test.rb
301
359
  - test/gir_ffi/builders/vfunc_builder_test.rb
302
- - test/gir_ffi/builders/with_methods_test.rb
303
360
  - test/gir_ffi/callback_base_test.rb
304
361
  - test/gir_ffi/class_base_test.rb
305
362
  - test/gir_ffi/error_type_info_test.rb
@@ -349,18 +406,18 @@ licenses:
349
406
  metadata: {}
350
407
  post_install_message:
351
408
  rdoc_options:
352
- - --main
409
+ - "--main"
353
410
  - README.md
354
411
  require_paths:
355
412
  - lib
356
413
  required_ruby_version: !ruby/object:Gem::Requirement
357
414
  requirements:
358
- - - '>='
415
+ - - ">="
359
416
  - !ruby/object:Gem::Version
360
417
  version: '0'
361
418
  required_rubygems_version: !ruby/object:Gem::Requirement
362
419
  requirements:
363
- - - '>='
420
+ - - ">="
364
421
  - !ruby/object:Gem::Version
365
422
  version: '0'
366
423
  requirements: []
@@ -411,14 +468,14 @@ test_files:
411
468
  - test/gir_ffi/builders/module_builder_test.rb
412
469
  - test/gir_ffi/builders/object_builder_test.rb
413
470
  - test/gir_ffi/builders/property_builder_test.rb
471
+ - test/gir_ffi/builders/registered_type_builder_test.rb
414
472
  - test/gir_ffi/builders/return_value_builder_test.rb
415
- - test/gir_ffi/builders/signal_builder_test.rb
473
+ - test/gir_ffi/builders/signal_closure_builder_test.rb
416
474
  - test/gir_ffi/builders/struct_builder_test.rb
417
475
  - test/gir_ffi/builders/unintrospectable_builder_test.rb
418
476
  - test/gir_ffi/builders/union_builder_test.rb
419
477
  - test/gir_ffi/builders/user_defined_builder_test.rb
420
478
  - test/gir_ffi/builders/vfunc_builder_test.rb
421
- - test/gir_ffi/builders/with_methods_test.rb
422
479
  - test/gir_ffi/callback_base_test.rb
423
480
  - test/gir_ffi/class_base_test.rb
424
481
  - test/gir_ffi/error_type_info_test.rb
@@ -1,51 +0,0 @@
1
- require 'gir_ffi/builders/base_type_builder'
2
- require 'gir_ffi/builders/mapping_method_builder'
3
- require 'gir_ffi/receiver_type_info'
4
- require 'gir_ffi/receiver_argument_info'
5
- require 'gir_ffi/signal_base'
6
- require 'gir_ffi/user_data_type_info'
7
- require 'gir_ffi/user_data_argument_info'
8
-
9
- module GirFFI
10
- module Builders
11
- # Implements the creation of a signal module for handling a particular
12
- # signal. The type will be attached to the appropriate class.
13
- class SignalBuilder < BaseTypeBuilder
14
- def instantiate_class
15
- unless already_set_up
16
- klass.extend SignalBase
17
- setup_constants
18
- klass.class_eval mapping_method_definition
19
- end
20
- klass
21
- end
22
-
23
- def klass
24
- @klass ||= get_or_define_module container_class, @classname
25
- end
26
-
27
- def mapping_method_definition
28
- arg_infos = info.args
29
-
30
- container_type_info = ReceiverTypeInfo.new(container_info)
31
- receiver_info = ReceiverArgumentInfo.new(container_type_info)
32
-
33
- user_data_type_info = UserDataTypeInfo.new
34
- user_data_argument_info = UserDataArgumentInfo.new(user_data_type_info)
35
-
36
- MappingMethodBuilder.for_signal(receiver_info,
37
- arg_infos,
38
- user_data_argument_info,
39
- info.return_type).method_definition
40
- end
41
-
42
- def container_class
43
- @container_class ||= Builder.build_class(container_info)
44
- end
45
-
46
- def container_info
47
- @container_info ||= info.container
48
- end
49
- end
50
- end
51
- end
@@ -1,45 +0,0 @@
1
- require 'gir_ffi/method_stubber'
2
-
3
- module GirFFI
4
- module Builders
5
- # Implements method creation for types such as, :union, :struct,
6
- # :object, :interface.
7
- module WithMethods
8
- def setup_method method
9
- go = info.find_method method
10
- attach_and_define_method method, go, meta_class
11
- end
12
-
13
- def setup_instance_method method
14
- go = info.find_instance_method method
15
- attach_and_define_method method, go, build_class
16
- end
17
-
18
- private
19
-
20
- def meta_class
21
- klass = build_class
22
- return (class << klass; self; end)
23
- end
24
-
25
- def function_definition go
26
- FunctionBuilder.new(go).generate
27
- end
28
-
29
- def attach_and_define_method method, go, modul
30
- return unless go
31
- method = go.safe_name
32
- Builder.attach_ffi_function lib, go
33
- modul.class_eval { remove_method method if method_defined? method }
34
- build_class.class_eval function_definition(go)
35
- return method
36
- end
37
-
38
- def stub_methods
39
- info.get_methods.each do |minfo|
40
- klass.class_eval MethodStubber.new(minfo).method_stub
41
- end
42
- end
43
- end
44
- end
45
- end
@@ -1,21 +0,0 @@
1
- require 'gir_ffi/type_base'
2
-
3
- module GirFFI
4
- module SignalBase
5
- include TypeBase
6
-
7
- # Create signal handler from a Proc. Makes sure arguments are properly
8
- # wrapped.
9
- def from prc
10
- wrap_in_callback_args_mapper(prc)
11
- end
12
-
13
- def wrap_in_callback_args_mapper prc
14
- return if !prc
15
- return prc if FFI::Function === prc
16
- return Proc.new do |*args|
17
- call_with_argument_mapping(prc, *args)
18
- end
19
- end
20
- end
21
- end
@@ -1,9 +0,0 @@
1
- require 'gir_ffi/callback_base'
2
-
3
- module GirFFI
4
- # Base class for virtual methods (vfuncs).
5
- # FIXME: Inheritence direction is arbitrary.
6
- class VFuncBase < CallbackBase
7
- end
8
- end
9
-
@@ -1,106 +0,0 @@
1
- require 'gir_ffi_test_helper'
2
-
3
- describe GirFFI::Builders::SignalBuilder do
4
- let(:builder) { GirFFI::Builders::SignalBuilder.new signal_info }
5
-
6
- describe "#mapping_method_definition" do
7
- describe "for a signal with no arguments or return value" do
8
- let(:signal_info) {
9
- get_signal_introspection_data "Regress", "TestObj", "test" }
10
-
11
- it "returns a valid mapping method including receiver and user data" do
12
- expected = <<-CODE.reset_indentation
13
- def self.call_with_argument_mapping(_proc, _instance, _user_data)
14
- _v1 = Regress::TestObj.wrap(_instance)
15
- _v2 = GirFFI::ArgHelper::OBJECT_STORE.fetch(_user_data)
16
- _proc.call(_v1, _v2)
17
- end
18
- CODE
19
-
20
- builder.mapping_method_definition.must_equal expected
21
- end
22
- end
23
-
24
- describe "for a signal with an argument and a return value" do
25
- let(:signal_info) {
26
- get_signal_introspection_data "Regress", "TestObj", "sig-with-int64-prop" }
27
-
28
- it "returns a valid mapping method" do
29
- skip unless signal_info
30
-
31
- expected = <<-CODE.reset_indentation
32
- def self.call_with_argument_mapping(_proc, _instance, i, _user_data)
33
- _v1 = Regress::TestObj.wrap(_instance)
34
- _v2 = i
35
- _v3 = GirFFI::ArgHelper::OBJECT_STORE.fetch(_user_data)
36
- _v4 = _proc.call(_v1, _v2, _v3)
37
- return _v4
38
- end
39
- CODE
40
-
41
- builder.mapping_method_definition.must_equal expected
42
- end
43
- end
44
-
45
- describe "for a signal with an enum argument" do
46
- let(:signal_info) {
47
- get_signal_introspection_data "Gio", "MountOperation", "reply" }
48
-
49
- it "returns a valid mapping method" do
50
- expected = <<-CODE.reset_indentation
51
- def self.call_with_argument_mapping(_proc, _instance, result, _user_data)
52
- _v1 = Gio::MountOperation.wrap(_instance)
53
- _v2 = Gio::MountOperationResult.wrap(result)
54
- _v3 = GirFFI::ArgHelper::OBJECT_STORE.fetch(_user_data)
55
- _proc.call(_v1, _v2, _v3)
56
- end
57
- CODE
58
-
59
- builder.mapping_method_definition.must_equal expected
60
- end
61
- end
62
-
63
- describe "for a signal with a array plus length arguments" do
64
- let(:signal_info) {
65
- get_signal_introspection_data "Regress", "TestObj", "sig-with-array-len-prop" }
66
-
67
- it "returns a valid mapping method" do
68
- skip unless signal_info
69
-
70
- expected = <<-CODE.reset_indentation
71
- def self.call_with_argument_mapping(_proc, _instance, arr, len, _user_data)
72
- _v1 = Regress::TestObj.wrap(_instance)
73
- _v2 = len
74
- _v3 = GirFFI::ArgHelper::OBJECT_STORE.fetch(_user_data)
75
- _v4 = GirFFI::SizedArray.wrap(:guint32, _v2, arr)
76
- _proc.call(_v1, _v4, _v3)
77
- end
78
- CODE
79
-
80
- builder.mapping_method_definition.must_equal expected
81
- end
82
- end
83
-
84
- describe "for a signal returning an array of integers" do
85
- let(:signal_info) {
86
- get_signal_introspection_data "Regress", "TestObj", "sig-with-intarray-ret" }
87
-
88
- it "returns a valid mapping method" do
89
- skip unless signal_info
90
-
91
- expected = <<-CODE.reset_indentation
92
- def self.call_with_argument_mapping(_proc, _instance, i, _user_data)
93
- _v1 = Regress::TestObj.wrap(_instance)
94
- _v2 = i
95
- _v3 = GirFFI::ArgHelper::OBJECT_STORE.fetch(_user_data)
96
- _v4 = _proc.call(_v1, _v2, _v3)
97
- _v5 = GLib::Array.from(:gint32, _v4)
98
- return _v5
99
- end
100
- CODE
101
-
102
- builder.mapping_method_definition.must_equal expected
103
- end
104
- end
105
- end
106
- end