1 // 2 // Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net> 3 // 4 // This program is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // This program is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with this program. If not, see <http://www.gnu.org/licenses/>. 16 // === 17 /// 18 /// \file gstrings.h 19 /// 20 21 #ifndef G_STRINGS_H 22 #define G_STRINGS_H 23 24 #include "gdef.h" 25 #include <string> 26 #include <list> 27 #include <vector> 28 #include <map> 29 #include <stdexcept> 30 31 /// \namespace G 32 namespace G 33 { 34 35 /// 36 /// A std::list of std::strings. 37 /// \see Str 38 /// 39 typedef std::list<std::string> Strings ; 40 41 /// 42 /// A std::vector of std::strings. 43 /// 44 typedef std::vector<std::string> StringArray ; 45 46 /// 47 /// A std::map of std::strings. 48 /// 49 typedef std::map<std::string,std::string> StringMap ; 50 51 } 52 53 /// \namespace G 54 namespace G 55 { 56 class StringMapReader ; 57 } 58 59 /// \class G::StringMapReader 60 /// An adaptor for reading a const StringMap with at(). 61 /// 62 class G::StringMapReader 63 { 64 public: 65 StringMapReader( const StringMap & map_ ) ; 66 ///< Implicit constructor. 67 68 const std::string & at( const std::string & key ) const ; 69 ///< Returns the value, or throws. 70 71 const std::string & at( const std::string & key , const std::string & default_ ) const ; 72 ///< Returns the value, or the default. 73 74 Strings keys( unsigned int limit = 0U , const char * elipsis = NULL ) const ; 75 ///< Returns a list of keys (optionally up to some limit). 76 77 private: 78 const StringMap & m_map ; 79 } ; 80 81 #endif 82