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
Public Class Methods
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
Source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 47 def argument_class_name type_info.argument_class_name end
TODO: Use class rather than class name
Source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 51 def array_length_idx type_info.array_length end
Source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 73 def array_length_parameter? @array_arg end
Source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 101 def call_argument_name @call_argument_name ||= new_variable end
Source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 55 def closure_idx arginfo.closure end
Source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 59 def destroy_idx arginfo.destroy end
Source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 81 def destroy_notifier? @is_destroy_notifier end
Source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 34 def direction @direction ||= arginfo.direction end
Source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 85 def helper_argument? array_length_parameter? || user_data? || destroy_notifier? end
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
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
Source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 30 def name @name ||= safe(arginfo.name) end
Source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 105 def new_variable @var_gen.new_var end
Source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 89 def ownership_transfer arginfo.ownership_transfer end
Source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 93 def safe(name) if KEYWORDS.include? name "#{name}_" else name end end
Source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 42 def specialized_type_tag type_info.flattened_tag end
Source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 38 def type_info @type_info ||= arginfo.argument_type end
Source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 77 def user_data? @is_user_data end