]> AND Private Git Repository - canny.git/blob - stc/exp/ml_stc_linux_make_v1.0/include/boost/program_options/environment_iterator.hpp
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
5ccea43e1f6c2416c78a77b888282953ae3373b8
[canny.git] / stc / exp / ml_stc_linux_make_v1.0 / include / boost / program_options / environment_iterator.hpp
1 // Copyright Vladimir Prus 2004.\r
2 // Distributed under the Boost Software License, Version 1.0.\r
3 // (See accompanying file LICENSE_1_0.txt\r
4 // or copy at http://www.boost.org/LICENSE_1_0.txt)\r
5 \r
6 #ifndef BOOST_ENVIRONMENT_ITERATOR_VP_2004_05_14\r
7 #define BOOST_ENVIRONMENT_ITERATOR_VP_2004_05_14\r
8 \r
9 #include "eof_iterator.hpp"\r
10 \r
11 #include <utility>\r
12 #include <string>\r
13 #include <cassert>\r
14 \r
15 namespace boost {\r
16 \r
17     class environment_iterator \r
18         : public eof_iterator<environment_iterator, \r
19                               std::pair<std::string, std::string> >\r
20     {\r
21     public:\r
22         environment_iterator(char** environment)\r
23         : m_environment(environment)\r
24         {\r
25             get();\r
26         }\r
27         \r
28         environment_iterator()\r
29         {\r
30             found_eof();\r
31         }\r
32         \r
33         void get()\r
34         {\r
35             if (*m_environment == 0)\r
36                 found_eof();\r
37             else {\r
38                 std::string s(*m_environment);\r
39                 std::string::size_type n = s.find('=');\r
40                 assert(n != s.npos);\r
41                 value().first = s.substr(0, n);\r
42                 value().second = s.substr(n+1);\r
43             }            \r
44             ++m_environment;\r
45         }\r
46         \r
47     private:\r
48         char** m_environment;\r
49     };\r
50 }\r
51 #endif\r