クラス テンプレート toppers::itron::specified_factory< Policy >

特定カーネル向けファクトリーを生成するためのテンプレートクラス [詳細]

#include "toppers/itron/specified_factory.hpp"

toppers::itron::specified_factory< Policy >に対する継承グラフ

Inheritance graph
[凡例]
toppers::itron::specified_factory< Policy >のコラボレーション図

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

Public 型

typedef Policy::sequence sequence
 カーネルオブジェクトポリシー型リスト

Public メソッド

 specified_factory (const cmdline::option_array &options, const std::string &version, long prid)
 コンストラクタ

Static Public メソッド

static const boost::shared_ptr<
cfg_factory
build (const cmdline::option_array &options, const std::string &version)
 ファクトリの構築

Protected メソッド

virtual const boost::shared_ptr<
std::vector< kernel_cfg_generator_type > > 
do_create_kernel_cfg_generators () const
 create_kernel_cfg_generators から呼び出される実際の処理
virtual const boost::shared_ptr<
std::vector< kernel_id_generator_type > > 
do_create_kernel_id_generators () const
 create_kernel_id_generators から呼び出される実際の処理
virtual const boost::shared_ptr<
std::vector< kernel_object::builder_type > > 
do_get_kernel_object_builders () const
 create_kernel_object 関数内で使用する生成関数群の取得
virtual const boost::shared_ptr<
std::vector< std::string > > 
do_get_kernel_object_names () const
virtual extra_initializer_type do_get_extra_initializer () const
virtual const boost::shared_ptr<
kernel_chk
do_create_kernel_chk () const

Static Protected メソッド

template<class Pred>
static const boost::shared_ptr<
std::vector< typename Pred::result_type > > 
get_funcions (Pred pred)
 各カーネルオブジェクト向けの関数群の取得

構成

struct  pred_kernel_object_name

説明

template<class Policy>
class toppers::itron::specified_factory< Policy >

特定カーネル向けファクトリーを生成するためのテンプレートクラス

テンプレート引数 Policy には次のメンバを持つ型を指定してください。

  // toppers::itron::task_policy 等のカーネルオブジェクト毎のポリシークラスの型シーケンス
  // 通常 include_policy を先頭要素に指定すること。
  typedef boost::mpl::list<...> sequence;

  // ポリシーがサポートするカーネル用の kernel_chk クラス
  typedef << toppers::itron::kernel_chk からの派生クラス>> kernel_chk;

  // "-kernel"オプションで指定した文字列が、ポリシーがサポートするカーネルに合致する
  // かどうかの判定関数。合致する場合はtrueを返す。
  static bool match_version( const std::string& ver );

  // 特定のカーネルオブジェクトに属さないカーネル固有の初期化コードの生成関数
  // JSPカーネルの場合、 _kernel_tmevt_heap 配列の生成がこれに相当する。
  static void extra_init( const kernel_cfg& cfg, std::ostream& ostr );

  // TKERNEL_PRIDマクロの値
  static long prid_;

specified_factory.hpp106 行で定義されています。


型定義

template<class Policy>
typedef Policy::sequence toppers::itron::specified_factory< Policy >::sequence
 

カーネルオブジェクトポリシー型リスト

Boost.MPL における型シーケンス( boost::mpl::list<> )を表します。

specified_factory.hpp114 行で定義されています。


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

template<class Policy>
toppers::itron::specified_factory< Policy >::specified_factory const cmdline::option_array options,
const std::string &  version,
long  prid
[inline]
 

コンストラクタ

引数:
options コマンドラインオプション
version カーネル指定バージョン文字列
prid TKERNEL_PRID マクロの値

specified_factory.hpp122 行で定義されています。

00123         : cfg_factory( options, version, prid )
00124       {
00125       }


関数

template<class Policy>
static const boost::shared_ptr<cfg_factory> toppers::itron::specified_factory< Policy >::build const cmdline::option_array options,
const std::string &  version
[inline, static]
 

ファクトリの構築

引数:
options コマンドラインオプション
version カーネル指定バージョン文字列
戻り値:
構築に成功すればファクトリへのスマートポインタを返す
この関数は version で指定されたバージョン文字列が specified_factory<Policy> のものと 合致すればファクトリを構築します。

toppers::itron::cfg_factoryを再定義しています。

specified_factory.hpp136 行で定義されています。

参照先 toppers::factory::options().

00137       {
00138         boost::shared_ptr<cfg_factory> ptr;
00139         if ( Policy::match_version( version ) )
00140         {
00141           ptr.reset( new specified_factory<Policy>( options, version, Policy::prid_ ) );
00142         }
00143         return ptr;
00144       }

関数の呼び出しグラフ:

template<class Policy>
virtual const boost::shared_ptr<std::vector<kernel_cfg_generator_type> > toppers::itron::specified_factory< Policy >::do_create_kernel_cfg_generators  )  const [inline, protected, virtual]
 

create_kernel_cfg_generators から呼び出される実際の処理

戻り値:
kernel_cfg.c用の生成関数群を指すスマートポインタを返す

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

specified_factory.hpp165 行で定義されています。

参照先 toppers::itron::specified_factory< Policy >::get_funcions().

00166       {
00167         pred_kernel_cfg pred;
00168         return get_funcions( pred );
00169       }

関数の呼び出しグラフ:

template<class Policy>
virtual const boost::shared_ptr<std::vector<kernel_id_generator_type> > toppers::itron::specified_factory< Policy >::do_create_kernel_id_generators  )  const [inline, protected, virtual]
 

create_kernel_id_generators から呼び出される実際の処理

戻り値:
kernel_id.h用の生成関数群を指すスマートポインタを返す

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

specified_factory.hpp170 行で定義されています。

参照先 toppers::itron::specified_factory< Policy >::get_funcions().

00171       {
00172         pred_kernel_id pred;
00173         return get_funcions( pred );
00174       }

関数の呼び出しグラフ:

template<class Policy>
virtual const boost::shared_ptr<std::vector<kernel_object::builder_type> > toppers::itron::specified_factory< Policy >::do_get_kernel_object_builders  )  const [inline, protected, virtual]
 

create_kernel_object 関数内で使用する生成関数群の取得

戻り値:
生成関数群のベクターへのスマートポインタを返す

toppers::itron::cfg_factoryを実装しています。

specified_factory.hpp175 行で定義されています。

参照先 toppers::itron::specified_factory< Policy >::get_funcions().

00176       {
00177         pred_kernel_object pred;
00178         return get_funcions( pred );
00179       }

関数の呼び出しグラフ:

template<class Policy>
template<class Pred>
static const boost::shared_ptr<std::vector<typename Pred::result_type> > toppers::itron::specified_factory< Policy >::get_funcions Pred  pred  )  [inline, static, protected]
 

各カーネルオブジェクト向けの関数群の取得

引数:
pred 関数取得のための述語
戻り値:
関数群を格納した std::vector へのスマートポインタを返す
Pred には次のメンバを持つクラス型を指定してください。
  typedef <<関数へのポインタ型>> result_type;
  template <typename T> void operator()( const T& ) const;
  boost::shared_ptr<std::vector<result_type> > result_;

specified_factory.hpp159 行で定義されています。

参照元 toppers::itron::specified_factory< Policy >::do_create_kernel_cfg_generators()toppers::itron::specified_factory< Policy >::do_create_kernel_id_generators()toppers::itron::specified_factory< Policy >::do_get_kernel_object_builders().

00160       {
00161         boost::mpl::for_each< sequence >( pred );
00162         return pred.result_;
00163       }


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