gir_ffi 0.7.8 → 0.7.9

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 (115) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +16 -0
  3. data/README.md +24 -11
  4. data/TODO.md +10 -2
  5. data/gir_ffi.gemspec +2 -2
  6. data/lib/ffi-glib/array.rb +1 -1
  7. data/lib/ffi-glib/hash_table.rb +0 -4
  8. data/lib/ffi-gobject.rb +10 -6
  9. data/lib/ffi-gobject/object.rb +17 -0
  10. data/lib/ffi-gobject/ruby_closure.rb +1 -1
  11. data/lib/ffi-gobject/value.rb +28 -4
  12. data/lib/ffi-gobject_introspection.rb +4 -0
  13. data/lib/ffi-gobject_introspection/g_error.rb +2 -2
  14. data/lib/ffi-gobject_introspection/i_base_info.rb +1 -3
  15. data/lib/ffi-gobject_introspection/i_callable_info.rb +8 -0
  16. data/lib/ffi-gobject_introspection/i_registered_type_info.rb +2 -0
  17. data/lib/ffi-gobject_introspection/i_repository.rb +4 -4
  18. data/lib/ffi-gobject_introspection/lib.rb +57 -32
  19. data/lib/gir_ffi.rb +1 -1
  20. data/lib/gir_ffi/boxed_base.rb +40 -0
  21. data/lib/gir_ffi/builders/argument_builder.rb +11 -3
  22. data/lib/gir_ffi/builders/base_argument_builder.rb +4 -0
  23. data/lib/gir_ffi/builders/boxed_builder.rb +29 -0
  24. data/lib/gir_ffi/builders/callback_builder.rb +3 -1
  25. data/lib/gir_ffi/builders/callback_return_value_builder.rb +9 -1
  26. data/lib/gir_ffi/builders/field_builder.rb +68 -18
  27. data/lib/gir_ffi/builders/function_builder.rb +12 -2
  28. data/lib/gir_ffi/builders/mapping_method_builder.rb +7 -5
  29. data/lib/gir_ffi/builders/marshalling_method_builder.rb +1 -1
  30. data/lib/gir_ffi/builders/module_builder.rb +1 -1
  31. data/lib/gir_ffi/builders/registered_type_builder.rb +0 -9
  32. data/lib/gir_ffi/builders/return_value_builder.rb +0 -1
  33. data/lib/gir_ffi/builders/signal_closure_builder.rb +3 -1
  34. data/lib/gir_ffi/builders/struct_builder.rb +4 -16
  35. data/lib/gir_ffi/builders/union_builder.rb +2 -13
  36. data/lib/gir_ffi/builders/user_defined_builder.rb +6 -6
  37. data/lib/gir_ffi/builders/vfunc_argument_builder.rb +44 -0
  38. data/lib/gir_ffi/builders/vfunc_builder.rb +3 -1
  39. data/lib/gir_ffi/callback_base.rb +5 -2
  40. data/lib/gir_ffi/class_base.rb +6 -7
  41. data/lib/gir_ffi/enum_base.rb +5 -0
  42. data/lib/gir_ffi/ffi_ext/pointer.rb +1 -0
  43. data/lib/gir_ffi/field_argument_info.rb +4 -0
  44. data/lib/gir_ffi/in_out_pointer.rb +1 -1
  45. data/lib/gir_ffi/in_pointer.rb +2 -2
  46. data/lib/gir_ffi/info_ext/i_arg_info.rb +12 -2
  47. data/lib/gir_ffi/info_ext/i_callable_info.rb +1 -1
  48. data/lib/gir_ffi/info_ext/i_callback_info.rb +7 -2
  49. data/lib/gir_ffi/info_ext/i_field_info.rb +1 -1
  50. data/lib/gir_ffi/info_ext/i_function_info.rb +1 -1
  51. data/lib/gir_ffi/info_ext/i_registered_type_info.rb +7 -2
  52. data/lib/gir_ffi/info_ext/i_type_info.rb +21 -9
  53. data/lib/gir_ffi/info_ext/i_unresolved_info.rb +5 -0
  54. data/lib/gir_ffi/interface_base.rb +5 -0
  55. data/lib/gir_ffi/object_base.rb +5 -0
  56. data/lib/gir_ffi/receiver_argument_info.rb +5 -0
  57. data/lib/gir_ffi/registered_type_base.rb +5 -0
  58. data/lib/gir_ffi/return_value_info.rb +3 -1
  59. data/lib/gir_ffi/sized_array.rb +1 -1
  60. data/lib/gir_ffi/struct_base.rb +2 -24
  61. data/lib/gir_ffi/type_map.rb +5 -1
  62. data/lib/gir_ffi/union_base.rb +2 -2
  63. data/lib/gir_ffi/version.rb +1 -1
  64. data/lib/gir_ffi/zero_terminated.rb +1 -1
  65. data/test/base_test_helper.rb +6 -6
  66. data/test/ffi-glib/hash_table_test.rb +7 -7
  67. data/test/ffi-glib/iconv_test.rb +2 -3
  68. data/test/ffi-glib/main_loop_test.rb +2 -2
  69. data/test/ffi-gobject/gobject_test.rb +1 -1
  70. data/test/ffi-gobject/object_test.rb +5 -14
  71. data/test/ffi-gobject/value_test.rb +30 -6
  72. data/test/ffi-gobject_introspection/i_base_info_test.rb +6 -6
  73. data/test/ffi-gobject_introspection/i_repository_test.rb +2 -4
  74. data/test/gir_ffi/arg_helper_test.rb +1 -1
  75. data/test/gir_ffi/builder_test.rb +18 -12
  76. data/test/gir_ffi/builders/argument_builder_test.rb +2 -5
  77. data/test/gir_ffi/builders/callback_builder_test.rb +1 -1
  78. data/test/gir_ffi/builders/callback_return_value_builder_test.rb +11 -10
  79. data/test/gir_ffi/builders/field_builder_test.rb +0 -2
  80. data/test/gir_ffi/builders/function_builder_test.rb +156 -147
  81. data/test/gir_ffi/builders/interface_builder_test.rb +1 -1
  82. data/test/gir_ffi/builders/module_builder_test.rb +2 -2
  83. data/test/gir_ffi/builders/object_builder_test.rb +2 -2
  84. data/test/gir_ffi/builders/property_builder_test.rb +5 -5
  85. data/test/gir_ffi/builders/return_value_builder_test.rb +30 -30
  86. data/test/gir_ffi/builders/struct_builder_test.rb +14 -14
  87. data/test/gir_ffi/builders/user_defined_builder_test.rb +21 -22
  88. data/test/gir_ffi/builders/vfunc_builder_test.rb +57 -0
  89. data/test/gir_ffi/class_base_test.rb +8 -8
  90. data/test/gir_ffi/ffi_ext/pointer_test.rb +4 -4
  91. data/test/gir_ffi/g_type_test.rb +1 -1
  92. data/test/gir_ffi/in_pointer_test.rb +2 -2
  93. data/test/gir_ffi/info_ext/i_callable_info_test.rb +3 -3
  94. data/test/gir_ffi/info_ext/i_callback_info_test.rb +2 -2
  95. data/test/gir_ffi/info_ext/i_field_info_test.rb +8 -8
  96. data/test/gir_ffi/info_ext/i_function_info_test.rb +13 -13
  97. data/test/gir_ffi/info_ext/i_type_info_test.rb +131 -132
  98. data/test/gir_ffi/info_ext/i_unresolved_info_test.rb +2 -2
  99. data/test/gir_ffi/info_ext/safe_constant_name_test.rb +2 -2
  100. data/test/gir_ffi/info_ext/safe_function_name_test.rb +2 -2
  101. data/test/gir_ffi/interface_base_test.rb +3 -3
  102. data/test/gir_ffi/object_base_test.rb +3 -3
  103. data/test/gir_ffi/sized_array_test.rb +2 -2
  104. data/test/gir_ffi/type_map_test.rb +3 -3
  105. data/test/gir_ffi/unintrospectable_type_info_test.rb +14 -14
  106. data/test/gir_ffi/user_defined_property_info_test.rb +1 -1
  107. data/test/gir_ffi/user_defined_type_info_test.rb +25 -12
  108. data/test/gir_ffi/zero_terminated_test.rb +0 -1
  109. data/test/gir_ffi_test.rb +3 -3
  110. data/test/gir_ffi_test_helper.rb +4 -0
  111. data/test/integration/generated_gimarshallingtests_test.rb +31 -25
  112. data/test/integration/generated_gio_test.rb +1 -1
  113. data/test/integration/generated_gobject_test.rb +1 -1
  114. data/test/integration/generated_regress_test.rb +18 -22
  115. metadata +11 -8
@@ -31,7 +31,7 @@ describe 'The generated Gio module' do
31
31
 
32
32
  it 'knows its GType' do
33
33
  instance_gtype = GObject.type_from_instance @it
34
- @it.class.get_gtype.must_equal instance_gtype
34
+ @it.class.gtype.must_equal instance_gtype
35
35
  end
36
36
  end
37
37
 
@@ -4,7 +4,7 @@ describe GObject do
4
4
  describe '.type_interfaces' do
5
5
  it 'works, showing that returning an array of GType works' do
6
6
  klass = GObject::TypeModule
7
- ifcs = GObject.type_interfaces klass.get_gtype
7
+ ifcs = GObject.type_interfaces klass.gtype
8
8
  assert_equal 1, ifcs.size
9
9
  end
10
10
  end
@@ -225,14 +225,13 @@ describe Regress do
225
225
  assert_equal 54, tb.some_int8
226
226
  end
227
227
 
228
- it 'has non-zero positive result for #get_gtype' do
229
- assert Regress::TestBoxed.get_gtype > 0
228
+ it 'has non-zero positive result for #gtype' do
229
+ assert Regress::TestBoxed.gtype > 0
230
230
  end
231
231
 
232
232
  it 'has a working method #_not_a_method' do
233
+ # NOTE: This method is marked as moved, but this is not exposed in the typelib
233
234
  skip unless get_method_introspection_data('Regress', 'TestBoxed', '_not_a_method')
234
- # FIXME: This method has been moved to a function. Should we still expose
235
- # it as a method?
236
235
  instance._not_a_method
237
236
  pass
238
237
  end
@@ -307,17 +306,16 @@ describe Regress do
307
306
  end
308
307
 
309
308
  describe 'Regress::TestBoxedD' do
309
+ let(:instance) { Regress::TestBoxedD.new 'foo', 42 }
310
310
  before do
311
311
  skip unless get_introspection_data 'Regress', 'TestBoxedD'
312
312
  end
313
313
 
314
314
  it 'creates an instance using #new' do
315
- instance = Regress::TestBoxedD.new 'foo', 42
316
315
  instance.must_be_instance_of Regress::TestBoxedD
317
316
  end
318
317
 
319
318
  it 'has a working method #copy' do
320
- instance = Regress::TestBoxedD.new 'foo', 42
321
319
  copy = instance.copy
322
320
  copy.must_be_instance_of Regress::TestBoxedD
323
321
  instance.get_magic.must_equal copy.get_magic
@@ -325,13 +323,11 @@ describe Regress do
325
323
  end
326
324
 
327
325
  it 'has a working method #free' do
328
- instance = Regress::TestBoxedD.new 'foo', 42
329
326
  instance.free
330
327
  pass
331
328
  end
332
329
 
333
330
  it 'has a working method #get_magic' do
334
- instance = Regress::TestBoxedD.new 'foo', 42
335
331
  instance.get_magic.must_equal 'foo'.length + 42
336
332
  end
337
333
  end
@@ -466,7 +462,7 @@ describe Regress do
466
462
  describe 'Regress::TestFundamentalObject' do
467
463
  it 'does not have GObject::Object as an ancestor' do
468
464
  refute_includes Regress::TestFundamentalObject.ancestors,
469
- GObject::Object
465
+ GObject::Object
470
466
  end
471
467
 
472
468
  it 'cannot be instantiated' do
@@ -521,8 +517,8 @@ describe Regress do
521
517
  assert_includes metaclass.ancestors, GirFFI::InterfaceBase
522
518
  end
523
519
 
524
- it 'has non-zero positive result for #get_gtype' do
525
- Regress::TestInterface.get_gtype.must_be :>, 0
520
+ it 'has non-zero positive result for #gtype' do
521
+ Regress::TestInterface.gtype.must_be :>, 0
526
522
  end
527
523
  end
528
524
 
@@ -575,8 +571,8 @@ describe Regress do
575
571
  let(:instance) { Regress::TestObj.new_from_file('foo') }
576
572
 
577
573
  describe 'its gtype' do
578
- it 'can be found through get_gtype and GObject.type_from_instance' do
579
- gtype = Regress::TestObj.get_gtype
574
+ it 'can be found through gtype and GObject.type_from_instance' do
575
+ gtype = Regress::TestObj.gtype
580
576
  r = GObject.type_from_instance instance
581
577
  assert_equal gtype, r
582
578
  end
@@ -654,10 +650,9 @@ describe Regress do
654
650
 
655
651
  it 'has a working method #instance_method_full' do
656
652
  skip unless get_method_introspection_data('Regress', 'TestObj', 'instance_method_full')
653
+ ref_count(instance).must_equal 1
657
654
  instance.instance_method_full
658
- # FIXME: Is this the behavior we want, or do we want to increase the
659
- # refcount beforehand?
660
- ref_count(instance).must_equal 0
655
+ ref_count(instance).must_equal 1
661
656
  end
662
657
 
663
658
  it 'has a working method #set_bare' do
@@ -723,7 +718,7 @@ describe Regress do
723
718
  it 'has a working method #torture_signature_0' do
724
719
  y, z, q = instance.torture_signature_0(-21, 'hello', 13)
725
720
  assert_equal [-21, 2 * -21, 'hello'.length + 13],
726
- [y, z, q]
721
+ [y, z, q]
727
722
  end
728
723
 
729
724
  it 'has a working method #torture_signature_1' do
@@ -1042,7 +1037,7 @@ describe Regress do
1042
1037
  a = nil
1043
1038
  GObject.signal_connect(instance, 'sig-with-array-prop') { |_, arr, _| a = arr }
1044
1039
  GObject.signal_emit instance, 'sig-with-array-prop',
1045
- GLib::Array.from(:uint, [1, 2, 3])
1040
+ GLib::Array.from(:uint, [1, 2, 3])
1046
1041
  a.to_a.must_equal [1, 2, 3]
1047
1042
  end
1048
1043
 
@@ -1765,7 +1760,7 @@ describe Regress do
1765
1760
 
1766
1761
  it 'has a working function #test_array_fixed_out_objects' do
1767
1762
  result = Regress.test_array_fixed_out_objects
1768
- gtype = Regress::TestObj.get_gtype
1763
+ gtype = Regress::TestObj.gtype
1769
1764
 
1770
1765
  result.size.must_equal 2
1771
1766
 
@@ -2060,7 +2055,7 @@ describe Regress do
2060
2055
  date = r.get_value
2061
2056
  skip unless date.respond_to? :get_year
2062
2057
  assert_equal [1984, :december, 5],
2063
- [date.get_year, date.get_month, date.get_day]
2058
+ [date.get_year, date.get_month, date.get_day]
2064
2059
  end
2065
2060
 
2066
2061
  it 'has a working function #test_def_error_quark' do
@@ -2502,8 +2497,8 @@ describe Regress do
2502
2497
  it 'has a working function #test_torture_signature_2' do
2503
2498
  a = 1
2504
2499
  y, z, q = Regress.test_torture_signature_2 244,
2505
- proc { |u| a = u }, 2, proc { a = 3 },
2506
- 'foofoo', 31
2500
+ proc { |u| a = u }, 2, proc { a = 3 },
2501
+ 'foofoo', 31
2507
2502
  assert_equal [244, 2 * 244, 6 + 31], [y, z, q]
2508
2503
  assert_equal 3, a
2509
2504
  end
@@ -2603,6 +2598,7 @@ describe Regress do
2603
2598
 
2604
2599
  it 'has a working function #test_versioning' do
2605
2600
  skip unless get_introspection_data 'Regress', 'test_versioning'
2601
+ # TODO: Provide versioning info to the end user
2606
2602
  Regress.test_versioning
2607
2603
  pass
2608
2604
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gir_ffi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.8
4
+ version: 0.7.9
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-12-09 00:00:00.000000000 Z
11
+ date: 2015-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -44,28 +44,28 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '5.2'
47
+ version: 5.5.1
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'
54
+ version: 5.5.1
55
55
  - !ruby/object:Gem::Dependency
56
- name: rr
56
+ name: minitest-rspec_mocks
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 1.1.2
61
+ version: 0.2.0
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
- version: 1.1.2
68
+ version: 0.2.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -159,12 +159,14 @@ files:
159
159
  - lib/gir_ffi.rb
160
160
  - lib/gir_ffi/allocation_helper.rb
161
161
  - lib/gir_ffi/arg_helper.rb
162
+ - lib/gir_ffi/boxed_base.rb
162
163
  - lib/gir_ffi/builder.rb
163
164
  - lib/gir_ffi/builder_helper.rb
164
165
  - lib/gir_ffi/builders/argument_builder.rb
165
166
  - lib/gir_ffi/builders/argument_builder_collection.rb
166
167
  - lib/gir_ffi/builders/base_argument_builder.rb
167
168
  - lib/gir_ffi/builders/base_type_builder.rb
169
+ - lib/gir_ffi/builders/boxed_builder.rb
168
170
  - lib/gir_ffi/builders/c_to_ruby_convertor.rb
169
171
  - lib/gir_ffi/builders/callback_argument_builder.rb
170
172
  - lib/gir_ffi/builders/callback_builder.rb
@@ -195,6 +197,7 @@ files:
195
197
  - lib/gir_ffi/builders/unintrospectable_builder.rb
196
198
  - lib/gir_ffi/builders/union_builder.rb
197
199
  - lib/gir_ffi/builders/user_defined_builder.rb
200
+ - lib/gir_ffi/builders/vfunc_argument_builder.rb
198
201
  - lib/gir_ffi/builders/vfunc_builder.rb
199
202
  - lib/gir_ffi/builders/with_layout.rb
200
203
  - lib/gir_ffi/callback_base.rb
@@ -367,7 +370,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
367
370
  version: '0'
368
371
  requirements: []
369
372
  rubyforge_project:
370
- rubygems_version: 2.2.2
373
+ rubygems_version: 2.4.5
371
374
  signing_key:
372
375
  specification_version: 4
373
376
  summary: FFI-based GObject binding using the GObject Introspection Repository