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 );分かってしまえば当たり前のこと.もっと簡単な方法もあるのかなぁ.