class GObjectIntrospection::IBaseInfo
Wraps GIBaseInfo struct, the base type for all info types. Decendant types will be implemented as needed.
Public Class Methods
This is a helper method to construct a method returning an array, out of the methods returning their number and the individual elements.
For example, given the methods n_foos
and
foo
(i
), this method will create an additional
method foos
returning all foos.
Provide the second parameter if the plural is not trivially constructed by
adding s
to the singular.
Examples:
build_array_method :fields build_array_mehtod :properties, :property build_array_method :get_methods
# File lib/ffi-gobject_introspection/i_base_info.rb, line 37 def self.build_array_method(method, single = nil) method = method.to_s single ||= method.to_s[0..-2] count = method.sub(/^(get_)?/, '\1n_') class_eval <<-CODE def #{method} (0..(#{count} - 1)).map do |i| #{single} i end end CODE end
This is a helper method to construct a method for finding an element, out of the methods returning their number and the individual elements.
For example, given the methods n_foos
and
foo
(i
), this method will create an additional
method find_foo
returning the foo with the matching name.
Optionally provide counter and fetcher methods if they cannot be trivially derived from the finder method.
Examples:
build_finder_method :find_field build_finder_method :find_property, :n_properties build_finder_method :find_method, :get_n_methods, :get_method
# File lib/ffi-gobject_introspection/i_base_info.rb, line 66 def self.build_finder_method(method, counter = nil, fetcher = nil) method = method.to_s single = method.sub(/^find_/, '') counter ||= "n_#{single}s" fetcher ||= "#{single}" class_eval <<-CODE def #{method}(name) name = name.to_s #{counter}.times do |i| it = #{fetcher}(i) return it if it.name == name end nil end CODE end
# File lib/ffi-gobject_introspection/i_base_info.rb, line 14 def self.make_finalizer(lib, ptr) proc { lib.g_base_info_unref ptr } end
# File lib/ffi-gobject_introspection/i_base_info.rb, line 5 def initialize(ptr, lib = Lib) raise ArgumentError, 'ptr must not be null' if ptr.null? ObjectSpace.define_finalizer self, self.class.make_finalizer(lib, ptr) @gobj = ptr @lib = lib end
# File lib/ffi-gobject_introspection/i_base_info.rb, line 113 def self.wrap(ptr) new ptr unless ptr.null? end
Public Instance Methods
# File lib/ffi-gobject_introspection/i_base_info.rb, line 117 def ==(other) other.is_a?(IBaseInfo) && Lib.g_base_info_equal(@gobj, other) end
# File lib/ffi-gobject_introspection/i_base_info.rb, line 109 def attribute(name) Lib.g_base_info_get_attribute @gobj, name end
# File lib/ffi-gobject_introspection/i_base_info.rb, line 99 def container ptr = Lib.g_base_info_get_container @gobj Lib.g_base_info_ref ptr IRepository.wrap_ibaseinfo_pointer ptr end
# File lib/ffi-gobject_introspection/i_base_info.rb, line 105 def deprecated? Lib.g_base_info_is_deprecated @gobj end
# File lib/ffi-gobject_introspection/i_base_info.rb, line 87 def info_type Lib.g_base_info_get_type @gobj end
# File lib/ffi-gobject_introspection/i_base_info.rb, line 83 def name Lib.g_base_info_get_name @gobj end
# File lib/ffi-gobject_introspection/i_base_info.rb, line 91 def namespace Lib.g_base_info_get_namespace @gobj end
# File lib/ffi-gobject_introspection/i_base_info.rb, line 95 def safe_namespace namespace.gsub(/^./, &:upcase) end
# File lib/ffi-gobject_introspection/i_base_info.rb, line 18 def to_ptr @gobj end