Module: GirFFI::Builder::InArgument

Defined in:
lib/gir_ffi/builder/argument.rb

Class Method Summary collapse

Class Method Details

.build(var_gen, arginfo, libmodule) ⇒ Object



23
24
25
26
# File 'lib/gir_ffi/builder/argument.rb', line 23

def self.build var_gen, arginfo, libmodule
  type = arginfo.argument_type
  builder_for var_gen, arginfo.name, type, libmodule
end

.builder_for(var_gen, name, type, libmodule) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/gir_ffi/builder/argument.rb', line 28

def self.builder_for var_gen, name, type, libmodule
  klass = case type.tag
          when :interface
            case type.interface.info_type
            when :callback
              return CallbackInArgument.new var_gen, name, type, libmodule
            else
              RegularInArgument
            end
          when :array
            if type.array_type == :c
              CArrayInArgument
            else
              RegularInArgument
            end
          else
            RegularInArgument
          end
  return klass.new var_gen, name, type
end