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