2009-06-01から1ヶ月間の記事一覧

後ろで定義されている関数を呼び出せるようにするパッチ その2

後ろで定義されている関数を呼び出せるようにするパッチ - fujidigの雑記 の改良。 前のパッチは codegen で識別子の @ がどうこうしているのが心残りでした(SearchSymbolOrRegisterVarまわり)。 識別子の @ の処理とかはプリプロセスで済ますべきだったと思…

ラベル型変数を使って無理やり動的メソッド呼び出しを実現してみる

HSP

※ 黒魔術注意。この記事には実用的なスクリプトはありません。 dog_cry_impl, doc_cry と二段構成になっていて、 animal_cry を #modfunc でなく #deffunc なのは、メンバの参照時に違うモジュール内の #modfunc からジャンプしているかチェックしてそのとき…

await 命令

HSP

#uselib "winmm.dll" #cfunc global timer "timeGetTime" #module #deffunc sleep int n start_time = timer() while timer() - start_time < n ; wend return #global wait 0 sleep 100 ; 処理に 100 ms 時間かかった st = timer() await 1000 ed = timer()…

Stringify 面白い

#include <stdio.h> #define STRINGIFY1(e) #e #define STRINGIFY2(e) STRINGIFY1(e) #define FOO 1 int main(void) { printf("%s\n", STRINGIFY1(FOO)); printf("%s\n", STRINGIFY2(FOO)); return 0; } FOO 1Ruby の STRINGIZE マクロで #define STRINGIZE(expr) STR</stdio.h>…