【Lua】組み込み系言語総合【Squirrel】
レス数が900を超えています。1000を超えると表示できなくなるよ。
0942デフォルトの名無しさん
2009/05/05(火) 11:17:04どういうのがいいのか悩んでる。
二つ案があって、ひとつはLuaと同じくスタックを介する方法。
もうひとつは、オブジェクトハンドルを経由してアクセスする方法で、
Handle globalhash, funcobj, symbol;
globalhash = getglobal( state );
symbol = intern( state, "globalfunc" );
funcobj = getfield( globalhash, symbol );
arg_pushinteger( funcobj, 10 );
call( funcobj );
handle_drop( funcobj );
handle_drop( symbol );
handle_drop( globalhash );
という感じになる。ちょっと長いけど、グローバルハッシュから特定シンボ
ルの値を得るというのはありそうな処理なので、実際には専用のAPIを用意する。
ただこちらのほうはスタックに比べて、
・ハンドル開放処理を忘れるとメモリリーク
・遅い
という問題がある。
前者はスタック操作でも同じ(スタックトップを戻し忘れるのがそれにあたる)だけど、
後者は頻繁に行う処理な分、結構致命的。
ただ後者の方法のほうがスタックの状態を覚えなくてよい分、直感的といえば直感的
なんだよな。
両方用意したほうがいいかな?
レス数が900を超えています。1000を超えると表示できなくなるよ。