class GObjectIntrospection::Loader::ArgumentsBuilder
Attributes
arguments[R]
block[R]
Public Class Methods
new(info, method_name)
click to toggle source
# File lib/gobject-introspection/loader.rb, line 648 def initialize(info, method_name) @info = info @method_name = method_name @prepared = false @arguments = nil @block = nil end
Public Instance Methods
build(arguments, block)
click to toggle source
# File lib/gobject-introspection/loader.rb, line 658 def build(arguments, block) prepare @arguments = arguments @block = block build_arguments validate_arguments end
Private Instance Methods
build_arguments()
click to toggle source
# File lib/gobject-introspection/loader.rb, line 686 def build_arguments if @block and @last_in_arg_is_gclosure @arguments << @block @block = nil end n_missing_arguments = @n_in_args - @arguments.size if n_missing_arguments > 0 nil_indexes = [] @in_args.each_with_index do |arg, i| nil_indexes << i if arg.may_be_null? end return if nil_indexes.size < n_missing_arguments nil_indexes.each_with_index do |nil_index, i| next if i <= n_missing_arguments @arguments.insert(nil_index, nil) end end end
prepare()
click to toggle source
# File lib/gobject-introspection/loader.rb, line 669 def prepare return if @prepared @in_args = @info.in_args @n_in_args = @in_args.size @n_required_in_args = @info.n_required_in_args @last_in_arg = @in_args.last if @last_in_arg @last_in_arg_is_gclosure = @last_in_arg.gclosure? else @last_in_arg_is_gclosure = false end @valid_n_args_range = (@n_required_in_args..@n_in_args) @prepared = true end
validate_arguments()
click to toggle source
# File lib/gobject-introspection/loader.rb, line 706 def validate_arguments return if @valid_n_args_range.cover?(@arguments.size) detail = "#{@arguments.size} for " if @n_in_args == @n_required_in_args detail << "#{@n_in_args}" else detail << "#{@n_required_in_args}..#{@n_in_args}" end message = "#{@method_name}: wrong number of arguments (#{detail})" raise ArgumentError, message end