class GirFFI::Builders::BaseMethodBuilder
Base class for method definition builders.
Public Class Methods
new(info, return_value_builder_class, receiver_info: nil, argument_builder_class: ArgumentBuilder)
click to toggle source
# 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
Public Instance Methods
invocation()
click to toggle source
Methods used by MethodTemplate
# File lib/gir_ffi/builders/base_method_builder.rb, line 30 def invocation "#{lib_name}.#{@info.symbol} #{function_call_arguments.join(', ')}".strip end
method_arguments()
click to toggle source
# File lib/gir_ffi/builders/base_method_builder.rb, line 34 def method_arguments argument_builder_collection.method_argument_names end
method_definition()
click to toggle source
# File lib/gir_ffi/builders/base_method_builder.rb, line 24 def method_definition template.method_definition end
preparation()
click to toggle source
# File lib/gir_ffi/builders/base_method_builder.rb, line 38 def preparation [] end
Private Instance Methods
argument_builder_collection()
click to toggle source
# File lib/gir_ffi/builders/base_method_builder.rb, line 74 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()
click to toggle source
Methods used for setting up the builders
# File lib/gir_ffi/builders/base_method_builder.rb, line 54 def argument_builders @argument_builders ||= @info.args.map { |arg| make_argument_builder arg } end
error_argument()
click to toggle source
# File lib/gir_ffi/builders/base_method_builder.rb, line 81 def error_argument @error_argument ||= if @info.can_throw_gerror? make_argument_builder ErrorArgumentInfo.new else NullArgumentBuilder.new end end
lib_name()
click to toggle source
# File lib/gir_ffi/builders/base_method_builder.rb, line 90 def lib_name "#{@info.safe_namespace}::Lib" end
make_argument_builder(argument_info)
click to toggle source
# File lib/gir_ffi/builders/base_method_builder.rb, line 94 def make_argument_builder(argument_info) @argument_builder_class.new variable_generator, argument_info end
receiver_builder()
click to toggle source
# File lib/gir_ffi/builders/base_method_builder.rb, line 70 def receiver_builder @receiver_builder ||= @receiver_info ? make_argument_builder(@receiver_info) : nil end
return_value_builder()
click to toggle source
# File lib/gir_ffi/builders/base_method_builder.rb, line 65 def return_value_builder @return_value_builder ||= @return_value_builder_class.new(variable_generator, return_value_info) end
return_value_info()
click to toggle source
# File lib/gir_ffi/builders/base_method_builder.rb, line 59 def return_value_info @return_value_info ||= ReturnValueInfo.new(@info.return_type, @info.caller_owns, @info.skip_return?) end
template()
click to toggle source
# File lib/gir_ffi/builders/base_method_builder.rb, line 48 def template @template ||= MethodTemplate.new(self, argument_builder_collection) end
variable_generator()
click to toggle source
# File lib/gir_ffi/builders/base_method_builder.rb, line 44 def variable_generator @variable_generator ||= VariableNameGenerator.new end