[libcxx] r260115 - Clean up a test; get rid of hard-wired char/wchar_t code for template fns that take any char type. Prep work for PR#26503
Marshall Clow via cfe-commits
cfe-commits at lists.llvm.org
Mon Feb 8 09:38:24 PST 2016
Author: marshall
Date: Mon Feb 8 11:38:23 2016
New Revision: 260115
URL: http://llvm.org/viewvc/llvm-project?rev=260115&view=rev
Log:
Clean up a test; get rid of hard-wired char/wchar_t code for template fns that take any char type. Prep work for PR#26503
Modified:
libcxx/trunk/test/std/input.output/iostream.format/quoted.manip/quoted.pass.cpp
Modified: libcxx/trunk/test/std/input.output/iostream.format/quoted.manip/quoted.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/input.output/iostream.format/quoted.manip/quoted.pass.cpp?rev=260115&r1=260114&r2=260115&view=diff
==============================================================================
--- libcxx/trunk/test/std/input.output/iostream.format/quoted.manip/quoted.pass.cpp (original)
+++ libcxx/trunk/test/std/input.output/iostream.format/quoted.manip/quoted.pass.cpp Mon Feb 8 11:38:23 2016
@@ -16,79 +16,95 @@
#include <string>
#include <cassert>
-#if _LIBCPP_STD_VER > 11
-
-bool is_skipws ( const std::istream *is ) {
- return ( is->flags() & std::ios_base::skipws ) != 0;
- }
+#include "test_macros.h"
+#if TEST_STD_VER > 11
-bool is_skipws ( const std::wistream *is ) {
- return ( is->flags() & std::ios_base::skipws ) != 0;
+template <class CharT, class Traits>
+bool is_skipws ( const std::basic_istream<CharT, Traits>& is ) {
+ return ( is.flags() & std::ios_base::skipws ) != 0;
}
-void both_ways ( const char *p ) {
- std::string str(p);
+template <class CharT, class Traits = std::char_traits<CharT>>
+void both_ways ( const CharT *p ) {
+ std::basic_string<CharT, Traits> str(p);
auto q = std::quoted(str);
- std::stringstream ss;
- bool skippingws = is_skipws ( &ss );
+ std::basic_stringstream<CharT, Traits> ss;
+ bool skippingws = is_skipws ( ss );
ss << q;
ss >> q;
}
-void round_trip ( const char *p ) {
- std::stringstream ss;
- bool skippingws = is_skipws ( &ss );
+template <class CharT, class Traits = std::char_traits<CharT>>
+void round_trip ( const CharT *p ) {
+ std::basic_stringstream<CharT, Traits> ss;
+ bool skippingws = is_skipws ( ss );
+
ss << std::quoted(p);
- std::string s;
+ std::basic_string<CharT, Traits> s;
ss >> std::quoted(s);
assert ( s == p );
- assert ( skippingws == is_skipws ( &ss ));
+ assert ( skippingws == is_skipws ( ss ));
}
-void round_trip_ws ( const char *p ) {
- std::stringstream ss;
+
+template <class CharT, class Traits = std::char_traits<CharT>>
+void round_trip_ws ( const CharT *p ) {
+ std::basic_stringstream<CharT, Traits> ss;
std::noskipws ( ss );
- bool skippingws = is_skipws ( &ss );
+ bool skippingws = is_skipws ( ss );
+
ss << std::quoted(p);
- std::string s;
+ std::basic_string<CharT, Traits> s;
ss >> std::quoted(s);
assert ( s == p );
- assert ( skippingws == is_skipws ( &ss ));
+ assert ( skippingws == is_skipws ( ss ));
}
-void round_trip_d ( const char *p, char delim ) {
- std::stringstream ss;
- ss << std::quoted(p, delim);
- std::string s;
- ss >> std::quoted(s, delim);
+template <class CharT, class Traits = std::char_traits<CharT>>
+void round_trip_d ( const CharT *p, char delim ) {
+ std::basic_stringstream<CharT, Traits> ss;
+ CharT d{delim};
+
+ ss << std::quoted(p, d);
+ std::basic_string<CharT, Traits> s;
+ ss >> std::quoted(s, d);
assert ( s == p );
}
-void round_trip_e ( const char *p, char escape ) {
- std::stringstream ss;
- ss << std::quoted(p, '"', escape );
- std::string s;
- ss >> std::quoted(s, '"', escape );
+template <class CharT, class Traits = std::char_traits<CharT>>
+void round_trip_e ( const CharT *p, char escape ) {
+ std::basic_stringstream<CharT, Traits> ss;
+ CharT e{escape};
+
+ ss << std::quoted(p, CharT('"'), e );
+ std::basic_string<CharT, Traits> s;
+ ss >> std::quoted(s, CharT('"'), e );
assert ( s == p );
}
-
-std::string quote ( const char *p, char delim='"', char escape='\\' ) {
- std::stringstream ss;
- ss << std::quoted(p, delim, escape);
- std::string s;
+template <class CharT, class Traits = std::char_traits<CharT>>
+std::basic_string<CharT, Traits> quote ( const CharT *p, char delim='"', char escape='\\' ) {
+ std::basic_stringstream<CharT, Traits> ss;
+ CharT d{delim};
+ CharT e{escape};
+ ss << std::quoted(p, d, e);
+ std::basic_string<CharT, Traits> s;
ss >> s; // no quote
return s;
}
-std::string unquote ( const char *p, char delim='"', char escape='\\' ) {
- std::stringstream ss;
+template <class CharT, class Traits = std::char_traits<CharT>>
+std::basic_string<CharT, Traits> unquote ( const CharT *p, char delim='"', char escape='\\' ) {
+ std::basic_stringstream<CharT, Traits> ss;
ss << p;
- std::string s;
- ss >> std::quoted(s, delim, escape);
+
+ CharT d{delim};
+ CharT e{escape};
+ std::basic_string<CharT, Traits> s;
+ ss >> std::quoted(s, d, e);
return s;
}
@@ -107,61 +123,6 @@ void test_padding () {
}
-void round_trip ( const wchar_t *p ) {
- std::wstringstream ss;
- bool skippingws = is_skipws ( &ss );
- ss << std::quoted(p);
- std::wstring s;
- ss >> std::quoted(s);
- assert ( s == p );
- assert ( skippingws == is_skipws ( &ss ));
- }
-
-
-void round_trip_ws ( const wchar_t *p ) {
- std::wstringstream ss;
- std::noskipws ( ss );
- bool skippingws = is_skipws ( &ss );
- ss << std::quoted(p);
- std::wstring s;
- ss >> std::quoted(s);
- assert ( s == p );
- assert ( skippingws == is_skipws ( &ss ));
- }
-
-void round_trip_d ( const wchar_t *p, wchar_t delim ) {
- std::wstringstream ss;
- ss << std::quoted(p, delim);
- std::wstring s;
- ss >> std::quoted(s, delim);
- assert ( s == p );
- }
-
-void round_trip_e ( const wchar_t *p, wchar_t escape ) {
- std::wstringstream ss;
- ss << std::quoted(p, wchar_t('"'), escape );
- std::wstring s;
- ss >> std::quoted(s, wchar_t('"'), escape );
- assert ( s == p );
- }
-
-
-std::wstring quote ( const wchar_t *p, wchar_t delim='"', wchar_t escape='\\' ) {
- std::wstringstream ss;
- ss << std::quoted(p, delim, escape);
- std::wstring s;
- ss >> s; // no quote
- return s;
-}
-
-std::wstring unquote ( const wchar_t *p, wchar_t delim='"', wchar_t escape='\\' ) {
- std::wstringstream ss;
- ss << p;
- std::wstring s;
- ss >> std::quoted(s, delim, escape);
- return s;
-}
-
int main()
{
both_ways ( "" ); // This is a compilation check
More information about the cfe-commits
mailing list