goran kirra net writes:
On Thu, Oct 17, 2002 at 12:44:25PM +0200, Guillaume Cottenceau wrote:#define pGtkWidget(o) ((GtkWidget*) SvIV(SvRV(o))) #define pGtkProgressBar(o) ((GtkProgressBar*) SvIV(SvRV(o)))sure, but you have to figure out where to put it so it can be included at compile time without to much trouble. Perhaps a include directory in the root which is added to the INC config entry.
Here it is; the INC mechanism is pretty dirty but I don't really
know well how to do better (having a $toplevel variable would be
nice for example?).
There is the following patch for one initial C file:
--- Gtk2/GObject.pm 17 Oct 2002 09:04:50 -0000 1.2
+++ Gtk2/GObject.pm 17 Oct 2002 13:21:43 -0000
@@ -14,7 +14,7 @@
PREFIX => 'gperl_object_',
LIBS => `pkg-config gtk+-2.0 --libs`,
OPTIMIZE => '-g',
- INC => `pkg-config gtk+-2.0 --cflags`;
+ INC => '-I../../../../Gtk2/include '.`pkg-config gtk+-2.0 --cflags`;
sub set_data
--- Gtk2/src/GObject.c 15 Oct 2002 21:00:49 -0000 1.1.1.1
+++ Gtk2/src/GObject.c 17 Oct 2002 13:21:43 -0000
@@ -5,17 +5,17 @@
*/
#include <glib-object.h>
-
+#include "gtk2-perl-helpers.h"
void gperl_object_set_data1(SV* object, char* key, SV* data)
{
SvREFCNT_inc(data);
- g_object_set_data((GObject*) SvIV(SvRV(object)), key, data);
+ g_object_set_data(pGObject (object), key, data);
}
SV* gperl_object_get_data1(SV* object, char* key)
{
- SV* data = (SV*) g_object_get_data((GObject*) SvIV(SvRV(object)), key);
+ SV* data = (SV*) g_object_get_data(pGObject(object), key);
SvREFCNT_inc(data);
return data;
}
And, the important part, the following new files:
Attachment:
autogen.pl
Description: ./autogen.pl
Attachment:
gtk2-perl-helpers.h
Description: Gtk2/include/gtk2-perl-helpers.h
Notes: - since these are new files, I've put an initial copyright with my name, as it's usually done :) but it may change in the future anyway - the autogen.pl might be better in a "tools" subdir, this directory supposed to grow later? - the autogen.pl is itself supposed to eventually grow if we need more autogeneration of macros or whatever, hence the use of @autogen added over in the file - I've made things so that C files would include gtk2-perl-helpers.h rather than the autogenerated header, since it might grow with additions by hand, later on If you're happy with that, I will try to convert the whole code to the macros, and submit the patch to you. -- Guillaume Cottenceau - http://people.mandrakesoft.com/~gc/