module GObject::Value::Overrides
Public Instance Methods
Source
# File lib/ffi-gobject/value.rb, line 90 def current_fundamental_type GObject.type_fundamental current_gtype end
Source
# File lib/ffi-gobject/value.rb, line 86 def current_gtype struct[:g_type] end
Source
# File lib/ffi-gobject/value.rb, line 94 def current_gtype_name GObject.type_name current_gtype end
Source
# File lib/ffi-gobject/value.rb, line 98 def get_value value = get_value_plain if current_fundamental_type == TYPE_BOXED wrap_boxed value else value end end
Source
# File lib/ffi-gobject/value.rb, line 107 def get_value_plain send get_method end
Source
# File lib/ffi-gobject/value.rb, line 115 def init(type) Lib.g_value_init self, type unless [TYPE_NONE, TYPE_INVALID].include? type self end
Source
# File lib/ffi-gobject/value.rb, line 80 def set_value(val) send set_method, val end
Also aliased as: value=
Source
# File lib/ffi-gobject/value.rb, line 111 def uninitialized? current_gtype == TYPE_INVALID end
Private Instance Methods
Source
# File lib/ffi-gobject/value.rb, line 167 def check_type_compatibility(val) if GObject::Value.type_compatible(GObject.type_from_instance(val), current_gtype) return end raise ArgumentError, "#{val.class} is incompatible with #{current_gtype_name}" end
Source
# File lib/ffi-gobject/value.rb, line 163 def current_gtype_class GirFFI::Builder.build_by_gtype(current_gtype) end
Source
# File lib/ffi-gobject/value.rb, line 150 def get_enum_enhanced current_gtype_class.wrap(get_enum) end
Source
# File lib/ffi-gobject/value.rb, line 159 def get_flags_enhanced current_gtype_class.wrap(get_flags) end
Source
# File lib/ffi-gobject/value.rb, line 188 def get_method method_map_entry.first end
Source
# File lib/ffi-gobject/value.rb, line 127 def init_for_ruby_value(val) return init val.class.gtype if val.class.respond_to? :gtype CLASS_TO_GTYPE_MAP.each do |klass, type| return init type if val.is_a? klass end raise "Can't handle #{val.class}" end
Source
# File lib/ffi-gobject/value.rb, line 196 def method_map_entry METHOD_MAP[current_gtype] || METHOD_MAP[current_fundamental_type] || raise("No method map entry for '#{current_gtype_name}'") end
Source
# File lib/ffi-gobject/value.rb, line 145 def set_enum_enhanced(val) val = current_gtype_class.to_native(val, nil) set_enum val end
Source
# File lib/ffi-gobject/value.rb, line 154 def set_flags_enhanced(val) val = current_gtype_class.to_native(val, nil) set_flags val end
Source
# File lib/ffi-gobject/value.rb, line 140 def set_instance_enhanced(val) check_type_compatibility val if val set_instance val end
Source
# File lib/ffi-gobject/value.rb, line 192 def set_method method_map_entry.last end
Source
# File lib/ffi-gobject/value.rb, line 122 def set_ruby_value(val) init_for_ruby_value val if uninitialized? set_value val end
Source
# File lib/ffi-gobject/value.rb, line 175 def wrap_boxed(boxed) case current_gtype when TYPE_STRV GLib::Strv.wrap boxed when TYPE_HASH_TABLE GLib::HashTable.wrap [:gpointer, :gpointer], boxed when TYPE_ARRAY GLib::Array.wrap nil, boxed else current_gtype_class.wrap(boxed) unless boxed.null? end end