GCode Processor
InputFileIterator.h
Go to the documentation of this file.
1 
3 #ifndef Input_File_Iterator_h
4 #define Input_File_Iterator_h
5 
6 #include "GCodeLineEntry.h"
7 
8 #include <iterator>
9 #include <sstream>
10 #include <string>
11 
13 class InputFileIterator : public std::iterator<std::input_iterator_tag, std::string>
14 {
15 
16 public:
17 
18  // defined for convenience
19  using char_type = typename std::string::value_type;
20  using traits_type = typename std::string::traits_type;
21  using istream_type = std::basic_istream<char_type, traits_type>;
22 
23 private:
24 
27 
28 public:
29 
32  InputFileIterator(istream_type& is) : InputStream_(&is) { ++(*this); };
33 
36  const std::string operator*() const
37  { return Value_; };
38 
41  decltype(auto) operator->() const
42  { return (*this).operator*(); };
43 
46 
49 
51  static const InputFileIterator& end()
52  { static InputFileIterator IFI_END; return IFI_END; }
53 
55  friend const bool operator==(const InputFileIterator& lhs, const InputFileIterator& rhs)
56  { return lhs.InputStream_ == rhs.InputStream_; }
57 
58 private:
59 
61  istream_type* InputStream_;
62 
64  std::string Value_;
65 };
66 
68 inline const bool operator!=(const InputFileIterator& lhs, const InputFileIterator& rhs)
69 { return !(lhs == rhs); }
70 
71 #endif
InputFileIterator()
Default constructor (private).
Definition: InputFileIterator.h:26
static const InputFileIterator & end()
Returns an empty iterator.
Definition: InputFileIterator.h:51
InputFileIterator(istream_type &is)
Construct and read the first line in.
Definition: InputFileIterator.h:32
InputFileIterator & operator++()
Pre-increment operator (read line in).
Definition: InputFileIterator.cpp:8
const bool operator!=(const InputFileIterator &lhs, const InputFileIterator &rhs)
inequality operator
Definition: InputFileIterator.h:68
istream_type * InputStream_
Input stream pointer to file being read in by this.
Definition: InputFileIterator.h:61
friend const bool operator==(const InputFileIterator &lhs, const InputFileIterator &rhs)
Equality operator; checks if pointers to streams are equal.
Definition: InputFileIterator.h:55
std::string Value_
Currently loaded line.
Definition: InputFileIterator.h:64
Reads an input file line by line.
Definition: InputFileIterator.h:13
const std::string operator*() const
Deference operator.
Definition: InputFileIterator.h:36