gstrings.cpp
Go to the documentation of this file.
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 // gstrings.cpp
19 //
20 
21 #include "gdef.h"
22 #include "gstrings.h"
23 #include "gstr.h"
24 #include <string>
25 #include <list>
26 #include <map>
27 #include <stdexcept>
28 
30  m_map(map_)
31 {
32 }
33 
34 const std::string & G::StringMapReader::at( const std::string & key ) const
35 {
36  StringMap::const_iterator p = m_map.find( key ) ;
37  if( p == m_map.end() )
38  throw std::out_of_range(std::string()+"key ["+key+"] not found in ["+G::Str::join(keys(14U,"..."),",")+"]") ;
39  return (*p).second ;
40 }
41 
42 const std::string & G::StringMapReader::at( const std::string & key , const std::string & default_ ) const
43 {
44  StringMap::const_iterator p = m_map.find( key ) ;
45  return p == m_map.end() ? default_ : (*p).second ;
46 }
47 
48 G::Strings G::StringMapReader::keys( unsigned int limit , const char * elipsis ) const
49 {
50  Strings result ;
51  unsigned int i = 0U ;
52  StringMap::const_iterator p = m_map.begin() ;
53  for( ; p != m_map.end() && limit > 0U && i < limit ; ++p , i++ )
54  result.push_back( (*p).first ) ;
55  if( p != m_map.end() && elipsis != NULL )
56  result.push_back( elipsis ) ;
57  return result ;
58 }
59 
StringMapReader(const StringMap &map_)
Implicit constructor.
Definition: gstrings.cpp:29
std::list< std::string > Strings
A std::list of std::strings.
Definition: gstrings.h:39
Strings keys(unsigned int limit=0U, const char *elipsis=NULL) const
Returns a list of keys (optionally up to some limit).
Definition: gstrings.cpp:48
const std::string & at(const std::string &key) const
Returns the value, or throws.
Definition: gstrings.cpp:34
std::map< std::string, std::string > StringMap
A std::map of std::strings.
Definition: gstrings.h:49
static std::string join(const Strings &strings, const std::string &sep)
Concatenates a set of strings.
Definition: gstr.cpp:799