Sha256: 0d09854b67b1e10ca6c0fcaa36237fdd79a387227b4b22001da6fc4986aa5d8d
Contents?: true
Size: 1.38 KB
Versions: 2
Compression:
Stored size: 1.38 KB
Contents
require 'gir_ffi/sized_array' module GirFFI # Maps GObject type tags and type specification to types FFI can handle. module TypeMap sz = FFI.type_size(:size_t) * 8 gsize_type = "uint#{sz}".to_sym TAG_TYPE_MAP = { enum: :int32, flags: :int32, ghash: :pointer, glist: :pointer, gslist: :pointer, strv: :pointer, object: :pointer, struct: :pointer, error: :pointer, ptr_array: :pointer, array: :pointer, c: GirFFI::SizedArray, utf8: :pointer, GType: gsize_type, gboolean: GLib::Boolean, gunichar: :uint32, gint8: :int8, guint8: :uint8, gint16: :int16, guint16: :uint16, gint: :int, gint32: :int32, guint32: :uint32, gint64: :int64, guint64: :uint64, gsize: gsize_type, gfloat: :float, gdouble: :double, void: :void } def self.map_basic_type type sym = type.to_sym TAG_TYPE_MAP[sym] || sym end def self.type_specification_to_ffitype type type_specification_to_ffi_type type end 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 end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
gir_ffi-0.7.10 | lib/gir_ffi/type_map.rb |
gir_ffi-0.7.9 | lib/gir_ffi/type_map.rb |