You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
51 lines
1.2 KiB
51 lines
1.2 KiB
// 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
|
|
|