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
Instance Method Details
#argument_builder_collection ⇒ Object
38
39
40
41
42
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 38
def argument_builder_collection
@argument_builder_collection ||= ArgumentBuilderCollection.new(
@return_value_builder, argument_builders,
error_argument_builder: error_argument)
end
|
#argument_builders ⇒ Object
Methods used for setting up the builders
28
29
30
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 28
def argument_builders
@argument_builders ||= @info.args.map { |arg| ArgumentBuilder.new vargen, arg }
end
|
#invocation ⇒ Object
Methods used by MethodTemplate
55
56
57
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 55
def invocation
"#{lib_name}.#{@info.symbol} #{function_call_arguments.join(', ')}".strip
end
|
#method_arguments ⇒ Object
59
60
61
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 59
def method_arguments
argument_builder_collection.method_argument_names
end
|
#method_definition ⇒ Object
18
19
20
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 18
def method_definition
template.method_definition
end
|
#preparation ⇒ Object
63
64
65
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 63
def preparation
[]
end
|
#return_value_info ⇒ Object
32
33
34
35
36
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 32
def return_value_info
@return_value_info ||= ReturnValueInfo.new(@info.return_type,
@info.caller_owns,
@info.skip_return?)
end
|
#template ⇒ Object
22
23
24
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 22
def template
@template ||= MethodTemplate.new(self, argument_builder_collection)
end
|
#vargen ⇒ Object
14
15
16
|
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 14
def vargen
@vargen ||= VariableNameGenerator.new
end
|