module GirFFI::Builder::InOutArgument

Implements argument processing for arguments with direction :inout.

Public Class Methods

build(var_gen, arginfo, libmodule) click to toggle source
# File lib/gir_ffi/builder/argument.rb, line 325
def self.build var_gen, arginfo, libmodule
  type = arginfo.argument_type
  direction = arginfo.direction
  klass = case type.tag
          when :interface
            case type.interface.info_type
            when :enum, :flags
              EnumInOutArgument
            else
              RegularArgument
            end
          when :array
            if type.zero_terminated?
              StrvInOutArgument
            else
              case type.array_type
              when :c
                CArrayInOutArgument
              when :array
                RegularArgument
              end
            end
          when :glist, :gslist, :ghash
            RegularArgument
          else
            RegularInOutArgument
          end

  klass.new var_gen, arginfo.name, type, direction
end