SigScheme開発録 (30)
エラー処理
エラー処理周りについて井上さんが書かれているので、僕の考えも。初期構想ではSigScm_Errorでformat stringを自前で解析してScmObjも呼出側から簡単に利用できるようにしたいと思っていた。
SigScm_Error("func : string required but got %O", obj); #define WRONGTYPE_ERROR(funcname, validtype, wrongobj) (SigScm_Error("%s : %s required but got %O", funcname, validtype, wrongobj))
しかし、これをする為には自前でformat stringを解析しなければならない。呼出側からすればエレガントだけれど、呼び出される側としては最悪。結局どっちが肥大化するかという問題な気がする。今の形(Scm_ErrorObj)になった理由は、まず「作業が楽だった」のと後は「ScmObjを複数表示したいというニーズがあまりなさそうだったから、1つ決め打ちでいいや」と思ったからだ。
File 内の区分け
同じく井上さんのエントリへの返答。「「C 言語的に何をしているか」ではなくて「何を書いてるか」でわけた方がよい」というのは最もだと思うので、気づいた所から直して行きましょう。
バックトレース
trace_frameに環境を持たせることで、バックトレースを吐くときに変数の内容を表示する機能を付けてみた@r1680。