diff options
author | Benjamin Kosnik <bkoz@redhat.com> | 2002-11-01 17:30:36 +0000 |
---|---|---|
committer | Benjamin Kosnik <bkoz@gcc.gnu.org> | 2002-11-01 17:30:36 +0000 |
commit | 5112ae3a8f702def5e49b7944e069e9b0b0444b6 (patch) | |
tree | 3b85fbd786ad6d529a86b3867a81119c182c2daa | |
parent | c86c54e6d12b84a346c77e7101c758c78555c1f3 (diff) | |
download | gcc-5112ae3a8f702def5e49b7944e069e9b0b0444b6.zip gcc-5112ae3a8f702def5e49b7944e069e9b0b0444b6.tar.gz gcc-5112ae3a8f702def5e49b7944e069e9b0b0444b6.tar.bz2 |
re PR libstdc++/8318 (Not all wide character based prototypes are included within #ifdef _GLIBCPP_USE_WCHAR_T)
2002-11-01 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/8318
* include/std/std_iostream.h: Tweak.
* include/std/std_iosfwd.h: Add _GLIBCPP_USE_WCHAR_T.
* include/std/std_iomanip.h: Same.
* include/bits/stringfwd.h: Same.
* include/bits/basic_string.tcc: Same.
* include/bits/sstream.tcc: Same.
* include/bits/fstream.tcc: Same.
* include/bits/basic_ios.tcc: Same.
* include/bits/streambuf.tcc: Same.
* include/bits/locale_facets.tcc: Same.
From-SVN: r58720
-rw-r--r-- | libstdc++-v3/ChangeLog | 14 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/basic_ios.tcc | 3 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/basic_string.tcc | 2 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/fstream.tcc | 9 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/locale_facets.tcc | 150 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/sstream.tcc | 9 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/streambuf.tcc | 2 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/stringfwd.h | 20 | ||||
-rw-r--r-- | libstdc++-v3/include/std/std_iomanip.h | 16 | ||||
-rw-r--r-- | libstdc++-v3/include/std/std_iosfwd.h | 2 | ||||
-rw-r--r-- | libstdc++-v3/include/std/std_iostream.h | 1 |
11 files changed, 131 insertions, 97 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 734aa7f..b3b5fb7 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,17 @@ +2002-11-01 Benjamin Kosnik <bkoz@redhat.com> + + PR libstdc++/8318 + * include/std/std_iostream.h: Tweak. + * include/std/std_iosfwd.h: Add _GLIBCPP_USE_WCHAR_T. + * include/std/std_iomanip.h: Same. + * include/bits/stringfwd.h: Same. + * include/bits/basic_string.tcc: Same. + * include/bits/sstream.tcc: Same. + * include/bits/fstream.tcc: Same. + * include/bits/basic_ios.tcc: Same. + * include/bits/streambuf.tcc: Same. + * include/bits/locale_facets.tcc: Same. + 2002-11-01 John Carter <john.carter@tait.co.nz> PR libstdc++/7961 diff --git a/libstdc++-v3/include/bits/basic_ios.tcc b/libstdc++-v3/include/bits/basic_ios.tcc index a38a95b..7ee8015 100644 --- a/libstdc++-v3/include/bits/basic_ios.tcc +++ b/libstdc++-v3/include/bits/basic_ios.tcc @@ -187,7 +187,10 @@ namespace std // which are defined via explicit instantiations elsewhere. // NB: This syntax is a GNU extension. extern template class basic_ios<char>; + +#ifdef _GLIBCPP_USE_WCHAR_T extern template class basic_ios<wchar_t>; +#endif } // namespace std #endif diff --git a/libstdc++-v3/include/bits/basic_string.tcc b/libstdc++-v3/include/bits/basic_string.tcc index 198f190..4a22d89 100644 --- a/libstdc++-v3/include/bits/basic_string.tcc +++ b/libstdc++-v3/include/bits/basic_string.tcc @@ -959,6 +959,7 @@ namespace std basic_istream<char>& getline(basic_istream<char>&, string&); +#ifdef _GLIBCPP_USE_WCHAR_T extern template class basic_string<wchar_t>; extern template basic_istream<wchar_t>& @@ -972,6 +973,7 @@ namespace std extern template basic_istream<wchar_t>& getline(basic_istream<wchar_t>&, wstring&); +#endif } // namespace std #endif diff --git a/libstdc++-v3/include/bits/fstream.tcc b/libstdc++-v3/include/bits/fstream.tcc index 18dbaf1..66cb9a1 100644 --- a/libstdc++-v3/include/bits/fstream.tcc +++ b/libstdc++-v3/include/bits/fstream.tcc @@ -477,13 +477,16 @@ namespace std // which are defined via explicit instantiations elsewhere. // NB: This syntax is a GNU extension. extern template class basic_filebuf<char>; - extern template class basic_filebuf<wchar_t>; extern template class basic_ifstream<char>; - extern template class basic_ifstream<wchar_t>; extern template class basic_ofstream<char>; - extern template class basic_ofstream<wchar_t>; extern template class basic_fstream<char>; + +#ifdef _GLIBCPP_USE_WCHAR_T + extern template class basic_filebuf<wchar_t>; + extern template class basic_ifstream<wchar_t>; + extern template class basic_ofstream<wchar_t>; extern template class basic_fstream<wchar_t>; +#endif } // namespace std #endif diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc index f21054e..ce6f3d7 100644 --- a/libstdc++-v3/include/bits/locale_facets.tcc +++ b/libstdc++-v3/include/bits/locale_facets.tcc @@ -2140,42 +2140,21 @@ namespace std extern template class moneypunct_byname<char, true>; extern template class money_get<char>; extern template class money_put<char>; - extern template class moneypunct<wchar_t, false>; - extern template class moneypunct<wchar_t, true>; - extern template class moneypunct_byname<wchar_t, false>; - extern template class moneypunct_byname<wchar_t, true>; - extern template class money_get<wchar_t>; - extern template class money_put<wchar_t>; extern template class numpunct<char>; extern template class numpunct_byname<char>; extern template class num_get<char>; extern template class num_put<char>; - extern template class numpunct<wchar_t>; - extern template class numpunct_byname<wchar_t>; - extern template class num_get<wchar_t>; - extern template class num_put<wchar_t>; extern template class __timepunct<char>; extern template class time_put<char>; extern template class time_put_byname<char>; extern template class time_get<char>; extern template class time_get_byname<char>; - extern template class __timepunct<wchar_t>; - extern template class time_put<wchar_t>; - extern template class time_put_byname<wchar_t>; - extern template class time_get<wchar_t>; - extern template class time_get_byname<wchar_t>; extern template class messages<char>; extern template class messages_byname<char>; - extern template class messages<wchar_t>; - extern template class messages_byname<wchar_t>; extern template class ctype_byname<char>; - extern template class ctype_byname<wchar_t>; extern template class codecvt_byname<char, char, mbstate_t>; - extern template class codecvt_byname<wchar_t, char, mbstate_t>; extern template class collate<char>; extern template class collate_byname<char>; - extern template class collate<wchar_t>; - extern template class collate_byname<wchar_t>; extern template const codecvt<char, char, mbstate_t>& @@ -2229,59 +2208,6 @@ namespace std const messages<char>& use_facet<messages<char> >(const locale&); - extern template - const codecvt<wchar_t, char, mbstate_t>& - use_facet<codecvt<wchar_t, char, mbstate_t> >(locale const&); - - extern template - const collate<wchar_t>& - use_facet<collate<wchar_t> >(const locale&); - - extern template - const numpunct<wchar_t>& - use_facet<numpunct<wchar_t> >(const locale&); - - extern template - const num_put<wchar_t>& - use_facet<num_put<wchar_t> >(const locale&); - - extern template - const num_get<wchar_t>& - use_facet<num_get<wchar_t> >(const locale&); - - extern template - const moneypunct<wchar_t, true>& - use_facet<moneypunct<wchar_t, true> >(const locale&); - - extern template - const moneypunct<wchar_t, false>& - use_facet<moneypunct<wchar_t, false> >(const locale&); - - extern template - const money_put<wchar_t>& - use_facet<money_put<wchar_t> >(const locale&); - - extern template - const money_get<wchar_t>& - use_facet<money_get<wchar_t> >(const locale&); - - extern template - const __timepunct<wchar_t>& - use_facet<__timepunct<wchar_t> >(const locale&); - - extern template - const time_put<wchar_t>& - use_facet<time_put<wchar_t> >(const locale&); - - extern template - const time_get<wchar_t>& - use_facet<time_get<wchar_t> >(const locale&); - - extern template - const messages<wchar_t>& - use_facet<messages<wchar_t> >(const locale&); - - extern template bool has_facet<ctype<char> >(const locale&); @@ -2334,6 +2260,81 @@ namespace std bool has_facet<messages<char> >(const locale&); +#ifdef _GLIBCPP_USE_WCHAR_T + extern template class moneypunct<wchar_t, false>; + extern template class moneypunct<wchar_t, true>; + extern template class moneypunct_byname<wchar_t, false>; + extern template class moneypunct_byname<wchar_t, true>; + extern template class money_get<wchar_t>; + extern template class money_put<wchar_t>; + extern template class numpunct<wchar_t>; + extern template class numpunct_byname<wchar_t>; + extern template class num_get<wchar_t>; + extern template class num_put<wchar_t>; + extern template class __timepunct<wchar_t>; + extern template class time_put<wchar_t>; + extern template class time_put_byname<wchar_t>; + extern template class time_get<wchar_t>; + extern template class time_get_byname<wchar_t>; + extern template class messages<wchar_t>; + extern template class messages_byname<wchar_t>; + extern template class ctype_byname<wchar_t>; + extern template class codecvt_byname<wchar_t, char, mbstate_t>; + extern template class collate<wchar_t>; + extern template class collate_byname<wchar_t>; + + extern template + const codecvt<wchar_t, char, mbstate_t>& + use_facet<codecvt<wchar_t, char, mbstate_t> >(locale const&); + + extern template + const collate<wchar_t>& + use_facet<collate<wchar_t> >(const locale&); + + extern template + const numpunct<wchar_t>& + use_facet<numpunct<wchar_t> >(const locale&); + + extern template + const num_put<wchar_t>& + use_facet<num_put<wchar_t> >(const locale&); + + extern template + const num_get<wchar_t>& + use_facet<num_get<wchar_t> >(const locale&); + + extern template + const moneypunct<wchar_t, true>& + use_facet<moneypunct<wchar_t, true> >(const locale&); + + extern template + const moneypunct<wchar_t, false>& + use_facet<moneypunct<wchar_t, false> >(const locale&); + + extern template + const money_put<wchar_t>& + use_facet<money_put<wchar_t> >(const locale&); + + extern template + const money_get<wchar_t>& + use_facet<money_get<wchar_t> >(const locale&); + + extern template + const __timepunct<wchar_t>& + use_facet<__timepunct<wchar_t> >(const locale&); + + extern template + const time_put<wchar_t>& + use_facet<time_put<wchar_t> >(const locale&); + + extern template + const time_get<wchar_t>& + use_facet<time_get<wchar_t> >(const locale&); + + extern template + const messages<wchar_t>& + use_facet<messages<wchar_t> >(const locale&); + extern template bool has_facet<ctype<wchar_t> >(const locale&); @@ -2385,6 +2386,7 @@ namespace std extern template bool has_facet<messages<wchar_t> >(const locale&); +#endif } // namespace std #endif diff --git a/libstdc++-v3/include/bits/sstream.tcc b/libstdc++-v3/include/bits/sstream.tcc index 99eb6af..606705c 100644 --- a/libstdc++-v3/include/bits/sstream.tcc +++ b/libstdc++-v3/include/bits/sstream.tcc @@ -226,13 +226,16 @@ namespace std // which are defined via explicit instantiations elsewhere. // NB: This syntax is a GNU extension. extern template class basic_stringbuf<char>; - extern template class basic_stringbuf<wchar_t>; extern template class basic_istringstream<char>; - extern template class basic_istringstream<wchar_t>; extern template class basic_ostringstream<char>; - extern template class basic_ostringstream<wchar_t>; extern template class basic_stringstream<char>; + +#ifdef _GLIBCPP_USE_WCHAR_T + extern template class basic_stringbuf<wchar_t>; + extern template class basic_istringstream<wchar_t>; + extern template class basic_ostringstream<wchar_t>; extern template class basic_stringstream<wchar_t>; +#endif } // namespace std #endif diff --git a/libstdc++-v3/include/bits/streambuf.tcc b/libstdc++-v3/include/bits/streambuf.tcc index 2101f10..c8084ee 100644 --- a/libstdc++-v3/include/bits/streambuf.tcc +++ b/libstdc++-v3/include/bits/streambuf.tcc @@ -249,11 +249,13 @@ namespace std __copy_streambufs(basic_ios<char>&, basic_streambuf<char>*, basic_streambuf<char>*); +#ifdef _GLIBCPP_USE_WCHAR_T extern template class basic_streambuf<wchar_t>; extern template streamsize __copy_streambufs(basic_ios<wchar_t>&, basic_streambuf<wchar_t>*, basic_streambuf<wchar_t>*); +#endif } // namespace std #endif diff --git a/libstdc++-v3/include/bits/stringfwd.h b/libstdc++-v3/include/bits/stringfwd.h index 07b1009..db40bef 100644 --- a/libstdc++-v3/include/bits/stringfwd.h +++ b/libstdc++-v3/include/bits/stringfwd.h @@ -45,25 +45,25 @@ namespace std { - template<class _CharT> - struct char_traits; - - template<> struct char_traits<char>; -#ifdef _GLIBCPP_USE_WCHAR_T - template<> struct char_traits<wchar_t>; -#endif - template<typename _Alloc> class allocator; + template<class _CharT> + struct char_traits; + template<typename _CharT, typename _Traits = char_traits<_CharT>, typename _Alloc = allocator<_CharT> > class basic_string; + + template<> struct char_traits<char>; - /// 99%% of %string users only ever [need to] see the typedef. typedef basic_string<char> string; - /// 99%% of %wstring users only ever [need to] see the typedef. + +#ifdef _GLIBCPP_USE_WCHAR_T + template<> struct char_traits<wchar_t>; + typedef basic_string<wchar_t> wstring; +#endif } // namespace std #endif // _CPP_BITS_STRINGFWD_H diff --git a/libstdc++-v3/include/std/std_iomanip.h b/libstdc++-v3/include/std/std_iomanip.h index e046c82..23237ce 100644 --- a/libstdc++-v3/include/std/std_iomanip.h +++ b/libstdc++-v3/include/std/std_iomanip.h @@ -225,25 +225,27 @@ namespace std extern template ostream& operator<<(ostream&, _Setbase); extern template ostream& operator<<(ostream&, _Setprecision); extern template ostream& operator<<(ostream&, _Setw); - extern template wostream& operator<<(wostream&, _Setfill<wchar_t>); - extern template wostream& operator<<(wostream&, _Setiosflags); - extern template wostream& operator<<(wostream&, _Resetiosflags); - extern template wostream& operator<<(wostream&, _Setbase); - extern template wostream& operator<<(wostream&, _Setprecision); - extern template wostream& operator<<(wostream&, _Setw); - extern template istream& operator>>(istream&, _Setfill<char>); extern template istream& operator>>(istream&, _Setiosflags); extern template istream& operator>>(istream&, _Resetiosflags); extern template istream& operator>>(istream&, _Setbase); extern template istream& operator>>(istream&, _Setprecision); extern template istream& operator>>(istream&, _Setw); + +#ifdef _GLIBCPP_USE_WCHAR_T + extern template wostream& operator<<(wostream&, _Setfill<wchar_t>); + extern template wostream& operator<<(wostream&, _Setiosflags); + extern template wostream& operator<<(wostream&, _Resetiosflags); + extern template wostream& operator<<(wostream&, _Setbase); + extern template wostream& operator<<(wostream&, _Setprecision); + extern template wostream& operator<<(wostream&, _Setw); extern template wistream& operator>>(wistream&, _Setfill<wchar_t>); extern template wistream& operator>>(wistream&, _Setiosflags); extern template wistream& operator>>(wistream&, _Resetiosflags); extern template wistream& operator>>(wistream&, _Setbase); extern template wistream& operator>>(wistream&, _Setprecision); extern template wistream& operator>>(wistream&, _Setw); +#endif } // namespace std #endif diff --git a/libstdc++-v3/include/std/std_iosfwd.h b/libstdc++-v3/include/std/std_iosfwd.h index f76ca7c..797f493 100644 --- a/libstdc++-v3/include/std/std_iosfwd.h +++ b/libstdc++-v3/include/std/std_iosfwd.h @@ -116,6 +116,7 @@ namespace std typedef basic_ofstream<char> ofstream; typedef basic_fstream<char> fstream; +#ifdef _GLIBCPP_USE_WCHAR_T typedef basic_ios<wchar_t> wios; typedef basic_streambuf<wchar_t> wstreambuf; typedef basic_istream<wchar_t> wistream; @@ -129,6 +130,7 @@ namespace std typedef basic_ifstream<wchar_t> wifstream; typedef basic_ofstream<wchar_t> wofstream; typedef basic_fstream<wchar_t> wfstream; +#endif } // namespace std #endif diff --git a/libstdc++-v3/include/std/std_iostream.h b/libstdc++-v3/include/std/std_iostream.h index 5b3da9c..d0736b8 100644 --- a/libstdc++-v3/include/std/std_iostream.h +++ b/libstdc++-v3/include/std/std_iostream.h @@ -51,6 +51,7 @@ namespace std extern ostream cout; extern ostream cerr; extern ostream clog; + #ifdef _GLIBCPP_USE_WCHAR_T extern wistream wcin; extern wostream wcout; |