#include <ParamXMLPath.h>
Onikiri::ParamXMLPathのコラボレーション図
Public 型 | |
typedef Path::const_iterator | const_iterator |
typedef Path::iterator | iterator |
typedef boost::shared_ptr< Node > | NodePtr |
enum | NodeType { NT_NORMAL = 0, NT_ATTRIBUTE, NT_ARRAY, NT_COUNT_FUNCTION, NT_TEXT } |
NT_ARRAY | |
NT_ATTRIBUTE | |
NT_COUNT_FUNCTION | |
NT_NORMAL = 0 | |
NT_TEXT | |
typedef std::list< NodePtr > | Path |
Public メソッド | |
void | Add (const String &path) |
void | AddArray (const String &path, int index) |
void | AddAttribute (const String &path) |
const NodePtr & | back () const |
NodePtr & | back () |
const NodePtr | Back () const |
NodePtr & | Back () |
const_iterator | begin () const |
iterator | begin () |
const_iterator | end () const |
iterator | end () |
ParamXMLPath | operator+ (const char *rhs) const |
ParamXMLPath | operator+ (const String &rhs) const |
ParamXMLPath | operator+ (const ParamXMLPath &rhs) const |
ParamXMLPath & | operator+= (const char *rhs) |
ParamXMLPath & | operator+= (const String &rhs) |
ParamXMLPath & | operator+= (const ParamXMLPath &rhs) |
ParamXMLPath & | operator= (const char *rhs) |
ParamXMLPath & | operator= (const String &rhs) |
ParamXMLPath (const char *source) | |
ParamXMLPath (const std::string &source) | |
ParamXMLPath (const String &source) | |
ParamXMLPath (const ParamXMLPath &org) | |
ParamXMLPath () | |
void | Parse (Path &path, const String &str) |
void | pop_back () |
void | RemoveLast () |
void | SetArray (const ParamXMLPath &basePath, const String &relativePath, int index) |
String | ToString () const |
virtual | ~ParamXMLPath () |
Protected 型 | |
typedef std::vector< String > | TokenList |
Protected メソッド | |
TokenList::const_iterator | NextToken (const TokenList &tokens, TokenList::const_iterator cur, const String &source) |
Protected 変数 | |
Path | m_path |
構成 | |
struct | Node |
ParamXMLPath.h の 42 行で定義されています。
typedef Path::const_iterator Onikiri::ParamXMLPath::const_iterator |
ParamXMLPath.h の 97 行で定義されています。
typedef Path::iterator Onikiri::ParamXMLPath::iterator |
ParamXMLPath.h の 96 行で定義されています。
typedef boost::shared_ptr<Node> Onikiri::ParamXMLPath::NodePtr |
ParamXMLPath.h の 64 行で定義されています。
typedef std::list<NodePtr> Onikiri::ParamXMLPath::Path |
ParamXMLPath.h の 65 行で定義されています。
typedef std::vector<String> Onikiri::ParamXMLPath::TokenList [protected] |
ParamXMLPath.h の 108 行で定義されています。
ParamXMLPath.h の 46 行で定義されています。
00047 { 00048 NT_NORMAL = 0, 00049 NT_ATTRIBUTE, 00050 NT_ARRAY, 00051 NT_COUNT_FUNCTION, 00052 NT_TEXT, 00053 };
ParamXMLPath::ParamXMLPath | ( | ) |
ParamXMLPath::ParamXMLPath | ( | const ParamXMLPath & | org | ) |
ParamXMLPath::ParamXMLPath | ( | const String & | source | ) |
ParamXMLPath::ParamXMLPath | ( | const std::string & | source | ) |
ParamXMLPath::ParamXMLPath | ( | const char * | source | ) |
ParamXMLPath::~ParamXMLPath | ( | ) | [virtual] |
void ParamXMLPath::Add | ( | const String & | path | ) |
void ParamXMLPath::AddArray | ( | const String & | path, | |
int | index | |||
) |
ParamXMLPath.cpp の 297 行で定義されています。
参照元 Onikiri::EmulatorUtility::ProcessCreateParam::GetTargetBasePath()・Onikiri::ResourceBuilder::LoadParameterSection()・Onikiri::ParamDB::LoadXMLFile()・SetArray().
00298 { 00299 Parse( m_path, path ); 00300 m_path.back()->type = NT_ARRAY; 00301 m_path.back()->arrayIndex = index; 00302 }
関数の呼び出しグラフ:
Here is the caller graph for this function:
void ParamXMLPath::AddAttribute | ( | const String & | path | ) |
ParamXMLPath.cpp の 289 行で定義されています。
参照先 m_path・NT_ATTRIBUTE.
参照元 Onikiri::EmulatorUtility::ProcessCreateParam::GetTargetBasePath().
00290 { 00291 NodePtr node( new Node ); 00292 node->type = NT_ATTRIBUTE; 00293 node->str = path; 00294 m_path.push_back( node ); 00295 }
Here is the caller graph for this function:
const ParamXMLPath::NodePtr & ParamXMLPath::back | ( | ) | const |
ParamXMLPath::NodePtr & ParamXMLPath::back | ( | ) |
ParamXMLPath.cpp の 321 行で定義されています。
参照先 m_path.
参照元 Back()・Onikiri::ParamXMLTree::GetNodeArray().
00322 { 00323 return m_path.back(); 00324 }
Here is the caller graph for this function:
const ParamXMLPath::NodePtr ParamXMLPath::Back | ( | ) | const |
ParamXMLPath::NodePtr & ParamXMLPath::Back | ( | ) |
ParamXMLPath::const_iterator ParamXMLPath::begin | ( | ) | const |
ParamXMLPath::iterator ParamXMLPath::begin | ( | ) |
ParamXMLPath.cpp の 332 行で定義されています。
参照先 m_path.
参照元 Onikiri::ParamXMLTree::Get()・Onikiri::ParamXMLTree::GetNode()・operator+=()・Onikiri::ParamXMLTree::Set()・ToString().
00333 { 00334 return m_path.begin(); 00335 }
Here is the caller graph for this function:
ParamXMLPath::const_iterator ParamXMLPath::end | ( | ) | const |
ParamXMLPath::iterator ParamXMLPath::end | ( | ) |
ParamXMLPath.cpp の 337 行で定義されています。
参照先 m_path.
参照元 Onikiri::ParamXMLTree::Get()・Onikiri::ParamXMLTree::GetNode()・operator+=()・Onikiri::ParamXMLTree::Set()・ToString().
00338 { 00339 return m_path.end(); 00340 }
Here is the caller graph for this function:
ParamXMLPath::TokenList::const_iterator ParamXMLPath::NextToken | ( | const TokenList & | tokens, | |
TokenList::const_iterator | cur, | |||
const String & | source | |||
) | [protected] |
ParamXMLPath.cpp の 75 行で定義されています。
参照先 THROW_RUNTIME_ERROR.
参照元 Parse().
00079 { 00080 ++cur; 00081 if( cur == tokens.end() ){ 00082 THROW_RUNTIME_ERROR( "'%s' is an invalid path format.", source.c_str() ); 00083 } 00084 return cur; 00085 }
Here is the caller graph for this function:
ParamXMLPath ParamXMLPath::operator+ | ( | const char * | rhs | ) | const |
ParamXMLPath.cpp の 248 行で定義されています。
00249 { 00250 ParamXMLPath tmp = *this; 00251 tmp += rhs; 00252 return tmp; 00253 }
ParamXMLPath ParamXMLPath::operator+ | ( | const String & | rhs | ) | const |
ParamXMLPath.cpp の 241 行で定義されています。
00242 { 00243 ParamXMLPath tmp = *this; 00244 tmp += rhs; 00245 return tmp; 00246 }
ParamXMLPath ParamXMLPath::operator+ | ( | const ParamXMLPath & | rhs | ) | const |
ParamXMLPath.cpp の 234 行で定義されています。
00235 { 00236 ParamXMLPath tmp = *this; 00237 tmp += rhs; 00238 return tmp; 00239 }
ParamXMLPath & ParamXMLPath::operator+= | ( | const char * | rhs | ) |
ParamXMLPath & ParamXMLPath::operator+= | ( | const String & | rhs | ) |
ParamXMLPath & ParamXMLPath::operator+= | ( | const ParamXMLPath & | rhs | ) |
ParamXMLPath.cpp の 214 行で定義されています。
00215 { 00216 for( const_iterator i = rhs.begin(); i != rhs.end(); ++i ){ 00217 m_path.push_back( *i ); 00218 } 00219 return *this; 00220 }
関数の呼び出しグラフ:
ParamXMLPath & ParamXMLPath::operator= | ( | const char * | rhs | ) |
ParamXMLPath & ParamXMLPath::operator= | ( | const String & | rhs | ) |
ParamXMLPath.cpp の 89 行で定義されています。
参照先 NextToken()・NT_ARRAY・NT_ATTRIBUTE・NT_COUNT_FUNCTION・NT_TEXT・Onikiri::String::split()・THROW_RUNTIME_ERROR.
参照元 Add()・AddArray()・operator+=()・operator=()・ParamXMLPath().
00090 { 00091 const vector<String>& tokens = source.split( "/", "[]@#()" ); 00092 for( vector<String>::const_iterator i = tokens.begin(); 00093 i != tokens.end(); 00094 ++i 00095 ){ 00096 NodePtr node( new Node ); 00097 const String& token = *i; 00098 00099 if( token == "@" ){ 00100 00101 // Attribute 00102 i = NextToken( tokens, i, source ); 00103 node->type = NT_ATTRIBUTE; 00104 node->str = *i; 00105 00106 } 00107 else if( token == "#" ){ 00108 00109 // Count function (abbreviation version) 00110 i = NextToken( tokens, i, source ); 00111 node->type = NT_COUNT_FUNCTION; 00112 node->str = *i; 00113 00114 } 00115 else{ 00116 00117 node->str = token; 00118 if( i+1 != tokens.end() ){ 00119 00120 const String& next = *NextToken( tokens, i, source ); 00121 00122 if( next == "[" ){ 00123 // Array 00124 node->type = NT_ARRAY; 00125 00126 i = NextToken( tokens, i, source ); // i: '[' 00127 i = NextToken( tokens, i, source ); // i: '<number>' 00128 node->arrayIndex = lexical_cast<int>(*i); 00129 00130 i = NextToken( tokens, i, source ); // i: ']' 00131 if( *i != "]" ){ 00132 THROW_RUNTIME_ERROR( "'%s' has an invalid array format.", source.c_str() ); 00133 } 00134 } 00135 else if( next == "(" ){ 00136 00137 // XPath functions or text() 00138 const String& function = node->str; 00139 00140 if( function == "text" ){ 00141 00142 // text() node. 00143 node->type = NT_TEXT; 00144 i = NextToken( tokens, i, source ); // i: '(' 00145 i = NextToken( tokens, i, source ); // i: ')' 00146 if( *i != ")" ){ 00147 THROW_RUNTIME_ERROR( "'%s' has an invalid text format.", source.c_str() ); 00148 } 00149 00150 } 00151 else if( function == "count" ){ 00152 00153 // Count function 00154 node->type = NT_COUNT_FUNCTION; 00155 00156 i = NextToken( tokens, i, source ); // '(' 00157 i = NextToken( tokens, i, source ); // '<body>' 00158 node->str = *i; 00159 i = NextToken( tokens, i, source ); // ')' 00160 if( *i != ")" ){ 00161 THROW_RUNTIME_ERROR( "'%s' has an invalid function format.", source.c_str() ); 00162 } 00163 00164 } 00165 else{ 00166 THROW_RUNTIME_ERROR( "'%s' has an invalid path format.", source.c_str() ); 00167 } 00168 00169 } 00170 else{ 00171 // Normal path 00172 } 00173 } // if( i+1 != tokens.end() ){ 00174 else{ 00175 // Normal path 00176 } 00177 00178 } // if( *i == "@" ){ 00179 00180 // Add a parsed node. 00181 path.push_back( node ); 00182 00183 } // for( vector<String>::const_iterator i = tokens.begin(); 00184 }
関数の呼び出しグラフ:
Here is the caller graph for this function:
void ParamXMLPath::pop_back | ( | ) |
ParamXMLPath.cpp の 314 行で定義されています。
参照先 m_path.
参照元 Onikiri::ParamXMLTree::GetNodeArray()・RemoveLast().
Here is the caller graph for this function:
void ParamXMLPath::RemoveLast | ( | ) |
void ParamXMLPath::SetArray | ( | const ParamXMLPath & | basePath, | |
const String & | relativePath, | |||
int | index | |||
) |
ParamXMLPath.cpp の 304 行で定義されています。
参照先 AddArray().
参照元 Onikiri::ResourceBuilder::ConstructResources().
00305 { 00306 *this = basePath; 00307 AddArray( relativePath, index ); 00308 }
関数の呼び出しグラフ:
Here is the caller graph for this function:
String ParamXMLPath::ToString | ( | ) | const |
ParamXMLPath.cpp の 186 行で定義されています。
参照先 begin()・end()・Onikiri::String::format()・NT_ARRAY・NT_ATTRIBUTE・NT_COUNT_FUNCTION・NT_TEXT.
参照元 Onikiri::ParamDB::AddParameter()・Onikiri::ResourceBuilder::ConstructResources()・Onikiri::ParamXMLTree::Get()・Onikiri::ParamDB::Get()・Onikiri::ResourceBuilder::GetConfigurationPath()・Onikiri::ParamXMLTree::GetNode()・Onikiri::EmulatorUtility::ProcessCreateParam::GetTargetBasePath()・Onikiri::ResourceBuilder::LoadParameterSection()・Onikiri::ResourceBuilder::LoadStructureSection()・Onikiri::ParamXMLTree::Set()・Onikiri::PhysicalResourceNode::SetInfo()・Onikiri::ParamDB::ToParam()・Onikiri::ParamDB::ToParamRaw().
00187 { 00188 String ret; 00189 for( const_iterator i = begin(); i != end(); ++i ){ 00190 ret += "/"; 00191 00192 const NodePtr& node = *i; 00193 switch( node->type ){ 00194 case NT_ARRAY: 00195 ret += String().format( "%s[%d]", node->str.c_str(), node->arrayIndex ); 00196 break; 00197 case NT_COUNT_FUNCTION: 00198 ret += String().format( "#%s", node->str.c_str() ); 00199 break; 00200 case NT_ATTRIBUTE: 00201 ret += String().format( "@%s", node->str.c_str() ); 00202 break; 00203 case NT_TEXT: 00204 ret += "text()"; 00205 break; 00206 default: 00207 ret += node->str; 00208 break; 00209 } 00210 } 00211 return ret; 00212 }
関数の呼び出しグラフ:
Here is the caller graph for this function:
Path Onikiri::ParamXMLPath::m_path [protected] |
ParamXMLPath.h の 107 行で定義されています。
参照元 Add()・AddArray()・AddAttribute()・back()・begin()・end()・operator+=()・operator=()・ParamXMLPath()・pop_back().