Module: GObject
- Defined in:
- lib/ffi-gobject.rb,
lib/ffi-gobject/base.rb,
lib/ffi-gobject/value.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: 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
-
.object_class_from_instance(instance) ⇒ Object
-
.object_class_from_instance_pointer(inst_ptr) ⇒ Object
-
.object_is_floating(obj) ⇒ Object
-
.object_ref(obj) ⇒ Object
-
.object_ref_sink(obj) ⇒ Object
-
.object_unref(obj) ⇒ Object
-
.param_spec_int(name, nick, blurb, minimum, maximum, default_value, flags) ⇒ Object
Smells of :reek:LongParameterList: due to the C interface.
-
.signal_connect(object, detailed_signal, data = nil, &block) ⇒ Object
-
.signal_emit(object, detailed_signal, *args) ⇒ Object
-
.signal_lookup_from_instance(signal, object) ⇒ Object
-
.type_from_instance(instance) ⇒ Object
-
.type_from_instance_pointer(inst_ptr) ⇒ Object
-
.type_init ⇒ Object
Class Method Details
.object_class_from_instance(instance) ⇒ Object
46
47
48
|
# File 'lib/ffi-gobject.rb', line 46
def self.object_class_from_instance instance
object_class_from_instance_pointer instance.to_ptr
end
|
.object_class_from_instance_pointer(inst_ptr) ⇒ Object
50
51
52
53
54
|
# File 'lib/ffi-gobject.rb', line 50
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
32
33
34
|
# File 'lib/ffi-gobject.rb', line 32
def self.object_is_floating obj
Lib::g_object_is_floating obj.to_ptr
end
|
.object_ref(obj) ⇒ Object
20
21
22
|
# File 'lib/ffi-gobject.rb', line 20
def self.object_ref obj
Lib::g_object_ref obj.to_ptr
end
|
.object_ref_sink(obj) ⇒ Object
24
25
26
|
# File 'lib/ffi-gobject.rb', line 24
def self.object_ref_sink obj
Lib::g_object_ref_sink obj.to_ptr
end
|
.object_unref(obj) ⇒ Object
28
29
30
|
# File 'lib/ffi-gobject.rb', line 28
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
Smells of :reek:LongParameterList: due to the C interface.
87
88
89
90
91
92
|
# File 'lib/ffi-gobject.rb', line 87
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, detailed_signal, data = nil, &block) ⇒ Object
75
76
77
78
79
80
81
82
83
84
|
# File 'lib/ffi-gobject.rb', line 75
def self.signal_connect object, detailed_signal, data=nil, &block
signal, _ = detailed_signal.split('::')
sig_info = object.class.find_signal signal
callback = sig_info.signal_callback(&block)
GirFFI::CallbackHelper.store_callback callback
data_ptr = GirFFI::ArgHelper.object_to_inptr data
Lib.g_signal_connect_data object, detailed_signal, callback, data_ptr, nil, 0
end
|
.signal_emit(object, detailed_signal, *args) ⇒ Object
62
63
64
65
66
67
68
69
70
71
72
73
|
# File 'lib/ffi-gobject.rb', line 62
def self.signal_emit object, detailed_signal, *args
signal, detail = detailed_signal.split('::')
signal_id = signal_lookup_from_instance signal, object
detail_quark = GLib.quark_from_string(detail)
sig_info = object.class.find_signal signal
arr = sig_info.signal_arguments_to_gvalue_array object, *args
rval = sig_info.gvalue_for_signal_return_value
Lib.g_signal_emitv arr.values, signal_id, detail_quark, rval
return rval
end
|
.signal_lookup_from_instance(signal, object) ⇒ Object
58
59
60
|
# File 'lib/ffi-gobject.rb', line 58
def self.signal_lookup_from_instance signal, object
signal_lookup signal, type_from_instance(object)
end
|
.type_from_instance(instance) ⇒ Object
42
43
44
|
# File 'lib/ffi-gobject.rb', line 42
def self.type_from_instance instance
type_from_instance_pointer instance.to_ptr
end
|
.type_from_instance_pointer(inst_ptr) ⇒ Object
36
37
38
39
40
|
# File 'lib/ffi-gobject.rb', line 36
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_init ⇒ Object
16
17
18
|
# File 'lib/ffi-gobject.rb', line 16
def self.type_init
Lib::g_type_init
end
|