53 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| // 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
 | 
