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 21
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 47
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 51
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 73
def array_length_parameter?
  @array_arg
end
call_argument_name() click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 101
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 55
def closure_idx
  arginfo.closure
end
destroy_idx() click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 59
def destroy_idx
  arginfo.destroy
end
destroy_notifier?() click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 81
def destroy_notifier?
  @is_destroy_notifier
end
direction() click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 34
def direction
  @direction ||= arginfo.direction
end
helper_argument?() click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 85
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 68
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 63
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 30
def name
  @name ||= safe(arginfo.name)
end
new_variable() click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 105
def new_variable
  @var_gen.new_var
end
ownership_transfer() click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 89
def ownership_transfer
  arginfo.ownership_transfer
end
safe(name) click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 93
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 42
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 38
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 77
def user_data?
  @is_user_data
end