[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: How is the type converted



On Wed, 2007-08-22 at 12:15 +0800, Ye Wenbin wrote:
> Hi,
> I'am reading the XS source code of the Gtk2. But I'm confuse about the
> type convertion between Perl object and GObject.

you should probably read:

  http://gtk2-perl.sourceforge.net/doc/pod/Glib/devel.html
  http://gtk2-perl.sourceforge.net/doc/pod/Glib/xsapi.html
  http://gtk2-perl.sourceforge.net/doc/binding_howto.pod.html

and the new-gtk2-perl.html document in the project's CVS:

  http://gtk2-perl.cvs.sourceforge.net/gtk2-perl/gtk2-perl-xs/new-gtk2-perl.html

> I found the typemap file in Gtk2/build/gtk2perl.typemap, all
> widget point is using T_GPERL_GENERIC_WRAPPER, which declared in
> Glib/typemap. According to the INPUT and OUTPUT section,
> GtkWidget will use SvGtkWidget and newSVGtkWidget to convert. The
> function is declared in Gtk2/build/gtk2perl-autogen.h which
> called gperl_get_object_check and gtk2perl_new_gtkobject. But I
> can find where are gperl_get_object_check and
> gtk2perl_new_gtkobject defined. I checked all .c files in Gtk2
> and Glib, but seem there are no files define them.

they are defined in the Glib module, as they are the basic blocks for
building bindings for GObject-based libraries. look at Glib/GObject.xs
and Glib/GType.xs.

> By the way, I wonder why the object create by Gtk2::Window->new contain
> an empty hash, but the function in c can find the pointer of the window.

it's using magic - very literally:

> Is it because of the PERL_MAGIC_ext?

yep, that's the magic pointer.

the documentation I linked holds more information: you should probably
read it, and use the mailing list's archives to integrate it.

ciao,
 Emmanuele

-- 
Emmanuele Bassi,
W: http://www.emmanuelebassi.net
B: http://log.emmanuelebassi.net




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]