class GirFFI::Builders::BaseArgumentBuilder

Abstract parent class of the argument building classes. These classes are used by FunctionBuilder to create the code that processes each argument before and after the actual function call.

Constants

KEYWORDS

Attributes

arginfo[R]
array_arg[RW]
length_arg[RW]

Public Class Methods

new(var_gen, arginfo) click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 20
def initialize(var_gen, arginfo)
  @var_gen = var_gen
  @arginfo = arginfo
  @length_arg = nil
  @array_arg = nil
  @is_user_data = false
  @is_destroy_notifier = false
end

Public Instance Methods

argument_class_name() click to toggle source

TODO: Use class rather than class name

# File lib/gir_ffi/builders/base_argument_builder.rb, line 46
def argument_class_name
  type_info.argument_class_name
end
array_length_idx() click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 50
def array_length_idx
  type_info.array_length
end
array_length_parameter?() click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 72
def array_length_parameter?
  @array_arg
end
call_argument_name() click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 100
def call_argument_name
  @call_argument_name ||= new_variable
end
closure_idx() click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 54
def closure_idx
  arginfo.closure
end
destroy_idx() click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 58
def destroy_idx
  arginfo.destroy
end
destroy_notifier?() click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 80
def destroy_notifier?
  @is_destroy_notifier
end
direction() click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 33
def direction
  @direction ||= arginfo.direction
end
helper_argument?() click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 84
def helper_argument?
  array_length_parameter? || user_data? || destroy_notifier?
end
mark_as_destroy_notifier(callback_builder) click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 67
def mark_as_destroy_notifier(callback_builder)
  @is_destroy_notifier = true
  @related_callback_builder = callback_builder
end
mark_as_user_data(callback_builder) click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 62
def mark_as_user_data(callback_builder)
  @is_user_data = true
  @related_callback_builder = callback_builder
end
name() click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 29
def name
  @name ||= safe(arginfo.name)
end
new_variable() click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 104
def new_variable
  @var_gen.new_var
end
ownership_transfer() click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 88
def ownership_transfer
  arginfo.ownership_transfer
end
safe(name) click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 92
def safe(name)
  if KEYWORDS.include? name
    "#{name}_"
  else
    name
  end
end
specialized_type_tag() click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 41
def specialized_type_tag
  type_info.flattened_tag
end
type_info() click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 37
def type_info
  @type_info ||= arginfo.argument_type
end
user_data?() click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 76
def user_data?
  @is_user_data
end