Re: [GObjectIntrospection] Cleaning up GIRepository
- From: Giovanni Campagna <scampa giovanni gmail com>
- To: Colin Walters <walters verbum org>
- Cc: gtk-devel-list gnome org
- Subject: Re: [GObjectIntrospection] Cleaning up GIRepository
- Date: Tue, 31 Aug 2010 11:50:20 -0000
Il giorno lun, 23/08/2010 alle 11.54 -0400, Colin Walters ha scritto:
> On Thu, Aug 19, 2010 at 7:59 PM, Giovanni Campagna
> <scampa giovanni gmail com> wrote:
> >
> > I started looking for GObjectIntrospection API recently and I've seen
> > a lot of overlap with the original GObject/GType system.
>
> Yes. The answer to most of these questions is that if we could start
> over, GObject would require source scanning, and we'd have a typelib
> by default, and not run-time type registration. But we have to live
> with the legacy system.
>
> As to the point about extending GType - that works for things that
> already exist in GType. But the biggest thing by far is
> functions/methods. There are smaller things like fields too.
Well, maybe it is time for a GObject 3.0 with built-in introspection and
without the conficling GType features. Then we would have run-time
registered GType for type detection, memory management of classes,
interfaces and instances (as well as automatic value copying and
deleting), that is everything which requires a function pointer, and
GIRepository for meta information about the classes and objects. The
distinction would make sure that libraries don't require -module and
programs don't need -export-dynamic
>
> > 6) g_object_info_get_unref_function & co.
> > I see this is to support dynamic GstMiniObject bindings, this is the
> > part I understand the least, as it definitely belongs in the type
> > system implementation, not type reflection / introspection system.
>
> A new fundamental type would need to be added I guess. GCustomObject?
> Dunno. It's sort of a hack, really we want GObject to be fast
> enough, and work has gone into that.
Why a new fundamental type? You just need to access the *_ref/*_unref
function pointers, which are exposed in the GTypeValueTable, and if you
don't want to use them explicitly, ref the object by copying a GValue.
[...]
> > Last comment: why none of this API uses GObject and is not even a
> > registered boxed?
>
> The repository is a GObject. But I've been trying to move the API
> towards stack allocation for speed. Remember all this stuff happens
> every time a function is invoked, so malloc()ing or even gslice there
> is a notable performance hit (yes, I measured it).
But wouldn't this make it more difficult for introspection based
bindings (like Java) to implement other bindings with introspection
(Rhyno and Jython come to my mind)?
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]