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
@@ -18,10 +18,10 @@ module GirFFI
18
18
  end
19
19
 
20
20
  def method_definition
21
- code = "def #{qualified_method_name}"
22
- code += "(#{method_arguments.join(', ')})" if method_arguments.any?
23
- method_lines.each { |line| code += "\n #{line}" }
24
- code + "\nend\n"
21
+ code = +"def #{qualified_method_name}"
22
+ code << "(#{method_arguments.join(', ')})" if method_arguments.any?
23
+ method_lines.each { |line| code << "\n #{line}" }
24
+ code << "\nend\n"
25
25
  end
26
26
 
27
27
  private
@@ -68,7 +68,7 @@ module GirFFI
68
68
 
69
69
  def result_name_list
70
70
  @result_name_list ||=
71
- @argument_builder_collection.capture_variable_names.join(', ')
71
+ @argument_builder_collection.capture_variable_names.join(", ")
72
72
  end
73
73
 
74
74
  def capturing_invocation
@@ -1,10 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builder_helper'
4
- require 'gir_ffi/module_base'
5
- require 'gir_ffi/builders/function_builder'
6
-
7
- require 'indentation'
3
+ require "gir_ffi/builder_helper"
4
+ require "gir_ffi/module_base"
5
+ require "gir_ffi/builders/function_builder"
8
6
 
9
7
  module GirFFI
10
8
  module Builders
@@ -68,7 +66,7 @@ module GirFFI
68
66
  def build_dependencies
69
67
  deps = gir.dependencies @namespace
70
68
  deps.each do |dep|
71
- name, version = dep.split '-'
69
+ name, version = dep.split "-"
72
70
  Builder.build_module name, version
73
71
  end
74
72
  end
@@ -90,7 +88,9 @@ module GirFFI
90
88
  lib.extend FFI::Library
91
89
  lib.extend FFI::BitMasks
92
90
  lib.ffi_lib_flags :global, :lazy
93
- lib.ffi_lib(*shared_library_specification.split(/,/)) if shared_library_specification
91
+ if shared_library_specification
92
+ lib.ffi_lib(*shared_library_specification.split(/,/))
93
+ end
94
94
  end
95
95
 
96
96
  def shared_library_specification
@@ -3,8 +3,6 @@
3
3
  module GirFFI
4
4
  # Argument builder that does nothing. Implements the Null Object pattern.
5
5
  class NullArgumentBuilder
6
- def initialize(*); end
7
-
8
6
  def pre_conversion
9
7
  []
10
8
  end
@@ -4,8 +4,6 @@ module GirFFI
4
4
  module Builders
5
5
  # Implements a blank return value matching ReturnValueBuilder's interface.
6
6
  class NullReturnValueBuilder
7
- def initialize; end
8
-
9
7
  def array_length_idx
10
8
  -1
11
9
  end
@@ -1,10 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/registered_type_builder'
4
- require 'gir_ffi/builders/with_layout'
5
- require 'gir_ffi/builders/property_builder'
6
- require 'gir_ffi/object_base'
7
- require 'gir_ffi/struct'
3
+ require "gir_ffi/builders/registered_type_builder"
4
+ require "gir_ffi/builders/with_layout"
5
+ require "gir_ffi/builders/property_builder"
6
+ require "gir_ffi/builders/class_struct_builder"
7
+ require "gir_ffi/object_base"
8
+ require "gir_ffi/struct"
8
9
 
9
10
  module GirFFI
10
11
  module Builders
@@ -18,6 +19,10 @@ module GirFFI
18
19
  ObjectBase
19
20
  end
20
21
 
22
+ def object_class_struct
23
+ GObject::TypeClass
24
+ end
25
+
21
26
  def ancestor_infos
22
27
  []
23
28
  end
@@ -32,7 +37,13 @@ module GirFFI
32
37
  end
33
38
 
34
39
  def object_class_struct
35
- @object_class_struct ||= Builder.build_class object_class_struct_info
40
+ @object_class_struct ||=
41
+ if object_class_struct_info
42
+ ClassStructBuilder.new(object_class_struct_info,
43
+ parent_builder.object_class_struct).build_class
44
+ else
45
+ parent_builder.object_class_struct
46
+ end
36
47
  end
37
48
 
38
49
  def ancestor_infos
@@ -48,8 +59,7 @@ module GirFFI
48
59
  protected
49
60
 
50
61
  def object_class_struct_info
51
- @object_class_struct_info ||=
52
- info.class_struct || parent_builder.object_class_struct_info
62
+ @object_class_struct_info ||= info.class_struct
53
63
  end
54
64
 
55
65
  private
@@ -107,14 +117,14 @@ module GirFFI
107
117
  return if vfunc_name == invoker_name
108
118
 
109
119
  klass.class_eval <<-DEF, __FILE__, __LINE__ + 1
110
- def #{vfunc_name} *args, &block
111
- #{invoker_name}(*args, &block)
112
- end
120
+ def #{vfunc_name} *args, &block # def foo *args, &block
121
+ #{invoker_name}(*args, &block) # foo_invoker *args, &block
122
+ end # end
113
123
  DEF
114
124
  end
115
125
 
116
126
  def setup_initializer
117
- return if info.find_method 'new'
127
+ return if info.find_method "new"
118
128
 
119
129
  if info.abstract?
120
130
  define_abstract_initializer
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/base_argument_builder'
3
+ require "gir_ffi/builders/base_argument_builder"
4
4
 
5
5
  module GirFFI
6
6
  module Builders
@@ -1,18 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/method_template'
4
- require 'gir_ffi/builders/argument_builder_collection'
5
- require 'gir_ffi/builders/property_argument_builder'
6
- require 'gir_ffi/builders/property_return_value_builder'
7
- require 'gir_ffi/variable_name_generator'
8
- require 'gir_ffi/field_argument_info'
3
+ require "gir_ffi/builders/method_template"
4
+ require "gir_ffi/builders/argument_builder_collection"
5
+ require "gir_ffi/builders/property_argument_builder"
6
+ require "gir_ffi/builders/property_return_value_builder"
7
+ require "gir_ffi/variable_name_generator"
8
+ require "gir_ffi/field_argument_info"
9
9
 
10
10
  module GirFFI
11
11
  module Builders
12
12
  # Method builder used for the creation of property getter methods.
13
13
  class PropertyGetterBuilder
14
- attr_reader :info
15
- attr_reader :return_value_builder
14
+ attr_reader :info, :return_value_builder
16
15
 
17
16
  def initialize(info, return_value_builder)
18
17
  @return_value_builder = return_value_builder
@@ -101,11 +100,11 @@ module GirFFI
101
100
  end
102
101
 
103
102
  def converting_setter_def
104
- <<-CODE.reset_indentation
105
- def #{setter_name} value
106
- #{setter_builder.pre_conversion.join("\n")}
107
- set_property("#{property_name}", #{setter_builder.call_argument_name})
108
- end
103
+ <<~CODE
104
+ def #{setter_name} value
105
+ #{setter_builder.pre_conversion.join("\n")}
106
+ set_property("#{property_name}", #{setter_builder.call_argument_name})
107
+ end
109
108
  CODE
110
109
  end
111
110
 
@@ -132,7 +131,7 @@ module GirFFI
132
131
  end
133
132
 
134
133
  def argument_info
135
- @argument_info ||= FieldArgumentInfo.new('value', type_info)
134
+ @argument_info ||= FieldArgumentInfo.new("value", type_info)
136
135
  end
137
136
 
138
137
  def container_class
@@ -143,6 +142,7 @@ module GirFFI
143
142
  @container_module ||= Object.const_get(container_info.safe_namespace)
144
143
  end
145
144
 
145
+ # TODO: Inject container_info on initialization
146
146
  def container_info
147
147
  @container_info ||= @info.container
148
148
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/return_value_builder'
3
+ require "gir_ffi/builders/return_value_builder"
4
4
 
5
5
  module GirFFI
6
6
  module Builders
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/base_type_builder'
4
- require 'gir_ffi/method_stubber'
5
- require 'gir_ffi/builders/function_builder'
6
- require 'gir_ffi/builders/constructor_builder'
7
- require 'gir_ffi/builders/initializer_builder'
3
+ require "gir_ffi/builders/base_type_builder"
4
+ require "gir_ffi/method_stubber"
5
+ require "gir_ffi/builders/function_builder"
6
+ require "gir_ffi/builders/constructor_builder"
7
+ require "gir_ffi/builders/initializer_builder"
8
8
 
9
9
  module GirFFI
10
10
  module Builders
@@ -77,6 +77,7 @@ module GirFFI
77
77
  def stub_methods
78
78
  info.get_methods.each do |minfo|
79
79
  klass.class_eval MethodStubber.new(minfo).method_stub, __FILE__, __LINE__
80
+ alias_accessors(minfo) if minfo.method?
80
81
  end
81
82
  end
82
83
 
@@ -92,6 +93,14 @@ module GirFFI
92
93
  def fields
93
94
  info.fields
94
95
  end
96
+
97
+ def alias_accessors(minfo)
98
+ if minfo.name =~ /^get_(.*)/
99
+ klass.send :alias_method, Regexp.last_match(1), minfo.name
100
+ elsif minfo.n_args == 1 && minfo.name =~ /^set_(.*)/
101
+ klass.send :alias_method, "#{Regexp.last_match(1)}=", minfo.name
102
+ end
103
+ end
95
104
  end
96
105
  end
97
106
  end
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/base_return_value_builder'
4
- require 'gir_ffi/builders/full_c_to_ruby_convertor'
5
- require 'gir_ffi/builders/closure_convertor'
3
+ require "gir_ffi/builders/base_return_value_builder"
4
+ require "gir_ffi/builders/full_c_to_ruby_convertor"
5
+ require "gir_ffi/builders/closure_convertor"
6
6
 
7
7
  module GirFFI
8
8
  module Builders
@@ -39,7 +39,7 @@ module GirFFI
39
39
  end
40
40
 
41
41
  def length_argument_name
42
- length_arg && length_arg.post_converted_name
42
+ length_arg&.post_converted_name
43
43
  end
44
44
  end
45
45
  end
@@ -17,7 +17,7 @@ module GirFFI
17
17
  end
18
18
 
19
19
  def conversion_arguments(name)
20
- @type_info.extra_conversion_arguments.map(&:inspect).push(name).join(', ')
20
+ @type_info.extra_conversion_arguments.map(&:inspect).push(name).join(", ")
21
21
  end
22
22
 
23
23
  private
@@ -25,18 +25,18 @@ module GirFFI
25
25
  def conversion_method
26
26
  case @type_info.flattened_tag
27
27
  when :utf8
28
- 'from_utf8'
28
+ "from_utf8"
29
29
  when :struct, :c
30
30
  case @ownership_transfer
31
31
  when :everything
32
- 'copy_from'
32
+ "copy_from"
33
33
  else
34
- 'from'
34
+ "from"
35
35
  end
36
36
  when :enum
37
- 'to_int'
37
+ "to_int"
38
38
  else
39
- 'from'
39
+ "from"
40
40
  end
41
41
  end
42
42
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/base_type_builder'
4
- require 'gir_ffi/builders/marshalling_method_builder'
3
+ require "gir_ffi/builders/base_type_builder"
4
+ require "gir_ffi/builders/marshalling_method_builder"
5
5
 
6
6
  module GirFFI
7
7
  module Builders
@@ -18,13 +18,11 @@ module GirFFI
18
18
  end
19
19
 
20
20
  def marshaller_definition
21
- container_type_info = ReceiverTypeInfo.new(container_info)
22
- receiver_info = ReceiverArgumentInfo.new(container_type_info)
23
-
24
- MarshallingMethodBuilder.for_signal(receiver_info,
25
- info).method_definition
21
+ MarshallingMethodBuilder.for_signal(info).method_definition
26
22
  end
27
23
 
24
+ private
25
+
28
26
  def klass
29
27
  @klass ||= get_or_define_class container_class, @classname, GObject::RubyClosure
30
28
  end
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/registered_type_builder'
4
- require 'gir_ffi/builders/struct_like'
5
- require 'gir_ffi/struct_base'
3
+ require "gir_ffi/builders/registered_type_builder"
4
+ require "gir_ffi/builders/struct_like"
5
+ require "gir_ffi/struct_base"
6
6
 
7
7
  module GirFFI
8
8
  module Builders
@@ -15,14 +15,16 @@ module GirFFI
15
15
  end
16
16
 
17
17
  def superclass
18
- # HACK: Inheritance chain is not expressed in GObject's code correctly.
19
- return GObject::ObjectClass if info.full_type_name == 'GObject::InitiallyUnownedClass'
20
- return parent_field_type.tag_or_class if info.gtype_struct?
18
+ raise "Use ClassStructBuilder to build #{info.full_type_name}" if info.gtype_struct?
21
19
  return BoxedBase if GObject.type_fundamental(info.gtype) == GObject::TYPE_BOXED
22
20
 
23
21
  StructBase
24
22
  end
25
23
 
24
+ def klass
25
+ @klass ||= get_or_define_class(namespace_module, @classname) { superclass }
26
+ end
27
+
26
28
  def parent_field_type
27
29
  fields.first.field_type
28
30
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/with_layout'
3
+ require "gir_ffi/builders/with_layout"
4
4
 
5
5
  module GirFFI
6
6
  module Builders
@@ -1,17 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/callback_builder'
4
- require 'gir_ffi/builders/constant_builder'
5
- require 'gir_ffi/builders/enum_builder'
6
- require 'gir_ffi/builders/flags_builder'
7
- require 'gir_ffi/builders/interface_builder'
8
- require 'gir_ffi/builders/object_builder'
9
- require 'gir_ffi/builders/struct_builder'
10
- require 'gir_ffi/builders/signal_closure_builder'
11
- require 'gir_ffi/builders/unintrospectable_boxed_builder'
12
- require 'gir_ffi/builders/unintrospectable_builder'
13
- require 'gir_ffi/builders/union_builder'
14
- require 'gir_ffi/builders/vfunc_builder'
3
+ require "gir_ffi/builders/callback_builder"
4
+ require "gir_ffi/builders/constant_builder"
5
+ require "gir_ffi/builders/enum_builder"
6
+ require "gir_ffi/builders/flags_builder"
7
+ require "gir_ffi/builders/interface_builder"
8
+ require "gir_ffi/builders/object_builder"
9
+ require "gir_ffi/builders/struct_builder"
10
+ require "gir_ffi/builders/signal_closure_builder"
11
+ require "gir_ffi/builders/unintrospectable_boxed_builder"
12
+ require "gir_ffi/builders/unintrospectable_builder"
13
+ require "gir_ffi/builders/union_builder"
14
+ require "gir_ffi/builders/vfunc_builder"
15
15
 
16
16
  module GirFFI
17
17
  module Builders
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/registered_type_builder'
4
- require 'gir_ffi/builders/struct_like'
3
+ require "gir_ffi/builders/registered_type_builder"
4
+ require "gir_ffi/builders/struct_like"
5
5
 
6
6
  module GirFFI
7
7
  module Builders
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/object_builder'
4
- require 'gir_ffi/unintrospectable_signal_info'
3
+ require "gir_ffi/builders/object_builder"
4
+ require "gir_ffi/unintrospectable_signal_info"
5
5
 
6
6
  module GirFFI
7
7
  module Builders
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi/builders/registered_type_builder'
4
- require 'gir_ffi/builders/struct_like'
5
- require 'gir_ffi/union_base'
6
- require 'gir_ffi/union'
3
+ require "gir_ffi/builders/registered_type_builder"
4
+ require "gir_ffi/builders/struct_like"
5
+ require "gir_ffi/union_base"
6
+ require "gir_ffi/union"
7
7
 
8
8
  module GirFFI
9
9
  module Builders