2014-12-03 François Dumont <fdumont@gcc.gnu.org>
commita6766bdfc92b71dc0097c1a6caebbef5c0ee00f5
authorfdumont <fdumont@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 3 Dec 2014 19:47:00 +0000 (3 19:47 +0000)
committerfdumont <fdumont@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 3 Dec 2014 19:47:00 +0000 (3 19:47 +0000)
treedc940f51b00c0ea19e058fb1a6003428315b179b
parentff69e42b9ba854a3976ccac7eb30f6cd25ce8ed4
2014-12-03  François Dumont  <fdumont@gcc.gnu.org>

PR libstdc++/13631
* include/bits/codecvt.h (codecvt<char, char, mbstate_t>): friend class
std::messages<char>.
(codecvt<wchar_t, char, mbstate_t>): friend class
std::messages<wchar_t>.
* config/locale/gnu/messages_member.h
(messages<char>::do_open): Specialized.
(messages<char>::do_close): Likewise.
(messages<wchar_t>::do_open): Likewise.
(messages<wchar_t>::do_close): Likewise.
* config/locale/gnu/messages_member.cc:
(messages<char>::do_open): Implement. Use bind_textdomain_codeset based
on codecvt<char, char, mbstate_t>._M_c_locale_codecvt code set. Use
internal cache to keep opened domain name with locale information.
(messages<wchar_t>::do_open): Likewise with
codecvt<wchar_t, char, mbstate_t>.
(messages<char>::do_close): Implement. Clean cache information.
(messages<wchar_t>::do_close): Likewise.
(get_glibc_msg): New. Use dgettext rather than gettext using cached
domain name associated to catalog id.
(messages<char>::do_get): Use latter.
(messages<wchar_t>::do_get): Likewise and use also cached locale
codecvt<wchar_t, char, mbstate_t> facet to convert wchar_t default
value to char and the result back to wchar_t.
* testsuite/22_locale/messages/13631.cc: New.
* testsuite/22_locale/messages/members/char/2.cc: Use also fr_FR locale
for charset conversion to get the expected accented character.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218329 138bc75d-0d04-0410-961f-82ee72b054a4
libstdc++-v3/ChangeLog
libstdc++-v3/config/locale/gnu/messages_members.cc
libstdc++-v3/config/locale/gnu/messages_members.h
libstdc++-v3/include/bits/codecvt.h
libstdc++-v3/testsuite/22_locale/messages/13631.cc [new file with mode: 0644]
libstdc++-v3/testsuite/22_locale/messages/members/char/2.cc