クラス toppers::kernel_id

"kernel_id.h"ファイル出力のための基底クラス [詳細]

#include "toppers/kernel_id.hpp"

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

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

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

Public 型

typedef std::vector< boost::shared_ptr<
id_number > > 
id_array

Public メソッド

 kernel_id (const std::string &file=std::string("kernel_id.h"))
 コンストラクタ
const id_arrayget_id_array (const std::string &key) const
 id_number 列の参照

Protected メソッド

void insert_id (const std::string &key, const boost::shared_ptr< id_number > &id)
 id_number の挿入
void clear_id_array (const std::string &key)
 id_number 列の消去
virtual bool do_save (std::ostream &ostr) const
 ファイル出力内容の規定

Static Protected メソッド

static const std::string include_guard_macro (const std::string &file)
 インクルードガード用のマクロ名の生成

構成

class  id_number
 オブジェクトID番号ブロックの基底クラス [詳細]

説明

"kernel_id.h"ファイル出力のための基底クラス

参照:
kernel_id::id_number, kernel_cfg

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


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

toppers::kernel_id::kernel_id const std::string &  file = std::string( "kernel_id.h" )  )  [explicit]
 

コンストラクタ

引数:
file ファイル名

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

00183                                               : cfg_base( file )
00184   {
00185   }


関数

void toppers::kernel_id::clear_id_array const std::string &  key  )  [protected]
 

id_number 列の消去

引数:
key id_number 列を特定するキー。通常、オブジェクト名

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

00220   {
00221     id_map_[key].clear();
00222   }

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

ファイル出力内容の規定

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

toppers::cfg_baseを実装しています。

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

参照先 toppers::cfg_base::do_body()toppers::cfg_base::do_file_header()toppers::cfg_base::file()include_guard_macro().

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

00225   {
00226     do_file_header( ostr );
00227 
00228     const std::string macro( include_guard_macro( file() ) );
00229     ostr << boost::format( "#ifndef %1%\n"
00230                            "#define %1%\n" ) % macro;
00231     ostr << '\n';
00232     do_body( ostr );
00233     ostr << boost::format( "#endif\t/* ! %1% */\n" ) % macro;
00234     return true;
00235   }

関数の呼び出しグラフ:

const kernel_id::id_array * toppers::kernel_id::get_id_array const std::string &  key  )  const
 

id_number 列の参照

引数:
key id_number 列を特定するキー。通常、オブジェクト名
戻り値:
key に対応する id_number 列へのポインタを返す

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

参照元 toppers::itron::fdmp::class_id::do_body()toppers::itron::jsp::file_generator< task_policy >::generate_kernel_id().

00193   {
00194     std::map<std::string, id_array>::const_iterator iter( id_map_.find( key ) );
00195     if ( iter == id_map_.end() )
00196     {
00197       return 0;
00198     }
00199     return &iter->second;
00200   }

const std::string toppers::kernel_id::include_guard_macro const std::string &  file  )  [static, protected]
 

インクルードガード用のマクロ名の生成

引数:
file ファイル名
戻り値:
生成したマクロ名
ファイル名に対応するインクルードガード用のマクロ名を生成します。 生成ルールは、英字はすべて大文字に変換し、英数字以外は下線に変換します。 例えば、ファイル名がkernel_id.hであればKERNEL_ID_Hとなります。

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

参照先 toppers::toupper().

参照元 do_save().

00261   {
00262     std::stringstream sstr;
00263     const std::string::const_iterator last( file.end() );
00264     for ( std::string::const_iterator iter( file.begin() ); iter != last; ++iter )
00265     {
00266       int ch = static_cast<unsigned char>( *iter );
00267       if ( std::isalnum( ch ) )
00268       {
00269         sstr << static_cast<char>( std::toupper( ch ) );
00270       }
00271       else if ( std::ispunct( ch ) || ch == ' ' )
00272       {
00273         sstr << '_';
00274       }
00275       else
00276       {
00277         sstr << 'x' << std::hex << ch;
00278       }
00279     }
00280     return sstr.str();
00281   }

関数の呼び出しグラフ:

void toppers::kernel_id::insert_id const std::string &  key,
const boost::shared_ptr< id_number > &  value
[protected]
 

id_number の挿入

引数:
key id_number 列を特定するキー。通常、オブジェクト名
value 挿入する id_numeber へのスマートポインタ

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

参照元 toppers::itron::cfg_kernel_id::do_load()toppers::itron::fdmp::class_id::load().

00208   {
00209     if ( value )
00210     {
00211       id_map_[key].push_back( value );
00212     }
00213   }


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