クラス 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.hpp の 66 行で定義されています。


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

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

コンストラクタ

引数:
file ファイル名

kernel_id.cpp の 59 行で定義されています。

00059                                             : file_( file )
00060   {
00061   }


関数

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

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

引数:
ostr 出力ストリーム

toppers::itron::cfg_kernel_cfg・toppers::itron::cfg_kernel_id・toppers::itron::jsp::kernel_chk・toppers::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.cpp の 124 行で定義されています。

参照元 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.cpp の 109 行で定義されています。

参照先 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_cfg・toppers::kernel_id・toppers::itron::kernel_chkで実装されています。

参照元 save().

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

ファイル名の参照

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

kernel_id.cpp の 99 行で定義されています。

参照元 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.cpp の 71 行で定義されています。

参照先 _・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 によって生成されました。