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 29 def initialize(var_gen, arginfo) @var_gen = var_gen @arginfo = arginfo @length_arg = nil @array_arg = nil @is_closure = 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 55 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 59 def array_length_idx type_info.array_length end
call_argument_name()
click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 79 def call_argument_name @call_argument_name ||= new_variable end
closure()
click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 63 def closure arginfo.closure end
closure=(arg)
click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 25 def closure=(arg) @is_closure = arg end
closure?()
click to toggle source
TODO: closure unfortunately means two things in GLib: a closure argument (user_data), and the Closure class (a callable object). Make the distinction more explicit in GirFFI.
# File lib/gir_ffi/builders/base_argument_builder.rb, line 21 def closure? @is_closure end
direction()
click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 41 def direction @direction ||= arginfo.direction end
name()
click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 37 def name @name ||= safe(arginfo.name) end
new_variable()
click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 83 def new_variable @var_gen.new_var end
ownership_transfer()
click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 67 def ownership_transfer arginfo.ownership_transfer end
safe(name)
click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 71 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 49 def specialized_type_tag # SMELL: Law of Demeter, due to this being arginfo.argument_type.flattened_tag type_info.flattened_tag end
type_info()
click to toggle source
# File lib/gir_ffi/builders/base_argument_builder.rb, line 45 def type_info @type_info ||= arginfo.argument_type end