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