src/Env/Param/ParamXMLPath.h

説明を見る。
00001 // 
00002 // Copyright (c) 2005-2008 Kenichi Watanabe.
00003 // Copyright (c) 2005-2008 Yasuhiro Watari.
00004 // Copyright (c) 2005-2008 Hironori Ichibayashi.
00005 // Copyright (c) 2008-2009 Kazuo Horio.
00006 // Copyright (c) 2009-2013 Naruki Kurata.
00007 // Copyright (c) 2005-2013 Ryota Shioya.
00008 // Copyright (c) 2005-2013 Masahiro Goshima.
00009 // 
00010 // This software is provided 'as-is', without any express or implied
00011 // warranty. In no event will the authors be held liable for any damages
00012 // arising from the use of this software.
00013 // 
00014 // Permission is granted to anyone to use this software for any purpose,
00015 // including commercial applications, and to alter it and redistribute it
00016 // freely, subject to the following restrictions:
00017 // 
00018 // 1. The origin of this software must not be misrepresented; you must not
00019 // claim that you wrote the original software. If you use this software
00020 // in a product, an acknowledgment in the product documentation would be
00021 // appreciated but is not required.
00022 // 
00023 // 2. Altered source versions must be plainly marked as such, and must not be
00024 // misrepresented as being the original software.
00025 // 
00026 // 3. This notice may not be removed or altered from any source
00027 // distribution.
00028 // 
00029 // 
00030 
00031 
00032 //
00033 // Parameter XML Path
00034 //
00035 
00036 #ifndef ENV_PARAM_PARAM_XML_PATH_H
00037 #define ENV_PARAM_PARAM_XML_PATH_H
00038 
00039 namespace Onikiri
00040 {
00041 
00042     class ParamXMLPath
00043     {
00044     public:
00045 
00046         enum NodeType
00047         {
00048             NT_NORMAL = 0,
00049             NT_ATTRIBUTE,
00050             NT_ARRAY,
00051             NT_COUNT_FUNCTION,
00052             NT_TEXT,
00053         };
00054 
00055         struct Node
00056         {
00057             Node();
00058 
00059             String   str;
00060             NodeType type;
00061             int      arrayIndex;
00062         };
00063 
00064         typedef boost::shared_ptr<Node> NodePtr;
00065         typedef std::list<NodePtr> Path;
00066 
00067         ParamXMLPath();
00068         ParamXMLPath( const ParamXMLPath& org );
00069         ParamXMLPath( const String& source );
00070         ParamXMLPath( const std::string& source );
00071         ParamXMLPath( const char* source );
00072 
00073         virtual ~ParamXMLPath();
00074         void Parse( Path& path, const String& str );
00075         String ToString() const;
00076 
00077         ParamXMLPath& operator +=( const ParamXMLPath& rhs );
00078         ParamXMLPath& operator +=( const String& rhs );
00079         ParamXMLPath& operator +=( const char* rhs );
00080         ParamXMLPath  operator +( const ParamXMLPath& rhs ) const;
00081         ParamXMLPath  operator +( const String& rhs ) const;
00082         ParamXMLPath  operator +( const char* rhs ) const;
00083         ParamXMLPath& operator =( const String& rhs );
00084         ParamXMLPath& operator =( const char* rhs );
00085 
00086         void Add( const String& path );
00087         void AddAttribute( const String& path );
00088         void AddArray( const String& path, int index );
00089         void SetArray( const ParamXMLPath& basePath, const String& relativePath, int index );
00090 
00091         NodePtr& Back();
00092         const NodePtr Back() const;
00093         void RemoveLast();
00094 
00095         // List compatible interfaces
00096         typedef Path::iterator iterator;
00097         typedef Path::const_iterator const_iterator;
00098         iterator begin();
00099         iterator end();
00100         const_iterator begin() const;
00101         const_iterator end() const;
00102         void pop_back();
00103         NodePtr& back();
00104         const NodePtr& back() const;
00105 
00106     protected:
00107         Path m_path;
00108         typedef std::vector<String> TokenList;
00109         TokenList::const_iterator 
00110             NextToken(
00111                 const TokenList& tokens, 
00112                 TokenList::const_iterator cur, 
00113                 const String& source
00114             );
00115     };
00116     
00117 
00118 }   // namespace Onikiri
00119 
00120 #endif  // #ifdef ENV_PARAM_PARAM_XML_PATH_H
00121 
00122 

Onikiri2に対してTue Jun 18 14:34:21 2013に生成されました。  doxygen 1.4.7