Module: GObjectIntrospection
- Defined in:
- lib/gobject-introspection/version.rb,
lib/gobject-introspection.rb,
lib/gobject-introspection.rb,
lib/gobject-introspection/loader.rb,
lib/gobject-introspection/arg-info.rb,
lib/gobject-introspection/type-tag.rb,
lib/gobject-introspection/type-info.rb,
lib/gobject-introspection/boxed-info.rb,
lib/gobject-introspection/repository.rb,
lib/gobject-introspection/union-info.rb,
lib/gobject-introspection/object-info.rb,
lib/gobject-introspection/struct-info.rb,
lib/gobject-introspection/callable-info.rb,
lib/gobject-introspection/function-info.rb,
lib/gobject-introspection/interface-info.rb,
lib/gobject-introspection/collection-reader.rb,
lib/gobject-introspection/registered-type-info.rb,
ext/gobject-introspection/rb-gobject-introspection.c
Overview
Copyright © 2019 Ruby-GNOME Project Team
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Defined Under Namespace
Modules: CollectionReader, Version Classes: ArgInfo, BoxedInfo, CallableInfo, FunctionInfo, InterfaceInfo, Loader, ObjectInfo, RegisteredTypeInfo, Repository, StructInfo, TypeInfo, TypeTag, UnionInfo
Constant Summary collapse
- LOG_DOMAIN =
"GObjectIntrospection"- BUILD_VERSION =
rb_ary_new3(3, INT2FIX(GI_MAJOR_VERSION), INT2FIX(GI_MINOR_VERSION), INT2FIX(GI_MICRO_VERSION))
Class Method Summary collapse
- .hook_up_vfunc(rb_name, rb_vfunc_info, rb_gtype) ⇒ Object
- .load(namespace, options = {}) ⇒ Object
- .prepend_typelib_path(path) ⇒ Object
Class Method Details
.hook_up_vfunc(rb_name, rb_vfunc_info, rb_gtype) ⇒ Object
210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 |
# File 'ext/gobject-introspection/rb-gobject-introspection.c', line 210
static VALUE
rb_gi_hook_up_vfunc(G_GNUC_UNUSED VALUE self,
VALUE rb_name,
VALUE rb_vfunc_info,
VALUE rb_gtype)
{
GIVFuncInfo *vfunc_info = NULL;
GType gtype = 0;
gpointer implementor_vtable = NULL;
GIFieldInfo *field_info = NULL;
vfunc_info = RVAL2GI_BASE_INFO(rb_vfunc_info);
gtype = NUM2LONG(rb_gtype);
g_assert(G_TYPE_IS_CLASSED(gtype));
find_vfunc_info(vfunc_info, gtype, &implementor_vtable, &field_info);
if (field_info != NULL) {
GITypeInfo *type_info = NULL;
GIBaseInfo *interface_info = NULL;
RBGIVFuncCallbackData *data = NULL;
gint offset = 0;
gpointer *method_ptr = NULL;
type_info = g_field_info_get_type(field_info);
interface_info = g_type_info_get_interface(type_info);
g_assert(g_base_info_get_type(interface_info) == GI_INFO_TYPE_CALLBACK);
data = ALLOC(RBGIVFuncCallbackData);
data->name = rb_name;
data->callable_info = g_base_info_ref(interface_info);
data->closure = g_callable_info_prepare_closure(
interface_info, &(data->cif), ffi_callback, data);
if (data->closure) {
offset = g_field_info_get_offset(field_info);
method_ptr = G_STRUCT_MEMBER_P(implementor_vtable, offset);
*method_ptr = data->closure;
}
g_base_info_unref (interface_info);
g_base_info_unref (type_info);
g_base_info_unref (field_info);
}
return Qnil;
}
|
.load(namespace, options = {}) ⇒ Object
40 41 42 43 44 45 46 |
# File 'lib/gobject-introspection.rb', line 40 def load(namespace, ={}) base_module = Module.new loader = Loader.new(base_module) loader.version = [:version] loader.load(namespace) base_module end |
.prepend_typelib_path(path) ⇒ Object
21 22 23 24 25 26 27 28 29 30 |
# File 'lib/gobject-introspection.rb', line 21 def prepend_typelib_path(path) path = Pathname(path) unless path.is_a?(Pathname) return unless path.exist? dir = path.to_s dir = dir.gsub("/", File::ALT_SEPARATOR) if File::ALT_SEPARATOR return if Repository.search_path.include?(dir) Repository.prepend_search_path(dir) end |