gir_ffi 0.7.10 → 0.8.0

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 (150) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +6 -0
  3. data/Gemfile +3 -1
  4. data/README.md +5 -2
  5. data/lib/ffi-glib.rb +1 -0
  6. data/lib/ffi-glib/array.rb +6 -6
  7. data/lib/ffi-glib/array_methods.rb +1 -1
  8. data/lib/ffi-glib/byte_array.rb +1 -1
  9. data/lib/ffi-glib/bytes.rb +3 -3
  10. data/lib/ffi-glib/container_class_methods.rb +2 -2
  11. data/lib/ffi-glib/error.rb +2 -2
  12. data/lib/ffi-glib/hash_table.rb +9 -9
  13. data/lib/ffi-glib/iconv.rb +1 -1
  14. data/lib/ffi-glib/list.rb +2 -2
  15. data/lib/ffi-glib/list_methods.rb +8 -7
  16. data/lib/ffi-glib/main_loop.rb +1 -1
  17. data/lib/ffi-glib/ptr_array.rb +7 -7
  18. data/lib/ffi-glib/s_list.rb +2 -2
  19. data/lib/ffi-glib/strv.rb +3 -3
  20. data/lib/ffi-glib/variant.rb +9 -2
  21. data/lib/ffi-gobject.rb +10 -10
  22. data/lib/ffi-gobject/closure.rb +1 -1
  23. data/lib/ffi-gobject/initially_unowned.rb +4 -3
  24. data/lib/ffi-gobject/object.rb +19 -19
  25. data/lib/ffi-gobject/object_class.rb +2 -2
  26. data/lib/ffi-gobject/ruby_closure.rb +5 -4
  27. data/lib/ffi-gobject/value.rb +15 -20
  28. data/lib/ffi-gobject_introspection/g_error.rb +1 -1
  29. data/lib/ffi-gobject_introspection/i_base_info.rb +6 -6
  30. data/lib/ffi-gobject_introspection/i_callable_info.rb +1 -1
  31. data/lib/ffi-gobject_introspection/i_enum_info.rb +2 -2
  32. data/lib/ffi-gobject_introspection/i_interface_info.rb +8 -8
  33. data/lib/ffi-gobject_introspection/i_object_info.rb +9 -9
  34. data/lib/ffi-gobject_introspection/i_repository.rb +13 -13
  35. data/lib/ffi-gobject_introspection/i_struct_info.rb +2 -2
  36. data/lib/ffi-gobject_introspection/i_type_info.rb +1 -1
  37. data/lib/ffi-gobject_introspection/i_union_info.rb +3 -3
  38. data/lib/ffi-gobject_introspection/lib.rb +4 -4
  39. data/lib/gir_ffi-base/glib/boolean.rb +4 -4
  40. data/lib/gir_ffi-base/glib/strv.rb +2 -2
  41. data/lib/gir_ffi/allocation_helper.rb +1 -1
  42. data/lib/gir_ffi/arg_helper.rb +8 -8
  43. data/lib/gir_ffi/boxed_base.rb +5 -9
  44. data/lib/gir_ffi/builder.rb +4 -4
  45. data/lib/gir_ffi/builder_helper.rb +3 -3
  46. data/lib/gir_ffi/builders/argument_builder_collection.rb +1 -1
  47. data/lib/gir_ffi/builders/base_argument_builder.rb +3 -3
  48. data/lib/gir_ffi/builders/base_method_builder.rb +71 -0
  49. data/lib/gir_ffi/builders/base_type_builder.rb +1 -1
  50. data/lib/gir_ffi/builders/boxed_builder.rb +3 -2
  51. data/lib/gir_ffi/builders/c_to_ruby_convertor.rb +1 -1
  52. data/lib/gir_ffi/builders/closure_convertor.rb +1 -1
  53. data/lib/gir_ffi/builders/closure_to_pointer_convertor.rb +1 -1
  54. data/lib/gir_ffi/builders/constructor_builder.rb +52 -0
  55. data/lib/gir_ffi/builders/enum_builder.rb +3 -3
  56. data/lib/gir_ffi/builders/field_builder.rb +3 -2
  57. data/lib/gir_ffi/builders/function_builder.rb +9 -50
  58. data/lib/gir_ffi/builders/initializer_builder.rb +32 -0
  59. data/lib/gir_ffi/builders/initializer_return_value_builder.rb +16 -0
  60. data/lib/gir_ffi/builders/mapping_method_builder.rb +7 -5
  61. data/lib/gir_ffi/builders/marshalling_method_builder.rb +5 -3
  62. data/lib/gir_ffi/builders/method_template.rb +1 -1
  63. data/lib/gir_ffi/builders/module_builder.rb +8 -7
  64. data/lib/gir_ffi/builders/null_convertor.rb +1 -1
  65. data/lib/gir_ffi/builders/null_return_value_builder.rb +21 -0
  66. data/lib/gir_ffi/builders/object_builder.rb +3 -3
  67. data/lib/gir_ffi/builders/property_builder.rb +1 -1
  68. data/lib/gir_ffi/builders/registered_type_builder.rb +31 -15
  69. data/lib/gir_ffi/builders/return_value_builder.rb +1 -14
  70. data/lib/gir_ffi/builders/ruby_to_c_convertor.rb +2 -2
  71. data/lib/gir_ffi/builders/signal_closure_builder.rb +1 -1
  72. data/lib/gir_ffi/builders/type_builder.rb +2 -2
  73. data/lib/gir_ffi/builders/unintrospectable_builder.rb +1 -1
  74. data/lib/gir_ffi/builders/user_defined_builder.rb +11 -11
  75. data/lib/gir_ffi/builders/vfunc_builder.rb +1 -1
  76. data/lib/gir_ffi/callback_base.rb +8 -13
  77. data/lib/gir_ffi/class_base.rb +41 -45
  78. data/lib/gir_ffi/core.rb +2 -2
  79. data/lib/gir_ffi/enum_base.rb +9 -14
  80. data/lib/gir_ffi/field_argument_info.rb +1 -1
  81. data/lib/gir_ffi/g_type.rb +1 -1
  82. data/lib/gir_ffi/glib_error.rb +1 -1
  83. data/lib/gir_ffi/in_out_pointer.rb +4 -4
  84. data/lib/gir_ffi/in_pointer.rb +12 -12
  85. data/lib/gir_ffi/info_ext/i_arg_info.rb +0 -10
  86. data/lib/gir_ffi/info_ext/i_callback_info.rb +0 -5
  87. data/lib/gir_ffi/info_ext/i_property_info.rb +1 -1
  88. data/lib/gir_ffi/info_ext/i_registered_type_info.rb +1 -6
  89. data/lib/gir_ffi/info_ext/i_signal_info.rb +2 -2
  90. data/lib/gir_ffi/info_ext/i_type_info.rb +2 -17
  91. data/lib/gir_ffi/info_ext/i_unresolved_info.rb +0 -5
  92. data/lib/gir_ffi/info_ext/i_vfunc_info.rb +2 -2
  93. data/lib/gir_ffi/interface_base.rb +2 -7
  94. data/lib/gir_ffi/method_stubber.rb +1 -1
  95. data/lib/gir_ffi/module_base.rb +4 -7
  96. data/lib/gir_ffi/object_base.rb +4 -9
  97. data/lib/gir_ffi/receiver_argument_info.rb +1 -1
  98. data/lib/gir_ffi/receiver_type_info.rb +1 -1
  99. data/lib/gir_ffi/registered_type_base.rb +0 -5
  100. data/lib/gir_ffi/return_value_info.rb +1 -1
  101. data/lib/gir_ffi/sized_array.rb +10 -10
  102. data/lib/gir_ffi/type_map.rb +3 -3
  103. data/lib/gir_ffi/unintrospectable_type_info.rb +3 -1
  104. data/lib/gir_ffi/user_data_argument_info.rb +1 -1
  105. data/lib/gir_ffi/user_defined_property_info.rb +1 -1
  106. data/lib/gir_ffi/user_defined_type_info.rb +4 -4
  107. data/lib/gir_ffi/version.rb +1 -1
  108. data/lib/gir_ffi/vfunc_implementation.rb +1 -1
  109. data/lib/gir_ffi/zero_terminated.rb +6 -6
  110. data/test/base_test_helper.rb +13 -13
  111. data/test/ffi-gobject/object_test.rb +22 -1
  112. data/test/ffi-gobject/value_test.rb +24 -24
  113. data/test/ffi-gobject_introspection/i_registered_type_info_test.rb +4 -4
  114. data/test/ffi-gobject_introspection/i_type_info_test.rb +2 -2
  115. data/test/ffi-gobject_test.rb +2 -2
  116. data/test/gir_ffi/builders/argument_builder_test.rb +60 -60
  117. data/test/gir_ffi/builders/callback_argument_builder_test.rb +8 -8
  118. data/test/gir_ffi/builders/callback_builder_test.rb +4 -4
  119. data/test/gir_ffi/builders/callback_return_value_builder_test.rb +8 -8
  120. data/test/gir_ffi/builders/constructor_builder_test.rb +34 -0
  121. data/test/gir_ffi/builders/function_builder_test.rb +8 -24
  122. data/test/gir_ffi/builders/initializer_builder_test.rb +36 -0
  123. data/test/gir_ffi/builders/interface_builder_test.rb +2 -2
  124. data/test/gir_ffi/builders/object_builder_test.rb +6 -18
  125. data/test/gir_ffi/builders/property_builder_test.rb +2 -2
  126. data/test/gir_ffi/builders/return_value_builder_test.rb +54 -79
  127. data/test/gir_ffi/builders/signal_closure_builder_test.rb +14 -14
  128. data/test/gir_ffi/builders/user_defined_builder_test.rb +8 -8
  129. data/test/gir_ffi/builders/vfunc_builder_test.rb +22 -22
  130. data/test/gir_ffi/class_base_test.rb +9 -7
  131. data/test/gir_ffi/in_pointer_test.rb +1 -1
  132. data/test/gir_ffi/info_ext/i_callable_info_test.rb +2 -2
  133. data/test/gir_ffi/info_ext/i_callback_info_test.rb +2 -2
  134. data/test/gir_ffi/info_ext/i_field_info_test.rb +2 -2
  135. data/test/gir_ffi/info_ext/i_function_info_test.rb +2 -2
  136. data/test/gir_ffi/info_ext/i_signal_info_test.rb +2 -2
  137. data/test/gir_ffi/info_ext/i_type_info_test.rb +18 -18
  138. data/test/gir_ffi/info_ext/i_unresolved_info_test.rb +2 -2
  139. data/test/gir_ffi/info_ext/safe_constant_name_test.rb +2 -2
  140. data/test/gir_ffi/info_ext/safe_function_name_test.rb +2 -2
  141. data/test/gir_ffi/method_stubber_test.rb +6 -6
  142. data/test/gir_ffi/user_defined_type_info_test.rb +3 -3
  143. data/test/gir_ffi_test_helper.rb +12 -12
  144. data/test/integration/derived_classes_test.rb +7 -3
  145. data/test/integration/generated_gimarshallingtests_test.rb +10 -10
  146. data/test/integration/generated_regress_test.rb +11 -20
  147. data/test/introspection_test_helper.rb +1 -1
  148. data/test/minitest/stats_plugin.rb +3 -3
  149. metadata +9 -3
  150. data/lib/gir_ffi/builders/constructor_result_convertor.rb +0 -14
@@ -5,7 +5,7 @@ module GirFFI
5
5
  class BaseTypeBuilder
6
6
  include BuilderHelper
7
7
 
8
- def initialize info
8
+ def initialize(info)
9
9
  @info = info
10
10
  @namespace = @info.namespace
11
11
  @classname = @info.safe_name
@@ -20,9 +20,10 @@ module GirFFI
20
20
  def provide_constructor
21
21
  return if info.find_method 'new'
22
22
 
23
- (class << klass; self; end).class_eval {
23
+ # TODO: Provide both new and initialize
24
+ (class << klass; self; end).class_eval do
24
25
  alias_method :new, :_allocate
25
- }
26
+ end
26
27
  end
27
28
  end
28
29
  end
@@ -3,7 +3,7 @@ module GirFFI
3
3
  # Builder that generates code to convert values from C to Ruby. Used by
4
4
  # argument builders.
5
5
  class CToRubyConvertor
6
- def initialize type_info, argument_name, length_arg
6
+ def initialize(type_info, argument_name, length_arg)
7
7
  @type_info = type_info
8
8
  @argument_name = argument_name
9
9
  @length_arg = length_arg
@@ -3,7 +3,7 @@ module GirFFI
3
3
  # Builder that generates code to convert closure arguments ('user data')
4
4
  # from C to Ruby. Used by argument builders.
5
5
  class ClosureConvertor
6
- def initialize argument_name
6
+ def initialize(argument_name)
7
7
  @argument_name = argument_name
8
8
  end
9
9
 
@@ -3,7 +3,7 @@ module GirFFI
3
3
  # Builder that generates code to convert closure arguments ('user data')
4
4
  # from Ruby to C. Used by argument builders.
5
5
  class ClosureToPointerConvertor
6
- def initialize argument_name
6
+ def initialize(argument_name)
7
7
  @argument_name = argument_name
8
8
  end
9
9
 
@@ -0,0 +1,52 @@
1
+ require 'gir_ffi/builders/argument_builder_collection'
2
+ require 'gir_ffi/builders/method_template'
3
+ require 'gir_ffi/builders/null_return_value_builder'
4
+
5
+ module GirFFI
6
+ module Builders
7
+ # Implements the creation of a Ruby constructor definition out of a
8
+ # GIR IFunctionInfo.
9
+ class ConstructorBuilder
10
+ def initialize(info)
11
+ @info = info
12
+ return_value_builder = NullReturnValueBuilder.new
13
+ arg_builders = ArgumentBuilderCollection.new(return_value_builder, [])
14
+ @template = MethodTemplate.new(self, arg_builders)
15
+ end
16
+
17
+ def method_definition
18
+ @template.method_definition
19
+ end
20
+
21
+ def singleton_method?
22
+ true
23
+ end
24
+
25
+ def method_name
26
+ @info.safe_name
27
+ end
28
+
29
+ def method_arguments
30
+ ['*args']
31
+ end
32
+
33
+ def preparation
34
+ ['obj = allocate']
35
+ end
36
+
37
+ def invocation
38
+ "obj.__send__ #{initializer_name.to_sym.inspect}, #{method_arguments.join(', ')}"
39
+ end
40
+
41
+ def result
42
+ ['obj']
43
+ end
44
+
45
+ private
46
+
47
+ def initializer_name
48
+ @info.safe_name.sub(/^new/, 'initialize')
49
+ end
50
+ end
51
+ end
52
+ end
@@ -14,10 +14,10 @@ module GirFFI
14
14
  end
15
15
 
16
16
  def value_spec
17
- info.values.map {|vinfo|
17
+ info.values.map do|vinfo|
18
18
  val = GirFFI::ArgHelper.cast_uint32_to_int32(vinfo.value)
19
19
  [vinfo.name.to_sym, val]
20
- }.flatten
20
+ end.flatten
21
21
  end
22
22
 
23
23
  def setup_class
@@ -47,7 +47,7 @@ module GirFFI
47
47
  end
48
48
 
49
49
  def already_set_up
50
- klass.respond_to? :get_gtype
50
+ klass.respond_to? :gtype
51
51
  end
52
52
 
53
53
  def superclass
@@ -9,7 +9,7 @@ module GirFFI
9
9
  class FieldBuilder
10
10
  # Builder for field getters
11
11
  class GetterBuilder
12
- def initialize field_builder, return_value_builder
12
+ def initialize(field_builder, return_value_builder)
13
13
  @field_builder = field_builder
14
14
  @return_value_builder = return_value_builder
15
15
  end
@@ -62,7 +62,7 @@ module GirFFI
62
62
 
63
63
  attr_reader :info
64
64
 
65
- def initialize field_info
65
+ def initialize(field_info)
66
66
  @info = field_info
67
67
  end
68
68
 
@@ -89,6 +89,7 @@ module GirFFI
89
89
  MethodTemplate.new(getter_builder, argument_builders).method_definition
90
90
  end
91
91
 
92
+ # TODO: Use MethodTemplate
92
93
  def setter_def
93
94
  builder = setter_builder
94
95
 
@@ -1,55 +1,24 @@
1
- require 'gir_ffi/variable_name_generator'
2
- require 'gir_ffi/builders/argument_builder'
3
- require 'gir_ffi/return_value_info'
4
- require 'gir_ffi/error_argument_info'
5
1
  require 'gir_ffi/builders/return_value_builder'
6
- require 'gir_ffi/builders/error_argument_builder'
7
- require 'gir_ffi/builders/method_template'
2
+ require 'gir_ffi/builders/base_method_builder'
8
3
 
9
4
  module GirFFI
10
5
  module Builders
11
6
  # Implements the creation of a Ruby function definition out of a GIR
12
7
  # IFunctionInfo.
13
- class FunctionBuilder
14
- def initialize info
8
+ class FunctionBuilder < BaseMethodBuilder
9
+ def initialize(info)
15
10
  @info = info
16
- vargen = GirFFI::VariableNameGenerator.new
17
- @argument_builders = @info.args.map { |arg| ArgumentBuilder.new vargen, arg }
18
- return_value_info = ReturnValueInfo.new(@info.return_type,
19
- @info.caller_owns,
20
- @info.skip_return?)
21
11
  @return_value_builder = ReturnValueBuilder.new(vargen,
22
- return_value_info,
23
- @info.constructor?)
24
- @argument_builder_collection = ArgumentBuilderCollection.new(
25
- @return_value_builder, @argument_builders,
26
- error_argument_builder: error_argument(vargen))
27
- @template = MethodTemplate.new(self, @argument_builder_collection)
28
- end
29
-
30
- def generate
31
- @template.method_definition
12
+ return_value_info)
32
13
  end
33
14
 
34
15
  def method_name
35
16
  @info.safe_name
36
17
  end
37
18
 
38
- def method_arguments
39
- @argument_builder_collection.method_argument_names
40
- end
41
-
42
- def preparation
43
- []
44
- end
45
-
46
- def invocation
47
- "#{lib_name}.#{@info.symbol} #{function_call_arguments.join(', ')}"
48
- end
49
-
50
19
  def result
51
- if @argument_builder_collection.has_return_values?
52
- ["return #{@argument_builder_collection.return_value_names.join(', ')}"]
20
+ if argument_builder_collection.has_return_values?
21
+ ["return #{argument_builder_collection.return_value_names.join(', ')}"]
53
22
  else
54
23
  []
55
24
  end
@@ -59,24 +28,14 @@ module GirFFI
59
28
  !@info.method?
60
29
  end
61
30
 
62
- private
63
-
64
- def lib_name
65
- "#{@info.safe_namespace}::Lib"
66
- end
67
-
68
- def error_argument vargen
69
- if @info.throws?
70
- ErrorArgumentBuilder.new vargen, ErrorArgumentInfo.new if @info.throws?
71
- end
72
- end
73
-
74
31
  def function_call_arguments
75
- ca = @argument_builder_collection.call_argument_names
32
+ ca = argument_builder_collection.call_argument_names
76
33
  ca.unshift receiver_call_argument if @info.method?
77
34
  ca
78
35
  end
79
36
 
37
+ private
38
+
80
39
  def receiver_call_argument
81
40
  if @info.instance_ownership_transfer == :everything
82
41
  'self.ref'
@@ -0,0 +1,32 @@
1
+ require 'gir_ffi/builders/initializer_return_value_builder'
2
+ require 'gir_ffi/builders/base_method_builder'
3
+
4
+ module GirFFI
5
+ module Builders
6
+ # Implements the creation of a Ruby object initializer definition out of a
7
+ # GIR IFunctionInfo.
8
+ class InitializerBuilder < BaseMethodBuilder
9
+ def initialize(info)
10
+ @info = info
11
+ @return_value_builder = InitializerReturnValueBuilder.new(vargen,
12
+ return_value_info)
13
+ end
14
+
15
+ def singleton_method?
16
+ false
17
+ end
18
+
19
+ def method_name
20
+ @info.safe_name.sub(/^new/, 'initialize')
21
+ end
22
+
23
+ def result
24
+ []
25
+ end
26
+
27
+ def function_call_arguments
28
+ argument_builder_collection.call_argument_names
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,16 @@
1
+ require 'gir_ffi/builders/base_argument_builder'
2
+
3
+ module GirFFI
4
+ module Builders
5
+ # Implements post-conversion for initializer functions
6
+ class InitializerReturnValueBuilder < BaseArgumentBuilder
7
+ def capture_variable_name
8
+ @capture_variable_name ||= new_variable
9
+ end
10
+
11
+ def post_conversion
12
+ ["store_pointer(#{capture_variable_name})"]
13
+ end
14
+ end
15
+ end
16
+ end
@@ -10,16 +10,18 @@ module GirFFI
10
10
  # Implements the creation mapping method for a callback or vfunc
11
11
  # handler. This method converts arguments from C to Ruby, and the
12
12
  # result from Ruby to C.
13
+ #
14
+ # TODO: Inherit from BaseMethodBuilder
13
15
  class MappingMethodBuilder
14
- def self.for_callback argument_infos, return_value_info
15
- new argument_infos, return_value_info, CallbackArgumentBuilder
16
+ def self.for_callback(argument_infos, return_value_info)
17
+ new nil, argument_infos, return_value_info, CallbackArgumentBuilder
16
18
  end
17
19
 
18
- def self.for_vfunc receiver_info, argument_infos, return_value_info
20
+ def self.for_vfunc(receiver_info, argument_infos, return_value_info)
19
21
  new receiver_info, argument_infos, return_value_info, VFuncArgumentBuilder
20
22
  end
21
23
 
22
- def initialize receiver_info = nil, argument_infos, return_value_info, builder_class
24
+ def initialize(receiver_info, argument_infos, return_value_info, builder_class)
23
25
  @argument_builder_class = builder_class
24
26
  receiver_builder = make_argument_builder receiver_info if receiver_info
25
27
  argument_builders = argument_infos.map { |info| make_argument_builder info }
@@ -75,7 +77,7 @@ module GirFFI
75
77
  @variable_generator ||= VariableNameGenerator.new
76
78
  end
77
79
 
78
- def make_argument_builder argument_info
80
+ def make_argument_builder(argument_info)
79
81
  @argument_builder_class.new variable_generator, argument_info
80
82
  end
81
83
  end
@@ -9,12 +9,14 @@ module GirFFI
9
9
  # Implements the creation mapping method for a signal
10
10
  # handler. This method converts arguments from C to Ruby, and the
11
11
  # result from Ruby to C.
12
+ #
13
+ # TODO: Inherit from BaseMethodBuilder
12
14
  class MarshallingMethodBuilder
13
- def self.for_signal receiver_info, argument_infos, return_value_info
15
+ def self.for_signal(receiver_info, argument_infos, return_value_info)
14
16
  new receiver_info, argument_infos, return_value_info
15
17
  end
16
18
 
17
- def initialize receiver_info, argument_infos, return_value_info
19
+ def initialize(receiver_info, argument_infos, return_value_info)
18
20
  receiver_builder = make_argument_builder receiver_info
19
21
  argument_builders = argument_infos.map { |arg| make_argument_builder arg }
20
22
  return_value_builder =
@@ -76,7 +78,7 @@ module GirFFI
76
78
  @variable_generator ||= VariableNameGenerator.new
77
79
  end
78
80
 
79
- def make_argument_builder argument_info
81
+ def make_argument_builder(argument_info)
80
82
  ClosureArgumentBuilder.new variable_generator, argument_info
81
83
  end
82
84
  end
@@ -10,7 +10,7 @@ module GirFFI
10
10
  # The different method builders collaborate with MethodTemplate to build
11
11
  # the desired method.
12
12
  class MethodTemplate
13
- def initialize builder, argument_builder_collection
13
+ def initialize(builder, argument_builder_collection)
14
14
  @builder = builder
15
15
  @argument_builder_collection = argument_builder_collection
16
16
  end
@@ -1,6 +1,7 @@
1
1
  require 'gir_ffi/builder_helper'
2
2
  require 'gir_ffi/module_base'
3
3
  require 'gir_ffi/builders/function_builder'
4
+
4
5
  require 'indentation'
5
6
 
6
7
  module GirFFI
@@ -10,7 +11,7 @@ module GirFFI
10
11
  class ModuleBuilder
11
12
  include BuilderHelper
12
13
 
13
- def initialize namespace, version = nil
14
+ def initialize(namespace, version = nil)
14
15
  @namespace = namespace
15
16
  @version = version
16
17
  # FIXME: Pass safe namespace as an argument
@@ -21,17 +22,17 @@ module GirFFI
21
22
  modul
22
23
  end
23
24
 
24
- def setup_method method
25
+ def setup_method(method)
25
26
  go = function_introspection_data method.to_s
26
27
  return false unless go
27
28
 
28
29
  Builder.attach_ffi_function lib, go
29
- modul.class_eval FunctionBuilder.new(go).generate
30
+ modul.class_eval FunctionBuilder.new(go).method_definition
30
31
 
31
32
  true
32
33
  end
33
34
 
34
- def build_namespaced_class classname
35
+ def build_namespaced_class(classname)
35
36
  info = gir.find_by_name @namespace, classname.to_s
36
37
  unless info
37
38
  raise NameError,
@@ -54,10 +55,10 @@ module GirFFI
54
55
 
55
56
  def build_dependencies
56
57
  deps = gir.dependencies @namespace
57
- deps.each {|dep|
58
+ deps.each do|dep|
58
59
  name, version = dep.split '-'
59
60
  Builder.build_module name, version
60
- }
61
+ end
61
62
  end
62
63
 
63
64
  def instantiate_module
@@ -93,7 +94,7 @@ module GirFFI
93
94
  @lib ||= get_or_define_module modul, :Lib
94
95
  end
95
96
 
96
- def function_introspection_data function
97
+ def function_introspection_data(function)
97
98
  info = gir.find_by_name @namespace, function.to_s
98
99
  return unless info
99
100
  info.info_type == :function ? info : nil
@@ -2,7 +2,7 @@ module GirFFI
2
2
  module Builders
3
3
  # Argument convertor that does nothing
4
4
  class NullConvertor
5
- def initialize argument_name
5
+ def initialize(argument_name)
6
6
  @argument_name = argument_name
7
7
  end
8
8
 
@@ -0,0 +1,21 @@
1
+ module GirFFI
2
+ module Builders
3
+ # Implements a blank return value matching ReturnValueBuilder's interface.
4
+ class NullReturnValueBuilder
5
+ def initialize
6
+ end
7
+
8
+ def array_length_idx
9
+ -1
10
+ end
11
+
12
+ def capture_variable_name
13
+ nil
14
+ end
15
+
16
+ def post_conversion
17
+ []
18
+ end
19
+ end
20
+ end
21
+ end