class GObjectIntrospection::IRepository

The Gobject Introspection Repository. This class is the point of access to the introspection typelibs. This class wraps the GIRepository struct.

Public Class Methods

default() click to toggle source
# File lib/ffi-gobject_introspection/i_repository.rb, line 24
def self.default
  instance
end
new() click to toggle source
# File lib/ffi-gobject_introspection/i_repository.rb, line 14
def initialize
  @pointer = Lib.g_irepository_get_default
end
prepend_search_path(path) click to toggle source
# File lib/ffi-gobject_introspection/i_repository.rb, line 28
def self.prepend_search_path(path)
  Lib.g_irepository_prepend_search_path path
end
type_tag_to_string(type) click to toggle source
# File lib/ffi-gobject_introspection/i_repository.rb, line 32
def self.type_tag_to_string(type)
  Lib.g_type_tag_to_string type
end
wrap_ibaseinfo_pointer(ptr) click to toggle source
# File lib/ffi-gobject_introspection/i_repository.rb, line 87
def self.wrap_ibaseinfo_pointer(ptr)
  return nil if ptr.null?

  type = Lib.g_base_info_get_type ptr
  klass = TYPEMAP[type]
  klass.wrap ptr
end

Public Instance Methods

dependencies(namespace) click to toggle source
# File lib/ffi-gobject_introspection/i_repository.rb, line 73
def dependencies(namespace)
  strv_p = Lib.g_irepository_get_dependencies(self, namespace)
  strv = Strv.new strv_p
  strv.to_a
end
find_by_gtype(gtype) click to toggle source
# File lib/ffi-gobject_introspection/i_repository.rb, line 66
def find_by_gtype(gtype)
  raise ArgumentError, "Type #{gtype} is not a valid type" if gtype == 0

  @gtype_cache ||= {}
  @gtype_cache[gtype] ||= wrap_info Lib.g_irepository_find_by_gtype(self, gtype)
end
find_by_name(namespace, name) click to toggle source
# File lib/ffi-gobject_introspection/i_repository.rb, line 60
def find_by_name(namespace, name)
  @name_cache ||= {}
  @name_cache[[namespace, name]] ||=
    wrap_info Lib.g_irepository_find_by_name(self, namespace, name)
end
info(namespace, index) click to toggle source
# File lib/ffi-gobject_introspection/i_repository.rb, line 49
def info(namespace, index)
  wrap_info Lib.g_irepository_get_info(self, namespace, index)
end
infos(namespace) click to toggle source

Utility method

# File lib/ffi-gobject_introspection/i_repository.rb, line 54
def infos(namespace)
  (0..(n_infos(namespace) - 1)).map do |idx|
    info namespace, idx
  end
end
n_infos(namespace) click to toggle source
# File lib/ffi-gobject_introspection/i_repository.rb, line 45
def n_infos(namespace)
  Lib.g_irepository_get_n_infos self, namespace
end
require(namespace, version = nil, flags = 0) click to toggle source
# File lib/ffi-gobject_introspection/i_repository.rb, line 36
def require(namespace, version = nil, flags = 0)
  errpp = FFI::MemoryPointer.new(:pointer).write_pointer nil

  Lib.g_irepository_require self, namespace, version, flags, errpp

  errp = errpp.read_pointer
  raise GError.new(errp).message unless errp.null?
end
shared_library(namespace) click to toggle source
# File lib/ffi-gobject_introspection/i_repository.rb, line 79
def shared_library(namespace)
  Lib.g_irepository_get_shared_library self, namespace
end
to_ptr() click to toggle source
# File lib/ffi-gobject_introspection/i_repository.rb, line 18
def to_ptr
  @pointer
end
version(namespace) click to toggle source
# File lib/ffi-gobject_introspection/i_repository.rb, line 83
def version(namespace)
  Lib.g_irepository_get_version self, namespace
end

Private Instance Methods

wrap_info(ptr) click to toggle source
# File lib/ffi-gobject_introspection/i_repository.rb, line 97
def wrap_info(ptr)
  self.class.wrap_ibaseinfo_pointer ptr
end