現在、開発凍結されています。ここに記載されている内容は、現在実現の目処はたっていません。
概要#
Luaラッパークラス。
lua_Stateの生成と破棄の自動化をするほか、変数の取得・設定やコルーチン実行などグローバル環境に対する操作の簡単なインターフェースを提供する。
単純なプログラムでも1回resumeするたびに100バイト以上消費する。
つまり、30FPSで毎フレーム呼び出すと1秒あたり3KB以上消費する。
ガベージコレクションが働くため最終的なメモリ使用量はLuaのグローバル環境一つ当たり数十KB程度になる。
使用方法#
そのまま使うか、派生クラスを作る。
一つのCBWLuaに対し一つのLuaのグローバル環境が対応する。
なお、かなり簡単な操作以外はLuaのAPIを直接使用するしかないので[[Lua組み込みWiki>http://tgws.fromc.jp/wiki/lua/]]なども参照のこと。
ダウンロード#
上が新しい。
lua070629.lzh
lua070623.lzh
lua070613.lzh
lua070612.lzh
bwlua070608.lzh
履歴#
| 07/06/29 | GetTableElements関数を追加 |
| 07/06/23 | DoFile、DoString関数を追加 |
| 07/06/13 | This()をstaticにした |
| 07/06/13 | Luaの内容をチューニング 標準ライブラリを全て自動で読み込むようにした Register関数を追加 SetCFunction関数を追加 |
| 07/06/12 | CFileResourceを使うことにした |
| 07/06/08 | できたということにしておく |
メンバ#
ここに記載されていない関数は使うべきではない。
または、ソースコードをよく読んで注意深く使うこと。
CreateThread#
CBWLuaThread* CreateThread(const string& funcname);
新たにスレッドを作成し、それを管理する[[CBWLuaThread]]を生成する。
DoFile#
DoString#
HRESULT DoFile(const string& fileName)
HRESULT DoString(const char* s)
読み込んで即座に実行する。
Load~とRunを順次実行しているのみである。
GetBoolean#
GetNumber#
GetString#
int GetBoolean(int argc, ...)
lua_Number GetNumber(int argc, ...)
const char * GetString(int argc, ...)
argc個の可変引数で表される変数から値を得る。
例えば、「lua_Number num = GetNumber(3, "mifumi", "bust", "size");」とすれば、numにはmifumi.bust.sizeの数値が入る。
GetState#
lua_State *GetState()
クラスに関連付けられているlua_Stateを返す。
GetTableElements#
void GetTableElements(list
lにargc個の可変引数で表されるテーブルのキーのリストを追加する。
LoadFile#
HRESULT LoadFile(const string& fileName)
ファイルからチャンクを読み込み、スタックに追加する。
直後にRunが呼び出されることを想定している。
LoadString#
HRESULT LoadString(const char* s)
文字列からチャンクを読み込み、スタックに追加する。
直後にRunが呼び出されることを想定している。
NewTable#
void NewTable(int argc, ...)
argc個の可変引数で表されるテーブルを作成する。
Register#
void Register(const char *libname, const luaL_Reg *l)
複数のC関数を一度に追加する。
Run#
HRESULT Run(int nargs=0, int nresults=0, int errfunc=0)
保護された環境でLuaを実行する。
SetBoolean#
SetNumber#
SetString#
SetCFunction#
void SetBoolean(int value, int argc, ...)
void SetNumber(lua_Number value, int argc, ...)
void SetString(const char *value, int argc, ...)
void SetCFunction(lua_CFunction value, int argc, ...)
argc個の可変引数で表される変数に値を設定する。
例えば、「SetNumber(L, num, 3, "mifumi", "bust", "size");」とすれば、mifumi.bust.sizeにはnumの数値が入る。
This#
static CBWLua* This()
現在実行中のlua_Stateを持っているCBWLuaクラスを返す。
これはLuaから呼び出されるC関数において使われることを想定している。