module GObject::Value::Overrides

Overrides for existing Value methods

Public Instance Methods

current_fundamental_type() click to toggle source
# File lib/ffi-gobject/value.rb, line 90
def current_fundamental_type
  GObject.type_fundamental current_gtype
end
current_gtype() click to toggle source
# File lib/ffi-gobject/value.rb, line 86
def current_gtype
  struct[:g_type]
end
current_gtype_name() click to toggle source
# File lib/ffi-gobject/value.rb, line 94
def current_gtype_name
  GObject.type_name current_gtype
end
get_value() click to toggle 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
get_value_plain() click to toggle source
# File lib/ffi-gobject/value.rb, line 107
def get_value_plain
  send get_method
end
init(type) click to toggle 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
set_value(val) click to toggle source
# File lib/ffi-gobject/value.rb, line 80
def set_value(val)
  send set_method, val
end
Also aliased as: value=
uninitialized?() click to toggle source
# File lib/ffi-gobject/value.rb, line 111
def uninitialized?
  current_gtype == TYPE_INVALID
end
value=(val)
Alias for: set_value

Private Instance Methods

check_type_compatibility(val) click to toggle 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
current_gtype_class() click to toggle source
# File lib/ffi-gobject/value.rb, line 163
def current_gtype_class
  GirFFI::Builder.build_by_gtype(current_gtype)
end
get_enum_enhanced() click to toggle source
# File lib/ffi-gobject/value.rb, line 150
def get_enum_enhanced
  current_gtype_class.wrap(get_enum)
end
get_flags_enhanced() click to toggle source
# File lib/ffi-gobject/value.rb, line 159
def get_flags_enhanced
  current_gtype_class.wrap(get_flags)
end
get_method() click to toggle source
# File lib/ffi-gobject/value.rb, line 188
def get_method
  method_map_entry.first
end
get_none() click to toggle source
# File lib/ffi-gobject/value.rb, line 138
def get_none; end
init_for_ruby_value(val) click to toggle 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
method_map_entry() click to toggle 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
set_enum_enhanced(val) click to toggle 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
set_flags_enhanced(val) click to toggle 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
set_instance_enhanced(val) click to toggle source
# File lib/ffi-gobject/value.rb, line 140
def set_instance_enhanced(val)
  check_type_compatibility val if val
  set_instance val
end
set_method() click to toggle source
# File lib/ffi-gobject/value.rb, line 192
def set_method
  method_map_entry.last
end
set_none(_val) click to toggle source
# File lib/ffi-gobject/value.rb, line 136
def set_none(_val); end
set_ruby_value(val) click to toggle 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
wrap_boxed(boxed) click to toggle 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