Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
6554 serge 1
// std::moneypunct implementation details, generic version -*- C++ -*-
2
 
3
// Copyright (C) 2001-2015 Free Software Foundation, Inc.
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 3, 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
// 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
// .
24
 
25
//
26
// ISO C++ 14882: 22.2.6.3.2  moneypunct virtual functions
27
//
28
 
29
// Written by Benjamin Kosnik 
30
 
31
#include 
32
 
33
namespace std _GLIBCXX_VISIBILITY(default)
34
{
35
_GLIBCXX_BEGIN_NAMESPACE_VERSION
36
 
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
 
41
  // Construct and return valid pattern consisting of some combination of:
42
  // space none symbol sign value
43
  money_base::pattern
44
  money_base::_S_construct_pattern(char, char, char) throw()
45
  { return _S_default_pattern; }
46
#endif
47
 
48
  template<>
49
    void
50
    moneypunct::_M_initialize_moneypunct(__c_locale, const char*)
51
    {
52
      // "C" locale.
53
      if (!_M_data)
54
	_M_data = new __moneypunct_cache;
55
 
56
      _M_data->_M_decimal_point = '.';
57
      _M_data->_M_thousands_sep = ',';
58
      _M_data->_M_grouping = "";
59
      _M_data->_M_grouping_size = 0;
60
      _M_data->_M_curr_symbol = "";
61
      _M_data->_M_curr_symbol_size = 0;
62
      _M_data->_M_positive_sign = "";
63
      _M_data->_M_positive_sign_size = 0;
64
      _M_data->_M_negative_sign = "";
65
      _M_data->_M_negative_sign_size = 0;
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;
69
 
70
      for (size_t __i = 0; __i < money_base::_S_end; ++__i)
71
	_M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
72
    }
73
 
74
  template<>
75
    void
76
    moneypunct::_M_initialize_moneypunct(__c_locale, const char*)
77
    {
78
      // "C" locale.
79
      if (!_M_data)
80
	_M_data = new __moneypunct_cache;
81
 
82
      _M_data->_M_decimal_point = '.';
83
      _M_data->_M_thousands_sep = ',';
84
      _M_data->_M_grouping = "";
85
      _M_data->_M_grouping_size = 0;
86
      _M_data->_M_curr_symbol = "";
87
      _M_data->_M_curr_symbol_size = 0;
88
      _M_data->_M_positive_sign = "";
89
      _M_data->_M_positive_sign_size = 0;
90
      _M_data->_M_negative_sign = "";
91
      _M_data->_M_negative_sign_size = 0;
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;
95
 
96
      for (size_t __i = 0; __i < money_base::_S_end; ++__i)
97
	_M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
98
    }
99
 
100
  template<>
101
    moneypunct::~moneypunct()
102
    { delete _M_data; }
103
 
104
  template<>
105
    moneypunct::~moneypunct()
106
    { delete _M_data; }
107
 
108
#ifdef _GLIBCXX_USE_WCHAR_T
109
  template<>
110
    void
111
    moneypunct::_M_initialize_moneypunct(__c_locale,
112
							const char*)
113
    {
114
      // "C" locale
115
      if (!_M_data)
116
	_M_data = new __moneypunct_cache;
117
 
118
      _M_data->_M_decimal_point = L'.';
119
      _M_data->_M_thousands_sep = L',';
120
      _M_data->_M_grouping = "";
121
      _M_data->_M_grouping_size = 0;
122
      _M_data->_M_curr_symbol = L"";
123
      _M_data->_M_curr_symbol_size = 0;
124
      _M_data->_M_positive_sign = L"";
125
      _M_data->_M_positive_sign_size = 0;
126
      _M_data->_M_negative_sign = L"";
127
      _M_data->_M_negative_sign_size = 0;
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;
131
 
132
      for (size_t __i = 0; __i < money_base::_S_end; ++__i)
133
	_M_data->_M_atoms[__i] =
134
	  static_cast(money_base::_S_atoms[__i]);
135
    }
136
 
137
  template<>
138
    void
139
    moneypunct::_M_initialize_moneypunct(__c_locale,
140
							 const char*)
141
    {
142
      // "C" locale
143
      if (!_M_data)
144
	_M_data = new __moneypunct_cache;
145
 
146
      _M_data->_M_decimal_point = L'.';
147
      _M_data->_M_thousands_sep = L',';
148
      _M_data->_M_grouping = "";
149
      _M_data->_M_grouping_size = 0;
150
      _M_data->_M_curr_symbol = L"";
151
      _M_data->_M_curr_symbol_size = 0;
152
      _M_data->_M_positive_sign = L"";
153
      _M_data->_M_positive_sign_size = 0;
154
      _M_data->_M_negative_sign = L"";
155
      _M_data->_M_negative_sign_size = 0;
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;
159
 
160
      for (size_t __i = 0; __i < money_base::_S_end; ++__i)
161
	_M_data->_M_atoms[__i] =
162
	  static_cast(money_base::_S_atoms[__i]);
163
    }
164
 
165
  template<>
166
    moneypunct::~moneypunct()
167
    { delete _M_data; }
168
 
169
  template<>
170
    moneypunct::~moneypunct()
171
    { delete _M_data; }
172
#endif
173
 
174
_GLIBCXX_END_NAMESPACE_VERSION
175
} // namespace