Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

ethan (3163)

  reversethis-{ed. ... rap.nov.olissat}

Being a 25-year old chap living in the western-most town of Germany. Stuying communication and information science and being a huge fan of XS-related things.

Journal of ethan (3163)

Monday December 09, 2002
06:08 AM

Ingenious XS

[ #9340 ]

Now that the portability issues of the mplib have been passed to its author who promised to look into that, I can take a little break from that.

Instead I have indeed started with the AA-lib port to XS. It's a most satisfying work now that I have finally grokked how typemaps work. With the help of these a C-lib basically transforms very nicely into an object-oriented Perl lib. A method that sets a pixel in the output is not more than a finger-snip:

        pixel (self, x, y, color)
                        aa_context *self;
                        int x;
                        int y;
                        int color;
                        aa_putpixel(self, x, y, color);

Called like $aa->pixel(1, 1, $color) and it's done.

And here's the occasional rant: Why don't the XS-docs describe a very easy thing in an easy manner? Till yesterday I thought the typemap would have to translate a C-structure into the equivalent blessed Perl-hash and vice versa. Naturally, with this misconception in mind it's hard to understand the rest of perlxs.pod.

I finally found it out with the help of Dean Roehrich's CookBookA that he has released on CPAN. Mind you, this one doesn't exactly have nice explanations either. It was one sentence that dawned a light on me:

        Ex1 demonstrates how to write a Perl constructor in C.
        The constructor allocates a C structure and creates an
        opaque Perl object to hold an address to the structure.

'hold an address to the structure': That's the sub-sentence that explained Life, the Universe and Everything.

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
More | Login | Reply
Loading... please wait.
  • Have you read the perlxstut manpage, new in 5.8.0 ? Is it clearer than the older docs ?
    • Err, no. In fact I haven't read that! I made myself acquainted with XS using the perlxstut from 5.6.1. I didn't know there was a new one.

      It seems to have one more example. Incidentally it's one dealing with filehandles which is what I will need very soon. That's certainly an improvement!

      But the Typemap section is still too thin. It still does not mention the special symbols $var, $arg and $type. I'd love to be able to say perldoc perltypemap and get a concise description of what a typemap file is really f
      • I must've been confused at some point. Perlxstut has only some minor improvements in 5.8.0. That tired brain... (BTW. you know that patches are welcome. A perltypemap man page would be interesting. ;-)
        • (BTW. you know that patches are welcome. A perltypemap man page would be interesting. ;-)

          It was only yesterday that I had my first succesful use of a typemap (which was actually copied from Dean Roehrich). A little too thin yet for supplying documentation. ;-)

          But I am not at all lazy when it comes to Perl and I'll be the first one to write such a beast if I feel ready. I expect to gain some familiarity with all that soon. Also, when looking at the typemaps available I see a slightly different subset of m
        • BTW. you know that patches are welcome.

          Richard Clamp is working on an XS tutorial. The current draft is available here []. I believe patches to it are welcome.