Sha256: 2ac291408370c90143d7f9cb47bb47eee9953e35aabb43b1d89ef5f02d8172d0

Contents?: true

Size: 1.46 KB

Versions: 3

Compression:

Stored size: 1.46 KB

Contents

module GObject
  load_class :Object

  # Overrides for GObject, GObject's generic base class.
  class Object
    _setup_instance_method "get_property"
    _setup_instance_method "set_property"

    def get_property_with_override property_name
      prop = self.class._find_property property_name
      type = prop.property_type
      v = Helper.gvalue_for_type_info type
      get_property_without_override property_name, v

      val = v.ruby_value
      case type.tag
      when :ghash
        GLib::HashTable.wrap type.param_type(0).tag, type.param_type(1).tag,
          val.to_ptr
      when :glist
        GLib::List.wrap type.param_type(0).tag, val
      else
        val
      end
    end

    def set_property_with_override property_name, value
      prop = self.class._find_property property_name
      type = prop.property_type
      v = Helper.gvalue_for_type_info type

      case type.tag
      when :glist
        lst = GLib::List.from_array type.param_type(0).tag, value
        v.set_value lst.to_ptr
      when :ghash
        hsh = GLib::HashTable.from_hash type.param_type(0).tag,
          type.param_type(1).tag, value
        v.set_value hsh.to_ptr
      else
        v.set_value value
      end

      set_property_without_override property_name, v
    end

    alias get_property_without_override get_property
    alias get_property get_property_with_override

    alias set_property_without_override set_property
    alias set_property set_property_with_override
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gir_ffi-0.2.2 lib/ffi-gobject/object.rb
gir_ffi-0.2.1 lib/ffi-gobject/object.rb
gir_ffi-0.2.0 lib/ffi-gobject/object.rb