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

