From 24e67db14016371072124fd73a3630e2c731f267 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Wed, 8 Nov 2017 11:47:44 +0100
Subject: [PATCH] change std::cin to common::Streams::in

---
 alib2cli/src/builtin/ReadFile.cpp          |  5 +++--
 alib2common/src/global/GlobalData.cpp      | 10 ++++++++++
 alib2common/src/global/GlobalData.h        | 12 ++++++++++++
 alib2raw/src/factory/RawDataFactory.hpp    |  2 +-
 alib2str/src/factory/StringDataFactory.hpp |  2 +-
 5 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/alib2cli/src/builtin/ReadFile.cpp b/alib2cli/src/builtin/ReadFile.cpp
index 2664061efa..b3a93d675c 100644
--- a/alib2cli/src/builtin/ReadFile.cpp
+++ b/alib2cli/src/builtin/ReadFile.cpp
@@ -9,6 +9,7 @@
 #include <registration/AlgoRegistration.hpp>
 #include <fstream>
 #include <streambuf>
+#include <global/GlobalData.h>
 
 namespace cli {
 
@@ -16,8 +17,8 @@ namespace builtin {
 
 std::string ReadFile::read ( const std::string & filename ) {
 	if ( filename == "-" ) {
-		std::cin >> std::noskipws;
-		return std::string ( ( std::istreambuf_iterator < char > ( std::cin ) ), std::istreambuf_iterator < char > ( ) );
+		common::Streams::in >> std::noskipws;
+		return std::string ( ( std::istreambuf_iterator < char > ( common::Streams::in ) ), std::istreambuf_iterator < char > ( ) );
 	} else {
 		std::ifstream t ( filename );
 		if ( ! t.is_open ( ) ) {
diff --git a/alib2common/src/global/GlobalData.cpp b/alib2common/src/global/GlobalData.cpp
index a96766db36..2c9d72971f 100644
--- a/alib2common/src/global/GlobalData.cpp
+++ b/alib2common/src/global/GlobalData.cpp
@@ -38,4 +38,14 @@ std::ostream & operator << ( ext::reference_wrapper < std::ostream > & os, std::
 	return os;
 }
 
+std::ostream & operator << ( ext::reference_wrapper < std::ostream > & os, std::ios_base & ( * func ) ( std::ios_base & ) ) {
+	os.get () << func;
+	return os;
+}
+
+std::istream & operator >> ( ext::reference_wrapper < std::istream > & is, std::ios_base & ( * func ) ( std::ios_base & ) ) {
+	is.get () >> func;
+	return is;
+}
+
 } /* namespace ext */
diff --git a/alib2common/src/global/GlobalData.h b/alib2common/src/global/GlobalData.h
index 1c017db2ba..6e81223596 100644
--- a/alib2common/src/global/GlobalData.h
+++ b/alib2common/src/global/GlobalData.h
@@ -51,6 +51,18 @@ std::ostream & operator << ( ext::reference_wrapper < std::ostream > & os, T &&
 
 std::ostream & operator << ( ext::reference_wrapper < std::ostream > & os, std::ostream & ( * func ) ( std::ostream & ) );
 
+std::ostream & operator << ( ext::reference_wrapper < std::ostream > & os, std::ios_base & ( * func ) ( std::ios_base & ) );
+
+
+
+template < class T >
+std::istream & operator >> ( ext::reference_wrapper < std::istream > & is, T & data ) {
+	is.get ( ) >> data;
+	return is;
+}
+
+std::istream & operator >> ( ext::reference_wrapper < std::istream > & is, std::ios_base & ( * func ) ( std::ios_base & ) );
+
 } /* namespace ext */
 
 #endif /* _GLOBAL_DATA_H_ */
diff --git a/alib2raw/src/factory/RawDataFactory.hpp b/alib2raw/src/factory/RawDataFactory.hpp
index 6f9c6aa9f0..9c333b18a4 100644
--- a/alib2raw/src/factory/RawDataFactory.hpp
+++ b/alib2raw/src/factory/RawDataFactory.hpp
@@ -68,7 +68,7 @@ public:
 	public:
 		template < class T >
 		operator T ( ) {
-			return fromStream ( std::cin );
+			return fromStream ( common::Streams::in );
 		}
 	};
 
diff --git a/alib2str/src/factory/StringDataFactory.hpp b/alib2str/src/factory/StringDataFactory.hpp
index 886077cbcc..e5126e8fcb 100644
--- a/alib2str/src/factory/StringDataFactory.hpp
+++ b/alib2str/src/factory/StringDataFactory.hpp
@@ -53,7 +53,7 @@ public:
 	public:
 		template < class T >
 		operator T ( ) {
-			return fromStream ( std::cin );
+			return fromStream ( common::Streams::in );
 		}
 	};
 
-- 
GitLab