compact.h

やっぱり misc の抽象化構造が気に入らないので設計し直しを検討中。 追記: あんま得しなさそうなのでやめ。

まだ build が通らねえ…

SCM_VECTOR_VALID_INDEXP vector の定義上、こいつが SAL_ なのはおかしいのでは。 SCM_ASSERT やっと compile でけた。とりあえず segfault するのでそこから。しかし assertion failure が「何が」失敗したかも言わずに死に腐るのが発狂させられそうなので…

一回で test が通るのはどうもおかしいと思ってたら、svn up 後にもう一度 build しようとしたら通らん。どうやら二つ config.h があった方の override される側を編集してた (?) か何かでぜーんぜん compact でない状態で build されてたらしい。 で、問題…

完全にやる気が失せてたのを奮い立ってとっとと完成。Testing framework の方はイマイチな出来になってしまった。これを「代替品だ」とほざいて commit するのは気がひけるので experimental に入れてみる。 しかし、肝心の compact.h だが…一発で test が全…

やっぱり役に立たない

やっぱり cutter 邪魔なだけ。Patch 当てたりして動かしてみても、結局汎用の比較 assertion も無ければ test case の呼び出し code 作ってくれないし、なんか test-c/ に入ってる test_global.c とか error 出るし。そもそも patch が clean に当たらん (こ…

storage-fatty.h に追加する INIT で漫然と SAL_ 系 setter を使ってしまってた。失敗失敗。

storage-compact.h: #define SCM_SAL_CONS_MUTABLEP(o) (SCM_FALSE)えーっと、これは bug という事でいいのかな? (常に scm_true を返すべき?)

むー、ヤマケンさんは何かするんじゃなかったのかな。そろそろ手元の物体を commit して storage-fatty.h と storage-gc.c も含めた差し替えを始めようかと思ってるんだけど。

misc

だーー やりにくい。とりあえず動く + 読める程度には抽象化できるけど、ものすごく変化に弱い。変化に強くしようと層を挟むと最適化が compiler の手に負えなくなる。 最早汚いのは諦。太田さん良く書いたよこんなもん…

独り言

あかん…こういうの考え始めたら何も手につかん(苦笑) /* C macro で currying の真似事 */ #define CURRY3_1(x, y) x, y, #define FIN3(x, y, z) z; y; x #define OPAREN ( #define CPAREN ) #define EVAL(f) EVAL2(f) #define EVAL2(f) f #define IFACE(arg…

Macro

意味なかったorz

記憶が朧げに蘇ってきそうなよ〜なそーでもないよ〜な…

mcpp の document に目を通したけど、## については xglue () [↓でいう CAT()] が「よくある手」となってるだけで、特に buggy ではないらしい。件の macro 群を書いてたときには「評価」とか基礎的な概念の理解が固まってなかったから、単純に馬鹿だったと…

Parametrized symbol concatenation

あれーー? これって OK なのか。これが使えるんなら misc の実装は 10 倍ぐらい単純かつ柔軟にできる。 #define CAT(x, y) x##y #define IFACE(arg) INTERM(CAT(arg, _), arg) -- CAT(arg, Y) #define INTERM(a, b) FIN(a, (a), b, (b)) #define FIN(a, b, c…

これはどうなのか

#define SCM_OTHERS_SET_CAR_VAL(a, type, val) \ do { \ SCM_CELL_SET_CAR((a), (SCM_STRIP_GCBIT(val) \ | SCM_GCBIT(SCM_CELL_CAR(a)))); \ ← \ if (SCM_OTHERS_CAR_VAL_ALIGN_NONEP(type)) { \ /* store val's GCBIT to the CDR */ \ SCM_CELL_SET_CDR((…

( ゚д゚)ハッ! いつのまにか手段が目的に…orz

はへ?

/* * FIXME: Support 64-bit data models * [...] * - (low priority) change ScmObj definition to the union below to support * ILP32 with 64-bit long long */ #if 0 /* FIXME: adapt to this to support ILP32 with 64-bit long long */ /* To allow s…

これも無駄だなあ… #define SCM_SAL_EQ(a, b) (SCM_STRIP_GCBIT(a) == SCM_STRIP_GCBIT(b))ちっとも performance (memory/speed 両方) を追求する姿勢が伺えない。階層を強く分離する姿勢はいいと思うんだけど、performance-critical な部分で分離に固執して…