Module: GObject
- Defined in:
- lib/ffi-gobject.rb,
lib/ffi-gobject/value.rb,
lib/ffi-gobject/object.rb,
lib/ffi-gobject/closure.rb,
lib/gir_ffi-base/gobject.rb,
lib/ffi-gobject/param_spec.rb,
lib/ffi-gobject/object_class.rb,
lib/ffi-gobject/ruby_closure.rb,
lib/gir_ffi-base/gobject/lib.rb,
lib/ffi-gobject/initially_unowned.rb
Overview
The part of the GObject namespace that is needed by GirFFI.
:reek:TooManyConstants: because it needs to hold the type constants.
Defined Under Namespace
Modules: Lib
Classes: Closure, InitiallyUnowned, Object, ObjectClass, ParamSpec, RubyClosure, Value
Constant Summary
collapse
- TYPE_ARRAY =
Lib.g_array_get_type
- TYPE_BYTE_ARRAY =
Lib.g_byte_array_get_type
- TYPE_HASH_TABLE =
Lib.g_hash_table_get_type
- TYPE_STRV =
Lib.g_strv_get_type
- 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
-
.signal_connect(object, detailed_signal, data = nil, after = false, &block) ⇒ Object
-
.signal_connect_after(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_from_name(name) ⇒ Object
-
.type_fundamental(gtype) ⇒ Object
-
.type_name_from_instance(instance) ⇒ Object
Class Method Details
.object_class_from_instance(instance) ⇒ Object
32
33
34
|
# File 'lib/ffi-gobject.rb', line 32
def self.object_class_from_instance(instance)
object_class_from_instance_pointer instance.to_ptr
end
|
.object_class_from_instance_pointer(inst_ptr) ⇒ Object
36
37
38
39
40
|
# File 'lib/ffi-gobject.rb', line 36
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
|
.signal_connect(object, detailed_signal, data = nil, after = false, &block) ⇒ Object
62
63
64
65
66
67
68
69
70
71
72
|
# File 'lib/ffi-gobject.rb', line 62
def self.signal_connect(object, detailed_signal, data = nil, after = false, &block)
raise ArgumentError, 'Block needed' unless block_given?
signal_name, = detailed_signal.split('::')
sig_info = object.class.find_signal signal_name
closure = sig_info.wrap_in_closure do |*args|
block.call(*args << data)
end
signal_connect_closure object, detailed_signal, closure, after
end
|
.signal_connect_after(object, detailed_signal, data = nil, &block) ⇒ Object
74
75
76
|
# File 'lib/ffi-gobject.rb', line 74
def self.signal_connect_after(object, detailed_signal, data = nil, &block)
signal_connect object, detailed_signal, data, true, &block
end
|
.signal_emit(object, detailed_signal, *args) ⇒ Object
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/ffi-gobject.rb', line 46
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
argument_gvalues = sig_info.arguments_to_gvalues object, args
return_gvalue = sig_info.gvalue_for_return_value
result = signal_emitv argument_gvalues, signal_id, detail_quark, return_gvalue
result || return_gvalue.get_value
end
|
.signal_lookup_from_instance(signal, object) ⇒ Object
42
43
44
|
# File 'lib/ffi-gobject.rb', line 42
def self.signal_lookup_from_instance(signal, object)
signal_lookup signal, type_from_instance(object)
end
|
.type_from_instance(instance) ⇒ Object
24
25
26
|
# File 'lib/ffi-gobject.rb', line 24
def self.type_from_instance(instance)
type_from_instance_pointer instance.to_ptr
end
|
.type_from_instance_pointer(inst_ptr) ⇒ Object
18
19
20
21
22
|
# File 'lib/ffi-gobject.rb', line 18
def self.type_from_instance_pointer(inst_ptr)
return nil if inst_ptr.null?
klsptr = inst_ptr.get_pointer 0
klsptr.get_gtype 0
end
|
.type_from_name(name) ⇒ Object
12
13
14
|
# File 'lib/gir_ffi-base/gobject.rb', line 12
def self.type_from_name(name)
Lib.g_type_from_name name
end
|
.type_fundamental(gtype) ⇒ Object
16
17
18
|
# File 'lib/gir_ffi-base/gobject.rb', line 16
def self.type_fundamental(gtype)
Lib.g_type_fundamental gtype
end
|
.type_name_from_instance(instance) ⇒ Object
28
29
30
|
# File 'lib/ffi-gobject.rb', line 28
def self.type_name_from_instance(instance)
type_name type_from_instance instance
end
|