Allow Filesystem TS to compile without wchar_t
authorJonathan Wakely <jwakely@redhat.com>
Fri, 2 Oct 2015 19:38:38 +0000 (20:38 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Fri, 2 Oct 2015 19:38:38 +0000 (20:38 +0100)
* include/bits/locale_conv.h [!_GLIBCXX_USE_WCHAR_T]
(__do_str_codecvt, __str_codecvt_in, __str_codecvt_out): Enable.
* include/experimental/fs_path.h [!_GLIBCXX_USE_WCHAR_T]
(path::wstring, path::generic_wstring): Disable.
* src/filesystem/path.cc (path::_S_convert_loc)
[!_GLIBCXX_USE_WCHAR_T]: Skip conversion.
* testsuite/experimental/filesystem/path/assign/assign.cc: Check for
wchar_t support.
* testsuite/experimental/filesystem/path/concat/strings.cc: Likewise.
* testsuite/experimental/filesystem/path/construct/range.cc: Likewise.

From-SVN: r228417

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/locale_conv.h
libstdc++-v3/include/experimental/fs_path.h
libstdc++-v3/src/filesystem/path.cc
libstdc++-v3/testsuite/experimental/filesystem/path/assign/assign.cc
libstdc++-v3/testsuite/experimental/filesystem/path/concat/strings.cc
libstdc++-v3/testsuite/experimental/filesystem/path/construct/range.cc

index 287768e4132e20a32736a47cab9e7c6bcf38faad..57b9f470bf5d4cc89fee78d0c6e008a2eda1d886 100644 (file)
@@ -1,5 +1,16 @@
 2015-10-02  Jonathan Wakely  <jwakely@redhat.com>
 
+       * include/bits/locale_conv.h [!_GLIBCXX_USE_WCHAR_T]
+       (__do_str_codecvt, __str_codecvt_in, __str_codecvt_out): Enable.
+       * include/experimental/fs_path.h [!_GLIBCXX_USE_WCHAR_T]
+       (path::wstring, path::generic_wstring): Disable.
+       * src/filesystem/path.cc (path::_S_convert_loc)
+       [!_GLIBCXX_USE_WCHAR_T]: Skip conversion.
+       * testsuite/experimental/filesystem/path/assign/assign.cc: Check for
+       wchar_t support.
+       * testsuite/experimental/filesystem/path/concat/strings.cc: Likewise.
+       * testsuite/experimental/filesystem/path/construct/range.cc: Likewise.
+
        * testsuite/util/testsuite_fs.h (nonexistent_path): Use less generic
        name for paths. Prefer snprintf to sprintf.
 
index 146f78b38d0704041eb519d63e0a7bde52d162ed..16b48758e772af88332d603795dfda52bbcfe746 100644 (file)
@@ -44,8 +44,6 @@ namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
-#ifdef _GLIBCXX_USE_WCHAR_T
-
   /**
    * @addtogroup locales
    * @{
@@ -157,6 +155,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       return __str_codecvt_out(__first, __last, __outstr, __cvt, __state, __n);
     }
 
+#ifdef _GLIBCXX_USE_WCHAR_T
+
 _GLIBCXX_BEGIN_NAMESPACE_CXX11
 
   /// String conversions
@@ -533,10 +533,10 @@ _GLIBCXX_END_NAMESPACE_CXX11
       bool                     _M_always_noconv;
     };
 
-  /// @} group locales
-
 #endif  // _GLIBCXX_USE_WCHAR_T
 
+  /// @} group locales
+
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace
 
index 5daef12191dea0e92736d3203453b9549558587a..40462a6ab197d2cc860cd7857d66928e90bc60af 100644 (file)
@@ -279,7 +279,9 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
       string(const _Allocator& __a = _Allocator()) const;
 
     std::string    string() const;
+#if _GLIBCXX_USE_WCHAR_T
     std::wstring   wstring() const;
+#endif
     std::string    u8string() const;
     std::u16string u16string() const;
     std::u32string u32string() const;
@@ -291,7 +293,9 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
       generic_string(const _Allocator& __a = _Allocator()) const;
 
     std::string    generic_string() const;
+#if _GLIBCXX_USE_WCHAR_T
     std::wstring   generic_wstring() const;
+#endif
     std::string    generic_u8string() const;
     std::u16string generic_u16string() const;
     std::u32string generic_u32string() const;
@@ -828,8 +832,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
   inline std::string
   path::string() const { return string<char>(); }
 
+#if _GLIBCXX_USE_WCHAR_T
   inline std::wstring
   path::wstring() const { return string<wchar_t>(); }
+#endif
 
   inline std::string
   path::u8string() const
@@ -865,8 +871,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
   inline std::string
   path::generic_string() const { return string(); }
 
+#if _GLIBCXX_USE_WCHAR_T
   inline std::wstring
   path::generic_wstring() const { return wstring(); }
+#endif
 
   inline std::string
   path::generic_u8string() const { return u8string(); }
index a5441b95c9bce6e1faff981f2cef1ca81a1ee24d..e85c9fccd9a746f1fc5f92315f3dc6852ddfbf2f 100644 (file)
@@ -437,8 +437,9 @@ path::_M_trim()
 
 path::string_type
 path::_S_convert_loc(const char* __first, const char* __last,
-               const std::locale& __loc)
+                    const std::locale& __loc)
 {
+#if _GLIBCXX_USE_WCHAR_T
   auto& __cvt = std::use_facet<codecvt<wchar_t, char, mbstate_t>>(__loc);
   basic_string<wchar_t> __ws;
   if (!__str_codecvt_in(__first, __last, __ws, __cvt))
@@ -450,6 +451,9 @@ path::_S_convert_loc(const char* __first, const char* __last,
 #else
   return _Cvt<wchar_t>::_S_convert(__ws.data(), __ws.data() + __ws.size());
 #endif
+#else
+  return {__first, __last};
+#endif
 }
 
 std::size_t
index 6fd24a77cf30c076e5ee6c6604e6b056dab0d796..fe4f96cde9b8a80fd0a0d755bde25a5c1ab07c98 100644 (file)
@@ -36,6 +36,7 @@ test01()
     p2 = s.c_str();
     compare_paths(p0, p2);
 
+#if _GLIBCXX_USE_WCHAR_T
     std::wstring ws(s.begin(), s.end());
 
     p3 = ws;
@@ -43,6 +44,7 @@ test01()
 
     p4 = ws.c_str();
     compare_paths(p0, p4);
+#endif
   }
 }
 
@@ -65,6 +67,7 @@ test02()
     p4.assign( s.c_str(), s.c_str() + s.size() );
     compare_paths(p0, p4);
 
+#if _GLIBCXX_USE_WCHAR_T
     std::wstring ws(s.begin(), s.end());
 
     p5.assign(ws);
@@ -78,6 +81,7 @@ test02()
 
     p8.assign( ws.c_str(), ws.c_str() + ws.size() );
     compare_paths(p0, p8);
+#endif
   }
 }
 
index e75e790a49199cffb57c9812d49dcd902eb19677..61ef7e40cfceee8e159401b4c36b35e1808b9121 100644 (file)
@@ -35,7 +35,11 @@ test01()
   VERIFY( p.filename() == "foobar" );
   p += '/';
   VERIFY( p.parent_path() == "/foobar" && p.filename() == "." );
+#if _GLIBCXX_USE_WCHAR_T
   p += L"baz.txt";
+#else
+  p += "baz.txt";
+#endif
   VERIFY( p.filename() == "baz.txt" );
   p.concat("/dir/");
   VERIFY( p.parent_path() == "/foobar/baz.txt/dir" && p.filename() == "." );
index 03e50854772c46de99e45916e0df6b451bd5d5b3..2e8922913cf3d3051ad0fb1b6fc244a1b6ea77b2 100644 (file)
@@ -37,19 +37,22 @@ test01()
     path p3( s.c_str() );
     path p4( s.c_str(), s.c_str() + s.size() );
 
+    compare_paths(p1, p2);
+    compare_paths(p1, p3);
+    compare_paths(p1, p4);
+
+#if _GLIBCXX_USE_WCHAR_T
     std::wstring ws(s.begin(), s.end());
     path p5 = ws;
     path p6( ws.begin(), ws.end() );
     path p7( ws.c_str() );
     path p8( ws.c_str(), ws.c_str() + ws.size() );
 
-    compare_paths(p1, p2);
-    compare_paths(p1, p3);
-    compare_paths(p1, p4);
     compare_paths(p1, p5);
     compare_paths(p1, p6);
     compare_paths(p1, p7);
     compare_paths(p1, p8);
+#endif
   }
 }