Class: GObjectIntrospection::IRepository

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/ffi-gobject_introspection/i_repository.rb

Overview

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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeIRepository

Returns a new instance of IRepository.



14
15
16
# File 'lib/ffi-gobject_introspection/i_repository.rb', line 14

def initialize
  @gobj = Lib.g_irepository_get_default
end

Class Method Details

.defaultObject



20
21
22
# File 'lib/ffi-gobject_introspection/i_repository.rb', line 20

def self.default
  instance
end

.prepend_search_path(path) ⇒ Object



24
25
26
# File 'lib/ffi-gobject_introspection/i_repository.rb', line 24

def self.prepend_search_path(path)
  Lib.g_irepository_prepend_search_path path
end

.type_tag_to_string(type) ⇒ Object



28
29
30
# File 'lib/ffi-gobject_introspection/i_repository.rb', line 28

def self.type_tag_to_string(type)
  Lib.g_type_tag_to_string type
end

.wrap_ibaseinfo_pointer(ptr) ⇒ Object



79
80
81
82
83
84
# File 'lib/ffi-gobject_introspection/i_repository.rb', line 79

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

Instance Method Details

#dependencies(namespace) ⇒ Object



65
66
67
68
69
# File 'lib/ffi-gobject_introspection/i_repository.rb', line 65

def dependencies(namespace)
  strv_p = Lib.g_irepository_get_dependencies(@gobj, namespace)
  strv = Strv.new strv_p
  strv.to_a
end

#find_by_gtype(gtype) ⇒ Object

Raises:

  • (ArgumentError)


60
61
62
63
# File 'lib/ffi-gobject_introspection/i_repository.rb', line 60

def find_by_gtype(gtype)
  raise ArgumentError, "Type #{gtype} is not a valid type" if gtype.zero?
  wrap_info Lib.g_irepository_find_by_gtype(@gobj, gtype)
end

#find_by_name(namespace, name) ⇒ Object



56
57
58
# File 'lib/ffi-gobject_introspection/i_repository.rb', line 56

def find_by_name(namespace, name)
  wrap_info Lib.g_irepository_find_by_name(@gobj, namespace, name)
end

#info(namespace, index) ⇒ Object



45
46
47
# File 'lib/ffi-gobject_introspection/i_repository.rb', line 45

def info(namespace, index)
  wrap_info Lib.g_irepository_get_info(@gobj, namespace, index)
end

#infos(namespace) ⇒ Object

Utility method



50
51
52
53
54
# File 'lib/ffi-gobject_introspection/i_repository.rb', line 50

def infos(namespace)
  (0..(n_infos(namespace) - 1)).map do |idx|
    info namespace, idx
  end
end

#n_infos(namespace) ⇒ Object



41
42
43
# File 'lib/ffi-gobject_introspection/i_repository.rb', line 41

def n_infos(namespace)
  Lib.g_irepository_get_n_infos @gobj, namespace
end

#require(namespace, version = nil, flags = 0) ⇒ Object



32
33
34
35
36
37
38
39
# File 'lib/ffi-gobject_introspection/i_repository.rb', line 32

def require(namespace, version = nil, flags = 0)
  errpp = FFI::MemoryPointer.new(:pointer).write_pointer nil

  Lib.g_irepository_require @gobj, namespace, version, flags, errpp

  errp = errpp.read_pointer
  raise GError.new(errp).message unless errp.null?
end

#shared_library(namespace) ⇒ Object



71
72
73
# File 'lib/ffi-gobject_introspection/i_repository.rb', line 71

def shared_library(namespace)
  Lib.g_irepository_get_shared_library @gobj, namespace
end

#version(namespace) ⇒ Object



75
76
77
# File 'lib/ffi-gobject_introspection/i_repository.rb', line 75

def version(namespace)
  Lib.g_irepository_get_version @gobj, namespace
end