libjmmcg
release_579_6_g8cffd
A C++ library containing an eclectic mix of useful, advanced components.
line_iterator.hpp
Go to the documentation of this file.
1
#
ifndef
LIBJMMCG_CORE_LINE_ITERATOR_HPP
2
#
define
LIBJMMCG_CORE_LINE_ITERATOR_HPP
3
4
/******************************************************************************
5
** Copyright © 2020 by J.M.McGuiness, coder@hussar.me.uk & M.Waplington
6
**
7
** This library is free software; you can redistribute it and/or
8
** modify it under the terms of the GNU Lesser General Public
9
** License as published by the Free Software Foundation; either
10
** version 2.1 of the License, or (at your option) any later version.
11
**
12
** This library is distributed in the hope that it will be useful,
13
** but WITHOUT ANY WARRANTY; without even the implied warranty of
14
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
** Lesser General Public License for more details.
16
**
17
** You should have received a copy of the GNU Lesser General Public
18
** License along with this library; if not, write to the Free Software
19
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
*/
21
22
#
include
"config.h"
23
24
#
include
<
istream
>
25
#
include
<
iterator
>
26
#
include
<
string
>
27
28
namespace
jmmcg
{
namespace
LIBJMMCG_VER_NAMESPACE
{
29
30
/**
31
* Taken from "Generic Programming and the STL" by M.H.Austern.
32
*/
33
class
line_iterator
{
34
public
:
35
using
iterator_category=
std
::input_iterator_tag;
36
using
value_type=
std
::string;
37
using
difference_type
=
ptrdiff_t
;
38
using
pointer=
std
::string
const
*;
39
using
reference=
std
::string
const
&;
40
41
constexpr
line_iterator
()=
default
;
42
explicit
line_iterator
(
std
::istream &s)
noexcept
(
false
);
43
44
bool
operator
==(
line_iterator
const
& i)
const
noexcept
(
true
);
45
bool
operator
!=(
line_iterator
const
& i)
const
noexcept
(
true
);
46
47
reference
operator
*()
const
noexcept
(
true
);
48
pointer
operator
->()
const
noexcept
(
true
);
49
50
line_iterator
operator
++()
noexcept
(
false
);
51
[[
nodiscard
]]
line_iterator
operator
++(
int
)
noexcept
(
false
);
52
53
private
:
54
std
::istream*in_{
nullptr
};
55
std
::string line_{};
56
bool
valid_{
false
};
57
58
void
read();
59
};
60
61
} }
62
63
#
include
"line_iterator_impl.hpp"
64
65
#
endif
core
line_iterator.hpp
Generated on Tue May 11 2021 17:19:22 for libjmmcg by
1.9.2