[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