Skin7 実装中

機械的な作業で徹夜してしまうことほど悲しいことはない.
唯一の習得は,Lua にテーブルのテーブルを渡す方法が分かったこと.はぁ.
Lua側で

if PSS.corrected[1] then
    print( "hoge" )
end

とかできるようになったということ.
一応書いておくと,C側の書き方は

lua_getglobal( L_, "PSS" );
if( !lua_istable( L_, -1 ) ) {
    printf( "PSS is not a table...\n" );
}
lua_pushstring( L_, "corrected" );
lua_gettable( L_, -2 );
if( !lua_istable( L_, -1 ) ) {
    printf( "corrected is not a table...\n" );
}

lua_pushnumber( L_, 1 );
lua_pushnumber( L_, 200 );
lua_settable( L_, -3 );

lua_pop( L_, 1 );// end of corrected table
lua_pop( L_, 1 );// end of PSS table

みたいな感じ.C++の薄いラッパをかぶせて使ってます.
あ,テーブル PSS とテーブル corrected の作り方も重要なんだ.

lua_pushstring( L_, "PSS" );
lua_newtable( L_ );
...
lua_settable( L_, LUA_GLOBALSINDEX );

lua_getglobal( L_, "PSS" );
if( !lua_istable( L_, -1 ) ) {
    printf( "PSS is not a table...\n" );
}
lua_pushstring( L_, "corrected" );
lua_newtable( L_ );		// corrected テーブルを作成(名前,テーブル本体がpushされる)
lua_settable( L_, -3 );	// corrected を PSS に追加.
lua_pop( L_, 1 );

分かってしまえば当たり前のこと.もっと簡単な方法もあるのかなぁ.