Class: GirFFI::Builders::BaseMethodBuilder
- Inherits:
-
Object
- Object
- GirFFI::Builders::BaseMethodBuilder
show all
- Defined in:
- lib/gir_ffi/builders/base_method_builder.rb
Overview
Base class for method definition builders.
Instance Method Summary
collapse
Constructor Details
#initialize(info, return_value_builder_class, receiver_info: nil, argument_builder_class: ArgumentBuilder) ⇒ BaseMethodBuilder
Returns a new instance of BaseMethodBuilder.
14
15
16
17
18
19
20
21
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 14
def initialize(info, return_value_builder_class,
receiver_info: nil,
argument_builder_class: ArgumentBuilder)
@info = info
@return_value_builder_class = return_value_builder_class
@argument_builder_class = argument_builder_class
@receiver_info = receiver_info
end
|
Instance Method Details
#argument_builder_collection ⇒ Object
57
58
59
60
61
62
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 57
def argument_builder_collection
@argument_builder_collection ||=
ArgumentBuilderCollection.new(return_value_builder, argument_builders,
error_argument_builder: error_argument,
receiver_builder: receiver_builder)
end
|
#argument_builders ⇒ Object
Methods used for setting up the builders
37
38
39
40
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 37
def argument_builders
@argument_builders ||=
@info.args.map { |arg| make_argument_builder arg }
end
|
#error_argument ⇒ Object
64
65
66
67
68
69
70
71
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 64
def error_argument
@error_argument ||=
if @info.can_throw_gerror?
make_argument_builder ErrorArgumentInfo.new
else
NullArgumentBuilder.new
end
end
|
#invocation ⇒ Object
Methods used by MethodTemplate
75
76
77
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 75
def invocation
"#{lib_name}.#{@info.symbol} #{function_call_arguments.join(', ')}".strip
end
|
#method_arguments ⇒ Object
79
80
81
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 79
def method_arguments
argument_builder_collection.method_argument_names
end
|
#method_definition ⇒ Object
27
28
29
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 27
def method_definition
template.method_definition
end
|
#preparation ⇒ Object
83
84
85
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 83
def preparation
[]
end
|
#receiver_builder ⇒ Object
53
54
55
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 53
def receiver_builder
@receiver_builder ||= @receiver_info ? make_argument_builder(@receiver_info) : nil
end
|
#return_value_builder ⇒ Object
48
49
50
51
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 48
def return_value_builder
@return_value_builder = @return_value_builder_class.new(variable_generator,
return_value_info)
end
|
#return_value_info ⇒ Object
42
43
44
45
46
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 42
def return_value_info
@return_value_info ||= ReturnValueInfo.new(@info.return_type,
@info.caller_owns,
@info.skip_return?)
end
|
#template ⇒ Object
31
32
33
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 31
def template
@template ||= MethodTemplate.new(self, argument_builder_collection)
end
|
#variable_generator ⇒ Object
23
24
25
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 23
def variable_generator
@variable_generator ||= VariableNameGenerator.new
end
|