Module: GirFFI::TypeMap

Defined in:
lib/gir_ffi/type_map.rb

Overview

Maps GObject type tags and type specification to types FFI can handle.

Constant Summary collapse

TAG_TYPE_MAP =
{
  enum:      :int32,
  flags:     :int32,
  ghash:     :pointer,
  glist:     :pointer,
  gslist:    :pointer,
  strv:      :pointer,
  interface: :pointer,
  error:     :pointer,
  ptr_array: :pointer,
  array:     :pointer,
  c:         GirFFI::SizedArray,
  utf8:      :pointer,
  GType:     gsize_type,
  gboolean:  GirFFI::Boolean,
  gunichar:  :uint32,
  gint8:     :int8,
  guint8:    :uint8,
  gint16:    :int16,
  guint16:   :uint16,
  gint:      :int,
  guint:     :uint,
  gint32:    :int32,
  guint32:   :uint32,
  gint64:    :int64,
  guint64:   :uint64,
  glong:     :long,
  gulong:    :ulong,
  gsize:     gsize_type,
  gfloat:    :float,
  gdouble:   :double,
  void:      :void
}.freeze

Class Method Summary collapse

Class Method Details

.map_basic_type(type) ⇒ Object



45
46
47
48
# File 'lib/gir_ffi/type_map.rb', line 45

def self.map_basic_type(type)
  sym = type.to_sym
  TAG_TYPE_MAP[sym] || sym
end

.type_specification_to_ffi_type(type) ⇒ Object



50
51
52
53
54
55
56
57
58
59
# File 'lib/gir_ffi/type_map.rb', line 50

def self.type_specification_to_ffi_type(type)
  case type
  when Module
    type.to_ffi_type
  when Array
    type[0]
  else
    map_basic_type(type)
  end
end