Class: GirFFI::Builders::BaseMethodBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/gir_ffi/builders/base_method_builder.rb

Overview

Base class for method definition builders.

Direct Known Subclasses

FunctionBuilder, InitializerBuilder

Instance Method Summary collapse

Instance Method Details

#argument_builder_collectionObject



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_buildersObject

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

#error_argumentObject



44
45
46
47
48
49
50
51
# 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

#invocationObject

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_argumentsObject



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_definitionObject



18
19
20
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 18

def method_definition
  template.method_definition
end

#preparationObject



63
64
65
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 63

def preparation
  []
end

#return_value_infoObject



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

#templateObject



22
23
24
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 22

def template
  @template ||= MethodTemplate.new(self, argument_builder_collection)
end

#vargenObject



14
15
16
# File 'lib/gir_ffi/builders/base_method_builder.rb', line 14

def vargen
  @vargen ||= VariableNameGenerator.new
end