Add support for opening file streams from wide character strings
authorJonathan Wakely <jwakely@redhat.com>
Mon, 21 May 2018 17:18:35 +0000 (18:18 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Mon, 21 May 2018 17:18:35 +0000 (18:18 +0100)
commitb02923592a55b52d796656c5b4f34a964a2604a9
tree7bdd183950fb53880788391cae759a291b699c35
parent8b6d2d3bbf13d0d48128f381d1092d4c36d356c2
Add support for opening file streams from wide character strings

C++17 added new overloads to <fstream> class templates to support
opening files from wide character strings "on systems where
filesystem::path::value_type is not char". This patch adds those
overloads conditional on _wfopen being available, and enables them for
pre-C++17 modes as well.

Add support for opening file streams from wide character strings.
* config/io/basic_file_stdio.cc [_GLIBCXX_HAVE__WFOPEN]
(__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
Define new overload.
* config/io/basic_file_stdio.h [_GLIBCXX_HAVE__WFOPEN]
(__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
Declare new overload.
* configure.ac: Check for _wfopen.
* crossconfig.m4: Likewise.
* configure: Regenerate.
* config.h.in: Regenerate.
* include/bits/fstream.tcc [_GLIBCXX_HAVE__WFOPEN]
(basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
Define new overload.
* include/std/fstream [_GLIBCXX_HAVE__WFOPEN]
(basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
Declare new overload.
[_GLIBCXX_HAVE__WFOPEN]
(basic_ifstream<C,T>::basic_ifstream(const wchar_t*, openmode))
(basic_ifstream<C,T>::basic_open(const wchar_t*, openmode))
(basic_ofstream<C,T>::basic_ifstream(const wchar_t*, openmode))
(basic_ofstream<C,T>::basic_open(const wchar_t*, openmode))
(basic_fstream<C,T>::basic_ifstream(const wchar_t*, openmode))
(basic_fstream<C,T>::basic_open(const wchar_t*, openmode)): Define
new overloads.
* testsuite/27_io/basic_filebuf/open/wchar_t/1.cc: New.
* testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc: New.
* testsuite/27_io/basic_ifstream/open/wchar_t/1.cc: New.
* testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc: New.
* testsuite/27_io/basic_ofstream/open/wchar_t/1.cc: New.
* testsuite/27_io/basic_fstream/cons/wchar_t/1.cc: New.
* testsuite/27_io/basic_fstream/open/wchar_t/1.cc: New.

From-SVN: r260479
16 files changed:
libstdc++-v3/ChangeLog
libstdc++-v3/config.h.in
libstdc++-v3/config/io/basic_file_stdio.cc
libstdc++-v3/config/io/basic_file_stdio.h
libstdc++-v3/configure
libstdc++-v3/configure.ac
libstdc++-v3/crossconfig.m4
libstdc++-v3/include/bits/fstream.tcc
libstdc++-v3/include/std/fstream
libstdc++-v3/testsuite/27_io/basic_filebuf/open/wchar_t/1.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_fstream/cons/wchar_t/1.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_fstream/open/wchar_t/1.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_ifstream/open/wchar_t/1.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_ofstream/open/wchar_t/1.cc [new file with mode: 0644]