PerlIO::via#
Write a PerlIO layer in Perl: open with :via(MyClass) and I/O dispatches to your class.
This is a PerlIO layer implementation that delegates I/O operations to a
Perl class. When a handle is opened with :via(MyClass), each PerlIO
vtable method (read, write, fill, flush, etc.) calls the corresponding
Perl method on the class object (MyClass->WRITE, MyClass->READ, etc.).
via.xs struct PerlIOVia extends _PerlIO (base) with:
stash — HV* for the class package
obj — SV* the blessed object (or class name)
var — SV* buffer for FILL results
cnt — SSize_t byte count remaining in var
io — IO* for the filehandle to layer below
fh — SV* reference to the GV wrapping io
PUSHED..UTF8 — CV* cached method lookups (one per via method)
The MYMethod(x) macro expands to "METHODNAME", &s->x — passing both the
string name and a pointer to the cached CV* slot.
The BOOT section registers the “via” PerlIO layer via PerlIO_define_layer.
Functions#
Other Functions#
pop_result#
Pop a single SV result off the Perl stack (equivalent of SPAGAIN; POPs). Returns a p5api SV*.