|
|
chk_factory.cpp00001 /* 00002 * TOPPERS/FDMP Kernel 00003 * Toyohashi Open Platform for Embedded Real-Time Systems/ 00004 * Function Distributed Multiprocessor Kernel 00005 * 00006 * Copyright (C) 2005 by Takagi Nobuhisa 00007 * 00008 * 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation 00009 * によって公表されている GNU General Public License の Version 2 に記 00010 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア 00011 * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下, 00012 * 利用と呼ぶ)することを無償で許諾する. 00013 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 00014 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 00015 * スコード中に含まれていること. 00016 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 00017 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 00018 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 00019 * の無保証規定を掲載すること. 00020 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 00021 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 00022 * と. 00023 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 00024 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 00025 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 00026 * 報告すること. 00027 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 00028 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 00029 * 00030 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 00031 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 00032 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 00033 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 00034 * 00035 */ 00036 00037 /* 00038 * toppers/itron/chk_factory.cpp 00039 */ 00040 #include "toppers/itron/chk_factory.hpp" 00041 00042 namespace toppers 00043 { 00044 namespace itron 00045 { 00046 00052 chk_factory::chk_factory( const cmdline::option_array& options, long prid ) 00053 : options_( new cmdline::option_array( options ) ), prid_( prid ) 00054 { 00055 } 00056 00062 const boost::shared_ptr<chk_factory> chk_factory::build( const cmdline::option_array& options, long prid ) 00063 { 00064 typedef std::vector<builder_type>::const_iterator const_iterator; 00065 for ( const_iterator iter( builders().begin() ), last( builders().end() ); iter != last; ++iter ) 00066 { 00067 boost::shared_ptr<chk_factory> ptr( ( *iter )( options, prid ) ); 00068 if ( ptr ) 00069 { 00070 return ptr; 00071 } 00072 } 00073 return boost::shared_ptr<chk_factory>(); 00074 } 00075 00082 void chk_factory::register_builder( builder_type builder ) 00083 { 00084 builders().push_back( builder ); 00085 } 00086 00090 void chk_factory::clear_builders() 00091 { 00092 builders().clear(); 00093 } 00094 00099 void chk_factory::global( const boost::shared_ptr<chk_factory>& factory ) 00100 { 00101 global_factory() = factory; 00102 } 00103 00108 const boost::shared_ptr<chk_factory> chk_factory::global() 00109 { 00110 return global_factory(); 00111 } 00112 00120 std::vector<chk_factory::builder_type>& chk_factory::builders() 00121 { 00122 static std::vector<builder_type> builders_array; 00123 return builders_array; 00124 } 00125 00133 boost::shared_ptr<chk_factory>& chk_factory::global_factory() 00134 { 00135 static boost::shared_ptr<chk_factory> instance( build( cmdline::option_array(), 0x0001 ) ); 00136 return instance; 00137 } 00138 00139 } 00140 } Copyright © 2006 by TAKAGI Nobuhisa. このページは Wed Apr 12 16:31:56 2006 に Doxygen によって生成されました。 |