lua_getinfo
特定の関数または関数呼び出しについての情報を返します。
[-(0|1), +(0|1|2), m]
c
int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar);説明
特定の関数または関数呼び出しについての情報を返します。
関数呼び出しについての情報を取得するには、arパラメータは、以前にlua_getstackによって記入された有効なアクティベーションレコードである必要があります、またはフックに引数として与えられる必要があります(lua_Hookを参照)。
関数についての情報を取得するには、それをスタックにプッシュし、what文字列を文字'>'で開始します。(その場合、lua_getinfoはスタックの上にある関数をポップします。)例えば、関数fがどの行で定義されたかを知るには、次のコードを書くことができます:
c
lua_Debug ar;
lua_getfield(L, LUA_GLOBALSINDEX, "f"); /* get global 'f' */
lua_getinfo(L, ">S", &ar);
printf("%d\n", ar.linedefined);what文字列の各文字は、構造体arの特定のフィールドを記入するか、スタックに値をプッシュすることを選択します:
'n':nameとnamewhatフィールドを記入します。'S':source、short_src、linedefined、lastlinedefined、およびwhatフィールドを記入します。'l':currentlineフィールドを記入します。'u':nupsフィールドを記入します。'f': 与えられたレベルで実行中の関数をスタックにプッシュします。'L': 関数で有効な行の番号がインデックスであるテーブルをスタックにプッシュします。(有効な行とは、コードが関連付けられている行、つまり、ブレークポイントを置くことができる行です。無効な行には空行やコメントが含まれます。)
この関数はエラーが発生した場合(例えば、whatで無効なオプションがある場合)に0を返します。
サンプルコード
c
lua_Debug ar;
lua_getfield(L, LUA_GLOBALSINDEX, "myFunction");
lua_getinfo(L, ">S", &ar);
printf("定義開始行: %d\n", ar.linedefined);このコードは、グローバル関数myFunctionの定義開始行を取得して表示します。
互換性
- Lua5.1
関連項目
- lua_getstack
- lua_Debug