/*!
  \page lua_class_page Lua スクリプトからの C++ クラスの利用

  Lua から C++ のクラスやテンプレートを用いる方法を紹介します。

  \section lua_class_luabind_section Luabind を利用する場合

  Luabind を用いることで、自分でグルーコードを記述する手間が省けます。ただし Luabind を用いるとコンパイル時間が増えます。Luabind を利用するソースコードは、頻繁に更新しないファイルに分けておきましょう。

  また、Luabind についての詳細は <a href="http://www.rasterbar.com/products/luabind.html">Luabind 本家 (英語)</a> をご覧下さい。

  \subsection lua_class_luabind_function 関数をバインド

  delay() という関数を Lua スクリプトで使えるように luabindSystem() で C++ 関数をバインドしています。

  <a href="http://svn.sourceforge.jp/view/trunk/libs/system/delay.h?view=co&root=qrobosdk">delay.h</a>
  \include delay.h

  \n
  <a href="http://svn.sourceforge.jp/view/trunk/libs/lua/luabindSystem.cpp?view=co&root=qrobosdk">luabindSystem.cpp</a>
  \include luabindSystem.cpp

  実際に Lua スクリプト内で delay() を呼び出すには、あらかじめ luabindSystem() を C++ プログラム内で実行しておく必要があります。

  \n
  \subsection lua_class_luabind_class クラスをバインド

  以下は、GUI モジュールの各クラスを Lua にバインドした実装です。

  <a href="http://svn.sourceforge.jp/view/trunk/libs/lua/luabindGui.cpp?view=co&root=qrobosdk">luabindGui.cpp</a>
  \include luabindGui.cpp

  バインド対象の各クラスは、以下のリポジトリに配置されています。\n
  svn checkout http://svn.sourceforge.jp/svnroot/qrobosdk/trunk/libs/gui

  \n
  \subsection lua_class_luabind_template テンプレートをバインド

  x, y を公開メンバ変数に持つテンプレート Point と、x, y, w, h を公開メンバ変数に持つ Rect をバインドした例です。\n

  \n
  <a href="http://svn.sourceforge.jp/view/trunk/libs/lua/luabindGeometry.cpp?view=co&root=qrobosdk">luabindGeometry.cpp</a>
  \include luabindGeometry.cpp

  テンプレート引数が異なる場合は、複数登録が必要な点に注意しましょう。

  \n
  \subsection lua_class_luabind_singleton シングルトンクラスのバインド

  シングルトンのクラスを Lua にバインドするには、２つの方法があります。

  - クラスオブジェクトを返す static メソッドを関数として登録する
  - C++ でオブジェクトを作成し、luabind の globals() を用いて Lua に登録する

  以下に、両方の方法でシングルトンクラスのメンバメソッドを呼び出しているサンプルを示します。

  \n
  <a href="http://svn.sourceforge.jp/view/trunk/libs/lua/samples/SingletonClass.h?view=co&root=qrobosdk">SingletonClass.h</a>
  \include SingletonClass.h

  \n
  <a href="http://svn.sourceforge.jp/view/trunk/libs/lua/samples/registerSingleton.cpp?view=co&root=qrobosdk">registerSingleton.cpp</a>
  \include registerSingleton.cpp

  \n
   <a href="http://svn.sourceforge.jp/view/trunk/libs/lua/samples/use_singleton.lua?view=co&root=qrobosdk">use_singleton.lua</a>
  \include use_singleton.lua

  簡単ですね。\n
  Luabind は他にも色々なことができます。詳しくは Luabind 本家 のサイトをご覧下さい。

  \n
  \section lua_class_comment_section コメントページ

  - http://sourceforge.jp/forum/forum.php?forum_id=18515

  \n
  \section lua_class_reference_section 参考

  - Web ページ <a href="http://www.rasterbar.com/products/luabind.html">「Luabind 本家」(英語)</a>
  - 本 <a href="http://www.amazon.co.jp/gp/product/4873113393?ie=UTF8&tag=qrobosdk-22&linkCode=as2&camp=247&creative=7399&creativeASIN=4873113393">「実例で学ぶゲームAIプログラミング」</a><img src="http://www.assoc-amazon.jp/e/ir?t=qrobosdk-22&l=as2&o=9&a=4873113393" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

  \n
*/
