]> gcc.gnu.org Git - gcc.git/blame - libstdc++-v3/config/locale/gnu/messages_members.h
[multiple changes]
[gcc.git] / libstdc++-v3 / config / locale / gnu / messages_members.h
CommitLineData
33590f13
BK
1// std::messages implementation details, GNU version -*- C++ -*-
2
4b9aaf63 3// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
33590f13
BK
4//
5// This file is part of the GNU ISO C++ Library. This library is free
6// software; you can redistribute it and/or modify it under the
7// terms of the GNU General Public License as published by the
8// Free Software Foundation; either version 2, or (at your option)
9// any later version.
10
11// This library is distributed in the hope that it will be useful,
12// but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14// GNU General Public License for more details.
15
16// You should have received a copy of the GNU General Public License along
17// with this library; see the file COPYING. If not, write to the Free
18// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
19// USA.
20
21// As a special exception, you may use this file as part of a free software
22// library without restriction. Specifically, if other files instantiate
23// templates or use macros or inline functions from this file, or you compile
24// this file and link it with other files to produce an executable, this
25// file does not by itself cause the resulting executable to be covered by
26// the GNU General Public License. This exception does not however
27// invalidate any other reasons why the executable file might be covered by
28// the GNU General Public License.
29
30//
31// ISO C++ 14882: 22.2.7.1.2 messages virtual functions
32//
33
34// Written by Benjamin Kosnik <bkoz@redhat.com>
35
36 // Non-virtual member functions.
37 template<typename _CharT>
b206658a 38 typename messages<_CharT>::catalog
33590f13
BK
39 messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc,
40 const char* __dir) const
41 {
42 bindtextdomain(__s.c_str(), __dir);
43 return this->do_open(__s, __loc);
44 }
45
33590f13 46 template<typename _CharT>
b206658a 47 typename messages<_CharT>::catalog
33590f13
BK
48 messages<_CharT>::do_open(const basic_string<char>& __s,
49 const locale&) const
50 {
51 // No error checking is done, assume the catalog exists and can
52 // be used.
53 textdomain(__s.c_str());
54 return 0;
55 }
56
57 template<typename _CharT>
b206658a 58 typename messages<_CharT>::string_type
33590f13
BK
59 messages<_CharT>::do_get(catalog, int, int,
60 const string_type& __dfault) const
61 {
99ffa1e3 62#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
1f3a2ce1 63 __c_locale __old = __uselocale(_M_c_locale_messages);
33590f13 64 char* __msg = gettext(_M_convert_to_char(__dfault));
1f3a2ce1 65 __uselocale(__old);
33590f13
BK
66 return _M_convert_from_char(__msg);
67#else
6d030676
PC
68 char* __old = strdup(setlocale(LC_ALL, NULL));
69 setlocale(LC_ALL, _M_name_messages);
33590f13 70 char* __msg = gettext(_M_convert_to_char(__dfault));
4b9aaf63 71 setlocale(LC_ALL, __old);
6d030676 72 free(__old);
33590f13
BK
73 return _M_convert_from_char(__msg);
74#endif
75 }
76
77 template<typename _CharT>
78 void
79 messages<_CharT>::do_close(catalog) const
80 { }
This page took 1.898524 seconds and 5 git commands to generate.