class GirFFI::ObjectBase

Base class for all generated classes of type :object.

Public Class Methods

class_struct() click to toggle source
# File lib/gir_ffi/object_base.rb, line 67
def self.class_struct
  @class_struct ||=
    begin
      ptr = GObject::Lib.g_type_class_ref(gtype)
      gir_ffi_builder.class_struct_class.wrap ptr
    end
end
copy_from(val) click to toggle source
# File lib/gir_ffi/object_base.rb, line 40
def self.copy_from(val)
  val&.ref
end
copy_value_to_pointer(value, pointer, offset = 0) click to toggle source
# File lib/gir_ffi/object_base.rb, line 30
def self.copy_value_to_pointer(value, pointer, offset = 0)
  pointer.put_pointer offset, value.to_ptr
end
find_property(name) click to toggle source

Find property info for the named property.

@param name The property’s name

@return [GObjectIntrospection::IPropertyInfo] The property’s info

# File lib/gir_ffi/object_base.rb, line 51
def self.find_property(name)
  gir_ffi_builder.find_property name
end
find_signal(name) click to toggle source

Find signal info for the named signal.

@param name The signal’s name

@return [GObjectIntrospection::ISignalInfo] The signal’s info

# File lib/gir_ffi/object_base.rb, line 62
def self.find_signal(name)
  gir_ffi_builder.find_signal name or
    raise GirFFI::SignalNotFoundError.new(name, self)
end
get_value_from_pointer(pointer, offset = 0) click to toggle source
# File lib/gir_ffi/object_base.rb, line 26
def self.get_value_from_pointer(pointer, offset = 0)
  pointer.get_pointer offset
end
included_interfaces() click to toggle source
# File lib/gir_ffi/object_base.rb, line 75
def self.included_interfaces
  included_modules.select { |it| it.singleton_class.include? InterfaceBase }
end
install_property(param_spec) click to toggle source
# File lib/gir_ffi/object_base.rb, line 92
def self.install_property(param_spec)
  if const_defined? :GIR_FFI_BUILDER, false
    raise "Installing a property in a class that is already set up is not supported"
  end

  prepare_user_defined_class

  gir_info.install_property(param_spec)
end
install_vfunc_implementation(name, implementation = nil) click to toggle source
# File lib/gir_ffi/object_base.rb, line 102
def self.install_vfunc_implementation(name, implementation = nil)
  if const_defined? :GIR_FFI_BUILDER, false
    raise "Installing a property in a class that is already set up is not supported"
  end

  prepare_user_defined_class

  gir_info.install_vfunc_implementation(name, implementation)
end
native_type() click to toggle source
# File lib/gir_ffi/object_base.rb, line 14
def self.native_type
  FFI::Type::POINTER
end
prepare_user_defined_class() click to toggle source
# File lib/gir_ffi/object_base.rb, line 85
def self.prepare_user_defined_class
  return if const_defined? :GIR_INFO, false

  info = UserDefinedObjectInfo.new(self)
  const_set :GIR_INFO, info
end
registered_ancestors() click to toggle source
# File lib/gir_ffi/object_base.rb, line 79
def self.registered_ancestors
  ancestors.select do |it|
    it < GirFFI::ObjectBase || it.singleton_class.include?(InterfaceBase)
  end
end
to_ffi_type() click to toggle source
# File lib/gir_ffi/object_base.rb, line 18
def self.to_ffi_type
  self
end
to_native(obj, _context) click to toggle source
# File lib/gir_ffi/object_base.rb, line 22
def self.to_native(obj, _context)
  obj.to_ptr
end
wrap(ptr) click to toggle source

Wrap the passed pointer in an instance of its type’s corresponding class, generally assumed to be a descendant of the current type.

# File lib/gir_ffi/object_base.rb, line 36
def self.wrap(ptr)
  ptr.to_object
end

Public Instance Methods

class_struct() click to toggle source
# File lib/gir_ffi/object_base.rb, line 10
def class_struct
  self.class.class_struct
end