module GI

Copyright (C) 2015-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

Copyright (C) 2012-2016 Ruby-GNOME2 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

Copyright (C) 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

Copyright (C) 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

Copyright (C) 2012 Ruby-GNOME2 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

Copyright (C) 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

Copyright (C) 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

Copyright (C) 2015 Ruby-GNOME2 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

Constants

BUILD_VERSION
LOG_DOMAIN

Public Class Methods

hook_up_vfunc(p1, p2, p3) click to toggle source
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={}) click to toggle source
# File lib/gobject-introspection.rb, line 40
def load(namespace, options={})
  base_module = Module.new
  loader = Loader.new(base_module)
  loader.version = options[:version]
  loader.load(namespace)
  base_module
end
prepend_typelib_path(path) click to toggle source
# 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