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.