Documentation of Luabind in Japanese
-1 まえがき
luabindを勉強するためにドキュメントを読んでいるので,
備忘録のために(意訳)日本語を記載する.
0 オリジナル / Source
http://www.rasterbar.com/products/luabind.html
1 導入 / Introduction
LuabindはC++とLuaの架け橋となるライブラリである.
C++で記述された関数やクラスなどを,Luaから見えるようにすることができる.
また,Luaにおけるクラスの定義や,LuaもしくはC++で記述されたクラスを(Lua側で)派生できるようにする.
Luaにおけるクラスの定義では,C++で記述されたクラスの仮想関数のオーバーライドをサポートしている.
このドキュメントはLua 5.0を対象として記述されており,Lua 4はサポート外である.
このライブラリはテンプレートメタプログラミングを活用して実装されてい
る.つまり,コンパイル前に何かプリプロセスを行う必要がない.(すべてコン
パイラが行ってくれる.)また,(大抵の場合は)Lua側に登録した各関数の詳細
な特徴(signature)を知る必要は無く,コンパイル時の関数の型情報に基づいて
ライブラリが生成を行う.この方法の主な欠点は,(Luaに)登録を行う必要があ
る(関数もしくはクラスが記述された)ファイルのコンパイル時間が増加するこ
とである.そのため,単一のcppファイルで必要なすべての登録を行うことを推
奨する.
LuabindはMITライセンスの元でリリースされる.
もしあなたのプロジェクトにluabindを採用された時は,ぜひ我々に
連絡していただけると幸いです.
ヘルプとフィードバックは主にluabind mailing listを介して行われる.
また,irc.freenode.netのIRCチャンネル#luabindも活用されたし.
2 機能 / Features
Luabindは以下の機能,
- Overloaded free functions
- LuaへのC++クラスの導入
- オーバーロードされたメソッド
- オペレータ
- Porperties
- 列挙型
- C++におけるLua関数
- C++におけるLuaクラス
- Luaクラス (単一継承)
- LuaもしくはC++クラスからの派生
- C++クラスの仮想関数のオーバーライド
- 登録された型の暗黙のキャスト
- 最適なsignatureマッチング
- Return value policies and parameter policies
をサポートしている.
3 可搬性 / Portability
Luabindは以下のコンパイラ,
- Visual Studio 7.1
- Intel C++ 6.0 (Windows)
- GCC 2.95.3 (cygwin)
- GCC 3.0.4 (Debian/Linux)
- GCC 3.1 (SunOS 5.8)
- GCC 3.2 (cygwin)
- GCC 3.3.1 (cygwin)
- GCC 3.3 (Apple, MacOS X)
- GCC 4.0 (Apple, MacOS X)
上でテストされている.また,
上では動作しないことが確認されている.
Metrowerks 8.3 (Windows) では,コンパイルはできるがconst-testに失敗する.
つまり,constメンバ関数がnon-constメンバ関数として扱われる.
もしここに示されていないコンパイラでluabindを使ったときは,その
結果も含めて教えていただけると幸いである.
4 環境構築 / Building luabind
4.1 必須環境 / Prerequisites
LuabindはBoost 1.34中の多数のライブラリに依存している..
また,ライブラリの構築とテストを行うBoost JamとBoost Build V2にも依存している.
Boostはコンパイル済みのbjamバイナリを多数のプラットフォーム上で提供している.
もし使用しているプラットフォーム向けのプリコンパイル済みバイナリが
入手できない時は,自分で構築する必要がある.
4.2 Windows
環境変数LUA_PATHが正しくLuaのインクルードディレクトリと構築されたライブラリ
のパスに設定されている必要がある.
テストスイートを走らせるために,
Lua BinariesのWindows x86 DLLとインクルードファイルのパッケージ
は最低限用意した方がよい.
4.3 Linux and other *nix flavors
既にLuaがインストールされている場合,ほとんどの場合自動的に
検出され,動作する.
もし標準のパス以外にインストールを行った場合,環境変数LUT_PATHが
インストール先のプレフィックスを指し示すように設定する必要がある.
環境変数BOOST_ROOTにはBoostのインストール先ディレクトリを設定すること
ができる.もし設定しない場合,コンパイラは標準インクルードパスから
boostのヘッダファイルを見つけようとする.
4.3.1 MacOSX
もし10.4と10.5の両方のSDKがインストールされている場合,Boost Buildはデ
フォルトで10.4の方を使用する.Luaの場合,少なくともMacPortsからインストー
ルした場合には10.5 SDKがリンクされることになる.luabindのビルドがリンケー
ジエラーで失敗した場合,10.5 SDKを明示的に使用する必要がある.
$ bjam macosx-version=10.5
4.4 Building and testing
5 Basic usage
5.1 Hello world
6 Scopes
7 Binding functions to Lua
7.1 Overloaded functions
7.2 Signature matching
7.3 Calling Lua functions
7.4 Using Lua threads
8 Binding classes to Lua
8.1 Overloaded member functions
8.2 Properties
8.3 Enums
8.4 Operators
8.5 Nested scopes and static functions
8.6 Derived classes
8.7 Smart pointers
8.8 Splitting class registrations
9 Adding converters for user defined types
10 Binding function objects with explicit signatures
11 Object
11.1 Iterators
11.2 Related functions
11.3 Assigning nil
12 Defining classes in Lua
12.1 Deriving in lua
12.1.1 Object identity
12.2 Overloading operators
12.3 Finalizers
12.4 Slicing
13 Exceptions
14 Policies
14.1 adopt
14.1.1 Motivation
14.1.2 Defined in
14.1.3 Synopsis
14.1.4 Parameters
14.1.5 Example
14.2 dependency
14.2.1 Motivation
14.2.2 Defined in
14.2.3 Synopsis
14.2.4 Parameters
14.2.5 Example
14.3 out_value
14.3.1 Motivation
14.3.2 Defined in
14.3.3 Synopsis
14.3.4 Parameters
14.3.5 Example
14.4 pure_out_value
14.4.1 Motivation
14.4.2 Defined in
14.4.3 Synopsis
14.4.4 Parameters
14.4.5 Example
14.5 return_reference_to
14.5.1 Motivation
14.5.2 Defined in
14.5.3 Synopsis
14.5.4 Parameters
14.5.5 Example
14.6 copy
14.6.1 Motivation
14.6.2 Defined in
14.6.3 Synopsis
14.6.4 Parameters
14.6.5 Example
14.7 discard_result
14.7.1 Motivation
14.7.2 Defined in
14.7.3 Synopsis
14.7.4 Example
14.8 return_stl_iterator
14.8.1 Motivation
14.8.2 Defined in
14.8.3 Synopsis
14.8.4 Example
14.9 raw
14.9.1 Motivation
14.9.2 Defined in
14.9.3 Synopsis
14.9.4 Parameters
14.9.5 Example
14.10 yield
14.10.1 Motivation
14.10.2 Defined in
14.10.3 Synopsis
14.10.4 Example
15 Splitting up the registration
16 Error Handling
16.1 pcall errorfunc
16.2 file and line numbers
16.3 lua panic
16.4 structured exceptions (MSVC)
16.5 Error messages
17 Build options
18 Implementation notes
19 FAQ
20 Known issues
21 Acknowledgments
DOHI Keisuke