[med-svn] [libgtextutils] 30/83: Added 'unget_line' feature to TextLineReader class.
Charles Plessy
plessy at moszumanska.debian.org
Wed Jan 8 13:37:27 UTC 2014
This is an automated email from the git hooks/post-receive script.
plessy pushed a commit to branch debian/unstable
in repository libgtextutils.
commit 6614b0e72507ef6d95f341cf977d8cb8c8e2ab71
Author: A. Gordon <gordon at cshl.edu>
Date: Wed Mar 25 19:56:19 2009 -0400
Added 'unget_line' feature to TextLineReader class.
---
src/gtextutils/text_line_reader.cpp | 10 +++++++---
src/gtextutils/text_line_reader.h | 15 +++++++++++++++
2 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/src/gtextutils/text_line_reader.cpp b/src/gtextutils/text_line_reader.cpp
index 881f54f..1db0a52 100644
--- a/src/gtextutils/text_line_reader.cpp
+++ b/src/gtextutils/text_line_reader.cpp
@@ -24,14 +24,18 @@ using namespace std;
TextLineReader::TextLineReader(istream& _input_stream) :
- input_stream(_input_stream), current_line_number(0)
+ input_stream(_input_stream), current_line_number(0), unget_line_active(false)
{
}
bool TextLineReader::next_line()
{
- current_line_number++;
- getline(input_stream, current_line_string ) ;
+ if (unget_line_active) {
+ unget_line_active = false;
+ } else {
+ current_line_number++;
+ getline(input_stream, current_line_string ) ;
+ }
current_line_stream.str( current_line_string ) ;
current_line_stream.seekg(0, ios_base::beg );
diff --git a/src/gtextutils/text_line_reader.h b/src/gtextutils/text_line_reader.h
index da3ef1c..07c85d2 100644
--- a/src/gtextutils/text_line_reader.h
+++ b/src/gtextutils/text_line_reader.h
@@ -29,6 +29,7 @@ private:
size_t current_line_number;
std::string current_line_string ;
std::istringstream current_line_stream ;
+ bool unget_line_active ;
TextLineReader(const TextLineReader&);
TextLineReader& operator=(const TextLineReader&);
@@ -40,8 +41,22 @@ public:
bool next_line() ;
+ void unget_line ( const std::string& line )
+ {
+ unget_line_active = true ;
+ current_line_string = line ;
+ }
+ void unget_current_line () { unget_line_active = true; }
+
+ //explicit conversions
const std::string& line_string() const { return current_line_string; }
std::istringstream& line_stream() { return current_line_stream; }
+
+ //implicit conversions
+ operator const std::string& () const { return line_string() ; }
+ operator std::string() const { return line_string(); }
+ operator std::istream& () { return line_stream(); }
+
};
#endif
--
Alioth's /git/debian-med/git-commit-notice on /srv/git.debian.org/git/debian-med/libgtextutils.git
More information about the debian-med-commit
mailing list