text: // 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
  