1// Pingus - A free Lemmings clone
2// Copyright (C) 2007 Ingo Ruhnke <grumbel@gmail.com>
3//
4// This program is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8//
9// This program is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with this program. If not, see <http://www.gnu.org/licenses/>.
16
17#ifndef HEADER_SUPERTUX_UTIL_LINE_ITERATOR_HPP
18#define HEADER_SUPERTUX_UTIL_LINE_ITERATOR_HPP
19
20#include <string>
21
22/** Splits a given string at newlines, a new line at the end of the
23 * string is ignored, others are returned as empty lines. Newlines
24 * aren't included in the returned string.Use via:
25 *
26 * LineIterator it("Hello\nWorld");
27 * while(it.next())
28 * std::cout << it.get() << std::endl;
29 */
30class LineIterator final
31{
32private:
33 std::string::const_iterator first;
34 std::string::const_iterator last;
35 std::string::const_iterator line_end;
36
37public:
38 LineIterator(const std::string& str);
39 LineIterator(std::string::const_iterator first,
40 std::string::const_iterator last);
41
42 /** @return false when no characters are left in the string, true
43 otherwise */
44 bool next();
45
46 /** @return the current line */
47 std::string get();
48};
49
50#endif
51
52/* EOF */
53