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

mandrake mandrake @ imail.plala.or.jp
2002年 9月 7日 (土) 01:01:27 JST


豊橋技術科学大学の若林です。

まず、「delete this;」問題から。

「delete this;」のある場所ですが、ツリーのノード削除コードです。ノードに
対してerase()をやったら、そのノード以下を親から切り離して削除したいと
思ったのですが、ツリーには動的/静的に生成されたものが混ぜ混ぜになるの
で、動的に生成されたものだけ自滅してもらうために「delete this;」を使いま
した。

そのため、newで確保されていることは保証されていますし(new演算子に細工)、
派生もしていないのですが、間接的にpublicになっているのが悩みの種です。後
ろめたさがあるのは確かなので、代替法を検討してみます。

---8<---

続いてコンフィギュレータの修正ですが、次の修正を加えました。

・デストラクタ内での例外スローの抑止
   - Exception
   - mpstrstream
・コンパイル順序によらないコードへの修正
    - 静的変数を静的メンバ内へ移動
    - Componentクラスのコンストラクタに起動優先度を追加
・エラー発生時にはkernel_cfg.c/kernel_id.hを更新しないよう修正
    - Componentクラスに仮想関数onFatalExitを追加
・エラーメッセージの先頭に "ファイル名:行番号" が来るよう修正
    - gccのスタイルを採用 ->" foo.cfg:123: [Error] エラーです"
・Garbage::finalCleanupの位置の修正
・処理しなかったAPIを標準出力に出すようなオプションを追加
    (ソフトウェアコンポーネント用コンフィギュレータ向けの改造)
    - ユーザ向けのメッセージをすべてstderr(cerr)に変更
・文字列としてシングルクォート囲いも許すように修正
・処理後にツリーのうち無駄な枝葉を刈り取るよう修正
・以前話題に上がった「周期起動タスク生成静的API」をテスト実装

今回の修正に関してアドバイスという形でご協力頂いた松川さん、高木さんのお
二方に改めて御礼申し上げます。

他に修正候補がありましたら、お寄せ頂ければ幸いです。特に中を知っていると
わからない「このエラーメッセージは意味不明」「このメッセージは不親切この
上なし」といったユーザの視点でのコメントは非常に助かります。

--------
  わかばやし たかゆき (mailto:takayuki @ ertl.ics.tut.ac.jp)