class GirFFI::Builders::FieldBuilder::GetterBuilder

Builder for field getters TODO: Derive from BaseMethodBuilder

Public Class Methods

new(info) click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 137
def initialize(info)
  @info = info
end

Public Instance Methods

invocation() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 161
def invocation
  nil
end
method_arguments() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 153
def method_arguments
  []
end
method_definition() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 141
def method_definition
  template.method_definition
end
method_name() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 149
def method_name
  @info.name
end
preparation() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 157
def preparation
  []
end
result() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 165
def result
  [getter_argument_builder.return_value_name]
end
singleton_method?() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 145
def singleton_method?
  false
end

Private Instance Methods

argument_builders() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 179
def argument_builders
  @argument_builders ||=
    ArgumentBuilderCollection.new(
      NullReturnValueBuilder.new,
      base_argument_builders)
end
array_length_field() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 205
def array_length_field
  @info.related_array_length_field
end
base_argument_builders() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 186
def base_argument_builders
  if array_length_field
    [getter_argument_builder, length_argument_builder]
  else
    [getter_argument_builder]
  end
end
field_argument_info() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 226
def field_argument_info
  @field_argument_info ||= GetterArgumentInfo.new "value", field_type
end
field_offset() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 214
def field_offset
  @info.offset
end
field_type() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 222
def field_type
  @field_type ||= @info.field_type
end
field_type_tag() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 218
def field_type_tag
  @field_type_tag ||= field_type.tag_or_class.inspect
end
getter_argument_builder() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 194
def getter_argument_builder
  @getter_argument_builder ||=
    GetterArgumentBuilder.new(var_gen, field_argument_info, @info,
                              array_length_idx: array_length_field ? 1 : -1)
end
length_argument_builder() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 200
def length_argument_builder
  @length_argument_builder ||=
    GetterArgumentBuilder.new(var_gen, length_argument_info, array_length_field)
end
length_argument_info() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 209
def length_argument_info
  @length_argument_info ||=
    GetterArgumentInfo.new "length", array_length_field.field_type
end
template() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 175
def template
  @template ||= MethodTemplate.new(self, argument_builders)
end
var_gen() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 171
def var_gen
  @var_gen ||= VariableNameGenerator.new
end