gir_ffi 0.9.5 → 0.10.0.pre1
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.
- checksums.yaml +4 -4
- data/Changelog.md +9 -0
- data/lib/ffi-glib/byte_array.rb +1 -1
- data/lib/ffi-glib/bytes.rb +4 -4
- data/lib/ffi-glib/container_class_methods.rb +2 -0
- data/lib/ffi-glib/iconv.rb +2 -2
- data/lib/ffi-glib/variant.rb +10 -2
- data/lib/ffi-gobject.rb +6 -14
- data/lib/ffi-gobject/object.rb +7 -0
- data/lib/ffi-gobject/object_class.rb +1 -1
- data/lib/ffi-gobject/param_spec.rb +12 -0
- data/lib/ffi-gobject/value.rb +20 -11
- data/lib/gir_ffi-base/gobject.rb +35 -3
- data/lib/gir_ffi-base/gobject/lib.rb +2 -0
- data/lib/gir_ffi/allocation_helper.rb +11 -0
- data/lib/gir_ffi/arg_helper.rb +4 -0
- data/lib/gir_ffi/boxed_base.rb +28 -32
- data/lib/gir_ffi/builders/argument_builder.rb +31 -6
- data/lib/gir_ffi/builders/c_to_ruby_convertor.rb +36 -7
- data/lib/gir_ffi/builders/callback_argument_builder.rb +24 -10
- data/lib/gir_ffi/builders/closure_to_pointer_convertor.rb +1 -1
- data/lib/gir_ffi/builders/field_builder.rb +28 -10
- data/lib/gir_ffi/builders/full_c_to_ruby_convertor.rb +2 -3
- data/lib/gir_ffi/builders/initializer_return_value_builder.rb +5 -1
- data/lib/gir_ffi/builders/null_argument_builder.rb +0 -12
- data/lib/gir_ffi/builders/pointer_value_convertor.rb +38 -0
- data/lib/gir_ffi/builders/return_value_builder.rb +12 -10
- data/lib/gir_ffi/builders/ruby_to_c_convertor.rb +21 -2
- data/lib/gir_ffi/builders/struct_builder.rb +9 -2
- data/lib/gir_ffi/builders/{boxed_builder.rb → struct_like.rb} +2 -5
- data/lib/gir_ffi/builders/unintrospectable_boxed_builder.rb +5 -2
- data/lib/gir_ffi/builders/union_builder.rb +5 -2
- data/lib/gir_ffi/enum_base.rb +4 -0
- data/lib/gir_ffi/error_argument_info.rb +0 -16
- data/lib/gir_ffi/ffi_ext/pointer.rb +11 -5
- data/lib/gir_ffi/flags_base.rb +4 -0
- data/lib/gir_ffi/in_out_pointer.rb +5 -30
- data/lib/gir_ffi/in_pointer.rb +5 -4
- data/lib/gir_ffi/info_ext/i_type_info.rb +3 -5
- data/lib/gir_ffi/object_base.rb +4 -0
- data/lib/gir_ffi/sized_array.rb +20 -0
- data/lib/gir_ffi/struct_base.rb +13 -2
- data/lib/gir_ffi/struct_like_base.rb +53 -0
- data/lib/gir_ffi/union_base.rb +7 -1
- data/lib/gir_ffi/version.rb +1 -1
- data/test/ffi-glib/destroy_notify_test.rb +4 -1
- data/test/ffi-gobject/param_spec_test.rb +18 -0
- data/test/gir_ffi/arg_helper_test.rb +17 -0
- data/test/gir_ffi/boxed_base_test.rb +24 -0
- data/test/gir_ffi/builders/argument_builder_test.rb +156 -63
- data/test/gir_ffi/builders/callback_argument_builder_test.rb +10 -10
- data/test/gir_ffi/builders/callback_builder_test.rb +31 -8
- data/test/gir_ffi/builders/field_builder_test.rb +32 -30
- data/test/gir_ffi/builders/function_builder_test.rb +251 -45
- data/test/gir_ffi/builders/initializer_builder_test.rb +17 -1
- data/test/gir_ffi/builders/return_value_builder_test.rb +115 -68
- data/test/gir_ffi/builders/struct_builder_test.rb +6 -0
- data/test/gir_ffi/builders/unintrospectable_builder_test.rb +4 -1
- data/test/gir_ffi/builders/vfunc_builder_test.rb +10 -10
- data/test/gir_ffi/in_out_pointer_test.rb +12 -81
- data/test/gir_ffi/in_pointer_test.rb +0 -17
- data/test/gir_ffi/info_ext/i_type_info_test.rb +0 -10
- data/test/gir_ffi/sized_array_test.rb +62 -0
- data/test/gir_ffi/struct_base_test.rb +24 -0
- data/test/gir_ffi/union_base_test.rb +24 -0
- data/test/gir_ffi/version_test.rb +1 -1
- data/test/integration/generated_gimarshallingtests_test.rb +32 -12
- data/test/integration/generated_regress_test.rb +9 -12
- metadata +12 -8
- data/lib/ffi-gobject/base.rb +0 -27
- data/lib/gir_ffi/user_data_argument_info.rb +0 -24
- data/lib/gir_ffi/user_data_type_info.rb +0 -22
@@ -24,7 +24,7 @@ describe GirFFI::Builders::InitializerBuilder do
|
|
24
24
|
it 'builds a custom initializer' do
|
25
25
|
code.must_equal <<-CODE.reset_indentation
|
26
26
|
def initialize_from_file(x)
|
27
|
-
_v1 = GirFFI::InPointer.
|
27
|
+
_v1 = GirFFI::InPointer.from_utf8(x)
|
28
28
|
_v2 = FFI::MemoryPointer.new(:pointer).write_pointer nil
|
29
29
|
_v3 = Regress::Lib.regress_test_obj_new_from_file _v1, _v2
|
30
30
|
GirFFI::ArgHelper.check_error(_v2)
|
@@ -33,5 +33,21 @@ describe GirFFI::Builders::InitializerBuilder do
|
|
33
33
|
CODE
|
34
34
|
end
|
35
35
|
end
|
36
|
+
|
37
|
+
describe 'for constructors for boxed types' do
|
38
|
+
let(:function_info) do
|
39
|
+
get_method_introspection_data 'GIMarshallingTests', 'BoxedStruct', 'new'
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'builds an initializer that sets autorelease to true' do
|
43
|
+
code.must_equal <<-CODE.reset_indentation
|
44
|
+
def initialize
|
45
|
+
_v1 = GIMarshallingTests::Lib.gi_marshalling_tests_boxed_struct_new
|
46
|
+
_v1.autorelease = true
|
47
|
+
store_pointer(_v1)
|
48
|
+
end
|
49
|
+
CODE
|
50
|
+
end
|
51
|
+
end
|
36
52
|
end
|
37
53
|
end
|
@@ -3,15 +3,17 @@ require 'gir_ffi_test_helper'
|
|
3
3
|
|
4
4
|
describe GirFFI::Builders::ReturnValueBuilder do
|
5
5
|
let(:var_gen) { GirFFI::VariableNameGenerator.new }
|
6
|
-
let(:
|
6
|
+
let(:type_info) { method_info.return_type }
|
7
|
+
let(:ownership_transfer) { method_info.caller_owns }
|
8
|
+
let(:return_type_info) { GirFFI::ReturnValueInfo.new(type_info, ownership_transfer, false) }
|
7
9
|
let(:builder) do
|
8
10
|
GirFFI::Builders::ReturnValueBuilder.new(var_gen, return_type_info)
|
9
11
|
end
|
10
12
|
|
11
13
|
describe 'for :gint32' do
|
12
|
-
let(:
|
14
|
+
let(:method_info) do
|
13
15
|
get_introspection_data('GIMarshallingTests',
|
14
|
-
'int_return_min')
|
16
|
+
'int_return_min')
|
15
17
|
end
|
16
18
|
|
17
19
|
it 'has no statements in #post_conversion' do
|
@@ -25,33 +27,35 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
25
27
|
end
|
26
28
|
|
27
29
|
describe 'for :struct' do
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
30
|
+
describe 'with transfer :nothing' do
|
31
|
+
let(:method_info) do
|
32
|
+
get_method_introspection_data('GIMarshallingTests',
|
33
|
+
'BoxedStruct',
|
34
|
+
'returnv')
|
35
|
+
end
|
33
36
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
37
|
+
it 'wraps and copies the result in #post_conversion' do
|
38
|
+
builder.capture_variable_name.must_equal '_v1'
|
39
|
+
builder.post_conversion.must_equal ['_v2 = GIMarshallingTests::BoxedStruct.wrap_copy(_v1)']
|
40
|
+
end
|
38
41
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
+
it 'returns the copied result' do
|
43
|
+
builder.capture_variable_name.must_equal '_v1'
|
44
|
+
builder.return_value_name.must_equal '_v2'
|
45
|
+
end
|
42
46
|
end
|
43
47
|
end
|
44
48
|
|
45
49
|
describe 'for :union' do
|
46
|
-
let(:
|
50
|
+
let(:method_info) do
|
47
51
|
get_method_introspection_data('GIMarshallingTests',
|
48
52
|
'Union',
|
49
|
-
'returnv')
|
53
|
+
'returnv')
|
50
54
|
end
|
51
55
|
|
52
56
|
it 'wraps the result in #post_conversion' do
|
53
57
|
builder.capture_variable_name.must_equal '_v1'
|
54
|
-
builder.post_conversion.must_equal ['_v2 = GIMarshallingTests::Union.
|
58
|
+
builder.post_conversion.must_equal ['_v2 = GIMarshallingTests::Union.wrap_copy(_v1)']
|
55
59
|
end
|
56
60
|
|
57
61
|
it 'returns the wrapped result' do
|
@@ -61,10 +65,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
61
65
|
end
|
62
66
|
|
63
67
|
describe 'for :interface' do
|
64
|
-
let(:
|
68
|
+
let(:method_info) do
|
65
69
|
get_method_introspection_data('Gio',
|
66
70
|
'File',
|
67
|
-
'new_for_commandline_arg')
|
71
|
+
'new_for_commandline_arg')
|
68
72
|
end
|
69
73
|
|
70
74
|
it 'wraps the result in #post_conversion' do
|
@@ -79,28 +83,49 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
79
83
|
end
|
80
84
|
|
81
85
|
describe 'for :object' do
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
86
|
+
describe 'with full ownership transfer' do
|
87
|
+
let(:method_info) do
|
88
|
+
get_method_introspection_data('GIMarshallingTests',
|
89
|
+
'Object',
|
90
|
+
'full_return')
|
91
|
+
end
|
87
92
|
|
88
|
-
|
89
|
-
|
90
|
-
|
93
|
+
it 'wraps the result in #post_conversion' do
|
94
|
+
builder.capture_variable_name.must_equal '_v1'
|
95
|
+
builder.post_conversion.must_equal ['_v2 = GIMarshallingTests::Object.wrap(_v1)']
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'returns the wrapped result' do
|
99
|
+
builder.capture_variable_name.must_equal '_v1'
|
100
|
+
builder.return_value_name.must_equal '_v2'
|
101
|
+
end
|
91
102
|
end
|
92
103
|
|
93
|
-
|
94
|
-
|
95
|
-
|
104
|
+
describe 'with no ownership transfer' do
|
105
|
+
let(:method_info) do
|
106
|
+
get_method_introspection_data('GIMarshallingTests',
|
107
|
+
'Object',
|
108
|
+
'none_return')
|
109
|
+
end
|
110
|
+
|
111
|
+
it 'wraps the result in #post_conversion' do
|
112
|
+
builder.capture_variable_name.must_equal '_v1'
|
113
|
+
builder.post_conversion.
|
114
|
+
must_equal ['_v2 = GIMarshallingTests::Object.wrap(_v1).tap { |it| it && it.ref }']
|
115
|
+
end
|
116
|
+
|
117
|
+
it 'returns the wrapped result' do
|
118
|
+
builder.capture_variable_name.must_equal '_v1'
|
119
|
+
builder.return_value_name.must_equal '_v2'
|
120
|
+
end
|
96
121
|
end
|
97
122
|
end
|
98
123
|
|
99
124
|
describe 'for :strv' do
|
100
|
-
let(:
|
125
|
+
let(:method_info) do
|
101
126
|
get_method_introspection_data('GLib',
|
102
127
|
'KeyFile',
|
103
|
-
'get_locale_string_list')
|
128
|
+
'get_locale_string_list')
|
104
129
|
end
|
105
130
|
|
106
131
|
it 'wraps the result in #post_conversion' do
|
@@ -115,10 +140,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
115
140
|
end
|
116
141
|
|
117
142
|
describe 'for :zero_terminated' do
|
118
|
-
let(:
|
143
|
+
let(:method_info) do
|
119
144
|
get_method_introspection_data('GLib',
|
120
145
|
'Variant',
|
121
|
-
'dup_bytestring')
|
146
|
+
'dup_bytestring')
|
122
147
|
end
|
123
148
|
before do
|
124
149
|
skip unless type_info.zero_terminated?
|
@@ -136,9 +161,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
136
161
|
end
|
137
162
|
|
138
163
|
describe 'for :byte_array' do
|
139
|
-
let(:
|
164
|
+
let(:method_info) do
|
140
165
|
get_introspection_data('GIMarshallingTests',
|
141
|
-
'bytearray_full_return')
|
166
|
+
'bytearray_full_return')
|
142
167
|
end
|
143
168
|
|
144
169
|
it 'wraps the result in #post_conversion' do
|
@@ -153,9 +178,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
153
178
|
end
|
154
179
|
|
155
180
|
describe 'for :ptr_array' do
|
156
|
-
let(:
|
181
|
+
let(:method_info) do
|
157
182
|
get_introspection_data('GIMarshallingTests',
|
158
|
-
'gptrarray_utf8_none_return')
|
183
|
+
'gptrarray_utf8_none_return')
|
159
184
|
end
|
160
185
|
|
161
186
|
it 'wraps the result in #post_conversion' do
|
@@ -170,9 +195,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
170
195
|
end
|
171
196
|
|
172
197
|
describe 'for :glist' do
|
173
|
-
let(:
|
198
|
+
let(:method_info) do
|
174
199
|
get_introspection_data('GIMarshallingTests',
|
175
|
-
'glist_int_none_return')
|
200
|
+
'glist_int_none_return')
|
176
201
|
end
|
177
202
|
|
178
203
|
it 'wraps the result in #post_conversion' do
|
@@ -187,9 +212,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
187
212
|
end
|
188
213
|
|
189
214
|
describe 'for :gslist' do
|
190
|
-
let(:
|
215
|
+
let(:method_info) do
|
191
216
|
get_introspection_data('GIMarshallingTests',
|
192
|
-
'gslist_int_none_return')
|
217
|
+
'gslist_int_none_return')
|
193
218
|
end
|
194
219
|
|
195
220
|
it 'wraps the result in #post_conversion' do
|
@@ -204,9 +229,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
204
229
|
end
|
205
230
|
|
206
231
|
describe 'for :ghash' do
|
207
|
-
let(:
|
232
|
+
let(:method_info) do
|
208
233
|
get_introspection_data('GIMarshallingTests',
|
209
|
-
'ghashtable_int_none_return')
|
234
|
+
'ghashtable_int_none_return')
|
210
235
|
end
|
211
236
|
|
212
237
|
it 'wraps the result in #post_conversion' do
|
@@ -221,9 +246,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
221
246
|
end
|
222
247
|
|
223
248
|
describe 'for :array' do
|
224
|
-
let(:
|
249
|
+
let(:method_info) do
|
225
250
|
get_introspection_data('GIMarshallingTests',
|
226
|
-
'garray_int_none_return')
|
251
|
+
'garray_int_none_return')
|
227
252
|
end
|
228
253
|
|
229
254
|
it 'wraps the result in #post_conversion' do
|
@@ -238,9 +263,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
238
263
|
end
|
239
264
|
|
240
265
|
describe 'for :error' do
|
241
|
-
let(:
|
266
|
+
let(:method_info) do
|
242
267
|
get_introspection_data('GIMarshallingTests',
|
243
|
-
'gerror_return')
|
268
|
+
'gerror_return')
|
244
269
|
end
|
245
270
|
|
246
271
|
it 'wraps the result in #post_conversion' do
|
@@ -256,9 +281,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
256
281
|
|
257
282
|
describe 'for :c' do
|
258
283
|
describe 'with fixed size' do
|
259
|
-
let(:
|
284
|
+
let(:method_info) do
|
260
285
|
get_introspection_data('GIMarshallingTests',
|
261
|
-
'array_fixed_int_return')
|
286
|
+
'array_fixed_int_return')
|
262
287
|
end
|
263
288
|
|
264
289
|
it 'converts the result in #post_conversion' do
|
@@ -274,10 +299,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
274
299
|
|
275
300
|
describe 'with separate size parameter' do
|
276
301
|
let(:length_argument) { Object.new }
|
277
|
-
let(:
|
302
|
+
let(:method_info) do
|
278
303
|
get_method_introspection_data('GIMarshallingTests',
|
279
304
|
'Object',
|
280
|
-
'method_array_return')
|
305
|
+
'method_array_return')
|
281
306
|
end
|
282
307
|
|
283
308
|
before do
|
@@ -298,22 +323,42 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
298
323
|
end
|
299
324
|
|
300
325
|
describe 'for :utf8' do
|
301
|
-
|
302
|
-
|
303
|
-
|
326
|
+
describe 'with no transfer' do
|
327
|
+
let(:method_info) do
|
328
|
+
get_introspection_data('GIMarshallingTests', 'utf8_none_return')
|
329
|
+
end
|
304
330
|
|
305
|
-
|
306
|
-
|
307
|
-
|
331
|
+
it 'converts the result in #post_conversion' do
|
332
|
+
builder.capture_variable_name.must_equal '_v1'
|
333
|
+
builder.post_conversion.must_equal ['_v2 = _v1.to_utf8']
|
334
|
+
end
|
335
|
+
|
336
|
+
it 'returns the converted result' do
|
337
|
+
builder.capture_variable_name.must_equal '_v1'
|
338
|
+
builder.return_value_name.must_equal '_v2'
|
339
|
+
end
|
308
340
|
end
|
309
341
|
|
310
|
-
|
311
|
-
|
312
|
-
|
342
|
+
describe 'with full transfer' do
|
343
|
+
let(:method_info) do
|
344
|
+
get_introspection_data('GIMarshallingTests', 'utf8_full_return')
|
345
|
+
end
|
346
|
+
|
347
|
+
it 'autoreleases and converts the result in #post_conversion' do
|
348
|
+
builder.capture_variable_name.must_equal '_v1'
|
349
|
+
builder.post_conversion.
|
350
|
+
must_equal ['_v2 = _v1.tap { |it| it.autorelease = true }.to_utf8']
|
351
|
+
end
|
352
|
+
|
353
|
+
it 'returns the converted result' do
|
354
|
+
builder.capture_variable_name.must_equal '_v1'
|
355
|
+
builder.return_value_name.must_equal '_v2'
|
356
|
+
end
|
313
357
|
end
|
314
358
|
end
|
315
359
|
|
316
360
|
describe 'for :void pointer' do
|
361
|
+
let(:ownership_transfer) { :nothing }
|
317
362
|
let(:callback_info) do
|
318
363
|
get_introspection_data('GIMarshallingTests', 'CallbackIntInt')
|
319
364
|
end
|
@@ -334,8 +379,8 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
334
379
|
end
|
335
380
|
|
336
381
|
describe 'for :void' do
|
337
|
-
let(:
|
338
|
-
get_method_introspection_data('Regress', 'TestObj', 'null_out')
|
382
|
+
let(:method_info) do
|
383
|
+
get_method_introspection_data('Regress', 'TestObj', 'null_out')
|
339
384
|
end
|
340
385
|
|
341
386
|
it 'has no statements in #post_conversion' do
|
@@ -352,9 +397,11 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
352
397
|
end
|
353
398
|
|
354
399
|
describe 'for a closure argument' do
|
355
|
-
let(:
|
356
|
-
|
400
|
+
let(:ownership_transfer) { :nothing }
|
401
|
+
let(:callback_info) do
|
402
|
+
get_introspection_data('Regress', 'TestCallbackUserData')
|
357
403
|
end
|
404
|
+
let(:type_info) { callback_info.args[0].argument_type }
|
358
405
|
|
359
406
|
before do
|
360
407
|
builder.closure = true
|
@@ -372,8 +419,8 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
372
419
|
end
|
373
420
|
|
374
421
|
describe 'for a skipped return value' do
|
375
|
-
let(:
|
376
|
-
get_method_introspection_data('Regress', 'TestObj', 'skip_return_val')
|
422
|
+
let(:method_info) do
|
423
|
+
get_method_introspection_data('Regress', 'TestObj', 'skip_return_val')
|
377
424
|
end
|
378
425
|
let(:return_type_info) { GirFFI::ReturnValueInfo.new(type_info, :nothing, true) }
|
379
426
|
|
@@ -54,6 +54,12 @@ describe GirFFI::Builders::StructBuilder do
|
|
54
54
|
builder.superclass.must_equal GirFFI::StructBase
|
55
55
|
end
|
56
56
|
|
57
|
+
it 'returns BoxedBase for a boxed type' do
|
58
|
+
info = get_introspection_data 'Regress', 'TestSimpleBoxedB'
|
59
|
+
builder = GirFFI::Builders::StructBuilder.new info
|
60
|
+
builder.superclass.must_equal GirFFI::BoxedBase
|
61
|
+
end
|
62
|
+
|
57
63
|
it 'returns the GObject parent class for a type class' do
|
58
64
|
info = get_introspection_data 'GIMarshallingTests', 'SubSubObjectClass'
|
59
65
|
builder = GirFFI::Builders::StructBuilder.new info
|
@@ -3,7 +3,6 @@ require 'gir_ffi_test_helper'
|
|
3
3
|
|
4
4
|
GirFFI.setup :Gio
|
5
5
|
GirFFI.setup :Gst
|
6
|
-
Gst.init []
|
7
6
|
|
8
7
|
describe GirFFI::Builders::UnintrospectableBuilder do
|
9
8
|
describe 'building the GLocalFile type' do
|
@@ -58,6 +57,10 @@ describe GirFFI::Builders::UnintrospectableBuilder do
|
|
58
57
|
let(:klass) { instance.class }
|
59
58
|
let(:builder) { klass.gir_ffi_builder }
|
60
59
|
|
60
|
+
before do
|
61
|
+
Gst.init []
|
62
|
+
end
|
63
|
+
|
61
64
|
describe 'its #find_signal method' do
|
62
65
|
it 'finds signals that are not defined in the GIR' do
|
63
66
|
signal = builder.find_signal 'handoff'
|
@@ -78,9 +78,9 @@ describe GirFFI::Builders::VFuncBuilder do
|
|
78
78
|
def self.call_with_argument_mapping(_proc, _instance, arg, out)
|
79
79
|
_v1 = GIMarshallingTests::Object.wrap(_instance)
|
80
80
|
_v2 = arg
|
81
|
-
_v3 =
|
81
|
+
_v3 = out
|
82
82
|
_v4 = _proc.call(_v1, _v2)
|
83
|
-
_v3.
|
83
|
+
_v3.put_int8 0, _v4
|
84
84
|
end
|
85
85
|
CODE
|
86
86
|
|
@@ -99,9 +99,9 @@ describe GirFFI::Builders::VFuncBuilder do
|
|
99
99
|
def self.call_with_argument_mapping(_proc, _instance, arg, out)
|
100
100
|
_v1 = GIMarshallingTests::Object.wrap(_instance)
|
101
101
|
_v2 = arg
|
102
|
-
_v3 = GirFFI::
|
102
|
+
_v3 = GirFFI::AllocationHelper.allocate(:int8).tap { |ptr| out.put_pointer 0, ptr }
|
103
103
|
_v4 = _proc.call(_v1, _v2)
|
104
|
-
_v3.
|
104
|
+
_v3.put_pointer 0, _v4
|
105
105
|
end
|
106
106
|
CODE
|
107
107
|
|
@@ -119,9 +119,9 @@ describe GirFFI::Builders::VFuncBuilder do
|
|
119
119
|
expected = <<-CODE.reset_indentation
|
120
120
|
def self.call_with_argument_mapping(_proc, _instance, a)
|
121
121
|
_v1 = GIMarshallingTests::Object.wrap(_instance)
|
122
|
-
_v2 =
|
122
|
+
_v2 = a
|
123
123
|
_v3 = _proc.call(_v1)
|
124
|
-
|
124
|
+
GObject::Value.copy_value_to_pointer(GObject::Value.from(_v3), _v2)
|
125
125
|
end
|
126
126
|
CODE
|
127
127
|
|
@@ -140,11 +140,11 @@ describe GirFFI::Builders::VFuncBuilder do
|
|
140
140
|
def self.call_with_argument_mapping(_proc, _instance, x, _error)
|
141
141
|
_v1 = GIMarshallingTests::Object.wrap(_instance)
|
142
142
|
_v2 = x
|
143
|
-
_v3 =
|
143
|
+
_v3 = _error
|
144
144
|
begin
|
145
145
|
_v4 = _proc.call(_v1, _v2)
|
146
146
|
rescue => _v5
|
147
|
-
_v3.
|
147
|
+
_v3.put_pointer 0, GLib::Error.from(_v5)
|
148
148
|
end
|
149
149
|
return _v4
|
150
150
|
end
|
@@ -201,9 +201,9 @@ describe GirFFI::Builders::VFuncBuilder do
|
|
201
201
|
expected = <<-CODE.reset_indentation
|
202
202
|
def self.call_with_argument_mapping(_proc, _instance, object)
|
203
203
|
_v1 = GIMarshallingTests::Object.wrap(_instance)
|
204
|
-
_v2 =
|
204
|
+
_v2 = object
|
205
205
|
_v3 = _proc.call(_v1)
|
206
|
-
_v2.
|
206
|
+
_v2.put_pointer 0, GObject::Object.from(_v3.ref)
|
207
207
|
end
|
208
208
|
CODE
|
209
209
|
|