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.
15
16
17
18
19
20
21
22
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 15
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
58
59
60
61
62
63
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 58
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
38
39
40
41
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 38
def argument_builders
@argument_builders ||=
@info.args.map { |arg| make_argument_builder arg }
end
|
#error_argument ⇒ Object
65
66
67
68
69
70
71
72
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 65
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
76
77
78
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 76
def invocation
"#{lib_name}.#{@info.symbol} #{function_call_arguments.join(', ')}".strip
end
|
#method_arguments ⇒ Object
80
81
82
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 80
def method_arguments
argument_builder_collection.method_argument_names
end
|
#method_definition ⇒ Object
28
29
30
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 28
def method_definition
template.method_definition
end
|
#preparation ⇒ Object
84
85
86
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 84
def preparation
[]
end
|
#receiver_builder ⇒ Object
54
55
56
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 54
def receiver_builder
@receiver_builder ||= @receiver_info ? make_argument_builder(@receiver_info) : nil
end
|
#return_value_builder ⇒ Object
49
50
51
52
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 49
def return_value_builder
@return_value_builder = @return_value_builder_class.new(variable_generator,
return_value_info)
end
|
#return_value_info ⇒ Object
43
44
45
46
47
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 43
def return_value_info
@return_value_info ||= ReturnValueInfo.new(@info.return_type,
@info.caller_owns,
@info.skip_return?)
end
|
#template ⇒ Object
32
33
34
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 32
def template
@template ||= MethodTemplate.new(self, argument_builder_collection)
end
|
#variable_generator ⇒ Object
24
25
26
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 24
def variable_generator
@variable_generator ||= VariableNameGenerator.new
end
|