AV を生成して、値を設定するのには、2 つの方法があります。最初の方法は、 単に空の AV を作るものです:
AV* newAV();
ふたつめの方法は、AV を生成した上で、初期値として SV の値を入れます:
AV* av_make(I32 num, SV **ptr);
ふたつめの引数は、num 個の SV* の配列を指しています。
いったん、AV が生成されると、AV に対して、
void av_push(AV*, SV*); SV* av_pop(AV*); SV* av_shift(AV*); void av_unshift(AV*, I32 num);
といった操作が行えます。これらは、 av_unshift を除いては、お馴染
みの演算でしょう。 av_unshift は、配列の先頭に、num 個の
undef 値の要素を付け加えます。その後で、(あとで述べる)
av_store を使って、新しい要素に値を代入しなければなりません。他に
もいくつか関数があります:
I32 av_len(AV*); /* 配列の大きさを返す */
SV** av_fetch(AV*, I32 key, I32 lval);
/* オフセットが key の位置から値を取り出すが、lval
がゼロでないとき、値を lval に設定するようだ */
SV** av_store(AV*, I32 key, SV* val);
/* オフセットが key の位置に val を設定する */
void av_clear(AV*);
/* すべての要素をクリアするが、配列は残す */
void av_undef(AV*);
/* 全要素を除去し、配列を未定義にする */
配列変数の名前がわかるのであれば、
AV* perl_get_av("varname", FALSE);
を使えば、AV へのポインタが得られます。その変数が存在しなければ、NULL を 返します。
Go to the first, previous, next, last section, table of contents.