yat/utility/GetlineIterator.cc

Code
Comments
Other
Rev Date Author Line
1878 27 Mar 09 peter 1 // $Id$
1878 27 Mar 09 peter 2
1878 27 Mar 09 peter 3 /*
4359 23 Aug 23 peter 4   Copyright (C) 2009, 2012, 2014 Peter Johansson
1878 27 Mar 09 peter 5
1878 27 Mar 09 peter 6   This file is part of the yat library, http://dev.thep.lu.se/yat
1878 27 Mar 09 peter 7
1878 27 Mar 09 peter 8   The yat library is free software; you can redistribute it and/or
1878 27 Mar 09 peter 9   modify it under the terms of the GNU General Public License as
1878 27 Mar 09 peter 10   published by the Free Software Foundation; either version 3 of the
1878 27 Mar 09 peter 11   License, or (at your option) any later version.
1878 27 Mar 09 peter 12
1878 27 Mar 09 peter 13   The yat library is distributed in the hope that it will be useful,
1878 27 Mar 09 peter 14   but WITHOUT ANY WARRANTY; without even the implied warranty of
1878 27 Mar 09 peter 15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1878 27 Mar 09 peter 16   General Public License for more details.
1878 27 Mar 09 peter 17
1878 27 Mar 09 peter 18   You should have received a copy of the GNU General Public License
1878 27 Mar 09 peter 19   along with yat. If not, see <http://www.gnu.org/licenses/>.
1878 27 Mar 09 peter 20 */
1878 27 Mar 09 peter 21
1878 27 Mar 09 peter 22
2881 18 Nov 12 peter 23 #include <config.h>
2881 18 Nov 12 peter 24
1878 27 Mar 09 peter 25 #include "GetlineIterator.h"
1878 27 Mar 09 peter 26
3295 25 Jul 14 peter 27 #include <istream>
1878 27 Mar 09 peter 28 #include <string>
1878 27 Mar 09 peter 29
1878 27 Mar 09 peter 30 namespace theplu {
1878 27 Mar 09 peter 31 namespace yat {
1878 27 Mar 09 peter 32 namespace utility {
1878 27 Mar 09 peter 33
1878 27 Mar 09 peter 34
4200 19 Aug 22 peter 35   GetlineIterator::GetlineIterator(void)
1878 27 Mar 09 peter 36   : istream_(NULL) {}
1878 27 Mar 09 peter 37
4200 19 Aug 22 peter 38
1878 27 Mar 09 peter 39   GetlineIterator::GetlineIterator(std::istream& is, char delimiter)
4200 19 Aug 22 peter 40     : delimiter_(delimiter), istream_(&is)
4200 19 Aug 22 peter 41   {
1878 27 Mar 09 peter 42     increment(); // read the first line
1878 27 Mar 09 peter 43   }
1878 27 Mar 09 peter 44
4200 19 Aug 22 peter 45
4200 19 Aug 22 peter 46   GetlineIterator::reference GetlineIterator::dereference(void) const
4200 19 Aug 22 peter 47   {
4200 19 Aug 22 peter 48     return line_;
1878 27 Mar 09 peter 49   }
1878 27 Mar 09 peter 50
4200 19 Aug 22 peter 51
1878 27 Mar 09 peter 52   bool GetlineIterator::equal(const GetlineIterator& other) const
4200 19 Aug 22 peter 53   {
4200 19 Aug 22 peter 54     return istream_ == other.istream_;
1878 27 Mar 09 peter 55   }
1878 27 Mar 09 peter 56
4200 19 Aug 22 peter 57
4200 19 Aug 22 peter 58   void GetlineIterator::increment(void)
4200 19 Aug 22 peter 59   {
1878 27 Mar 09 peter 60     if (!istream_)
1878 27 Mar 09 peter 61       return;
1878 27 Mar 09 peter 62     if (!std::getline(*istream_, line_, delimiter_))
1878 27 Mar 09 peter 63       istream_ = NULL;
1878 27 Mar 09 peter 64   }
1878 27 Mar 09 peter 65
1878 27 Mar 09 peter 66 }}} // of namespace utility, yat, and theplu