]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/config/locale/generic/monetary_members.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / config / locale / generic / monetary_members.cc
CommitLineData
41a49e36 1// std::moneypunct implementation details, generic version -*- C++ -*-
e3e68d56 2
fbd26352 3// Copyright (C) 2001-2019 Free Software Foundation, Inc.
e3e68d56 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
6bc9506f 8// Free Software Foundation; either version 3, or (at your option)
e3e68d56 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
6bc9506f 16// Under Section 7 of GPL version 3, you are granted additional
17// permissions described in the GCC Runtime Library Exception, version
18// 3.1, as published by the Free Software Foundation.
19
20// You should have received a copy of the GNU General Public License and
21// a copy of the GCC Runtime Library Exception along with this program;
22// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
23// <http://www.gnu.org/licenses/>.
e3e68d56 24
25//
41a49e36 26// ISO C++ 14882: 22.2.6.3.2 moneypunct virtual functions
e3e68d56 27//
28
29// Written by Benjamin Kosnik <bkoz@redhat.com>
30
31#include <locale>
32
2948dd21 33namespace std _GLIBCXX_VISIBILITY(default)
34{
35_GLIBCXX_BEGIN_NAMESPACE_VERSION
1069247d 36
63f54259 37// This file might be compiled twice, but we only want to define the members
38// of money_base once.
39#if ! _GLIBCXX_USE_CXX11_ABI
40
e1a0572d 41 // Construct and return valid pattern consisting of some combination of:
42 // space none symbol sign value
43 money_base::pattern
6261db62 44 money_base::_S_construct_pattern(char, char, char) throw()
e1a0572d 45 { return _S_default_pattern; }
63f54259 46#endif
e1a0572d 47
6261db62 48 template<>
e1a0572d 49 void
89ad4b42 50 moneypunct<char, true>::_M_initialize_moneypunct(__c_locale, const char*)
e1a0572d 51 {
90467111 52 // "C" locale.
53 if (!_M_data)
e176a2c6 54 _M_data = new __moneypunct_cache<char, true>;
90467111 55
56 _M_data->_M_decimal_point = '.';
57 _M_data->_M_thousands_sep = ',';
58 _M_data->_M_grouping = "";
e176a2c6 59 _M_data->_M_grouping_size = 0;
90467111 60 _M_data->_M_curr_symbol = "";
e176a2c6 61 _M_data->_M_curr_symbol_size = 0;
90467111 62 _M_data->_M_positive_sign = "";
e176a2c6 63 _M_data->_M_positive_sign_size = 0;
90467111 64 _M_data->_M_negative_sign = "";
e176a2c6 65 _M_data->_M_negative_sign_size = 0;
90467111 66 _M_data->_M_frac_digits = 0;
67 _M_data->_M_pos_format = money_base::_S_default_pattern;
68 _M_data->_M_neg_format = money_base::_S_default_pattern;
e176a2c6 69
70 for (size_t __i = 0; __i < money_base::_S_end; ++__i)
71 _M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
e1a0572d 72 }
73
6261db62 74 template<>
41a49e36 75 void
89ad4b42 76 moneypunct<char, false>::_M_initialize_moneypunct(__c_locale, const char*)
41a49e36 77 {
90467111 78 // "C" locale.
79 if (!_M_data)
e176a2c6 80 _M_data = new __moneypunct_cache<char, false>;
90467111 81
82 _M_data->_M_decimal_point = '.';
83 _M_data->_M_thousands_sep = ',';
84 _M_data->_M_grouping = "";
e176a2c6 85 _M_data->_M_grouping_size = 0;
90467111 86 _M_data->_M_curr_symbol = "";
e176a2c6 87 _M_data->_M_curr_symbol_size = 0;
90467111 88 _M_data->_M_positive_sign = "";
e176a2c6 89 _M_data->_M_positive_sign_size = 0;
90467111 90 _M_data->_M_negative_sign = "";
e176a2c6 91 _M_data->_M_negative_sign_size = 0;
90467111 92 _M_data->_M_frac_digits = 0;
93 _M_data->_M_pos_format = money_base::_S_default_pattern;
94 _M_data->_M_neg_format = money_base::_S_default_pattern;
e176a2c6 95
96 for (size_t __i = 0; __i < money_base::_S_end; ++__i)
97 _M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
41a49e36 98 }
e3e68d56 99
6261db62 100 template<>
5f8a31fe 101 moneypunct<char, true>::~moneypunct()
90467111 102 { delete _M_data; }
5f8a31fe 103
6261db62 104 template<>
5f8a31fe 105 moneypunct<char, false>::~moneypunct()
90467111 106 { delete _M_data; }
5f8a31fe 107
5a64d8cf 108#ifdef _GLIBCXX_USE_WCHAR_T
6261db62 109 template<>
41a49e36 110 void
6261db62 111 moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale,
89ad4b42 112 const char*)
e1a0572d 113 {
114 // "C" locale
90467111 115 if (!_M_data)
e176a2c6 116 _M_data = new __moneypunct_cache<wchar_t, true>;
90467111 117
118 _M_data->_M_decimal_point = L'.';
119 _M_data->_M_thousands_sep = L',';
120 _M_data->_M_grouping = "";
e176a2c6 121 _M_data->_M_grouping_size = 0;
90467111 122 _M_data->_M_curr_symbol = L"";
e176a2c6 123 _M_data->_M_curr_symbol_size = 0;
90467111 124 _M_data->_M_positive_sign = L"";
6261db62 125 _M_data->_M_positive_sign_size = 0;
90467111 126 _M_data->_M_negative_sign = L"";
6261db62 127 _M_data->_M_negative_sign_size = 0;
90467111 128 _M_data->_M_frac_digits = 0;
129 _M_data->_M_pos_format = money_base::_S_default_pattern;
130 _M_data->_M_neg_format = money_base::_S_default_pattern;
e176a2c6 131
e176a2c6 132 for (size_t __i = 0; __i < money_base::_S_end; ++__i)
67a3c585 133 _M_data->_M_atoms[__i] =
134 static_cast<wchar_t>(money_base::_S_atoms[__i]);
e1a0572d 135 }
136
6261db62 137 template<>
e1a0572d 138 void
6261db62 139 moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale,
89ad4b42 140 const char*)
41a49e36 141 {
142 // "C" locale
90467111 143 if (!_M_data)
e176a2c6 144 _M_data = new __moneypunct_cache<wchar_t, false>;
90467111 145
146 _M_data->_M_decimal_point = L'.';
147 _M_data->_M_thousands_sep = L',';
148 _M_data->_M_grouping = "";
e176a2c6 149 _M_data->_M_grouping_size = 0;
90467111 150 _M_data->_M_curr_symbol = L"";
e176a2c6 151 _M_data->_M_curr_symbol_size = 0;
90467111 152 _M_data->_M_positive_sign = L"";
e176a2c6 153 _M_data->_M_positive_sign_size = 0;
90467111 154 _M_data->_M_negative_sign = L"";
e176a2c6 155 _M_data->_M_negative_sign_size = 0;
90467111 156 _M_data->_M_frac_digits = 0;
157 _M_data->_M_pos_format = money_base::_S_default_pattern;
158 _M_data->_M_neg_format = money_base::_S_default_pattern;
e176a2c6 159
e176a2c6 160 for (size_t __i = 0; __i < money_base::_S_end; ++__i)
67a3c585 161 _M_data->_M_atoms[__i] =
162 static_cast<wchar_t>(money_base::_S_atoms[__i]);
41a49e36 163 }
5f8a31fe 164
6261db62 165 template<>
5f8a31fe 166 moneypunct<wchar_t, true>::~moneypunct()
90467111 167 { delete _M_data; }
5f8a31fe 168
6261db62 169 template<>
5f8a31fe 170 moneypunct<wchar_t, false>::~moneypunct()
90467111 171 { delete _M_data; }
e3e68d56 172#endif
1069247d 173
2948dd21 174_GLIBCXX_END_NAMESPACE_VERSION
175} // namespace