Module: GObject

Defined in:
lib/ffi-gobject.rb,
lib/ffi-gobject/base.rb,
lib/ffi-gobject/value.rb,
lib/ffi-gobject/helper.rb,
lib/ffi-gobject/object.rb,
lib/ffi-gobject/closure.rb,
lib/ffi-gobject/ruby_style.rb,
lib/ffi-gobject/ruby_closure.rb,
lib/gir_ffi-base/gobject/lib.rb,
lib/ffi-gobject/initially_unowned.rb

Defined Under Namespace

Modules: Helper, Lib, RubyStyle Classes: Closure, InitiallyUnowned, Object, RubyClosure, Value

Constant Summary collapse

TYPE_STRV =
Lib.g_strv_get_type
TYPE_HASH_TABLE =
Lib.g_hash_table_get_type
TYPE_TAG_TO_GTYPE =
{
  :void => TYPE_NONE,
  :gboolean => TYPE_BOOLEAN,
  :gint32 => TYPE_INT,
  :gfloat => TYPE_FLOAT,
  :gdouble => TYPE_DOUBLE,
  :utf8 => TYPE_STRING,
  :ghash => TYPE_HASH_TABLE,
  :glist => TYPE_POINTER
}
TYPE_INVALID =
type_from_name("invalid")
TYPE_NONE =
type_from_name("void")
TYPE_INTERFACE =
type_from_name("GInterface")
TYPE_CHAR =
type_from_name("gchar")
TYPE_UCHAR =
type_from_name("guchar")
TYPE_BOOLEAN =
type_from_name("gboolean")
TYPE_INT =
type_from_name("gint")
TYPE_UINT =
type_from_name("guint")
TYPE_LONG =
type_from_name("glong")
TYPE_ULONG =
type_from_name("gulong")
TYPE_INT64 =
type_from_name("gint64")
TYPE_UINT64 =
type_from_name("guint64")
TYPE_ENUM =
type_from_name("GEnum")
TYPE_FLAGS =
type_from_name("GFlags")
TYPE_FLOAT =
type_from_name("gfloat")
TYPE_DOUBLE =
type_from_name("gdouble")
TYPE_STRING =
type_from_name("gchararray")
TYPE_POINTER =
type_from_name("gpointer")
TYPE_BOXED =
type_from_name("GBoxed")
TYPE_PARAM =
type_from_name("GParam")
TYPE_OBJECT =
type_from_name("GObject")
TYPE_GTYPE =
type_from_name("GType")
TYPE_VARIANT =
type_from_name("GVariant")

Class Method Summary collapse

Class Method Details

.object_class_from_instance(instance) ⇒ Object



47
48
49
# File 'lib/ffi-gobject.rb', line 47

def self.object_class_from_instance instance
  object_class_from_instance_pointer instance.to_ptr
end

.object_class_from_instance_pointer(inst_ptr) ⇒ Object



51
52
53
54
55
# File 'lib/ffi-gobject.rb', line 51

def self.object_class_from_instance_pointer inst_ptr
  return nil if inst_ptr.null?
  klsptr = inst_ptr.get_pointer 0
  ObjectClass.wrap klsptr
end

.object_is_floating(obj) ⇒ Object



33
34
35
# File 'lib/ffi-gobject.rb', line 33

def self.object_is_floating obj
  Lib::g_object_is_floating obj.to_ptr
end

.object_ref(obj) ⇒ Object



21
22
23
# File 'lib/ffi-gobject.rb', line 21

def self.object_ref obj
  Lib::g_object_ref obj.to_ptr
end

.object_ref_sink(obj) ⇒ Object



25
26
27
# File 'lib/ffi-gobject.rb', line 25

def self.object_ref_sink obj
  Lib::g_object_ref_sink obj.to_ptr
end

.object_unref(obj) ⇒ Object



29
30
31
# File 'lib/ffi-gobject.rb', line 29

def self.object_unref obj
  Lib::g_object_unref obj.to_ptr
end

.param_spec_int(name, nick, blurb, minimum, maximum, default_value, flags) ⇒ Object



82
83
84
85
86
87
# File 'lib/ffi-gobject.rb', line 82

def self.param_spec_int(name, nick, blurb, minimum, maximum,
                        default_value, flags)
  ptr = Lib.g_param_spec_int(name, nick, blurb, minimum, maximum,
                             default_value, flags)
  ParamSpecInt.wrap(ptr)
end

.signal_connect(object, signal, data = nil, &block) ⇒ Object



73
74
75
76
77
78
79
80
# File 'lib/ffi-gobject.rb', line 73

def self.signal_connect object, signal, data=nil, &block
  callback = Helper.signal_callback object.class, signal, &block
  data_ptr = GirFFI::ArgHelper.object_to_inptr data

  Lib::CALLBACKS << callback

  Lib.g_signal_connect_data object, signal, callback, data_ptr, nil, 0
end

.signal_emit(object, signal, *args) ⇒ Object



63
64
65
66
67
68
69
70
71
# File 'lib/ffi-gobject.rb', line 63

def self.signal_emit object, signal, *args
  id = signal_lookup_from_instance signal, object
  arr = Helper.signal_arguments_to_gvalue_array signal, object, *args
  rval = Helper.gvalue_for_signal_return_value signal, object

  Lib.g_signal_emitv arr.values, id, 0, rval

  return rval
end

.signal_lookup_from_instance(signal, object) ⇒ Object



59
60
61
# File 'lib/ffi-gobject.rb', line 59

def self.signal_lookup_from_instance signal, object
  signal_lookup signal, type_from_instance(object)
end

.type_from_instance(instance) ⇒ Object



43
44
45
# File 'lib/ffi-gobject.rb', line 43

def self.type_from_instance instance
  type_from_instance_pointer instance.to_ptr
end

.type_from_instance_pointer(inst_ptr) ⇒ Object



37
38
39
40
41
# File 'lib/ffi-gobject.rb', line 37

def self.type_from_instance_pointer inst_ptr
  return nil if inst_ptr.null?
  klsptr = inst_ptr.get_pointer 0
  klsptr.send "get_#{GirFFI::TypeMap::TAG_TYPE_MAP[:GType]}", 0
end

.type_initObject



17
18
19
# File 'lib/ffi-gobject.rb', line 17

def self.type_init
  Lib::g_type_init
end