class GirFFI::Builders::BaseMethodBuilder

Base class for method definition builders.

Public Instance Methods

argument_builder_collection() click to toggle source
# 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() click to toggle source

Methods used for setting up the builders

# 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
error_argument() click to toggle source
# File lib/gir_ffi/builders/base_method_builder.rb, line 44
def error_argument
  @error_argument ||=
    if @info.throws?
      ErrorArgumentBuilder.new vargen, ErrorArgumentInfo.new
    else
      NullArgumentBuilder.new
    end
end
invocation() click to toggle source

Methods used by MethodTemplate

# File lib/gir_ffi/builders/base_method_builder.rb, line 55
def invocation
  "#{lib_name}.#{@info.symbol} #{function_call_arguments.join(', ')}"
end
method_arguments() click to toggle source
# File lib/gir_ffi/builders/base_method_builder.rb, line 59
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 18
def method_definition
  template.method_definition
end
preparation() click to toggle source
# File lib/gir_ffi/builders/base_method_builder.rb, line 63
def preparation
  []
end
return_value_info() click to toggle source
# 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() click to toggle source
# File lib/gir_ffi/builders/base_method_builder.rb, line 22
def template
  @template ||= MethodTemplate.new(self, argument_builder_collection)
end
vargen() click to toggle source
# File lib/gir_ffi/builders/base_method_builder.rb, line 14
def vargen
  @vargen ||= VariableNameGenerator.new
end

Private Instance Methods

lib_name() click to toggle source
# File lib/gir_ffi/builders/base_method_builder.rb, line 69
def lib_name
  "#{@info.safe_namespace}::Lib"
end