スタックに積まれている値の型を見るにはlua_type関数を使用します.
int lua_type (lua_State* L, int index)
この関数は指定したindexの型を返します(表\ref{Table:LUATYPE}).
lua_typeが返す型はlua.h内で定義されています.
有効でないindexが渡された場合はLUA_TNONEを戻り値として返します.
lua_type関数の戻り値
| 型
| 戻り値
|
| nil
| LUA_TNIL
|
| number
| LUA_TNUMBER
|
| boolean
| LUA_TBOOLEAN
|
| string
| LUA_TSTRING
|
| table
| LUA_TTABLE
|
| function
| LUA_TFUNCTION
|
| userdata
| LUA_TUSERDATA
|
| thread
| LUA_TTHREAD
|
| lightuserdata
| LUA_TLIGHTUSERDATA
|
また,指定した型かどうかを判定するlua_is***関数も存在しています.***の部分には型が入ります.
int lua_is*** (lua_State* L, int index)
例えばindexで指定したスタックの要素がbooleanかを判定したい場合は,
int lua_isboolean (lua_State* L, int index)
とします.返却値がtrue,つまり1であればbooleanであり,false,つまり0が返されればboolean型ではないということになります.
これらの関数は実はlua_type関数を利用したマクロとなっています.
また,指定したindexの要素を指定した型で取得する関数lua_to***関数も存在します.
***の部分には型が入ります.
int lua_to*** (lua_State* L, int index)