Lua に C関数を公開する時

Programming in Lua 曰く,

Enum を受け取るような関数を定義する時は文字列で受け取ったほうが良い

というような事が書いてあって,実際標準Luaライブラリにも luaL_checkoption というまさにうってつけの関数が用意されてる

……んだけど,その許可するものの数が膨大だとこれでは(Programming in Lua内にあるコードでも)文字列から線形探索になるからちょっと気になるんじゃないかなーと.

だから,C関数をLuaに公開する時に,関数の上位値もしくは環境に文字列<- ->値となるようなテーブルをセットしておく方が良いんじゃないかなーとふと思った.

それならば,Luaの高速なハッシュでのアクセスが使えるし, スタック内の文字列を C文字列として取り出すコスト(あるのかな?)も無くせるし.

最も,関数を定義するのがちょっと面倒くさくなるけど.