gir_ffi 0.14.1 → 0.15.4

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 (281) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +56 -0
  3. data/README.md +12 -12
  4. data/TODO.md +14 -35
  5. data/docs/Documentation.md +6 -0
  6. data/docs/Subclassing.md +38 -0
  7. data/lib/ffi-glib.rb +26 -21
  8. data/lib/ffi-glib/array.rb +14 -4
  9. data/lib/ffi-glib/byte_array.rb +9 -3
  10. data/lib/ffi-glib/container_class_methods.rb +1 -1
  11. data/lib/ffi-glib/destroy_notify.rb +2 -2
  12. data/lib/ffi-glib/error.rb +1 -1
  13. data/lib/ffi-glib/hash_table.rb +4 -5
  14. data/lib/ffi-glib/list.rb +12 -6
  15. data/lib/ffi-glib/list_methods.rb +13 -1
  16. data/lib/ffi-glib/main_loop.rb +3 -3
  17. data/lib/ffi-glib/ptr_array.rb +30 -8
  18. data/lib/ffi-glib/s_list.rb +11 -5
  19. data/lib/ffi-glib/variant.rb +1 -1
  20. data/lib/ffi-gobject.rb +13 -16
  21. data/lib/ffi-gobject/object.rb +82 -87
  22. data/lib/ffi-gobject/object_class.rb +1 -1
  23. data/lib/ffi-gobject/param_spec.rb +1 -1
  24. data/lib/ffi-gobject/ruby_closure.rb +2 -2
  25. data/lib/ffi-gobject/value.rb +136 -126
  26. data/lib/ffi-gobject_introspection.rb +20 -20
  27. data/lib/ffi-gobject_introspection/gobject_type_init.rb +2 -2
  28. data/lib/ffi-gobject_introspection/i_arg_info.rb +2 -2
  29. data/lib/ffi-gobject_introspection/i_base_info.rb +34 -23
  30. data/lib/ffi-gobject_introspection/i_callable_info.rb +4 -4
  31. data/lib/ffi-gobject_introspection/i_constant_info.rb +2 -2
  32. data/lib/ffi-gobject_introspection/i_enum_info.rb +1 -0
  33. data/lib/ffi-gobject_introspection/i_field_info.rb +1 -1
  34. data/lib/ffi-gobject_introspection/i_function_info.rb +1 -1
  35. data/lib/ffi-gobject_introspection/i_interface_info.rb +1 -1
  36. data/lib/ffi-gobject_introspection/i_object_info.rb +2 -2
  37. data/lib/ffi-gobject_introspection/i_property_info.rb +2 -2
  38. data/lib/ffi-gobject_introspection/i_repository.rb +9 -6
  39. data/lib/ffi-gobject_introspection/i_struct_info.rb +2 -1
  40. data/lib/ffi-gobject_introspection/i_type_info.rb +13 -7
  41. data/lib/ffi-gobject_introspection/i_unresolved_info.rb +1 -1
  42. data/lib/ffi-gobject_introspection/i_vfunc_info.rb +1 -1
  43. data/lib/ffi-gobject_introspection/lib.rb +30 -19
  44. data/lib/ffi-gobject_introspection/strv.rb +1 -1
  45. data/lib/gir_ffi-base.rb +1 -1
  46. data/lib/gir_ffi-base/gobject.rb +26 -25
  47. data/lib/gir_ffi-base/gobject/lib.rb +7 -2
  48. data/lib/gir_ffi.rb +3 -3
  49. data/lib/gir_ffi/allocation_helper.rb +1 -1
  50. data/lib/gir_ffi/arg_helper.rb +4 -4
  51. data/lib/gir_ffi/{in_out_pointer.rb → array_element_convertor.rb} +16 -24
  52. data/lib/gir_ffi/boolean.rb +1 -1
  53. data/lib/gir_ffi/boxed_base.rb +2 -6
  54. data/lib/gir_ffi/builder.rb +19 -11
  55. data/lib/gir_ffi/builder_helper.rb +10 -2
  56. data/lib/gir_ffi/builders/argument_builder.rb +19 -19
  57. data/lib/gir_ffi/builders/argument_builder_collection.rb +2 -2
  58. data/lib/gir_ffi/builders/base_argument_builder.rb +2 -1
  59. data/lib/gir_ffi/builders/base_method_builder.rb +8 -8
  60. data/lib/gir_ffi/builders/base_return_value_builder.rb +1 -1
  61. data/lib/gir_ffi/builders/base_type_builder.rb +2 -2
  62. data/lib/gir_ffi/builders/c_to_ruby_convertor.rb +5 -5
  63. data/lib/gir_ffi/builders/callback_argument_builder.rb +10 -8
  64. data/lib/gir_ffi/builders/callback_builder.rb +28 -14
  65. data/lib/gir_ffi/builders/callback_return_value_builder.rb +6 -8
  66. data/lib/gir_ffi/builders/class_struct_builder.rb +24 -0
  67. data/lib/gir_ffi/builders/closure_argument_builder.rb +1 -1
  68. data/lib/gir_ffi/builders/closure_return_value_builder.rb +1 -1
  69. data/lib/gir_ffi/builders/constant_builder.rb +1 -1
  70. data/lib/gir_ffi/builders/constructor_builder.rb +9 -9
  71. data/lib/gir_ffi/builders/enum_builder.rb +11 -7
  72. data/lib/gir_ffi/builders/field_builder.rb +20 -18
  73. data/lib/gir_ffi/builders/flags_builder.rb +2 -2
  74. data/lib/gir_ffi/builders/full_c_to_ruby_convertor.rb +1 -1
  75. data/lib/gir_ffi/builders/function_builder.rb +11 -5
  76. data/lib/gir_ffi/builders/initializer_builder.rb +3 -3
  77. data/lib/gir_ffi/builders/initializer_return_value_builder.rb +2 -2
  78. data/lib/gir_ffi/builders/interface_builder.rb +5 -3
  79. data/lib/gir_ffi/builders/mapping_method_builder.rb +10 -10
  80. data/lib/gir_ffi/builders/marshalling_method_builder.rb +12 -9
  81. data/lib/gir_ffi/builders/method_template.rb +5 -5
  82. data/lib/gir_ffi/builders/module_builder.rb +7 -7
  83. data/lib/gir_ffi/builders/null_argument_builder.rb +0 -2
  84. data/lib/gir_ffi/builders/null_return_value_builder.rb +0 -2
  85. data/lib/gir_ffi/builders/object_builder.rb +22 -12
  86. data/lib/gir_ffi/builders/property_argument_builder.rb +1 -1
  87. data/lib/gir_ffi/builders/property_builder.rb +14 -14
  88. data/lib/gir_ffi/builders/property_return_value_builder.rb +1 -1
  89. data/lib/gir_ffi/builders/registered_type_builder.rb +14 -5
  90. data/lib/gir_ffi/builders/return_value_builder.rb +4 -4
  91. data/lib/gir_ffi/builders/ruby_to_c_convertor.rb +6 -6
  92. data/lib/gir_ffi/builders/signal_closure_builder.rb +5 -7
  93. data/lib/gir_ffi/builders/struct_builder.rb +8 -6
  94. data/lib/gir_ffi/builders/struct_like.rb +1 -1
  95. data/lib/gir_ffi/builders/type_builder.rb +12 -12
  96. data/lib/gir_ffi/builders/unintrospectable_boxed_builder.rb +2 -2
  97. data/lib/gir_ffi/builders/unintrospectable_builder.rb +2 -2
  98. data/lib/gir_ffi/builders/union_builder.rb +4 -4
  99. data/lib/gir_ffi/builders/user_defined_builder.rb +10 -3
  100. data/lib/gir_ffi/builders/vfunc_argument_builder.rb +2 -2
  101. data/lib/gir_ffi/builders/vfunc_builder.rb +8 -8
  102. data/lib/gir_ffi/builders/with_layout.rb +2 -2
  103. data/lib/gir_ffi/callback_base.rb +7 -9
  104. data/lib/gir_ffi/class_base.rb +6 -5
  105. data/lib/gir_ffi/core.rb +36 -22
  106. data/lib/gir_ffi/enum_base.rb +1 -1
  107. data/lib/gir_ffi/enum_like_base.rb +2 -2
  108. data/lib/gir_ffi/error_argument_info.rb +2 -2
  109. data/lib/gir_ffi/error_type_info.rb +1 -1
  110. data/lib/gir_ffi/ffi_ext.rb +1 -1
  111. data/lib/gir_ffi/ffi_ext/pointer.rb +1 -1
  112. data/lib/gir_ffi/flags_base.rb +1 -1
  113. data/lib/gir_ffi/glib_error.rb +1 -2
  114. data/lib/gir_ffi/in_pointer.rb +17 -0
  115. data/lib/gir_ffi/info_ext.rb +15 -15
  116. data/lib/gir_ffi/info_ext/full_type_name.rb +3 -3
  117. data/lib/gir_ffi/info_ext/i_arg_info.rb +1 -1
  118. data/lib/gir_ffi/info_ext/i_callable_info.rb +1 -1
  119. data/lib/gir_ffi/info_ext/i_callback_info.rb +1 -1
  120. data/lib/gir_ffi/info_ext/i_field_info.rb +1 -1
  121. data/lib/gir_ffi/info_ext/i_function_info.rb +1 -1
  122. data/lib/gir_ffi/info_ext/i_property_info.rb +2 -2
  123. data/lib/gir_ffi/info_ext/i_registered_type_info.rb +4 -5
  124. data/lib/gir_ffi/info_ext/i_signal_info.rb +7 -3
  125. data/lib/gir_ffi/info_ext/i_type_info.rb +48 -26
  126. data/lib/gir_ffi/info_ext/i_unresolved_info.rb +1 -1
  127. data/lib/gir_ffi/info_ext/i_value_info.rb +2 -2
  128. data/lib/gir_ffi/info_ext/i_vfunc_info.rb +2 -2
  129. data/lib/gir_ffi/info_ext/safe_constant_name.rb +8 -8
  130. data/lib/gir_ffi/info_ext/safe_function_name.rb +2 -2
  131. data/lib/gir_ffi/interface_base.rb +3 -3
  132. data/lib/gir_ffi/lib_c.rb +1 -1
  133. data/lib/gir_ffi/method_stubber.rb +1 -1
  134. data/lib/gir_ffi/module_base.rb +1 -1
  135. data/lib/gir_ffi/object_base.rb +30 -4
  136. data/lib/gir_ffi/receiver_argument_info.rb +1 -1
  137. data/lib/gir_ffi/receiver_type_info.rb +2 -2
  138. data/lib/gir_ffi/registered_type_base.rb +1 -1
  139. data/lib/gir_ffi/return_value_info.rb +1 -2
  140. data/lib/gir_ffi/sized_array.rb +4 -2
  141. data/lib/gir_ffi/struct.rb +1 -1
  142. data/lib/gir_ffi/struct_base.rb +2 -10
  143. data/lib/gir_ffi/struct_like_base.rb +9 -5
  144. data/lib/gir_ffi/type_map.rb +2 -23
  145. data/lib/gir_ffi/unintrospectable_boxed_info.rb +2 -2
  146. data/lib/gir_ffi/unintrospectable_type_info.rb +6 -2
  147. data/lib/gir_ffi/union.rb +1 -1
  148. data/lib/gir_ffi/union_base.rb +2 -10
  149. data/lib/gir_ffi/user_defined_object_info.rb +9 -4
  150. data/lib/gir_ffi/user_defined_property_info.rb +33 -33
  151. data/lib/gir_ffi/version.rb +1 -1
  152. data/lib/gir_ffi/vfunc_implementation.rb +1 -0
  153. metadata +102 -155
  154. data/Gemfile +0 -12
  155. data/Rakefile +0 -9
  156. data/lib/ffi-glib/array_methods.rb +0 -16
  157. data/tasks/test.rake +0 -203
  158. data/test/base_test_helper.rb +0 -63
  159. data/test/ffi-glib/array_test.rb +0 -188
  160. data/test/ffi-glib/byte_array_test.rb +0 -22
  161. data/test/ffi-glib/bytes_test.rb +0 -56
  162. data/test/ffi-glib/closure_test.rb +0 -38
  163. data/test/ffi-glib/destroy_notify_test.rb +0 -18
  164. data/test/ffi-glib/hash_table_test.rb +0 -68
  165. data/test/ffi-glib/list_test.rb +0 -86
  166. data/test/ffi-glib/main_loop_test.rb +0 -53
  167. data/test/ffi-glib/ptr_array_test.rb +0 -112
  168. data/test/ffi-glib/ruby_closure_test.rb +0 -62
  169. data/test/ffi-glib/s_list_test.rb +0 -76
  170. data/test/ffi-glib/strv_test.rb +0 -60
  171. data/test/ffi-glib/variant_test.rb +0 -12
  172. data/test/ffi-gobject/gobject_test.rb +0 -72
  173. data/test/ffi-gobject/object_class_test.rb +0 -31
  174. data/test/ffi-gobject/object_test.rb +0 -140
  175. data/test/ffi-gobject/param_spec_test.rb +0 -32
  176. data/test/ffi-gobject/value_test.rb +0 -370
  177. data/test/ffi-gobject_introspection/gobject_type_init_test.rb +0 -26
  178. data/test/ffi-gobject_introspection/i_base_info_test.rb +0 -53
  179. data/test/ffi-gobject_introspection/i_constant_info_test.rb +0 -33
  180. data/test/ffi-gobject_introspection/i_enum_info_test.rb +0 -18
  181. data/test/ffi-gobject_introspection/i_function_info_test.rb +0 -6
  182. data/test/ffi-gobject_introspection/i_interface_info_test.rb +0 -23
  183. data/test/ffi-gobject_introspection/i_object_info_test.rb +0 -49
  184. data/test/ffi-gobject_introspection/i_property_info_test.rb +0 -47
  185. data/test/ffi-gobject_introspection/i_registered_type_info_test.rb +0 -27
  186. data/test/ffi-gobject_introspection/i_repository_test.rb +0 -81
  187. data/test/ffi-gobject_introspection/i_struct_info_test.rb +0 -23
  188. data/test/ffi-gobject_introspection/i_type_info_test.rb +0 -33
  189. data/test/ffi-gobject_introspection/i_union_info_test.rb +0 -17
  190. data/test/ffi-gobject_introspection/i_vfunc_info_test.rb +0 -41
  191. data/test/ffi-gobject_introspection/lib_test.rb +0 -13
  192. data/test/ffi-gobject_introspection/strv_test.rb +0 -46
  193. data/test/ffi-gobject_test.rb +0 -151
  194. data/test/gir_ffi/allocation_helper_test.rb +0 -36
  195. data/test/gir_ffi/arg_helper_test.rb +0 -140
  196. data/test/gir_ffi/boolean_test.rb +0 -43
  197. data/test/gir_ffi/boxed_base_test.rb +0 -65
  198. data/test/gir_ffi/builder_test.rb +0 -300
  199. data/test/gir_ffi/builders/argument_builder_test.rb +0 -657
  200. data/test/gir_ffi/builders/base_argument_builder_test.rb +0 -6
  201. data/test/gir_ffi/builders/callback_argument_builder_test.rb +0 -129
  202. data/test/gir_ffi/builders/callback_builder_test.rb +0 -118
  203. data/test/gir_ffi/builders/callback_return_value_builder_test.rb +0 -85
  204. data/test/gir_ffi/builders/constant_builder_test.rb +0 -6
  205. data/test/gir_ffi/builders/constructor_builder_test.rb +0 -37
  206. data/test/gir_ffi/builders/enum_builder_test.rb +0 -23
  207. data/test/gir_ffi/builders/field_builder_test.rb +0 -134
  208. data/test/gir_ffi/builders/function_builder_test.rb +0 -538
  209. data/test/gir_ffi/builders/initializer_builder_test.rb +0 -54
  210. data/test/gir_ffi/builders/interface_builder_test.rb +0 -32
  211. data/test/gir_ffi/builders/module_builder_test.rb +0 -43
  212. data/test/gir_ffi/builders/object_builder_test.rb +0 -98
  213. data/test/gir_ffi/builders/property_builder_test.rb +0 -161
  214. data/test/gir_ffi/builders/registered_type_builder_test.rb +0 -30
  215. data/test/gir_ffi/builders/return_value_builder_test.rb +0 -440
  216. data/test/gir_ffi/builders/signal_closure_builder_test.rb +0 -188
  217. data/test/gir_ffi/builders/struct_builder_test.rb +0 -93
  218. data/test/gir_ffi/builders/unintrospectable_boxed_builder_test.rb +0 -35
  219. data/test/gir_ffi/builders/unintrospectable_builder_test.rb +0 -73
  220. data/test/gir_ffi/builders/union_builder_test.rb +0 -31
  221. data/test/gir_ffi/builders/user_defined_builder_test.rb +0 -524
  222. data/test/gir_ffi/builders/vfunc_argument_builder_test.rb +0 -101
  223. data/test/gir_ffi/builders/vfunc_builder_test.rb +0 -253
  224. data/test/gir_ffi/callback_base_test.rb +0 -22
  225. data/test/gir_ffi/class_base_test.rb +0 -168
  226. data/test/gir_ffi/core_test.rb +0 -98
  227. data/test/gir_ffi/enum_base_test.rb +0 -43
  228. data/test/gir_ffi/error_type_info_test.rb +0 -50
  229. data/test/gir_ffi/ffi_ext/pointer_test.rb +0 -20
  230. data/test/gir_ffi/g_type_test.rb +0 -31
  231. data/test/gir_ffi/in_out_pointer_test.rb +0 -56
  232. data/test/gir_ffi/in_pointer_test.rb +0 -183
  233. data/test/gir_ffi/info_ext/i_callable_info_test.rb +0 -26
  234. data/test/gir_ffi/info_ext/i_callback_info_test.rb +0 -21
  235. data/test/gir_ffi/info_ext/i_field_info_test.rb +0 -37
  236. data/test/gir_ffi/info_ext/i_function_info_test.rb +0 -74
  237. data/test/gir_ffi/info_ext/i_signal_info_test.rb +0 -32
  238. data/test/gir_ffi/info_ext/i_type_info_test.rb +0 -697
  239. data/test/gir_ffi/info_ext/i_unresolved_info_test.rb +0 -19
  240. data/test/gir_ffi/info_ext/safe_constant_name_test.rb +0 -26
  241. data/test/gir_ffi/info_ext/safe_function_name_test.rb +0 -26
  242. data/test/gir_ffi/interface_base_test.rb +0 -20
  243. data/test/gir_ffi/method_stubber_test.rb +0 -65
  244. data/test/gir_ffi/object_base_test.rb +0 -64
  245. data/test/gir_ffi/object_store_test.rb +0 -41
  246. data/test/gir_ffi/receiver_argument_info_test.rb +0 -33
  247. data/test/gir_ffi/sized_array_test.rb +0 -206
  248. data/test/gir_ffi/struct_base_test.rb +0 -23
  249. data/test/gir_ffi/struct_like_base_test.rb +0 -167
  250. data/test/gir_ffi/type_map_test.rb +0 -17
  251. data/test/gir_ffi/unintrospectable_type_info_test.rb +0 -121
  252. data/test/gir_ffi/union_base_test.rb +0 -23
  253. data/test/gir_ffi/user_defined_object_info_test.rb +0 -119
  254. data/test/gir_ffi/user_defined_property_info_test.rb +0 -39
  255. data/test/gir_ffi/variable_name_generator_test.rb +0 -18
  256. data/test/gir_ffi/version_test.rb +0 -9
  257. data/test/gir_ffi/zero_terminated_test.rb +0 -108
  258. data/test/gir_ffi_test_helper.rb +0 -84
  259. data/test/integration/callback_exceptions_test.rb +0 -63
  260. data/test/integration/derived_classes_test.rb +0 -53
  261. data/test/integration/generated_everything_test.rb +0 -452
  262. data/test/integration/generated_gimarshallingtests_test.rb +0 -2995
  263. data/test/integration/generated_gio_test.rb +0 -116
  264. data/test/integration/generated_glib_test.rb +0 -12
  265. data/test/integration/generated_gobject_test.rb +0 -116
  266. data/test/integration/generated_gst_test.rb +0 -34
  267. data/test/integration/generated_gtk_source_test.rb +0 -27
  268. data/test/integration/generated_gtop_test.rb +0 -29
  269. data/test/integration/generated_pango_ft2_test.rb +0 -17
  270. data/test/integration/generated_pango_test.rb +0 -24
  271. data/test/integration/generated_regress_test.rb +0 -3850
  272. data/test/integration/generated_secret_test.rb +0 -17
  273. data/test/integration/generated_utility_test.rb +0 -174
  274. data/test/integration/generated_warnlib_test.rb +0 -49
  275. data/test/integration/method_lookup_test.rb +0 -34
  276. data/test/introspection_test_helper.rb +0 -52
  277. data/test/lib/Makefile.am +0 -110
  278. data/test/lib/autogen.sh +0 -4
  279. data/test/lib/configure.ac +0 -34
  280. data/test/lib/m4/jhflags.m4 +0 -21
  281. data/test/minitest/stats_plugin.rb +0 -30
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "gir_ffi/builders/struct_builder"
4
+
5
+ module GirFFI
6
+ module Builders
7
+ # Implements the creation of a class representing a Struct.
8
+ class ClassStructBuilder < RegisteredTypeBuilder
9
+ include StructLike
10
+
11
+ attr_reader :superclass
12
+
13
+ def initialize(info, super_class_struct)
14
+ @superclass = super_class_struct
15
+ super info
16
+ raise "Info does not represent gtype_struct" unless info.gtype_struct?
17
+ end
18
+
19
+ def layout_superclass
20
+ GirFFI::Struct
21
+ end
22
+ end
23
+ end
24
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/callback_argument_builder'
3
+ require "gir_ffi/builders/callback_argument_builder"
4
4
 
5
5
  module GirFFI
6
6
  module Builders
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/callback_return_value_builder'
3
+ require "gir_ffi/builders/callback_return_value_builder"
4
4
 
5
5
  module GirFFI
6
6
  module Builders
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/base_type_builder'
3
+ require "gir_ffi/builders/base_type_builder"
4
4
  module GirFFI
5
5
  module Builders
6
6
  # Implements the creation of a constant. Though semantically not a
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/argument_builder_collection'
4
- require 'gir_ffi/builders/method_template'
5
- require 'gir_ffi/builders/null_return_value_builder'
3
+ require "gir_ffi/builders/argument_builder_collection"
4
+ require "gir_ffi/builders/method_template"
5
+ require "gir_ffi/builders/null_return_value_builder"
6
6
 
7
7
  module GirFFI
8
8
  module Builders
@@ -30,16 +30,16 @@ module GirFFI
30
30
  end
31
31
 
32
32
  def method_arguments
33
- ['*args', '&block']
33
+ ["*args", "&block"]
34
34
  end
35
35
 
36
36
  def preparation
37
- if @info.safe_name == 'new'
38
- ['obj = allocate']
37
+ if @info.safe_name == "new"
38
+ ["obj = allocate"]
39
39
  else
40
40
  [
41
41
  "raise NoMethodError unless self == #{@info.container.full_type_name}",
42
- 'obj = allocate'
42
+ "obj = allocate"
43
43
  ]
44
44
  end
45
45
  end
@@ -49,13 +49,13 @@ module GirFFI
49
49
  end
50
50
 
51
51
  def result
52
- ['obj']
52
+ ["obj"]
53
53
  end
54
54
 
55
55
  private
56
56
 
57
57
  def initializer_name
58
- @info.safe_name.sub(/^new/, 'initialize')
58
+ @info.safe_name.sub(/^new/, "initialize")
59
59
  end
60
60
  end
61
61
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/registered_type_builder'
4
- require 'gir_ffi/enum_base'
3
+ require "gir_ffi/builders/registered_type_builder"
4
+ require "gir_ffi/enum_base"
5
5
 
6
6
  module GirFFI
7
7
  module Builders
@@ -16,7 +16,7 @@ module GirFFI
16
16
  end
17
17
 
18
18
  def value_spec
19
- info.values.map do |vinfo|
19
+ value_infos.map do |vinfo|
20
20
  val = GirFFI::ArgHelper.cast_uint32_to_int32(vinfo.value)
21
21
  [vinfo.name.to_sym, val]
22
22
  end.flatten
@@ -42,7 +42,7 @@ module GirFFI
42
42
  end
43
43
 
44
44
  def setup_value_constants
45
- info.values.each do |vinfo|
45
+ value_infos.each do |vinfo|
46
46
  optionally_define_constant klass, vinfo.constant_name do
47
47
  vinfo.value
48
48
  end
@@ -51,9 +51,9 @@ module GirFFI
51
51
 
52
52
  def setup_inspect
53
53
  klass.instance_eval <<-RUBY, __FILE__, __LINE__ + 1
54
- def self.inspect
55
- "#{@namespace}::#{@classname}"
56
- end
54
+ def self.inspect # def self.inspect
55
+ "#{@namespace}::#{@classname}" # "GFoo::Bar"
56
+ end # end
57
57
  RUBY
58
58
  end
59
59
 
@@ -64,6 +64,10 @@ module GirFFI
64
64
  def superclass
65
65
  EnumBase
66
66
  end
67
+
68
+ def value_infos
69
+ @value_infos ||= info.values
70
+ end
67
71
  end
68
72
  end
69
73
  end
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/argument_builder'
4
- require 'gir_ffi/builders/base_argument_builder'
5
- require 'gir_ffi/builders/null_argument_builder'
6
- require 'gir_ffi/builders/pointer_value_convertor'
7
- require 'gir_ffi/variable_name_generator'
8
- require 'gir_ffi/field_argument_info'
3
+ require "gir_ffi/builders/argument_builder"
4
+ require "gir_ffi/builders/base_argument_builder"
5
+ require "gir_ffi/builders/null_argument_builder"
6
+ require "gir_ffi/builders/pointer_value_convertor"
7
+ require "gir_ffi/variable_name_generator"
8
+ require "gir_ffi/field_argument_info"
9
9
 
10
10
  module GirFFI
11
11
  module Builders
@@ -58,7 +58,8 @@ module GirFFI
58
58
  private
59
59
 
60
60
  def pointer_to_value_conversion
61
- PointerValueConvertor.new(field_type_tag).pointer_to_value(field_ptr, field_offset)
61
+ PointerValueConvertor.new(field_type_tag)
62
+ .pointer_to_value(field_ptr, field_offset)
62
63
  end
63
64
 
64
65
  def field_offset
@@ -208,7 +209,7 @@ module GirFFI
208
209
 
209
210
  def length_argument_info
210
211
  @length_argument_info ||=
211
- GetterArgumentInfo.new 'length', array_length_field.field_type
212
+ GetterArgumentInfo.new "length", array_length_field.field_type
212
213
  end
213
214
 
214
215
  def field_offset
@@ -224,7 +225,7 @@ module GirFFI
224
225
  end
225
226
 
226
227
  def field_argument_info
227
- @field_argument_info ||= GetterArgumentInfo.new 'value', field_type
228
+ @field_argument_info ||= GetterArgumentInfo.new "value", field_type
228
229
  end
229
230
  end
230
231
 
@@ -269,20 +270,20 @@ module GirFFI
269
270
 
270
271
  field_ptr = builder.new_variable
271
272
 
272
- <<-CODE.reset_indentation
273
- def #{info.name}= #{builder.method_argument_name}
274
- #{field_ptr} = @struct.to_ptr
275
- #{builder.pre_conversion.join("\n ")}
276
- #{value_storage(field_ptr, builder)}
277
- end
273
+ <<~CODE
274
+ def #{info.name}= #{builder.method_argument_name}
275
+ #{field_ptr} = @struct.to_ptr
276
+ #{builder.pre_conversion.join("\n ")}
277
+ #{value_storage(field_ptr, builder)}
278
+ end
278
279
  CODE
279
280
  end
280
281
 
281
282
  private
282
283
 
283
284
  def value_storage(typed_ptr, builder)
284
- PointerValueConvertor.new(field_type_tag).
285
- value_to_pointer(typed_ptr, builder.call_argument_name, info.offset)
285
+ PointerValueConvertor.new(field_type_tag)
286
+ .value_to_pointer(typed_ptr, builder.call_argument_name, info.offset)
286
287
  end
287
288
 
288
289
  def field_type_tag
@@ -291,6 +292,7 @@ module GirFFI
291
292
 
292
293
  attr_reader :container_class
293
294
 
295
+ # TODO: Inject container_info on initialization
294
296
  def container_info
295
297
  @container_info ||= info.container
296
298
  end
@@ -300,7 +302,7 @@ module GirFFI
300
302
  end
301
303
 
302
304
  def field_argument_info
303
- @field_argument_info ||= FieldArgumentInfo.new 'value', field_type
305
+ @field_argument_info ||= FieldArgumentInfo.new "value", field_type
304
306
  end
305
307
 
306
308
  def setter_builder
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/enum_builder'
4
- require 'gir_ffi/flags_base'
3
+ require "gir_ffi/builders/enum_builder"
4
+ require "gir_ffi/flags_base"
5
5
 
6
6
  module GirFFI
7
7
  module Builders
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/c_to_ruby_convertor'
3
+ require "gir_ffi/builders/c_to_ruby_convertor"
4
4
 
5
5
  module GirFFI
6
6
  module Builders
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/return_value_builder'
4
- require 'gir_ffi/builders/base_method_builder'
3
+ require "gir_ffi/builders/return_value_builder"
4
+ require "gir_ffi/builders/base_method_builder"
5
5
 
6
6
  module GirFFI
7
7
  module Builders
@@ -37,12 +37,18 @@ module GirFFI
37
37
  private
38
38
 
39
39
  def receiver_call_argument
40
- if @info.instance_ownership_transfer == :everything
41
- 'self.ref'
40
+ container_type_info = ReceiverTypeInfo.new(container_info)
41
+ if @info.instance_ownership_transfer == :everything &&
42
+ container_type_info.flattened_tag == :object
43
+ "self.ref"
42
44
  else
43
- 'self'
45
+ "self"
44
46
  end
45
47
  end
48
+
49
+ def container_info
50
+ @container_info ||= @info.container
51
+ end
46
52
  end
47
53
  end
48
54
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/initializer_return_value_builder'
4
- require 'gir_ffi/builders/base_method_builder'
3
+ require "gir_ffi/builders/initializer_return_value_builder"
4
+ require "gir_ffi/builders/base_method_builder"
5
5
 
6
6
  module GirFFI
7
7
  module Builders
@@ -17,7 +17,7 @@ module GirFFI
17
17
  end
18
18
 
19
19
  def method_name
20
- @info.safe_name.sub(/^new/, 'initialize')
20
+ @info.safe_name.sub(/^new/, "initialize")
21
21
  end
22
22
 
23
23
  def result
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/base_return_value_builder'
3
+ require "gir_ffi/builders/base_return_value_builder"
4
4
 
5
5
  module GirFFI
6
6
  module Builders
@@ -9,7 +9,7 @@ module GirFFI
9
9
  def post_conversion
10
10
  result = []
11
11
  result << "store_pointer(#{capture_variable_name})"
12
- result << '@struct.owned = true' if specialized_type_tag == :struct
12
+ result << "@struct.owned = true" if specialized_type_tag == :struct
13
13
  result
14
14
  end
15
15
  end
@@ -1,14 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/registered_type_builder'
4
- require 'gir_ffi/interface_base'
3
+ require "gir_ffi/builders/registered_type_builder"
4
+ require "gir_ffi/interface_base"
5
5
 
6
6
  module GirFFI
7
7
  module Builders
8
8
  # Implements the creation of a module representing an Interface.
9
9
  class InterfaceBuilder < RegisteredTypeBuilder
10
10
  def interface_struct
11
- @interface_struct ||= Builder.build_class iface_struct_info
11
+ @interface_struct ||=
12
+ ClassStructBuilder.new(iface_struct_info,
13
+ GObject::TypeInterface).build_class
12
14
  end
13
15
 
14
16
  private
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/variable_name_generator'
4
- require 'gir_ffi/builders/callback_argument_builder'
5
- require 'gir_ffi/builders/vfunc_argument_builder'
6
- require 'gir_ffi/builders/callback_return_value_builder'
7
- require 'gir_ffi/builders/argument_builder_collection'
8
- require 'gir_ffi/builders/base_method_builder'
3
+ require "gir_ffi/variable_name_generator"
4
+ require "gir_ffi/builders/callback_argument_builder"
5
+ require "gir_ffi/builders/vfunc_argument_builder"
6
+ require "gir_ffi/builders/callback_return_value_builder"
7
+ require "gir_ffi/builders/argument_builder_collection"
8
+ require "gir_ffi/builders/base_method_builder"
9
9
 
10
10
  module GirFFI
11
11
  module Builders
@@ -23,19 +23,19 @@ module GirFFI
23
23
 
24
24
  def initialize(receiver_info, info, builder_class)
25
25
  super(info, CallbackReturnValueBuilder,
26
- receiver_info: receiver_info,
26
+ receiver_info: receiver_info,
27
27
  argument_builder_class: builder_class)
28
28
  end
29
29
 
30
30
  ## Methods used by MethodTemplate
31
31
 
32
32
  def method_name
33
- 'call_with_argument_mapping'
33
+ "call_with_argument_mapping"
34
34
  end
35
35
 
36
36
  def method_arguments
37
37
  @method_arguments ||=
38
- argument_builder_collection.method_argument_names.dup.unshift('_proc')
38
+ argument_builder_collection.method_argument_names.dup.unshift("_proc")
39
39
  end
40
40
 
41
41
  def invocation
@@ -57,7 +57,7 @@ module GirFFI
57
57
  private
58
58
 
59
59
  def call_argument_list
60
- argument_builder_collection.call_argument_names.join(', ')
60
+ argument_builder_collection.call_argument_names.join(", ")
61
61
  end
62
62
  end
63
63
  end
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/variable_name_generator'
4
- require 'gir_ffi/builders/closure_argument_builder'
5
- require 'gir_ffi/builders/closure_return_value_builder'
6
- require 'gir_ffi/builders/argument_builder_collection'
7
- require 'gir_ffi/builders/method_template'
3
+ require "gir_ffi/variable_name_generator"
4
+ require "gir_ffi/builders/closure_argument_builder"
5
+ require "gir_ffi/builders/closure_return_value_builder"
6
+ require "gir_ffi/builders/argument_builder_collection"
7
+ require "gir_ffi/builders/method_template"
8
8
 
9
9
  module GirFFI
10
10
  module Builders
@@ -12,20 +12,23 @@ module GirFFI
12
12
  # handler. This method converts arguments from C to Ruby, and the
13
13
  # result from Ruby to C.
14
14
  class MarshallingMethodBuilder < BaseMethodBuilder
15
- def self.for_signal(receiver_info, info)
15
+ def self.for_signal(info)
16
+ container_info = info.container
17
+ container_type_info = ReceiverTypeInfo.new(container_info)
18
+ receiver_info = ReceiverArgumentInfo.new(container_type_info)
16
19
  new receiver_info, info
17
20
  end
18
21
 
19
22
  def initialize(receiver_info, info)
20
23
  super(info, ClosureReturnValueBuilder,
21
- receiver_info: receiver_info,
24
+ receiver_info: receiver_info,
22
25
  argument_builder_class: ClosureArgumentBuilder)
23
26
  end
24
27
 
25
28
  ## Methods used by MethodTemplate
26
29
 
27
30
  def method_name
28
- 'marshaller'
31
+ "marshaller"
29
32
  end
30
33
 
31
34
  def method_arguments
@@ -59,7 +62,7 @@ module GirFFI
59
62
  private
60
63
 
61
64
  def call_argument_list
62
- @argument_builder_collection.call_argument_names.join(', ')
65
+ @argument_builder_collection.call_argument_names.join(", ")
63
66
  end
64
67
 
65
68
  def param_names