/*!
  \page luabind_error_page Luabind でのエラー表示

  Luabind 越しに C++ から Lua スクリプトを呼び出した場合、そのスクリプト中でエラーが発生しても、そのままではそのエラー内容が表示されず、どのような間違いがあるのかわかりません。

  Luabind で、エラー時に呼び出される関数を登録することができ、エラーの箇所や内容を取得、エラー時の処理を記述、などを行えます。以下では、その方法を紹介します。

  \n
  Luabind の初期化用のファイル例
  \code
int handleError(lua_State* lua)
{
  // !!! エラー内容の表示や、エラー時の処理
}

...

luabind::open(lua)
luabind::set_pcall_callback(&outputError); \endcode

  \n
  エラーが発生したときに、エラーの箇所と内容を表示するような handleError() の実装例は、以下のようになります。

  \code
int handleError(lua_State* lua)
{
  lua_Debug d;
  lua_getstack(lua, 1, &d);
  lua_getinfo(lua, "Sln", &d);
  string error_message = lua_tostring(lua, -1);
  lua_pop(lua, 1);
  stringstream where_message;
  where_message << d.short_src << ":" << d.currentline;

  if (d.name != 0) {
    where_message << "(" << d.namewhat << " " << d.name << ")";
  }
  string output_message = where_message.str() + " " + error_message;
  lua_pushstring(lua, output_message.c_str());
  fprintf(stderr, "%s\n", output_message.c_str());

  return 1;
} \endcode

  \n
  例えば、

  \verbatim
  a
  b \endverbatim

  という Lua スクリプトを実行したときのエラー表示は、

  \verbatim
error: error_sample.lua:2: '=' expected near 'b' \endverbatim

  となります。

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

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

  \n
*/
