このページの内容

C APIの関数と型:toboolean–typename

lua_toboolean

[-0, +0, –]

int lua_toboolean (lua_State *L, int index);

指定されたインデックスのLua値をCのブール値(0または1)へ変換します。Luaのすべての検査と同様に、lua_tobooleanfalsenil以外のすべてのLua値に対してtrueを返し、それ以外ではfalseを返します。(実際のブール値だけを受け入れたい場合は、lua_isbooleanを使って値の型を検査してください。)


lua_tocfunction

[-0, +0, –]

lua_CFunction lua_tocfunction (lua_State *L, int index);

指定されたインデックスの値をC関数へ変換します。その値はC関数でなければならず、それ以外の場合はNULLを返します。


lua_toclose

[-0, +0, v]

void lua_toclose (lua_State *L, int index);

スタック内の指定されたインデックスをクローズ対象スロットとして印を付けます(§3.3.8を参照)。Luaのクローズ対象変数と同様、そのスタックスロットの値はスコープを外れると閉じられます。ここでC関数の文脈においてスコープを外れるとは、実行中の関数がLuaへ戻る、エラーがある、lua_settopまたはlua_popによってスロットがスタックから除去される、あるいはlua_closeslotが呼び出されることを意味します。クローズ対象として印を付けられたスロットは、事前にlua_closeslotで無効化されていない限り、lua_settopまたはlua_pop以外のAPI関数でスタックから除去してはいけません。

指定されたスロットの値が__closeメタメソッドを持たず、偽の値でもない場合、この関数はエラーを発生させます。

アクティブなクローズ対象スロット以下のインデックスに対して、この関数を呼び出してはいけません。

エラーの場合も通常のreturnの場合も、__closeメタメソッドが実行される時点ではCスタックがすでに巻き戻されていることに注意してください。そのため、呼び出し元の関数で宣言されたすべての自動C変数(たとえばバッファー)はスコープ外になっています。


lua_tointeger

[-0, +0, –]

lua_Integer lua_tointeger (lua_State *L, int index);

isnumNULLとしたlua_tointegerxと等価です。


lua_tointegerx

[-0, +0, –]

lua_Integer lua_tointegerx (lua_State *L, int index, int *isnum);

指定されたインデックスのLua値を符号付き整数型lua_Integerへ変換します。Lua値は整数、または整数へ変換できる数値か文字列でなければなりません(§3.4.3を参照)。それ以外の場合、lua_tointegerxは0を返します。

isnumNULLでなければ、その参照先へ操作が成功したかを示すブール値を代入します。


lua_tolstring

[-0, +0, m]

const char *lua_tolstring (lua_State *L, int index, size_t *len);

指定されたインデックスのLua値をC文字列へ変換します。Lua値は文字列または数値でなければならず、それ以外の場合はNULLを返します。値が数値なら、lua_tolstringスタック内の実際の値も文字列へ変更します。(テーブル走査中にキーへlua_tolstringを適用すると、この変更によってlua_nextが混乱します。)

lenNULLでなければ、関数は*lenへ文字列の長さを設定します。返されるC文字列は最後の文字の後に常にゼロ(‘\0’)を持ちますが、内部にほかのゼロを含む場合があります。

対応するLua値がスタックから除去されると、lua_tolstringが返したポインターはガベージコレクターによって無効化される可能性があります(§4.1.3を参照)。

この関数がメモリエラーを発生させる可能性があるのは、数値を文字列へ変換するときだけです(新しい文字列を作成する可能性があるためです)。


lua_tonumber

[-0, +0, –]

lua_Number lua_tonumber (lua_State *L, int index);

isnumNULLとしたlua_tonumberxと等価です。


lua_tonumberx

[-0, +0, –]

lua_Number lua_tonumberx (lua_State *L, int index, int *isnum);

指定されたインデックスのLua値をCの型lua_Numberへ変換します(lua_Numberを参照)。Lua値は数値または数値へ変換できる文字列でなければなりません(§3.4.3を参照)。それ以外の場合、lua_tonumberxは0を返します。

isnumNULLでなければ、その参照先へ操作が成功したかを示すブール値を代入します。


lua_topointer

[-0, +0, –]

const void *lua_topointer (lua_State *L, int index);

指定されたインデックスの値を汎用Cポインター(void*)へ変換します。値にはユーザーデータ、テーブル、スレッド、文字列、または関数を指定できます。それ以外の場合、lua_topointerNULLを返します。異なるオブジェクトは異なるポインターになります。ポインターを元の値へ戻す方法はありません。

通常、この関数はハッシュとデバッグ情報にのみ使われます。


lua_tostring

[-0, +0, m]

const char *lua_tostring (lua_State *L, int index);

lenNULLとしたlua_tolstringと等価です。


lua_tothread

[-0, +0, –]

lua_State *lua_tothread (lua_State *L, int index);

指定されたインデックスの値をLuaスレッド(lua_State*として表現)へ変換します。この値はスレッドでなければならず、それ以外の場合、関数はNULLを返します。


lua_touserdata

[-0, +0, –]

void *lua_touserdata (lua_State *L, int index);

指定されたインデックスの値がフルユーザーデータなら、そのメモリブロックのアドレスを返します。値がライトユーザーデータなら、その値(ポインター)を返します。それ以外の場合はNULLを返します。


lua_type

[-0, +0, –]

int lua_type (lua_State *L, int index);

指定された有効なインデックスの値の型を返し、有効でないものの許容されるインデックスにはLUA_TNONEを返します。lua_typeが返す型は、lua.hで定義された次の定数によって符号化されます:LUA_TNILLUA_TNUMBERLUA_TBOOLEANLUA_TSTRINGLUA_TTABLELUA_TFUNCTIONLUA_TUSERDATALUA_TTHREADLUA_TLIGHTUSERDATA


lua_typename

[-0, +0, –]

const char *lua_typename (lua_State *L, int tp);

tpによって符号化された型の名前を返します。この値はlua_typeが返す値のいずれかでなければなりません。