- ベストアンサー
XSUB.h、EXTERN.h、perl.h について
◆状況 C言語+Perlで作られている機能を、 Perlだけのソースに移行しようとしています。 ◆困っていること 今まで、知らない言語を読む際、 ネットや本にある、関数一覧などから、 「そのプログラムで何をしようとしているか?」 を読み取れていたのですが、 C言語+Perlにおける、下記の関数??と思われるものなどについて、 全然、資料/情報が見つからず、困っています。 具体的には、 dXSARGS Perl_croak SvPV_nolen XPUSHs PUTBACK などです。 (恐らくは、EXTERN.h、perl.h、XSUB.h というヘッダファイルに定義されているのかも知れませんが。) stdio.h などにあるような、fopen関数だったり、fscanf関数などのようなものは、 いくらでもネット上/本に載っているのですが、上述のものについて、全然見つかりません、、 /***********************************/ また、includeファイルに、定数、構造体の定義、関数のプロトタイプ、マクロの定義、が記述されると認識していますが、 しかしながら、 ソース上に出てくる「Perl_croak」という箇所は、おそらく、Perl_croakという関数のように思われました。 と、すると、 includeファイルに、引数&戻り値などのインターフェース仕様だけ書かれているのではなく、 Perl_croak関数が行う、「処理の実態」も、ヘッダファイルに記述されているということでしょうか?? また、 dXSARGS という箇所については、戻り値を受け入れるような記述もなく、 dXSARGS; と一行書かれているだけなのですが、関数ではなく、戻り値を必要としないサブルーチンということでしょうか? /***********************************/ どなたか、資料/情報や、もしくは調べ方などをご存知の方がいらっしゃれば、 ご教授お願いできませんでしょうか? 些細な情報でも構いませんので、宜しくお願い致します。。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- sakusaker7
- ベストアンサー率62% (800/1280)
お礼
Perl内部関数に関する記述、非常に参考になりました。 (※下記の部分など。) データ型として、Perl では、主となる 3 つのデータ型を扱うために 3 つのtypedefを行なっていること。 SV スカラ値 AV 配列値 HV ハッシュ値 SVというのは、スカラ値での引数などのやりとりだったのだとわかり、 助かりました。 /***************************************/ SVの操作について おそらく、引数としてスタックに乗っている、SVに対して、 SV* newSViv(IV); 整数 SV* newSVnv(double); 倍精度 SV* newSVpv(char*, int); 文字列 SV* newSVsv(SV*); その他のスカラー で取得し、リターン値として、下記でスタックに乗せる。 XPUSHi(IV) 整数 XPUSHn(double) 倍精度 XPUSHp(char*, I32) 文字列 XPUSHs(SV*) その他のスカラー のだろうとわかりました。 (わかったつもりなだけかもしれませんが。。) ありがとうございまいした!