4.3 レジストリ

Lua はレジストリ (registry) を提供します。レジストリは C コードから利用できるテーブルであり、任意の Lua の値を保存できます。レジストリテーブルには疑似インデックス LUA_REGISTRYINDEX を使っていつでもアクセスできます。任意の C ライブラリは好きなデータをこのテーブルに保存できますが、衝突を避けるために他のライブラリが使わないキーを使う必要があります。そのためキーとしてはライブラリの名前が付いた文字列、ライブラリが持つ C オブジェクトを指すライトユーザーデータ、あるいはライブラリで作成した Lua オブジェクトが推奨されます。変数の名前と同様に、アンダースコアの後に大文字が続くキーは Lua のために予約されています。

レジストリの整数キーは参照 (luaL_ref) で利用され、その他にも事前に定義された値を持ちます。そのため、これら以外の用途でレジストリの整数キーを使ってはいけません。

新しく作られる Lua ステートのレジストリには最初からいくつかのフィールドが定義されています。最初から定義されるフィールドのキーは lua.h で定義される整数であり、その意味は次の通りです: