トップページ
ひらく | たたむ | ページトップ
↓マウスで反転選択した文字を検索
Lua
   
ページ内検索 ページ外検索
検索したい文字を入力して
ENTERを押すと移動します。
\n
[ トップページ ]
[ ____CommandPrompt ] [ ____JScript ] [ ____MySQL ] [ ____Cygwin ] [ ____Java ] [ ____Emacs ] [ ____Make ] [ ____Perl ] [ ____Python ] [ ____OpenGL ] [ ____C# ] [ ____StyleSheet ] [ ____C++ ] [ ____Winsock ] [ ____Thread ] [ ____VisualStudio ] [ ____C ] [ ____Win32API ] [ ____Lua ] [ ____PhotoShop ]
ヘッダ検索
___

■ その他



___

■ DEBUG

local v = 0; function testHook() print("Debug v = "..v); end -- 実行文がよばれる直前に testHook を呼ぶ. debug.sethook( testHook, "l" ); v = v + 1; POINT 最終的にスタックは元の状態に戻っている これは良いプログラミング作法
___

■ Coroutine(Co-routine)

複数の coroutine を作成できるが, 平行して動作することはできない. 互いに譲りあい( yield ) ながら作業をする。 協調的 multithread OS が CPU の実行を切り替えながらする作業を, PreemptiveMultiTask という. 先制. ( 先買権 == はやいもの勝ち ) [ 実行処理自体 == worker ]が 切り替えの合図を送るのが, NonPreenptiveMultiTask だから協調 ( だから yield ) POINT Coroutine とは 実行を一時中断して, 後で再開する仕組みのこと。 自分で中断を宣言することが、 OS の管理する multithread とは異なる。 自分で yield() をコールして初めて中断される。
     Coroutign 作成. ( worker ) // thread object をかえす.
     thread = coroutine.create;

     2. main() 関数にわたす. ( Job )
     main( thread, prm ... );

     3. coroutine を稼働させる.
     coroutine.resume() で稼働させる.

     4. 終了をまつか, yield を実行する.
条件式は任意の値OK.( false と nil は共に偽 )
___

■ Luaのつかいみち

設定ファイルとして扱う Lua format を利用する
      Var=Val;( これを自分で解釈( Interprete )する )
      -- lua でグローバル変数を設定。
      var=10;
foo.cpp
      lua_getglobal( s, "var" );  // globalTbl から var key stack にのせる
      luaL_checknumber( s, -1 );  // stack から値を取得する.
C から lua のグローバル変数を設定する。
    lua_pushstring(s, "test");
    lua_setfield(s, LUA_GLOBALSINDEX, "name");
___

■ C 言語が主体

指定したところで, Lua にうつり, 処理がおわったら Lua から戻る。 ある処理における Callback の際に使う。 MVC でいうところの Control を Lua から制御する Controler の機能を Lua に公開する Controller, Data ともに C 側にある
___

■ Lua が主体

Lua 側に data, Controler を配置. ( Lua の data 構造を利用可能. ) 設定 file は Lua 変数を扱うだけになる. Gui は Lua でサポートされる必要がある. Controller, Data ともに Lua 側にある.
___

■ hash

Hash とは, 文字列を数値に変換したもの. ( 検索する際に数値に変換して高速に検索する ) 均等に分布するのが良い Hash 関数。 比較を用意にすることが目的. Lua は内部に Hash 関数をもつ Lua には Switch 文がない. ( if-elseif ... | table )で代用.
___

■ _G

DESC グローバル環境を保持するグローバル変数 [ Lua の環境 ]と呼ばれる, global 変数をもつテーブルのこと。 POINT __index : field に値を入れる時に使用される method. a = 1; < -> _G.a = 1;
___

■ registory

registory とは 定義済みの [ table ] 好きなLuaの値を格納するために [ Cのコードから ]使うことができる. 疑似 index [ LUA_REGISTRYINDEX ]に置かれている KEY が重複しないように注意すること. Cオブジェクトのアドレスを持つライトユーザーデータ を用いるとよい.
___

■ lua_checkstack

SYNTAX int lua_checkstack (lua_State *L, int n ); DESC スタックに n の空きがあるかチェックする。 チェックするだけでスタックのサイズは変更しない。 STACK [-0, +0, m] RET false : スタックに n 個の空きがない。
___

■ table に weakReference の設定をする

POINT ( table には 予約済みの field がある ) [ __mode ] field に "k" を含む -> KEY が weakReference [ __mode ] field に "v" を含む -> VAL が weakReference
___

■ 擬似インデックス

スタック内に無いいくつかのLuaの値に[ Cのコードから ]アクセスするためのもの stack 以外にある Lua が管理する値を 指すINDEX どの関数も 疑似インデックス と呼ばれる有効なインデックスを受け付ける LUA_GLOBALSINDEX : スレッドの環境 (グローバル変数がある場所) LUA_ENVIRONINDEX : 実行中の C の関数の環境がある 擬似インデックス
















NINJAIDX 18