- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

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
29 G::StringMapReader::StringMapReader( const G::StringMap & map_ ) :
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
G::StringMapReader::StringMapReader
StringMapReader(const StringMap &map_)
Implicit constructor.
Definition: gstrings.cpp:29
gstrings.h
G::Strings
std::list< std::string > Strings
A std::list of std::strings.
Definition: gstrings.h:39
G::StringMapReader::keys
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
G::StringMapReader::at
const std::string & at(const std::string &key) const
Returns the value, or throws.
Definition: gstrings.cpp:34
gstr.h
G::StringMap
std::map< std::string, std::string > StringMap
A std::map of std::strings.
Definition: gstrings.h:49
G::Str::join
static std::string join(const Strings &strings, const std::string &sep)
Concatenates a set of strings.
Definition: gstr.cpp:799