|
|
specified_object.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/specified_object.cpp 00039 */ 00040 #include "toppers/itron/specified_object.hpp" 00041 #include <cctype> 00042 #include <boost/lexical_cast.hpp> 00043 00044 namespace toppers 00045 { 00046 namespace itron 00047 { 00048 00065 const std::string kernel_object_policy_base::generator::operator()( boost::shared_ptr<kernel_cfg::initial_block> pinib ) 00066 { 00067 std::string str; 00068 std::string::const_iterator iter( format_.begin() ), last( format_.end() ); 00069 while ( iter != last ) 00070 { 00071 char ch = *iter; 00072 if ( ch != '@' ) 00073 { 00074 str += ch; 00075 ++iter; 00076 } 00077 else 00078 { 00079 std::string key; 00080 switch ( *++iter ) 00081 { 00082 case '@': 00083 str += '@'; 00084 ++iter; 00085 continue; 00086 case '$': 00087 case '%': 00088 case '#': 00089 key = *iter; 00090 ++iter; 00091 break; 00092 } 00093 while ( iter != last ) 00094 { 00095 ch = *iter; 00096 if ( !std::isalnum( static_cast<unsigned char>( ch ) ) && ch != '_' ) 00097 { 00098 if ( ch == '\\' ) 00099 { 00100 ++iter; 00101 } 00102 break; 00103 } 00104 key += ch; 00105 ++iter; 00106 } 00107 if ( key == "id" ) // "id"の場合だけget関数で取得できないので... 00108 { 00109 str += boost::lexical_cast<std::string>( pinib->id() ); 00110 } 00111 else 00112 { 00113 str += pinib->get( key ); 00114 } 00115 } 00116 } 00117 return str; 00118 } 00119 00120 const char kernel_object_policy_base::name_[] = ""; 00121 const char kernel_object_policy_base::symbol_[] = ""; 00122 const char* const kernel_object_policy_base::apis_[] = { 0 }; 00123 const char* const kernel_object_policy_base::params_[] = { 0 }; 00124 const char* const kernel_object_policy_base::apis2_[] = { 0 }; 00125 const char* const kernel_object_policy_base::params2_[] = { 0 }; 00126 const char* const kernel_object_policy_base::prefix_ = 0; 00127 const char kernel_object_policy_base::region_format_[] = ""; 00128 const char kernel_object_policy_base::init_format_[] = ""; 00129 00130 } 00131 } Copyright © 2006 by TAKAGI Nobuhisa. このページは Wed Apr 12 16:31:57 2006 に Doxygen によって生成されました。 |