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. SMELL: This doesn’t really belong here, since it is used by IBaseInfo and descendants as well.

{
  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:               IUnresolvedInfo
}

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeIRepository

Returns a new instance of IRepository.



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

def initialize
  @gobj = Lib.g_irepository_get_default
end

Class Method Details

.defaultObject



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

def self.default
  instance
end

.prepend_search_path(path) ⇒ Object



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

def self.prepend_search_path path
  Lib.g_irepository_prepend_search_path path
end

.type_tag_to_string(type) ⇒ Object



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

def self.type_tag_to_string type
  Lib.g_type_tag_to_string type
end

.wrap_ibaseinfo_pointer(ptr) ⇒ Object



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

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



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

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

Raises:

  • (ArgumentError)


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

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

#find_by_name(namespace, name) ⇒ Object



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

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

#info(namespace, index) ⇒ Object



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

def info namespace, index
  wrap_info Lib.g_irepository_get_info(@gobj, namespace, index)
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



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

def n_infos namespace
  Lib.g_irepository_get_n_infos @gobj, namespace
end

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



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

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



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

def shared_library namespace
  Lib.g_irepository_get_shared_library @gobj, namespace
end