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
							 |