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 |