Re: Perl bindings for libaosd: v0.01
- From: Torsten Schoenfeld <kaffeetisch gmx de>
- To: gtk-perl-list gnome org
- Subject: Re: Perl bindings for libaosd: v0.01
- Date: Sat, 15 Mar 2008 16:04:00 +0100
On Sat, 2008-03-15 at 15:51 +0100, JÃrn Reder wrote:
- You expose aosd_destroy. Try to avoid binding memory management
related functions. In this case, you can automate releasing the object
by writing a DESTROY xsub which calls aosd_destroy:
void
DESTROY (Aosd *aosd)
CODE:
aosd_destroy (aosd);
DESTROY is automatically called by perl when a variable goes out of
scope.
Ok, just tried it but it doesn't work, because my Perl object is a
scalar reference to Aosd*, so DESTROY doesn't get a Aosd* here, but a
Perl scalar, which needs to be dereferenced first.
I completely forgot to take a look at Aosd.pm. Nearly everything in
there should be removed. When you specify a PREFIX in Aosd.xs, xsubpp
automatically strips it off of the xsub names. So aosd_get_screen_size
becomes get_screen_size and so on.
So:
MODULE = X11::Aosd PACKAGE = X11::Aosd PREFIX = aosd_
Then you need to alter the constructor so it can be used as
X11::Aosd->new and just ignores the class name:
Aosd *
aosd_new(class)
C_ARGS:
/* void */
Then remove every method in Aosd.pm.
Is there a better way than building the Perl object on a scalar
reference to Aosd*?
In typemap, you specify that T_PTROBJ is to be used for Aosd*. That
means that whenever a Aosd* pointer is encountered, it automatically
gets wrapped as an opaque scalar. So that should be fine.
--
Bye,
-Torsten
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]