このページの内容

C APIの関数と型:insert–load

lua_insert

[-1, +1, –]

void lua_insert (lua_State *L, int index);

最上部の要素を指定された有効なインデックスへ移動し、そのインデックスより上の要素を上へずらして領域を空けます。疑似インデックスは実際のスタック位置ではないため、この関数を疑似インデックスで呼び出すことはできません。


lua_Integer

typedef ... lua_Integer;

Luaにおける整数の型です。

デフォルトで、この型はlong long(通常は64ビットの2の補数整数)ですが、longまたはint(通常は32ビットの2の補数整数)へ変更できます。(luaconf.hLUA_INT_TYPEを参照。)

Luaは、この型に収まる最小値と最大値を持つ定数LUA_MININTEGERLUA_MAXINTEGERも定義します。


lua_isboolean

[-0, +0, –]

int lua_isboolean (lua_State *L, int index);

指定されたインデックスの値がブール値なら1を、それ以外なら0を返します。


lua_iscfunction

[-0, +0, –]

int lua_iscfunction (lua_State *L, int index);

指定されたインデックスの値がC関数なら1を、それ以外なら0を返します。


lua_isfunction

[-0, +0, –]

int lua_isfunction (lua_State *L, int index);

指定されたインデックスの値が関数(CまたはLua)なら1を、それ以外なら0を返します。


lua_isinteger

[-0, +0, –]

int lua_isinteger (lua_State *L, int index);

指定されたインデックスの値が整数(つまり、値が数値で、整数として表現されている)なら1を、それ以外なら0を返します。


lua_islightuserdata

[-0, +0, –]

int lua_islightuserdata (lua_State *L, int index);

指定されたインデックスの値がライトユーザーデータなら1を、それ以外なら0を返します。


lua_isnil

[-0, +0, –]

int lua_isnil (lua_State *L, int index);

指定されたインデックスの値がnilなら1を、それ以外なら0を返します。


lua_isnone

[-0, +0, –]

int lua_isnone (lua_State *L, int index);

指定されたインデックスが有効でなければ1を、それ以外なら0を返します。


lua_isnoneornil

[-0, +0, –]

int lua_isnoneornil (lua_State *L, int index);

指定されたインデックスが有効でないか、このインデックスの値がnilなら1を、それ以外なら0を返します。


lua_isnumber

[-0, +0, –]

int lua_isnumber (lua_State *L, int index);

指定されたインデックスの値が数値、または数値へ変換できる文字列なら1を、それ以外なら0を返します。


lua_isstring

[-0, +0, –]

int lua_isstring (lua_State *L, int index);

指定されたインデックスの値が文字列、または数値(常に文字列へ変換可能)なら1を、それ以外なら0を返します。


lua_istable

[-0, +0, –]

int lua_istable (lua_State *L, int index);

指定されたインデックスの値がテーブルなら1を、それ以外なら0を返します。


lua_isthread

[-0, +0, –]

int lua_isthread (lua_State *L, int index);

指定されたインデックスの値がスレッドなら1を、それ以外なら0を返します。


lua_isuserdata

[-0, +0, –]

int lua_isuserdata (lua_State *L, int index);

指定されたインデックスの値がユーザーデータ(フルまたはライト)なら1を、それ以外なら0を返します。


lua_isyieldable

[-0, +0, –]

int lua_isyieldable (lua_State *L);

指定されたコルーチンがyield可能なら1を、それ以外なら0を返します。


lua_KContext

typedef ... lua_KContext;

継続関数のコンテキスト用の型です。数値型でなければなりません。intptr_tを利用できる場合、この型はポインターも保存できるようにintptr_tとして定義されます。それ以外の場合はptrdiff_tとして定義されます。


lua_KFunction

typedef int (*lua_KFunction) (lua_State *L, int status, lua_KContext ctx);

継続関数の型です(§4.5を参照)。


lua_len

[-0, +1, e]

void lua_len (lua_State *L, int index);

指定されたインデックスの値の長さを返します。Luaの’#’演算子と等価で(§3.4.7を参照)、「length」イベントのメタメソッドを発動する可能性があります(§2.4を参照)。結果をスタックへプッシュします。


lua_load

[-0, +1, –]

int lua_load (lua_State *L,
              lua_Reader reader,
              void *data,
              const char *chunkname,
              const char *mode);

Luaチャンクを実行せずに読み込みます。エラーがなければ、lua_loadはコンパイル済みチャンクをLua関数としてスタック最上部へプッシュします。それ以外の場合はエラーメッセージをプッシュします。

関数lua_loadは、ユーザーが指定したreader関数を使ってチャンクを読み込みます(lua_Readerを参照)。引数dataはreader関数へ渡される不透明な値です。

引数chunknameはチャンクへ名前を付けます。この名前はエラーメッセージとデバッグ情報で使われます(§4.7を参照)。

lua_loadはチャンクがテキストかバイナリかを自動的に検出し、それに従って読み込みます(プログラムluacを参照)。文字列modeは関数loadと同様に動作し、NULL値が文字列”bt”と等価である点が加わります。さらに、‘b’の代わりに、バイナリダンプを持つ固定バッファーを意味する’B’を指定できます。

固定バッファーとは、reader関数が返したアドレスが、チャンクによって作成されたすべてのものが収集されるまでチャンクを含み続けることを意味します。そのため、Luaはチャンクの一部を内部構造へコピーせずに済みます。(一般に、たとえばROM内のチャンクでは、固定バッファーはプログラム終了まで内容を保持します。)さらに、固定バッファーではreader関数が最初の読み取りでチャンク全体を返すべきです。(例として、luaL_loadbufferxはそう動作するため、固定バッファーの読み込みに使えます。)

関数lua_loadはreader関数の呼び出しを通じてLuaスタックを完全に保持します。ただし、最初の呼び出し前に内部使用の値をいくつかプッシュする場合があり、最後の呼び出し後にスタックサイズを元のサイズに1(プッシュした結果用)を加えたサイズへ戻します。

lua_loadLUA_OKLUA_ERRSYNTAX、またはLUA_ERRMEMを返せます。read関数が発生させたエラーに対応するほかの値を返す場合もあります(§4.4.1を参照)。

結果の関数に上位値がある場合、最初の上位値はレジストリ内のインデックスLUA_RIDX_GLOBALSに保存されたグローバル環境の値へ設定されます(§4.3を参照)。メインチャンクを読み込むとき、この上位値は変数_ENVになります(§2.2を参照)。そのほかの上位値はnilで初期化されます。