Autoviviertes Dateihandle als Argumente für Perl XS-Routine unterstützen

8

Frage

Wie kann ich autovivifizierte Dateihandle-Argumente in einer XS-Funktion unterstützen?

Ich bin XS-Wrapping einer C-Funktion, die einen Dateideskriptor zurückgibt, und ich möchte diesen Dateideskriptor als ein Perl-Dateihandle Argument in der Art von open () . Z. B.

%Vor%

Was ich bisher gemacht habe

Im Moment verwende ich einen Perl-Wrapper über der XS-Funktion:

%Vor%

Das funktioniert Just Fine (tm), aber ich möchte auch die Implementierung komplett in XS verschieben.

Bis jetzt habe ich sv_2io für einen Argumenttyp versucht, der als SV * gemappt wurde, aber das eine Ausnahme für undefinierte Skalare auslöst. Ich habe nicht versucht, das erste Argument einem Objekt FILE * oder PerlIO * zuzuordnen, da ich nicht weiß, wie ich diese Objekte "öffnen" würde (wenn Sie so wollen).

    
pilcrow 21.12.2012, 20:20
quelle

1 Antwort

2

Ich würde den myfunc() Wrapper in Perl behalten, es funktioniert und sollte kein Flaschenhals sein.

Die erneute Implementierung von open() ist schwierig und erfordert die Verwendung der nicht dokumentierten / internen API. Ich denke, das ist eine ziemlich enge Implementierung. newGVgen() und do_openn() sind Teil der öffentlichen API, aber undokumentiert und können sich ändern .

%Vor%     
chansen 06.01.2013, 20:14
quelle

Tags und Links