(toppers-users 507) TOPPERS/JSP のコンフィグレータ

Tatsuhiko Matsukawa KFC00725 @ nifty.ne.jp
2002年 9月 5日 (木) 11:15:46 JST


お世話になっております。

TOPPERS/JSPのコンフィグレータの中をの覗いているのですが、いくつか気に
なる点がありましたので、ご報告させて頂きます。
以下、コンフィグレータのビルドはVisualStudio Ver6を用い行っていますの
で、処理系によっては結果が異なるかもしれませんが。

(1) コンフィグレータの出力である、kernel_cfg.c/kernel_id.hの出力を
    mpstrstreamのデストラクタ中で行っているようですが、これがmain()の
    try/catchブロックの外になってしまうため、このファイル書き出しでエ
    ラー(出力先がリードオンリとか)となった場合、本来のエラーメッセージ
    (「ファイルが作れません」)が出ません。(Windowsでの実行の場合、
    "Abnormal program termination"になります。)

(2) 単に使い勝手の問題ですが・・・(これも上記(1)同様、デストラクタでフ
    ァイル出力を行っていることに起因すると思われます。)
    コンフィグレーションファイルの解析中にエラーとなったような場合でも
    ファイルkernel_cfg.c/kernel_id.hが作成されてしまいます。make等から
    コンフィグレータを呼び出しているような場合、エラーでも新しいタイム
    スタンプのこれらのファイルが作成されてしまうと、(ソースを修正せず
    に)再度makeを実行した場合に、コンフィグレータが実行されなくなって
    しまいます。

(3) ご承知の上でやっていらっしゃるならいいのですが・・・・
    jsp_perser.cppがperser.cppよりも先にリンクされるとプログラムが正常
    に動作しません。具体的には、perser.cpp642行の
      map<string, class ParseUnit *> Directive::container;
    のコンストラクタが、jsp_perser.cpp204行の
      DECLARE_DIRECTIVE(assigner,"assign_id")
    のコンストラクタよりも先に処理されるようにリンクされないと、正常に
    動作しません。(StaticAPI::containerも多分同様)

以上、ご参考まで。


************************
松川竜彦
KFC00725 @ nifty.ne.jp
************************