gir_ffi 0.14.0 → 0.15.3

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 (265) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +45 -0
  3. data/Gemfile +6 -4
  4. data/README.md +11 -10
  5. data/Rakefile +5 -5
  6. data/lib/ffi-glib.rb +16 -16
  7. data/lib/ffi-glib/array.rb +14 -4
  8. data/lib/ffi-glib/byte_array.rb +7 -2
  9. data/lib/ffi-glib/container_class_methods.rb +1 -1
  10. data/lib/ffi-glib/error.rb +1 -1
  11. data/lib/ffi-glib/hash_table.rb +3 -3
  12. data/lib/ffi-glib/list.rb +1 -1
  13. data/lib/ffi-glib/list_methods.rb +1 -1
  14. data/lib/ffi-glib/main_loop.rb +3 -3
  15. data/lib/ffi-glib/ptr_array.rb +30 -8
  16. data/lib/ffi-glib/s_list.rb +1 -1
  17. data/lib/ffi-glib/variant.rb +1 -1
  18. data/lib/ffi-gobject.rb +13 -13
  19. data/lib/ffi-gobject/object.rb +23 -32
  20. data/lib/ffi-gobject/param_spec.rb +1 -1
  21. data/lib/ffi-gobject/ruby_closure.rb +2 -2
  22. data/lib/ffi-gobject/value.rb +40 -29
  23. data/lib/ffi-gobject_introspection.rb +20 -20
  24. data/lib/ffi-gobject_introspection/gobject_type_init.rb +2 -2
  25. data/lib/ffi-gobject_introspection/i_arg_info.rb +2 -2
  26. data/lib/ffi-gobject_introspection/i_base_info.rb +27 -17
  27. data/lib/ffi-gobject_introspection/i_callable_info.rb +4 -4
  28. data/lib/ffi-gobject_introspection/i_constant_info.rb +2 -2
  29. data/lib/ffi-gobject_introspection/i_enum_info.rb +1 -0
  30. data/lib/ffi-gobject_introspection/i_field_info.rb +1 -1
  31. data/lib/ffi-gobject_introspection/i_function_info.rb +1 -1
  32. data/lib/ffi-gobject_introspection/i_interface_info.rb +1 -1
  33. data/lib/ffi-gobject_introspection/i_object_info.rb +2 -2
  34. data/lib/ffi-gobject_introspection/i_property_info.rb +2 -2
  35. data/lib/ffi-gobject_introspection/i_repository.rb +9 -6
  36. data/lib/ffi-gobject_introspection/i_struct_info.rb +2 -1
  37. data/lib/ffi-gobject_introspection/i_type_info.rb +13 -7
  38. data/lib/ffi-gobject_introspection/i_unresolved_info.rb +1 -1
  39. data/lib/ffi-gobject_introspection/i_vfunc_info.rb +1 -1
  40. data/lib/ffi-gobject_introspection/lib.rb +30 -19
  41. data/lib/ffi-gobject_introspection/strv.rb +1 -1
  42. data/lib/gir_ffi-base.rb +1 -1
  43. data/lib/gir_ffi-base/gobject.rb +26 -25
  44. data/lib/gir_ffi-base/gobject/lib.rb +3 -2
  45. data/lib/gir_ffi.rb +3 -3
  46. data/lib/gir_ffi/allocation_helper.rb +1 -1
  47. data/lib/gir_ffi/arg_helper.rb +4 -4
  48. data/lib/gir_ffi/{in_out_pointer.rb → array_element_convertor.rb} +16 -23
  49. data/lib/gir_ffi/boolean.rb +1 -1
  50. data/lib/gir_ffi/boxed_base.rb +1 -1
  51. data/lib/gir_ffi/builder.rb +18 -10
  52. data/lib/gir_ffi/builder_helper.rb +6 -1
  53. data/lib/gir_ffi/builders/argument_builder.rb +19 -19
  54. data/lib/gir_ffi/builders/argument_builder_collection.rb +2 -2
  55. data/lib/gir_ffi/builders/base_argument_builder.rb +1 -0
  56. data/lib/gir_ffi/builders/base_method_builder.rb +7 -7
  57. data/lib/gir_ffi/builders/base_return_value_builder.rb +1 -1
  58. data/lib/gir_ffi/builders/base_type_builder.rb +1 -1
  59. data/lib/gir_ffi/builders/c_to_ruby_convertor.rb +5 -5
  60. data/lib/gir_ffi/builders/callback_argument_builder.rb +8 -8
  61. data/lib/gir_ffi/builders/callback_builder.rb +16 -4
  62. data/lib/gir_ffi/builders/callback_return_value_builder.rb +2 -2
  63. data/lib/gir_ffi/builders/closure_argument_builder.rb +1 -1
  64. data/lib/gir_ffi/builders/closure_return_value_builder.rb +1 -1
  65. data/lib/gir_ffi/builders/constant_builder.rb +1 -1
  66. data/lib/gir_ffi/builders/constructor_builder.rb +9 -9
  67. data/lib/gir_ffi/builders/enum_builder.rb +16 -3
  68. data/lib/gir_ffi/builders/field_builder.rb +20 -18
  69. data/lib/gir_ffi/builders/flags_builder.rb +2 -2
  70. data/lib/gir_ffi/builders/full_c_to_ruby_convertor.rb +1 -1
  71. data/lib/gir_ffi/builders/function_builder.rb +11 -5
  72. data/lib/gir_ffi/builders/initializer_builder.rb +3 -3
  73. data/lib/gir_ffi/builders/initializer_return_value_builder.rb +2 -2
  74. data/lib/gir_ffi/builders/interface_builder.rb +2 -2
  75. data/lib/gir_ffi/builders/mapping_method_builder.rb +9 -9
  76. data/lib/gir_ffi/builders/marshalling_method_builder.rb +7 -7
  77. data/lib/gir_ffi/builders/method_template.rb +1 -1
  78. data/lib/gir_ffi/builders/module_builder.rb +7 -7
  79. data/lib/gir_ffi/builders/object_builder.rb +6 -6
  80. data/lib/gir_ffi/builders/property_argument_builder.rb +1 -1
  81. data/lib/gir_ffi/builders/property_builder.rb +13 -12
  82. data/lib/gir_ffi/builders/property_return_value_builder.rb +1 -1
  83. data/lib/gir_ffi/builders/registered_type_builder.rb +14 -5
  84. data/lib/gir_ffi/builders/return_value_builder.rb +4 -4
  85. data/lib/gir_ffi/builders/ruby_to_c_convertor.rb +6 -6
  86. data/lib/gir_ffi/builders/signal_closure_builder.rb +2 -2
  87. data/lib/gir_ffi/builders/struct_builder.rb +6 -4
  88. data/lib/gir_ffi/builders/struct_like.rb +1 -1
  89. data/lib/gir_ffi/builders/type_builder.rb +12 -12
  90. data/lib/gir_ffi/builders/unintrospectable_boxed_builder.rb +2 -2
  91. data/lib/gir_ffi/builders/unintrospectable_builder.rb +2 -2
  92. data/lib/gir_ffi/builders/union_builder.rb +4 -4
  93. data/lib/gir_ffi/builders/user_defined_builder.rb +2 -2
  94. data/lib/gir_ffi/builders/vfunc_argument_builder.rb +1 -1
  95. data/lib/gir_ffi/builders/vfunc_builder.rb +8 -8
  96. data/lib/gir_ffi/builders/with_layout.rb +2 -2
  97. data/lib/gir_ffi/callback_base.rb +4 -6
  98. data/lib/gir_ffi/class_base.rb +6 -5
  99. data/lib/gir_ffi/core.rb +19 -20
  100. data/lib/gir_ffi/enum_base.rb +1 -1
  101. data/lib/gir_ffi/enum_like_base.rb +2 -2
  102. data/lib/gir_ffi/error_argument_info.rb +2 -2
  103. data/lib/gir_ffi/error_type_info.rb +1 -1
  104. data/lib/gir_ffi/ffi_ext.rb +1 -1
  105. data/lib/gir_ffi/ffi_ext/pointer.rb +1 -1
  106. data/lib/gir_ffi/flags_base.rb +1 -1
  107. data/lib/gir_ffi/in_pointer.rb +10 -0
  108. data/lib/gir_ffi/info_ext.rb +15 -14
  109. data/lib/gir_ffi/info_ext/full_type_name.rb +3 -3
  110. data/lib/gir_ffi/info_ext/i_arg_info.rb +1 -1
  111. data/lib/gir_ffi/info_ext/i_callable_info.rb +1 -1
  112. data/lib/gir_ffi/info_ext/i_callback_info.rb +1 -1
  113. data/lib/gir_ffi/info_ext/i_field_info.rb +1 -1
  114. data/lib/gir_ffi/info_ext/i_function_info.rb +1 -1
  115. data/lib/gir_ffi/info_ext/i_property_info.rb +2 -2
  116. data/lib/gir_ffi/info_ext/i_registered_type_info.rb +4 -5
  117. data/lib/gir_ffi/info_ext/i_signal_info.rb +7 -3
  118. data/lib/gir_ffi/info_ext/i_type_info.rb +48 -26
  119. data/lib/gir_ffi/info_ext/i_unresolved_info.rb +1 -1
  120. data/lib/gir_ffi/info_ext/i_value_info.rb +25 -0
  121. data/lib/gir_ffi/info_ext/i_vfunc_info.rb +2 -2
  122. data/lib/gir_ffi/info_ext/safe_constant_name.rb +8 -8
  123. data/lib/gir_ffi/info_ext/safe_function_name.rb +2 -2
  124. data/lib/gir_ffi/interface_base.rb +3 -3
  125. data/lib/gir_ffi/lib_c.rb +1 -1
  126. data/lib/gir_ffi/method_stubber.rb +1 -1
  127. data/lib/gir_ffi/module_base.rb +1 -1
  128. data/lib/gir_ffi/object_base.rb +3 -4
  129. data/lib/gir_ffi/receiver_argument_info.rb +1 -1
  130. data/lib/gir_ffi/receiver_type_info.rb +2 -2
  131. data/lib/gir_ffi/registered_type_base.rb +1 -1
  132. data/lib/gir_ffi/sized_array.rb +4 -2
  133. data/lib/gir_ffi/struct.rb +1 -1
  134. data/lib/gir_ffi/struct_base.rb +1 -1
  135. data/lib/gir_ffi/type_map.rb +2 -23
  136. data/lib/gir_ffi/unintrospectable_boxed_info.rb +2 -2
  137. data/lib/gir_ffi/unintrospectable_type_info.rb +5 -1
  138. data/lib/gir_ffi/union.rb +1 -1
  139. data/lib/gir_ffi/union_base.rb +1 -1
  140. data/lib/gir_ffi/user_defined_object_info.rb +6 -2
  141. data/lib/gir_ffi/user_defined_property_info.rb +33 -33
  142. data/lib/gir_ffi/version.rb +1 -1
  143. data/tasks/test.rake +3 -2
  144. data/test/base_test_helper.rb +16 -9
  145. data/test/ffi-glib/array_test.rb +71 -56
  146. data/test/ffi-glib/byte_array_test.rb +13 -7
  147. data/test/ffi-glib/bytes_test.rb +24 -19
  148. data/test/ffi-glib/closure_test.rb +11 -11
  149. data/test/ffi-glib/destroy_notify_test.rb +6 -6
  150. data/test/ffi-glib/hash_table_test.rb +27 -27
  151. data/test/ffi-glib/list_test.rb +22 -22
  152. data/test/ffi-glib/main_loop_test.rb +12 -12
  153. data/test/ffi-glib/ptr_array_test.rb +39 -39
  154. data/test/ffi-glib/ruby_closure_test.rb +10 -10
  155. data/test/ffi-glib/s_list_test.rb +20 -20
  156. data/test/ffi-glib/strv_test.rb +19 -19
  157. data/test/ffi-glib/variant_test.rb +5 -5
  158. data/test/ffi-gobject/gobject_test.rb +48 -44
  159. data/test/ffi-gobject/object_class_test.rb +8 -8
  160. data/test/ffi-gobject/object_test.rb +51 -68
  161. data/test/ffi-gobject/param_spec_test.rb +12 -12
  162. data/test/ffi-gobject/value_test.rb +145 -125
  163. data/test/ffi-gobject_introspection/gobject_type_init_test.rb +9 -9
  164. data/test/ffi-gobject_introspection/i_base_info_test.rb +15 -16
  165. data/test/ffi-gobject_introspection/i_constant_info_test.rb +9 -13
  166. data/test/ffi-gobject_introspection/i_enum_info_test.rb +7 -7
  167. data/test/ffi-gobject_introspection/i_function_info_test.rb +1 -1
  168. data/test/ffi-gobject_introspection/i_interface_info_test.rb +10 -10
  169. data/test/ffi-gobject_introspection/i_object_info_test.rb +23 -23
  170. data/test/ffi-gobject_introspection/i_property_info_test.rb +19 -19
  171. data/test/ffi-gobject_introspection/i_registered_type_info_test.rb +10 -10
  172. data/test/ffi-gobject_introspection/i_repository_test.rb +34 -34
  173. data/test/ffi-gobject_introspection/i_struct_info_test.rb +10 -10
  174. data/test/ffi-gobject_introspection/i_type_info_test.rb +12 -15
  175. data/test/ffi-gobject_introspection/i_union_info_test.rb +7 -7
  176. data/test/ffi-gobject_introspection/i_vfunc_info_test.rb +16 -16
  177. data/test/ffi-gobject_introspection/lib_test.rb +3 -3
  178. data/test/ffi-gobject_introspection/strv_test.rb +9 -9
  179. data/test/ffi-gobject_test.rb +47 -45
  180. data/test/gir_ffi/allocation_helper_test.rb +13 -13
  181. data/test/gir_ffi/arg_helper_test.rb +71 -65
  182. data/test/gir_ffi/boolean_test.rb +20 -20
  183. data/test/gir_ffi/boxed_base_test.rb +18 -18
  184. data/test/gir_ffi/builder_test.rb +81 -213
  185. data/test/gir_ffi/builders/argument_builder_test.rb +321 -287
  186. data/test/gir_ffi/builders/base_argument_builder_test.rb +1 -1
  187. data/test/gir_ffi/builders/callback_argument_builder_test.rb +57 -56
  188. data/test/gir_ffi/builders/callback_builder_test.rb +71 -72
  189. data/test/gir_ffi/builders/callback_return_value_builder_test.rb +40 -41
  190. data/test/gir_ffi/builders/constant_builder_test.rb +1 -1
  191. data/test/gir_ffi/builders/constructor_builder_test.rb +12 -10
  192. data/test/gir_ffi/builders/enum_builder_test.rb +12 -11
  193. data/test/gir_ffi/builders/field_builder_test.rb +48 -42
  194. data/test/gir_ffi/builders/function_builder_test.rb +256 -224
  195. data/test/gir_ffi/builders/initializer_builder_test.rb +16 -14
  196. data/test/gir_ffi/builders/interface_builder_test.rb +9 -9
  197. data/test/gir_ffi/builders/module_builder_test.rb +18 -18
  198. data/test/gir_ffi/builders/object_builder_test.rb +41 -41
  199. data/test/gir_ffi/builders/property_builder_test.rb +94 -94
  200. data/test/gir_ffi/builders/registered_type_builder_test.rb +35 -11
  201. data/test/gir_ffi/builders/return_value_builder_test.rb +227 -223
  202. data/test/gir_ffi/builders/signal_closure_builder_test.rb +124 -113
  203. data/test/gir_ffi/builders/struct_builder_test.rb +38 -35
  204. data/test/gir_ffi/builders/unintrospectable_boxed_builder_test.rb +8 -14
  205. data/test/gir_ffi/builders/unintrospectable_builder_test.rb +34 -23
  206. data/test/gir_ffi/builders/union_builder_test.rb +12 -15
  207. data/test/gir_ffi/builders/user_defined_builder_test.rb +152 -148
  208. data/test/gir_ffi/builders/vfunc_argument_builder_test.rb +46 -40
  209. data/test/gir_ffi/builders/vfunc_builder_test.rb +149 -157
  210. data/test/gir_ffi/callback_base_test.rb +9 -9
  211. data/test/gir_ffi/class_base_test.rb +56 -53
  212. data/test/gir_ffi/core_test.rb +36 -35
  213. data/test/gir_ffi/enum_base_test.rb +19 -19
  214. data/test/gir_ffi/error_type_info_test.rb +23 -23
  215. data/test/gir_ffi/ffi_ext/pointer_test.rb +9 -7
  216. data/test/gir_ffi/g_type_test.rb +11 -11
  217. data/test/gir_ffi/in_pointer_test.rb +70 -50
  218. data/test/gir_ffi/info_ext/i_callable_info_test.rb +5 -5
  219. data/test/gir_ffi/info_ext/i_callback_info_test.rb +6 -5
  220. data/test/gir_ffi/info_ext/i_field_info_test.rb +6 -6
  221. data/test/gir_ffi/info_ext/i_function_info_test.rb +17 -17
  222. data/test/gir_ffi/info_ext/i_signal_info_test.rb +8 -8
  223. data/test/gir_ffi/info_ext/i_type_info_test.rb +231 -216
  224. data/test/gir_ffi/info_ext/i_unresolved_info_test.rb +4 -4
  225. data/test/gir_ffi/info_ext/safe_constant_name_test.rb +8 -8
  226. data/test/gir_ffi/info_ext/safe_function_name_test.rb +8 -8
  227. data/test/gir_ffi/interface_base_test.rb +8 -8
  228. data/test/gir_ffi/method_stubber_test.rb +21 -19
  229. data/test/gir_ffi/object_base_test.rb +23 -23
  230. data/test/gir_ffi/object_store_test.rb +13 -13
  231. data/test/gir_ffi/receiver_argument_info_test.rb +15 -15
  232. data/test/gir_ffi/sized_array_test.rb +68 -68
  233. data/test/gir_ffi/struct_base_test.rb +8 -8
  234. data/test/gir_ffi/struct_like_base_test.rb +64 -64
  235. data/test/gir_ffi/type_map_test.rb +8 -8
  236. data/test/gir_ffi/unintrospectable_type_info_test.rb +33 -33
  237. data/test/gir_ffi/union_base_test.rb +8 -8
  238. data/test/gir_ffi/user_defined_object_info_test.rb +34 -34
  239. data/test/gir_ffi/user_defined_property_info_test.rb +16 -16
  240. data/test/gir_ffi/variable_name_generator_test.rb +8 -8
  241. data/test/gir_ffi/version_test.rb +4 -4
  242. data/test/gir_ffi/zero_terminated_test.rb +34 -34
  243. data/test/gir_ffi_test_helper.rb +3 -3
  244. data/test/integration/callback_exceptions_test.rb +17 -21
  245. data/test/integration/derived_classes_test.rb +14 -13
  246. data/test/integration/generated_everything_test.rb +225 -224
  247. data/test/integration/generated_gimarshallingtests_test.rb +1174 -1060
  248. data/test/integration/generated_gio_test.rb +36 -36
  249. data/test/integration/generated_glib_test.rb +4 -6
  250. data/test/integration/generated_gobject_test.rb +43 -35
  251. data/test/integration/generated_gst_test.rb +20 -16
  252. data/test/integration/generated_gtk_source_test.rb +9 -15
  253. data/test/integration/generated_gtop_test.rb +8 -15
  254. data/test/integration/generated_pango_ft2_test.rb +2 -2
  255. data/test/integration/generated_pango_test.rb +4 -4
  256. data/test/integration/generated_regress_test.rb +1858 -1632
  257. data/test/integration/generated_secret_test.rb +8 -11
  258. data/test/integration/generated_utility_test.rb +81 -81
  259. data/test/integration/generated_warnlib_test.rb +17 -21
  260. data/test/integration/method_lookup_test.rb +6 -6
  261. data/test/introspection_test_helper.rb +49 -7
  262. data/test/minitest/stats_plugin.rb +1 -1
  263. metadata +21 -23
  264. data/lib/ffi-glib/array_methods.rb +0 -16
  265. data/test/gir_ffi/in_out_pointer_test.rb +0 -56
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/info_ext/full_type_name'
3
+ require "gir_ffi/info_ext/full_type_name"
4
4
 
5
5
  module GirFFI
6
6
  # Represents a boxed type not found in the GIR, conforming, as needed, to the
@@ -20,7 +20,7 @@ module GirFFI
20
20
  GObject.type_name g_type
21
21
  end
22
22
 
23
- DEFAULT_BOXED_NAMESPACE = 'GLib'.freeze
23
+ DEFAULT_BOXED_NAMESPACE = "GLib"
24
24
 
25
25
  def namespace
26
26
  DEFAULT_BOXED_NAMESPACE
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/info_ext/full_type_name'
3
+ require "gir_ffi/info_ext/full_type_name"
4
4
 
5
5
  module GirFFI
6
6
  # Represents a type not found in the GIR, conforming, as needed, to the
@@ -46,6 +46,10 @@ module GirFFI
46
46
  []
47
47
  end
48
48
 
49
+ def find_property(_any)
50
+ nil
51
+ end
52
+
49
53
  def find_signal(_any)
50
54
  nil
51
55
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/ownable'
3
+ require "gir_ffi/ownable"
4
4
 
5
5
  module GirFFI
6
6
  # Union that can be owned.
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/boxed_base'
3
+ require "gir_ffi/boxed_base"
4
4
 
5
5
  module GirFFI
6
6
  # Base class for generated classes representing GLib unions.
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/user_defined_property_info'
4
- require 'gir_ffi/vfunc_implementation'
3
+ require "gir_ffi/user_defined_property_info"
4
+ require "gir_ffi/vfunc_implementation"
5
5
 
6
6
  module GirFFI
7
7
  # Represents a user defined type, conforming, as needed, to the interface of
@@ -37,6 +37,10 @@ module GirFFI
37
37
  nil
38
38
  end
39
39
 
40
+ def find_property(_property)
41
+ nil
42
+ end
43
+
40
44
  def parent_gtype
41
45
  @parent_gtype ||= GType.new(@klass.superclass.gtype)
42
46
  end
@@ -15,21 +15,21 @@ module GirFFI
15
15
  # TODO: Unify with InfoExt::ITypeInfo.flattened_tag_to_gtype_map
16
16
  G_TYPE_TAG_MAP = {
17
17
  GObject::TYPE_BOOLEAN => :gboolean,
18
- GObject::TYPE_CHAR => :gint8,
19
- GObject::TYPE_UCHAR => :guint8,
20
- GObject::TYPE_FLOAT => :gfloat,
21
- GObject::TYPE_DOUBLE => :gdouble,
22
- GObject::TYPE_INT => :gint,
23
- GObject::TYPE_UINT => :guint,
24
- GObject::TYPE_LONG => :glong,
25
- GObject::TYPE_ULONG => :gulong,
26
- GObject::TYPE_INT64 => :gint64,
27
- GObject::TYPE_UINT64 => :guint64,
28
- GObject::TYPE_ENUM => :interface,
29
- GObject::TYPE_FLAGS => :interface,
30
- GObject::TYPE_STRING => :utf8,
31
- GObject::TYPE_BOXED => :interface,
32
- GObject::TYPE_OBJECT => :interface
18
+ GObject::TYPE_CHAR => :gint8,
19
+ GObject::TYPE_UCHAR => :guint8,
20
+ GObject::TYPE_FLOAT => :gfloat,
21
+ GObject::TYPE_DOUBLE => :gdouble,
22
+ GObject::TYPE_INT => :gint,
23
+ GObject::TYPE_UINT => :guint,
24
+ GObject::TYPE_LONG => :glong,
25
+ GObject::TYPE_ULONG => :gulong,
26
+ GObject::TYPE_INT64 => :gint64,
27
+ GObject::TYPE_UINT64 => :guint64,
28
+ GObject::TYPE_ENUM => :interface,
29
+ GObject::TYPE_FLAGS => :interface,
30
+ GObject::TYPE_STRING => :utf8,
31
+ GObject::TYPE_BOXED => :interface,
32
+ GObject::TYPE_OBJECT => :interface
33
33
  }.freeze
34
34
 
35
35
  def tag
@@ -39,21 +39,21 @@ module GirFFI
39
39
  # TODO: Unify with InfoExt::ITypeInfo.flattened_tag_to_gtype_map
40
40
  G_TYPE_POINTER_MAP = {
41
41
  GObject::TYPE_BOOLEAN => false,
42
- GObject::TYPE_CHAR => false,
43
- GObject::TYPE_UCHAR => false,
44
- GObject::TYPE_FLOAT => false,
45
- GObject::TYPE_DOUBLE => false,
46
- GObject::TYPE_INT => false,
47
- GObject::TYPE_UINT => false,
48
- GObject::TYPE_LONG => false,
49
- GObject::TYPE_ULONG => false,
50
- GObject::TYPE_INT64 => false,
51
- GObject::TYPE_UINT64 => false,
52
- GObject::TYPE_ENUM => false,
53
- GObject::TYPE_FLAGS => false,
54
- GObject::TYPE_STRING => true,
55
- GObject::TYPE_BOXED => true,
56
- GObject::TYPE_OBJECT => true
42
+ GObject::TYPE_CHAR => false,
43
+ GObject::TYPE_UCHAR => false,
44
+ GObject::TYPE_FLOAT => false,
45
+ GObject::TYPE_DOUBLE => false,
46
+ GObject::TYPE_INT => false,
47
+ GObject::TYPE_UINT => false,
48
+ GObject::TYPE_LONG => false,
49
+ GObject::TYPE_ULONG => false,
50
+ GObject::TYPE_INT64 => false,
51
+ GObject::TYPE_UINT64 => false,
52
+ GObject::TYPE_ENUM => false,
53
+ GObject::TYPE_FLAGS => false,
54
+ GObject::TYPE_STRING => true,
55
+ GObject::TYPE_BOXED => true,
56
+ GObject::TYPE_OBJECT => true
57
57
  }.freeze
58
58
 
59
59
  def pointer?
@@ -61,9 +61,9 @@ module GirFFI
61
61
  end
62
62
 
63
63
  G_TYPE_INTERFACE_TAG_MAP = {
64
- GObject::TYPE_ENUM => :enum,
65
- GObject::TYPE_FLAGS => :flags,
66
- GObject::TYPE_BOXED => :struct,
64
+ GObject::TYPE_ENUM => :enum,
65
+ GObject::TYPE_FLAGS => :flags,
66
+ GObject::TYPE_BOXED => :struct,
67
67
  GObject::TYPE_OBJECT => :object
68
68
  }.freeze
69
69
 
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Current GirFFI version
4
4
  module GirFFI
5
- VERSION = '0.14.0'.freeze
5
+ VERSION = "0.15.3"
6
6
  end
@@ -71,7 +71,7 @@ class Listener
71
71
  result.puts " it \"handles the '#{obj_name}' signal\" do"
72
72
  when 'type', 'alias', 'return-value', 'parameters',
73
73
  'instance-parameter', 'parameter', 'doc', 'array',
74
- 'repository', 'include', 'package'
74
+ 'repository', 'include', 'package', 'source-position'
75
75
  # Not printed"
76
76
  else
77
77
  puts "Skipping #{name}: #{attrs}"
@@ -156,9 +156,10 @@ namespace :test do
156
156
  task overrides: :lib
157
157
  task integration: :lib
158
158
 
159
- desc 'Run the entire test suite as one'
159
+ desc 'Run the entire test suite as one with simplecov activated'
160
160
  define_test_task(:all) do |t|
161
161
  t.test_files = FileList['test/**/*_test.rb']
162
+ t.ruby_opts += ['-rbundler/setup -rsimplecov -w -Itest']
162
163
  end
163
164
 
164
165
  task all: :lib
@@ -1,22 +1,29 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'simplecov'
4
- SimpleCov.start do
5
- track_files 'lib/**/*.rb'
6
- add_filter '/test/'
3
+ old_verbose = $VERBOSE
4
+ $VERBOSE = false
5
+ begin
6
+ require "test-prof"
7
+
8
+ TestProf::RubyProf.configure do |config|
9
+ config.min_percent = 0.5
10
+ end
11
+ rescue LoadError
12
+ warn "test-prof not available"
7
13
  end
14
+ $VERBOSE = old_verbose
8
15
 
9
- if ENV['CI']
16
+ if ENV["CI"]
10
17
  begin
11
- require 'coveralls'
18
+ require "coveralls"
12
19
  Coveralls.wear!
13
20
  rescue LoadError
14
21
  nil
15
22
  end
16
23
  end
17
24
 
18
- require 'minitest/autorun'
19
- require 'rspec/mocks/minitest_integration'
25
+ require "minitest/autorun"
26
+ require "rspec/mocks/minitest_integration"
20
27
 
21
28
  Thread.abort_on_exception = true
22
29
 
@@ -60,4 +67,4 @@ module BaseTestExtensions
60
67
  end
61
68
  end
62
69
 
63
- Minitest::Test.send :include, BaseTestExtensions
70
+ Minitest::Test.include BaseTestExtensions
@@ -1,34 +1,34 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi_test_helper'
3
+ require "gir_ffi_test_helper"
4
4
 
5
5
  describe GLib::Array do
6
- it 'knows its element type' do
6
+ it "knows its element type" do
7
7
  arr = GLib::Array.new :gint32
8
8
  assert_equal :gint32, arr.element_type
9
9
  end
10
10
 
11
- describe '#append_vals' do
11
+ describe "#append_vals" do
12
12
  before do
13
13
  @arr = GLib::Array.new :gint32
14
14
  @result = @arr.append_vals [1, 2, 3]
15
15
  end
16
16
 
17
- it 'appends values' do
17
+ it "appends values" do
18
18
  assert_equal 3, @arr.len
19
19
  end
20
20
 
21
- it 'returns self' do
21
+ it "returns self" do
22
22
  assert_equal @result, @arr
23
23
  end
24
24
  end
25
25
 
26
- describe '#each' do
26
+ describe "#each" do
27
27
  before do
28
28
  @arr = GLib::Array.new(:gint32).append_vals [1, 2, 3]
29
29
  end
30
30
 
31
- it 'iterates over the values' do
31
+ it "iterates over the values" do
32
32
  a = []
33
33
  @arr.each { |v| a << v }
34
34
 
@@ -36,8 +36,8 @@ describe GLib::Array do
36
36
  end
37
37
  end
38
38
 
39
- describe '::wrap' do
40
- it 'wraps a pointer, taking the element type as the first argument' do
39
+ describe "::wrap" do
40
+ it "wraps a pointer, taking the element type as the first argument" do
41
41
  arr = GLib::Array.new :gint32
42
42
  arr.append_vals [1, 2, 3]
43
43
  arr2 = GLib::Array.wrap :gint32, arr.to_ptr
@@ -47,49 +47,64 @@ describe GLib::Array do
47
47
  it "warns the element sizes don't match" do
48
48
  arr = GLib::Array.new :gint32
49
49
  arr.append_vals [1, 2, 3]
50
- proc { GLib::Array.wrap :gint8, arr.to_ptr }.must_output nil, /sizes do not match/
50
+ _(proc { GLib::Array.wrap :gint8, arr.to_ptr }).must_output nil, /sizes do not match/
51
51
  end
52
52
 
53
- it 'handles a struct as the element type' do
53
+ it "handles a struct as the element type" do
54
54
  vals = [1, 2, 3].map { |i| GObject::EnumValue.new.tap { |ev| ev.value = i } }
55
55
  arr = GLib::Array.new GObject::EnumValue
56
56
  arr.append_vals vals
57
57
  arr2 = GLib::Array.wrap GObject::EnumValue, arr.to_ptr
58
- arr2.to_a.must_equal arr.to_a
58
+ _(arr2.to_a).must_equal arr.to_a
59
59
  end
60
60
  end
61
61
 
62
- it 'includes Enumerable' do
63
- GLib::Array.must_include Enumerable
62
+ it "includes Enumerable" do
63
+ _(GLib::Array).must_include Enumerable
64
64
  end
65
65
 
66
- it 'has a working #to_a method' do
66
+ it "has a working #to_a method" do
67
67
  arr = GLib::Array.new :gint32
68
68
  arr.append_vals [1, 2, 3]
69
69
  assert_equal [1, 2, 3], arr.to_a
70
70
  end
71
71
 
72
- describe '.from' do
73
- it 'creates a GArray from an array of :gint32' do
72
+ describe ".from" do
73
+ it "creates a GArray from an array of :gint32" do
74
74
  arr = GLib::Array.from :gint32, [3, 2, 1]
75
- arr.must_be_instance_of GLib::Array
76
- arr.to_a.must_equal [3, 2, 1]
75
+ _(arr).must_be_instance_of GLib::Array
76
+ _(arr.to_a).must_equal [3, 2, 1]
77
77
  end
78
78
 
79
- it 'creates a GArray from an array of :gboolean' do
79
+ it "creates a GArray from an array of :gboolean" do
80
80
  arr = GLib::Array.from :gboolean, [true, false, true]
81
- arr.must_be_instance_of GLib::Array
82
- arr.to_a.must_equal [true, false, true]
81
+ _(arr).must_be_instance_of GLib::Array
82
+ _(arr.to_a).must_equal [true, false, true]
83
83
  end
84
84
 
85
- it 'return its argument if given a GArray' do
85
+ it "creates a GArray from an array of :utf8 values" do
86
+ arr = GLib::Array.from :utf8, %w(hello there)
87
+ _(arr).must_be_instance_of GLib::Array
88
+ _(arr.to_a).must_equal %w(hello there)
89
+ end
90
+
91
+ it "creates a GArray from an array of struct values" do
92
+ values = [1, 2, 3].map do |val|
93
+ GObject::EnumValue.new.tap { |it| it.value = val }
94
+ end
95
+ arr = GLib::Array.from GObject::EnumValue, values
96
+ _(arr).must_be_instance_of GLib::Array
97
+ _(arr.to_a.map(&:value)).must_equal [1, 2, 3]
98
+ end
99
+
100
+ it "return its argument if given a GArray" do
86
101
  arr = GLib::Array.new :gint32
87
102
  arr.append_vals [3, 2, 1]
88
103
  arr2 = GLib::Array.from :gint32, arr
89
104
  assert arr2.equal? arr
90
105
  end
91
106
 
92
- it 'wraps its argument if given a pointer' do
107
+ it "wraps its argument if given a pointer" do
93
108
  arr = GLib::Array.new :gint32
94
109
  arr.append_vals [3, 2, 1]
95
110
  pointer = arr.to_ptr
@@ -97,91 +112,91 @@ describe GLib::Array do
97
112
  arr2 = GLib::Array.from :gint32, pointer
98
113
  assert_instance_of GLib::Array, arr2
99
114
  refute arr2.equal? arr
100
- arr2.to_a.must_equal arr.to_a
115
+ _(arr2.to_a).must_equal arr.to_a
101
116
  end
102
117
  end
103
118
 
104
- describe '#==' do
105
- it 'returns true when comparing to an array with the same elements' do
119
+ describe "#==" do
120
+ it "returns true when comparing to an array with the same elements" do
106
121
  arr = GLib::Array.from :gint32, [1, 2, 3]
107
122
 
108
- arr.must_be :==, [1, 2, 3]
123
+ _(arr).must_be :==, [1, 2, 3]
109
124
  end
110
125
 
111
- it 'returns false when comparing to an array with different elements' do
126
+ it "returns false when comparing to an array with different elements" do
112
127
  arr = GLib::Array.from :gint32, [1, 2, 3]
113
128
 
114
- arr.wont_be :==, [1, 2]
129
+ _(arr).wont_be :==, [1, 2]
115
130
  end
116
131
 
117
- it 'returns true when comparing to a GArray with the same elements' do
132
+ it "returns true when comparing to a GArray with the same elements" do
118
133
  arr = GLib::Array.from :gint32, [1, 2, 3]
119
134
  other = GLib::Array.from :gint32, [1, 2, 3]
120
135
 
121
- arr.must_be :==, other
136
+ _(arr).must_be :==, other
122
137
  end
123
138
 
124
- it 'returns false when comparing to a GArray with different elements' do
139
+ it "returns false when comparing to a GArray with different elements" do
125
140
  arr = GLib::Array.from :gint32, [1, 2, 3]
126
141
  other = GLib::Array.from :gint32, [1, 2]
127
142
 
128
- arr.wont_be :==, other
143
+ _(arr).wont_be :==, other
129
144
  end
130
145
  end
131
146
 
132
- describe '#index' do
133
- it 'returns the proper element for an array of :gint32' do
147
+ describe "#index" do
148
+ it "returns the proper element for an array of :gint32" do
134
149
  arr = GLib::Array.from :gint32, [1, 2, 3]
135
- arr.index(2).must_equal 3
150
+ _(arr.index(2)).must_equal 3
136
151
  end
137
152
 
138
- it 'returns the proper element for an array of :utf8' do
153
+ it "returns the proper element for an array of :utf8" do
139
154
  arr = GLib::Array.from :utf8, %w(a b c)
140
- arr.index(1).must_equal 'b'
155
+ _(arr.index(1)).must_equal "b"
141
156
  end
142
157
 
143
- it 'returns the proper element for an array of :gboolean' do
158
+ it "returns the proper element for an array of :gboolean" do
144
159
  arr = GLib::Array.from :gboolean, [true, false, true]
145
- arr.index(1).must_equal false
160
+ _(arr.index(1)).must_equal false
146
161
  end
147
162
 
148
- it 'returns the proper element for an array of struct' do
163
+ it "returns the proper element for an array of struct" do
149
164
  vals = [1, 2, 3].map { |i| GObject::EnumValue.new.tap { |ev| ev.value = i } }
150
165
  arr = GLib::Array.from GObject::EnumValue, vals
151
- arr.index(1).value.must_equal 2
166
+ _(arr.index(1).value).must_equal 2
152
167
  end
153
168
 
154
- it 'raises an error if the index is out of bounds' do
169
+ it "raises an error if the index is out of bounds" do
155
170
  arr = GLib::Array.from :gint32, [1, 2, 3]
156
- proc { arr.index(16) }.must_raise IndexError
157
- proc { arr.index(-1) }.must_raise IndexError
171
+ _(proc { arr.index(16) }).must_raise IndexError
172
+ _(proc { arr.index(-1) }).must_raise IndexError
158
173
  end
159
174
  end
160
175
 
161
- describe '#reset_typespec' do
162
- describe 'when it needs to guess the type' do
163
- it 'guesses :uint8 for size 1' do
176
+ describe "#reset_typespec" do
177
+ describe "when it needs to guess the type" do
178
+ it "guesses :uint8 for size 1" do
164
179
  arr = GLib::Array.from :int8, [1, 2, 3]
165
180
  arr.reset_typespec
166
- arr.element_type.must_equal :uint8
181
+ _(arr.element_type).must_equal :uint8
167
182
  end
168
183
 
169
- it 'guesses :uint16 for size 2' do
184
+ it "guesses :uint16 for size 2" do
170
185
  arr = GLib::Array.from :int16, [1, 2, 3]
171
186
  arr.reset_typespec
172
- arr.element_type.must_equal :uint16
187
+ _(arr.element_type).must_equal :uint16
173
188
  end
174
189
 
175
- it 'guesses :uint32 for size 4' do
190
+ it "guesses :uint32 for size 4" do
176
191
  arr = GLib::Array.from :int32, [1, 2, 3]
177
192
  arr.reset_typespec
178
- arr.element_type.must_equal :uint32
193
+ _(arr.element_type).must_equal :uint32
179
194
  end
180
195
 
181
- it 'guesses :uint64 for size 8' do
196
+ it "guesses :uint64 for size 8" do
182
197
  arr = GLib::Array.from :int64, [1, 2, 3]
183
198
  arr.reset_typespec
184
- arr.element_type.must_equal :uint64
199
+ _(arr.element_type).must_equal :uint64
185
200
  end
186
201
  end
187
202
  end