Ha, I admit I didn't even check if there were a typemap for SV* -> FILE* !
So that's one way to do it, excellent. Anybody know how to use the
object-oriented handles like IO::File for this?
Thanks,
>
>This works for me:
>
>----8<----
>use Inline C;
>
>open FOO, ">foo" or die "Can't write foo";
>print FOO "This is Perl speaking.\n";
>c_print(FOO, "This is C speaking.\n");
>c_print(\*FOO, "This is C again.\n");
>c_print(\*STDOUT, "Verbosely C.\n");
>close FOO;
>
>__END__
>__C__
>
>void c_print(FILE *fd, char *msg) {
> fprintf(fd, msg);
>}
>---->8----
>
>Later,
>Neil
>
>Inline Reader [20/08/01 14:17 -0700]:
> >
> >
> > I would be grateful to get any clues as to how to get the fd (either
>FILE*
> > or PerlIO* or the lower level structs) out of an IO::File and similar
> > objects. I would like to be able to pass a filehandle as an alternative
>to
> > passing a string into C space. I've made the requisite forays into
>perlapi,
> > perlguts, perlapio, Inline::C, Inline::C-Cookbook, etc.
> >
> > The upshot is that it's trivial to create and open a filehandle in C
>space,
> > but I would like to have the user open it in perl and pass it to the
>inlined
> > C.
> >
> > Cheers!
> >
> >
> >
> >
> > _________________________________________________________________
> > Get your FREE download of MSN Explorer at
>http://explorer.msn.com/intl.asp
_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp
Thread Previous
|
Thread Next