クラス toppers::cfg_base

設定ファイル出力のための基底クラス [詳細]

#include "toppers/kernel_id.hpp"

toppers::cfg_baseに対する継承グラフ

Inheritance graph
[凡例]
toppers::cfg_baseのコラボレーション図

Collaboration graph
[凡例]
すべてのメンバ一覧

Public メソッド

 cfg_base (const std::string &file)
 コンストラクタ
virtual ~cfg_base ()
 デストラクタ
void save () const
 設定ファイルのセーブ
const std::string file () const
 ファイル名の参照

Protected メソッド

virtual bool do_save (std::ostream &ostr) const =0
 ファイル出力内容の規定
virtual void do_body (std::ostream &ostr) const =0
 ファイル出力内容の主要部分の規定
virtual void do_file_header (std::ostream &ostr) const
 生成ファイルのヘッダ情報の出力
virtual void do_depend () const
 ターゲット依存処理

説明

設定ファイル出力のための基底クラス

kernel_id.hpp66 行で定義されています。


コンストラクタとデストラクタ

toppers::cfg_base::cfg_base const std::string &  file  )  [explicit]
 

コンストラクタ

引数:
file ファイル名

kernel_id.cpp59 行で定義されています。

00059                                             : file_( file )
00060   {
00061   }


関数

void toppers::cfg_base::do_body std::ostream &  ostr  )  const [protected, pure virtual]
 

ファイル出力内容の主要部分の規定

引数:
ostr 出力ストリーム

toppers::itron::cfg_kernel_cfgtoppers::itron::cfg_kernel_idtoppers::itron::jsp::kernel_chktoppers::itron::fdmp::class_idで実装されています。

参照元 toppers::kernel_id::do_save()toppers::kernel_cfg::do_save()toppers::itron::kernel_chk::do_save().

void toppers::cfg_base::do_depend  )  const [protected, virtual]
 

ターゲット依存処理

M32Cのベクタテーブルなど、ターゲットに依存する処理を行う必要がある場合は この仮想関数をオーバーライドしてください。

toppers::itron::cfg_kernel_cfgで再定義されています。

kernel_id.cpp124 行で定義されています。

参照元 save()toppers::itron::fdmp::class_id::save().

00125   {
00126   }

void toppers::cfg_base::do_file_header std::ostream &  ostr  )  const [protected, virtual]
 

生成ファイルのヘッダ情報の出力

引数:
ostr 出力ストリーム

kernel_id.cpp109 行で定義されています。

参照先 file().

参照元 toppers::kernel_id::do_save()toppers::kernel_cfg::do_save()toppers::itron::kernel_chk::do_save().

00110   {
00111     std::time_t t = std::time( 0 );
00112     ostr << boost::format( "/*\n"
00113                            " *  %1%\n"
00114                            " *  %2%"  // ctimeが返す文字列は改行文字付きなので'\n'を省略する
00115                            " */\n" ) % file() % std::ctime( &t );
00116   }

関数の呼び出しグラフ:

bool toppers::cfg_base::do_save std::ostream &  ostr  )  const [protected, pure virtual]
 

ファイル出力内容の規定

引数:
ostr 出力ストリーム
戻り値:
true ファイルに書き込む必要あり
false ファイルに書き込み必要なし

toppers::kernel_cfgtoppers::kernel_idtoppers::itron::kernel_chkで実装されています。

参照元 save().

const std::string toppers::cfg_base::file  )  const
 

ファイル名の参照

戻り値:
ファイル名を返す

kernel_id.cpp99 行で定義されています。

参照元 do_file_header()toppers::kernel_id::do_save()toppers::itron::fdmp::class_id::save().

00100   {
00101     boost::filesystem::path path( file_, boost::filesystem::native );
00102     return path.leaf();
00103   }

void toppers::cfg_base::save  )  const
 

設定ファイルのセーブ

この関数は、内部で保持している名前のファイルに、 do_save 仮想関数で 定義された内容を出力します。
do_save に渡される出力ストリームは内部的なものであり、その操作によって 直接ファイルに書き込まれることはありません。(例外安全のため)

toppers::itron::fdmp::class_idで再定義されています。

kernel_id.cpp71 行で定義されています。

参照先 _do_depend()do_save()rout.

00072   {
00073     std::ostringstream osstr;
00074     if ( do_save( osstr ) )
00075     {
00076       try
00077       {
00078         std::ofstream ofstr( file_.c_str() );
00079         if ( ofstr.fail() )
00080         {
00081           rout.error( _( "cannot create file `%1%\'" ) % file_ );
00082         }
00083         ofstr << osstr.str() << std::endl;
00084         ofstr.close();
00085         do_depend();
00086       }
00087       catch ( ... )
00088       {
00089         std::remove( file_.c_str() );
00090         throw;
00091       }
00092     }
00093   }

関数の呼び出しグラフ:


このクラスの説明は次のファイルから生成されました:
Copyright © 2006 by TAKAGI Nobuhisa.
このページは Wed Apr 12 16:32:03 2006 に Doxygen によって生成されました。