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.

Constant Summary collapse

TYPEMAP =

Map info type to class. Default is IBaseInfo.

{
  :invalid => IBaseInfo,
  :function => IFunctionInfo,
  :callback => ICallbackInfo,
  :struct => IStructInfo,
  # TODO: There's no GIBoxedInfo, so what does :boxed mean?
  :boxed => IBaseInfo,
  :enum => IEnumInfo,
  :flags => IFlagsInfo,
  :object => IObjectInfo,
  :interface => IInterfaceInfo,
  :constant => IConstantInfo,
  :invalid_was_error_domain => IBaseInfo,
  :union => IUnionInfo,
  :value => IValueInfo,
  :signal => ISignalInfo,
  :vfunc => IVFuncInfo,
  :property => IPropertyInfo,
  :field => IFieldInfo,
  :arg => IArgInfo,
  :type => ITypeInfo,
  :unresolved => IBaseInfo
}
POINTER_SIZE =
FFI.type_size(:pointer)

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeIRepository

Returns a new instance of IRepository.



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

def initialize
  @gobj = Lib::g_irepository_get_default
end

Class Method Details

.defaultObject



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

def self.default
  self.instance
end

.prepend_search_path(path) ⇒ Object



69
70
71
# File 'lib/ffi-gobject_introspection/i_repository.rb', line 69

def self.prepend_search_path path
  Lib.g_irepository_prepend_search_path path
end

.type_tag_to_string(type) ⇒ Object



73
74
75
# File 'lib/ffi-gobject_introspection/i_repository.rb', line 73

def self.type_tag_to_string type
  Lib.g_type_tag_to_string type
end

.wrap_ibaseinfo_pointer(ptr) ⇒ Object



122
123
124
125
126
127
128
129
# File 'lib/ffi-gobject_introspection/i_repository.rb', line 122

def self.wrap_ibaseinfo_pointer ptr
  return nil if ptr.null?

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

  return klass.wrap(ptr)
end

Instance Method Details

#dependencies(namespace) ⇒ Object



112
113
114
115
116
# File 'lib/ffi-gobject_introspection/i_repository.rb', line 112

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

#find_by_gtype(gtype) ⇒ Object



107
108
109
110
# File 'lib/ffi-gobject_introspection/i_repository.rb', line 107

def find_by_gtype gtype
  ptr = Lib.g_irepository_find_by_gtype @gobj, gtype
  return wrap ptr
end

#find_by_name(namespace, name) ⇒ Object



102
103
104
105
# File 'lib/ffi-gobject_introspection/i_repository.rb', line 102

def find_by_name namespace, name
  ptr = Lib.g_irepository_find_by_name @gobj, namespace, name
  return wrap ptr
end

#info(namespace, index) ⇒ Object



90
91
92
93
# File 'lib/ffi-gobject_introspection/i_repository.rb', line 90

def info namespace, index
  ptr = Lib.g_irepository_get_info @gobj, namespace, index
  return wrap ptr
end

#infos(namespace) ⇒ Object

Utility method



96
97
98
99
100
# File 'lib/ffi-gobject_introspection/i_repository.rb', line 96

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

#n_infos(namespace) ⇒ Object



86
87
88
# File 'lib/ffi-gobject_introspection/i_repository.rb', line 86

def n_infos namespace
  Lib.g_irepository_get_n_infos @gobj, namespace
end

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



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

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



118
119
120
# File 'lib/ffi-gobject_introspection/i_repository.rb', line 118

def shared_library namespace
  Lib.g_irepository_get_shared_library @gobj, namespace
end