Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: Re: XS routine returns an extra depth of array refs

by mugwumpjism (Hermit)
on Nov 05, 2001 at 23:34 UTC ( #123392=note: print w/ replies, xml ) Need Help??


in reply to Re: XS routine returns an extra depth of array refs
in thread XS routine returns an extra depth of array refs

If you really want to output arrays from C, you need to push your items on the stack.

Right, that's the ticket. This seems to work the way I want:

#include <sys/types.h> #include <dirent.h> #include <stdio.h> void readdir_inode(dirname) char* dirname INIT: struct dirent *ent; DIR* dir; SV* record[2]; AV *entry, *ret_val; PPCODE: dir = opendir(dirname); if (dir) { while ((ent=readdir(dir))) { printf("%ld %x\n", ent->d_ino, ent->d_name); record[0] = newSVpv(ent->d_name, 0); record[1] = newSViv((IV)ent->d_ino); PUSHs(newRV_noinc(av_make(2, record))); } closedir(dir); }

At least, I hope that last "newRV_noinc" shouldn't be a "newRV_inc"!


Comment on Re: Re: XS routine returns an extra depth of array refs
Select or Download Code
Re:{3} XS routine returns an extra depth of array refs
by jeroenes (Priest) on Nov 05, 2001 at 23:48 UTC
    It should be newRV_inc. :-)

    Only with inline the refcounter of the SV gets auto-incremented. With XS you have to that yourself.

    Update: For clarity, only the refcounter of the SV that gets returned! Other SV*'s you have to inc manually!

      The whole reason I'm not using Inline is because I want to be able to compile this as a module and not have it try to compile stuff at run time!
        Modules using Inline are compiled only once and this can be done during installation or even before distribution (for win32 for ex.).

        You have to modify your Makefile.PL for that, it's in the docs.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://123392]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (6)
As of 2014-10-24 08:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (131 votes), past polls