PageRenderTime 22ms CodeModel.GetById 15ms app.highlight 4ms RepoModel.GetById 1ms app.codeStats 1ms

/Src/Dependencies/Boost/boost/program_options/environment_iterator.hpp

http://hadesmem.googlecode.com/
C++ Header | 51 lines | 39 code | 8 blank | 4 comment | 4 complexity | cb17c26e66e0e4872b509d8756ce4fb4 MD5 | raw file
 1// Copyright Vladimir Prus 2004.
 2// Distributed under the Boost Software License, Version 1.0.
 3// (See accompanying file LICENSE_1_0.txt
 4// or copy at http://www.boost.org/LICENSE_1_0.txt)
 5
 6#ifndef BOOST_ENVIRONMENT_ITERATOR_VP_2004_05_14
 7#define BOOST_ENVIRONMENT_ITERATOR_VP_2004_05_14
 8
 9#include "eof_iterator.hpp"
10
11#include <utility>
12#include <string>
13#include <cassert>
14
15namespace boost {
16
17    class environment_iterator 
18        : public eof_iterator<environment_iterator, 
19                              std::pair<std::string, std::string> >
20    {
21    public:
22        environment_iterator(char** environment)
23        : m_environment(environment)
24        {
25            get();
26        }
27        
28        environment_iterator()
29        {
30            found_eof();
31        }
32        
33        void get()
34        {
35            if (*m_environment == 0)
36                found_eof();
37            else {
38                std::string s(*m_environment);
39                std::string::size_type n = s.find('=');
40                assert(n != s.npos);
41                value().first = s.substr(0, n);
42                value().second = s.substr(n+1);
43            }            
44            ++m_environment;
45        }
46        
47    private:
48        char** m_environment;
49    };
50}
51#endif