// Copyright Vladimir Prus 2004. | |
// Distributed under the Boost Software License, Version 1.0. | |
// (See accompanying file LICENSE_1_0.txt | |
// or copy at http://www.boost.org/LICENSE_1_0.txt) | |
#ifndef BOOST_ENVIRONMENT_ITERATOR_VP_2004_05_14 | |
#define BOOST_ENVIRONMENT_ITERATOR_VP_2004_05_14 | |
#include "eof_iterator.hpp" | |
#include <utility> | |
#include <string> | |
#include <cassert> | |
namespace boost { | |
class environment_iterator | |
: public eof_iterator<environment_iterator, | |
std::pair<std::string, std::string> > | |
{ | |
public: | |
environment_iterator(char** environment) | |
: m_environment(environment) | |
{ | |
get(); | |
} | |
environment_iterator() | |
{ | |
found_eof(); | |
} | |
void get() | |
{ | |
if (*m_environment == 0) | |
found_eof(); | |
else { | |
std::string s(*m_environment); | |
std::string::size_type n = s.find('='); | |
assert(n != s.npos); | |
value().first = s.substr(0, n); | |
value().second = s.substr(n+1); | |
} | |
++m_environment; | |
} | |
private: | |
char** m_environment; | |
}; | |
} | |
#endif |