ile eski bir kütüphane çalışması yapmak Daha ziyade bir XS başlangıççıyım ve 15 + yaşındaki temel C kütüphanesini kullanan mevcut bir XS modülünü ağır bir şekilde değiştirmeyi düşünüyorum (aslında modül temelde sadece bu kütüphane). Kütüphane FILE
bekliyor XS tutkal için $fh
geçmesi ardındanPerl XS ve Perlio
open($fh, '<', \$string);
ve: Sorun gibi PerlIO dize hile kullanabilmek için istiyorum olmasıdır. Sorun XS olmasıdır:
int
_parse (entry_ref, filename, file, preserve=FALSE)
SV * entry_ref;
char * filename;
FILE * file;
boolean preserve;
ve bunu olması gerektiğini varsayalım: bundan daha fazla olması gerekir gibi bu tabii çalışmıyor
PerlIO * file;
. Yine
AST * bt_parse_entry (FILE * infile,
char * filename,
btshort options,
boolean * status)
{
AST * entry_ast = NULL;
static int * err_counts = NULL;
static FILE * prev_file = NULL;
ile FILE
türleri: Ben kütüphanede _parse
koduna baktığımızda, bu kadar biter. Şimdi başlamak zorunda olduğum temel soru şu: kütüphaneyi değiştirmeden bile bu mümkün; Yani, sadece XS değiştirerek dizeleri PerlIO davranışından sözde-filehandle alabilir miyim?