newSVpvs_flagsを調べてる

結局、まだ全然よくわかんないんだけど、とりあえず検索はしてみた。

で、見つかったのがこちらのページ。

Perl API の紹介
http://perldoc.jp/docs/perl/5.14.1/perlguts.pod

C からの Perl 呼び出し規約
http://perldoc.jp/docs/perl/5.18.1/perlcall.pod

XS 言語リファレンスマニュアル
http://perldoc.jp/docs/perl/5.18.1/perlxs.pod

XSUB を書くためのチュートリアル
http://perldoc.jp/docs/perl/5.18.1/perlxstut.pod

まさか、perlgutsが翻訳されていたとは・・・。
ここに、newSVpvs_flagsの記述がありました。
でも、これだけじゃ、ちょっと。

どこで出てきたかというと、前回に引き続き、
XSのひな形を作成した時に生成されたxsファイルなんですが、

#define NEED_newSVpvn_flags
#include "ppport.h"

MODULE = Hoge::XS    PACKAGE = Hoge::XS

PROTOTYPES: DISABLE

void
hello()
CODE:
{
    ST(0) = newSVpvs_flags("Hello, world!", SVs_TEMP);
}

これで、以下のテストが通るところを見る限り、

use strict;
use Test::More;

use Hoge::XS;

is(Hoge::XS::hello(), 'Hello, world!');

done_testing;

'Hello, world!'が返ってきてるんですかね。

という訳で、次はこの辺を調べればいんですかね。

#define NEED_newSVpvn_flags
#include "ppport.h"

おしまい。

Leave a Comment