Another question about wrapper design, in function gperl_new_object() where an 
new wrapper is newly created:
......obj = (SV *)g_object_get_qdata (object, wrapper_quark);
if (!obj) {    ......    // created a hash    obj = (SV *)newHV ();    
_gperl_attach_mg (obj, object);    g_object_ref (object);
    // created a SV wrapper for the hash    sv = newRV_noinc (obj);
    sv_bless (sv, stash);    ......}......
Why don't bless the HV directly, but instead creating another SV wrapping the 
HV, and bless that SV instead?Why use noinc to create the wrapper? Shouldn't 
the SV wrapper holding a reference for HV?
Thanks!
> Date: Tue, 18 Oct 2011 09:35:43 +0200
> From: kaffeeti...@gmx.de
> To: gtk-perl-list@gnome.org
> Subject: Re: generic refcounted object perl binding
> 
> On 18.10.2011 04:49, YangXi wrote:
> > Why the SV wrapper for a GObject keeps alive until both are freed?
> 
> This is so that we always hand out an SV referencing the same HV for the 
> same GObject.  Glib::Object allows you to store your own data directly 
> in the referenced hash, and this mechanism makes sure that you will find 
> this data again when you look at the same GObject later, with no need to 
> store the SV in between.
> _______________________________________________
> gtk-perl-list mailing list
> gtk-perl-list@gnome.org
> http://mail.gnome.org/mailman/listinfo/gtk-perl-list
                                          
_______________________________________________
gtk-perl-list mailing list
gtk-perl-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-perl-list

Reply via email to