Sha256: bde6fa633f83bec1307b2b6afecf588bdb6fcf48f5d8d027ba5ff27db49bae0d
Contents?: true
Size: 1.91 KB
Versions: 4
Compression:
Stored size: 1.91 KB
Contents
# frozen_string_literal: true require "gir_ffi/class_base" module GirFFI # Base class for all generated classes of type :object. class ObjectBase < ClassBase extend FFI::DataConverter def object_class self.class.object_class end def self.native_type FFI::Type::POINTER end def self.to_ffi_type self end def self.to_native(obj, _context) obj.to_ptr end def self.get_value_from_pointer(pointer, offset = 0) pointer.get_pointer offset end def self.copy_value_to_pointer(value, pointer, offset = 0) pointer.put_pointer offset, value.to_ptr end # Wrap the passed pointer in an instance of its type's corresponding class, # generally assumed to be a descendant of the current type. def self.wrap(ptr) ptr.to_object end def self.copy_from(val) val&.ref end # # Find property info for the named property. # # @param name The property's name # # @return [GObjectIntrospection::IPropertyInfo] The property's info # def self.find_property(name) gir_ffi_builder.find_property name end # # Find signal info for the named signal. # # @param name The signal's name # # @return [GObjectIntrospection::ISignalInfo] The signal's info # def self.find_signal(name) gir_ffi_builder.find_signal name or raise GirFFI::SignalNotFoundError.new(name, self) end def self.object_class @object_class ||= begin ptr = GObject::Lib.g_type_class_ref(gtype) gir_ffi_builder.object_class_struct.wrap ptr end end def self.included_interfaces included_modules.select { |it| it.singleton_class.include? InterfaceBase } end def self.registered_ancestors ancestors.select do |it| it < GirFFI::ObjectBase || it.singleton_class.include?(InterfaceBase) end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
gir_ffi-0.15.3 | lib/gir_ffi/object_base.rb |
gir_ffi-0.15.2 | lib/gir_ffi/object_base.rb |
gir_ffi-0.15.1 | lib/gir_ffi/object_base.rb |
gir_ffi-0.15.0 | lib/gir_ffi/object_base.rb |