バインダを使わない決断も重要†
- グローバル変数の読み書き、グローバル関数登録、グローバル関数実行程度なのであれば、
バインダを使わない決断をした方が良いと思います。
そして、開発状況に合わせて、「C++ ⇔ Lua」間で良く行うやり取り、
に関するところだけ自分でラッピングするのが良いでしょう。
一般的には
- C++側から、指定のLua ファイルの読込 & 実行
- C++側から、指定のLua文字列の実行
- C++側から、数値タイプのLuaグローバルの変数の取得
- C++側から、文字列タイプのLuaグローバルの変数の取得
- C++側からの関数登録については、int xxx(lua_State* L) { ・・・ } でカリカリ記述
特に「tolua++」「SWIG」などによるバインダは、その開発工程において
通常のC++開発工程からはズレた特殊な工程が入り込んできますので、
ソースの見た目は良くとも、開発工程全体として良くなっているかは疑問符が付きます。
又、「luaBind」にはboostが必要となりますので、
「boostをプロジェクトに入れられない/入れたくはない(そのようなことは非常に多い)」
- Luaの変数取得や関数登録は、ステートの空間である「lua_State *L」と、
スタックとのやり取りという非常に単純なものです。