1.1 --- a/epoc32/include/stdapis/stlportv5/stl/_monetary.h Wed Mar 31 12:27:01 2010 +0100
1.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_monetary.h Wed Mar 31 12:33:34 2010 +0100
1.3 @@ -1,22 +1,22 @@
1.4 /*
1.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation. All rights reserved.
1.6 + * Portions Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
1.7 *
1.8 * Copyright (c) 1999
1.9 * Silicon Graphics Computer Systems, Inc.
1.10 *
1.11 - * Copyright (c) 1999
1.12 + * Copyright (c) 1999
1.13 * Boris Fomitchev
1.14 *
1.15 * This material is provided "as is", with absolutely no warranty expressed
1.16 * or implied. Any use is at your own risk.
1.17 *
1.18 - * Permission to use or copy this software for any purpose is hereby granted
1.19 + * Permission to use or copy this software for any purpose is hereby granted
1.20 * without fee, provided the above notices are retained on all copies.
1.21 * Permission to modify the code and to distribute modified code is granted,
1.22 * provided the above notices are retained, and a notice that the code was
1.23 * modified is included with the above copyright notice.
1.24 *
1.25 - */
1.26 + */
1.27 // WARNING: This is an internal header file, included by other C++
1.28 // standard library headers. You should not attempt to use this header
1.29 // file directly.
1.30 @@ -26,15 +26,15 @@
1.31 #define _STLP_INTERNAL_MONETARY_H
1.32
1.33 #ifndef _STLP_INTERNAL_CTYPE_H
1.34 -# include <stl/_ctype.h>
1.35 +# include <stl/_ctype.h>
1.36 #endif
1.37
1.38 #ifndef _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H
1.39 -# include <stl/_ostreambuf_iterator.h>
1.40 +# include <stl/_ostreambuf_iterator.h>
1.41 #endif
1.42
1.43 #ifndef _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H
1.44 -# include <stl/_istreambuf_iterator.h>
1.45 +# include <stl/_istreambuf_iterator.h>
1.46 #endif
1.47
1.48 _STLP_BEGIN_NAMESPACE
1.49 @@ -47,121 +47,50 @@
1.50 };
1.51 };
1.52
1.53 -
1.54 -#ifdef __SYMBIAN32__
1.55 -
1.56 -extern locale::id& Moneypunct_charT_GetFacetLocaleId(const char* type);
1.57 -_STLP_DECLSPEC void _Init_monetary_formatsE(money_base::pattern& pos_format,
1.58 - money_base::pattern& neg_format);
1.59 -
1.60 -template <class _CharT, __DFL_NON_TYPE_PARAM(bool, _International, false) >
1.61 -class moneypunct : public locale::facet , public money_base
1.62 -{
1.63 -public:
1.64 - typedef _CharT char_type;
1.65 - typedef basic_string<_CharT> string_type;
1.66 - explicit moneypunct _STLP_PSPEC2(_CharT, _International) (size_t __refs = 0)
1.67 - {
1.68 - _Init_monetary_formatsE(_M_pos_format, _M_neg_format);
1.69 - }
1.70 - _CharT decimal_point() const { return do_decimal_point(); }
1.71 - _CharT thousands_sep() const { return do_thousands_sep(); }
1.72 - string grouping() const { return do_grouping(); }
1.73 - string_type curr_symbol() const { return do_curr_symbol(); }
1.74 - string_type positive_sign() const { return do_positive_sign(); }
1.75 - string_type negative_sign() const { return do_negative_sign(); }
1.76 - int frac_digits() const { return do_frac_digits(); }
1.77 - pattern pos_format() const { return do_pos_format(); }
1.78 - pattern neg_format() const { return do_neg_format(); }
1.79 - #if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1.80 - static locale::id& GetFacetLocaleId(){return Moneypunct_charT_GetFacetLocaleId(typeid(_CharT).name()); };
1.81 -#else
1.82 - static locale::id id;
1.83 -#endif
1.84 -# if defined (_STLP_STATIC_CONST_INIT_BUG)
1.85 - enum _IntlVal { intl = _International } ;
1.86 -# else
1.87 - static const bool intl = _International;
1.88 -# endif
1.89 -
1.90 -protected:
1.91 - pattern _M_pos_format;
1.92 - pattern _M_neg_format;
1.93 -
1.94 - static string_type _M_psign, _M_nsign, _M_currSym;
1.95 - static string _M_group;
1.96 - ~moneypunct _STLP_PSPEC2(char, true) () { };
1.97 -
1.98 - virtual _CharT do_decimal_point() const;
1.99 - virtual _CharT do_thousands_sep() const;
1.100 - virtual string do_grouping() const;
1.101 -
1.102 - virtual basic_string<_CharT> do_curr_symbol() const;
1.103 -
1.104 - virtual basic_string<_CharT> do_positive_sign() const;
1.105 - virtual basic_string<_CharT> do_negative_sign() const;
1.106 - virtual int do_frac_digits() const;
1.107 - virtual pattern do_pos_format() const;
1.108 - virtual pattern do_neg_format() const;
1.109 -
1.110 - friend class _Locale;
1.111 -
1.112 -};
1.113 -template <class _CharT, bool _International>
1.114 -string moneypunct<_CharT, _International>::_M_group;
1.115 -template <class _CharT, bool _International>
1.116 -basic_string<_CharT> moneypunct<_CharT, _International>::_M_psign;
1.117 -template <class _CharT, bool _International>
1.118 -basic_string<_CharT> moneypunct<_CharT, _International>::_M_nsign;
1.119 -template <class _CharT, bool _International>
1.120 -basic_string<_CharT> moneypunct<_CharT, _International>::_M_currSym;
1.121 -
1.122 -
1.123 -#else
1.124 // moneypunct facets: forward declaration
1.125 -template <class _charT, __DFL_NON_TYPE_PARAM(bool, _International, false) > class moneypunct {};
1.126 -#endif
1.127 +template <class _charT, _STLP_DFL_NON_TYPE_PARAM(bool, _International, false) > class moneypunct {};
1.128
1.129 // money_get facets
1.130
1.131 -template <class _CharT, __DFL_TMPL_PARAM(_InputIter , istreambuf_iterator<_CharT>) >
1.132 -class money_get : public locale::facet
1.133 -{
1.134 - friend class _Locale;
1.135 +#if defined (_STLP_LIMITED_DEFAULT_TEMPLATES)
1.136 +template <class _CharT, class _InputIter>
1.137 +#else
1.138 +template <class _CharT, class _InputIter = istreambuf_iterator<_CharT, char_traits<_CharT> > >
1.139 +#endif
1.140 +class money_get : public locale::facet {
1.141 + friend class _Locale_impl;
1.142 +
1.143 public:
1.144 typedef _CharT char_type;
1.145 typedef _InputIter iter_type;
1.146 typedef basic_string<_CharT, char_traits<_CharT>, allocator<_CharT> > string_type;
1.147
1.148 - money_get(size_t __refs = 0) : _BaseFacet(__refs) {}
1.149 -# ifndef _STLP_NO_LONG_DOUBLE
1.150 + money_get(size_t __refs = 0) : locale::facet(__refs) {}
1.151 iter_type get(iter_type __s, iter_type __end, bool __intl,
1.152 ios_base& __str, ios_base::iostate& __err,
1.153 - long double& __units) const
1.154 + _STLP_LONGEST_FLOAT_TYPE& __units) const
1.155 { return do_get(__s, __end, __intl, __str, __err, __units); }
1.156 -# endif
1.157 iter_type get(iter_type __s, iter_type __end, bool __intl,
1.158 ios_base& __str, ios_base::iostate& __err,
1.159 string_type& __digits) const
1.160 { return do_get(__s, __end, __intl, __str, __err, __digits); }
1.161
1.162 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1.163 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1.164 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(istreambuf_iterator<wchar_t, char_traits<wchar_t> >* );
1.165 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(const wchar_t**);
1.166 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(istreambuf_iterator<char, char_traits<char> >* );
1.167 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(const char **);
1.168 -#else
1.169 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1.170 +#if defined(__SYMBIAN32__WSD__)
1.171 + static _STLP_STATIC_MEMBER_DECLSPEC locale::id& GetFacetLocaleId();
1.172 +#elif defined (__SYMBIAN32__NO_STATIC_IMPORTS__)
1.173 + static _STLP_STATIC_MEMBER_DECLSPEC locale::id& GetFacetLocaleId();
1.174 + static locale::id id;
1.175 +#else
1.176 + // NOTE: Symbian doesn't support exporting static data.
1.177 + // Users of this class should use GetFacetLocaleId() to access the data member id
1.178 + static _STLP_STATIC_MEMBER_DECLSPEC locale::id id;
1.179 #endif
1.180
1.181 protected:
1.182 ~money_get() {}
1.183 -# ifndef _STLP_NO_LONG_DOUBLE
1.184 virtual iter_type do_get(iter_type __s, iter_type __end, bool __intl,
1.185 ios_base& __str, ios_base::iostate& __err,
1.186 - long double& __units) const;
1.187 -# endif
1.188 + _STLP_LONGEST_FLOAT_TYPE& __units) const;
1.189 virtual iter_type do_get(iter_type __s, iter_type __end, bool __intl,
1.190 ios_base& __str, ios_base::iostate& __err,
1.191 string_type& __digits) const;
1.192 @@ -171,17 +100,12 @@
1.193 // moneypunct facets: definition of specializations
1.194
1.195 _STLP_TEMPLATE_NULL
1.196 -#ifdef __SYMBIAN32__
1.197 -class moneypunct<char, true> : public locale::facet, public money_base
1.198 -#else
1.199 -class _STLP_CLASS_DECLSPEC moneypunct<char, true> : public locale::facet, public money_base
1.200 -#endif
1.201 -{
1.202 +class _STLP_CLASS_DECLSPEC moneypunct<char, true> : public locale::facet, public money_base {
1.203
1.204 public:
1.205 typedef char char_type;
1.206 typedef string string_type;
1.207 -_STLP_DECLSPEC explicit moneypunct _STLP_PSPEC2(char, true) (size_t __refs = 0);
1.208 + _STLP_DECLSPEC explicit moneypunct _STLP_PSPEC2(char, true) (size_t __refs = 0);
1.209
1.210 char decimal_point() const { return do_decimal_point(); }
1.211 char thousands_sep() const { return do_thousands_sep(); }
1.212 @@ -193,10 +117,15 @@
1.213 pattern pos_format() const { return do_pos_format(); }
1.214 pattern neg_format() const { return do_neg_format(); }
1.215
1.216 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1.217 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1.218 +#if defined(__SYMBIAN32__WSD__)
1.219 + static _STLP_STATIC_MEMBER_DECLSPEC locale::id& GetFacetLocaleId();
1.220 +#elif defined (__SYMBIAN32__NO_STATIC_IMPORTS__)
1.221 + static _STLP_STATIC_MEMBER_DECLSPEC locale::id& GetFacetLocaleId();
1.222 + static locale::id id;
1.223 #else
1.224 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1.225 + // NOTE: Symbian doesn't support exporting static data.
1.226 + // Users of this class should use GetFacetLocaleId() to access the data member id
1.227 + static _STLP_STATIC_MEMBER_DECLSPEC locale::id id;
1.228 #endif
1.229 # if defined (_STLP_STATIC_CONST_INIT_BUG)
1.230 enum _IntlVal { intl = 1 } ;
1.231 @@ -208,36 +137,31 @@
1.232 pattern _M_pos_format;
1.233 pattern _M_neg_format;
1.234
1.235 -_STLP_DECLSPEC ~moneypunct _STLP_PSPEC2(char, true) ();
1.236 + _STLP_DECLSPEC ~moneypunct _STLP_PSPEC2(char, true) ();
1.237
1.238 -_STLP_DECLSPEC virtual char do_decimal_point() const;
1.239 + _STLP_DECLSPEC virtual char do_decimal_point() const;
1.240 _STLP_DECLSPEC virtual char do_thousands_sep() const;
1.241 -_STLP_DECLSPEC virtual string do_grouping() const;
1.242 + _STLP_DECLSPEC virtual string do_grouping() const;
1.243
1.244 -_STLP_DECLSPEC virtual string do_curr_symbol() const;
1.245 + _STLP_DECLSPEC virtual string do_curr_symbol() const;
1.246
1.247 -_STLP_DECLSPEC virtual string do_positive_sign() const;
1.248 -_STLP_DECLSPEC virtual string do_negative_sign() const;
1.249 -_STLP_DECLSPEC virtual int do_frac_digits() const;
1.250 -_STLP_DECLSPEC virtual pattern do_pos_format() const;
1.251 -_STLP_DECLSPEC virtual pattern do_neg_format() const;
1.252 + _STLP_DECLSPEC virtual string do_positive_sign() const;
1.253 + _STLP_DECLSPEC virtual string do_negative_sign() const;
1.254 + _STLP_DECLSPEC virtual int do_frac_digits() const;
1.255 + _STLP_DECLSPEC virtual pattern do_pos_format() const;
1.256 + _STLP_DECLSPEC virtual pattern do_neg_format() const;
1.257
1.258 - friend class _Locale;
1.259 -
1.260 + friend class _Locale_impl;
1.261 };
1.262
1.263 _STLP_TEMPLATE_NULL
1.264 -#ifdef __SYMBIAN32__
1.265 -class moneypunct<char, false> : public locale::facet, public money_base
1.266 -#else
1.267 class _STLP_CLASS_DECLSPEC moneypunct<char, false> : public locale::facet, public money_base
1.268 -#endif
1.269 {
1.270 public:
1.271 typedef char char_type;
1.272 typedef string string_type;
1.273
1.274 -_STLP_DECLSPEC explicit moneypunct _STLP_PSPEC2(char, false) (size_t __refs = 0);
1.275 + _STLP_DECLSPEC explicit moneypunct _STLP_PSPEC2(char, false) (size_t __refs = 0);
1.276
1.277 char decimal_point() const { return do_decimal_point(); }
1.278 char thousands_sep() const { return do_thousands_sep(); }
1.279 @@ -249,11 +173,17 @@
1.280 pattern pos_format() const { return do_pos_format(); }
1.281 pattern neg_format() const { return do_neg_format(); }
1.282
1.283 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1.284 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1.285 +#if defined(__SYMBIAN32__WSD__)
1.286 + static _STLP_STATIC_MEMBER_DECLSPEC locale::id& GetFacetLocaleId();
1.287 +#elif defined (__SYMBIAN32__NO_STATIC_IMPORTS__)
1.288 + static _STLP_STATIC_MEMBER_DECLSPEC locale::id& GetFacetLocaleId();
1.289 + static locale::id id;
1.290 #else
1.291 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1.292 + // NOTE: Symbian doesn't support exporting static data.
1.293 + // Users of this class should use GetFacetLocaleId() to access the data member id
1.294 + static _STLP_STATIC_MEMBER_DECLSPEC locale::id id;
1.295 #endif
1.296 +
1.297 # if defined (_STLP_STATIC_CONST_INIT_BUG)
1.298 enum _IntlVal { intl = 0 } ;
1.299 # else
1.300 @@ -264,38 +194,34 @@
1.301 pattern _M_pos_format;
1.302 pattern _M_neg_format;
1.303
1.304 -_STLP_DECLSPEC ~moneypunct _STLP_PSPEC2(char, false) ();
1.305 + _STLP_DECLSPEC ~moneypunct _STLP_PSPEC2(char, false) ();
1.306
1.307 -_STLP_DECLSPEC virtual char do_decimal_point() const;
1.308 + _STLP_DECLSPEC virtual char do_decimal_point() const;
1.309 _STLP_DECLSPEC virtual char do_thousands_sep() const;
1.310 -_STLP_DECLSPEC virtual string do_grouping() const;
1.311 + _STLP_DECLSPEC virtual string do_grouping() const;
1.312
1.313 -_STLP_DECLSPEC virtual string do_curr_symbol() const;
1.314 + _STLP_DECLSPEC virtual string do_curr_symbol() const;
1.315
1.316 -_STLP_DECLSPEC virtual string do_positive_sign() const;
1.317 -_STLP_DECLSPEC virtual string do_negative_sign() const;
1.318 -_STLP_DECLSPEC virtual int do_frac_digits() const;
1.319 -_STLP_DECLSPEC virtual pattern do_pos_format() const;
1.320 -_STLP_DECLSPEC virtual pattern do_neg_format() const;
1.321 + _STLP_DECLSPEC virtual string do_positive_sign() const;
1.322 + _STLP_DECLSPEC virtual string do_negative_sign() const;
1.323 + _STLP_DECLSPEC virtual int do_frac_digits() const;
1.324 + _STLP_DECLSPEC virtual pattern do_pos_format() const;
1.325 + _STLP_DECLSPEC virtual pattern do_neg_format() const;
1.326
1.327 - friend class _Locale;
1.328 + friend class _Locale_impl;
1.329 };
1.330
1.331
1.332 # ifndef _STLP_NO_WCHAR_T
1.333
1.334 _STLP_TEMPLATE_NULL
1.335 -#ifdef __SYMBIAN32__
1.336 -class moneypunct<wchar_t, true> : public locale::facet, public money_base
1.337 -#else
1.338 class _STLP_CLASS_DECLSPEC moneypunct<wchar_t, true> : public locale::facet, public money_base
1.339 -#endif
1.340 {
1.341 - friend class _Locale;
1.342 + friend class _Locale_impl;
1.343 public:
1.344 typedef wchar_t char_type;
1.345 typedef wstring string_type;
1.346 -_STLP_DECLSPEC explicit moneypunct _STLP_PSPEC2(wchar_t, true) (size_t __refs = 0);
1.347 + _STLP_DECLSPEC explicit moneypunct _STLP_PSPEC2(wchar_t, true) (size_t __refs = 0);
1.348 wchar_t decimal_point() const { return do_decimal_point(); }
1.349 wchar_t thousands_sep() const { return do_thousands_sep(); }
1.350 string grouping() const { return do_grouping(); }
1.351 @@ -306,11 +232,17 @@
1.352 pattern pos_format() const { return do_pos_format(); }
1.353 pattern neg_format() const { return do_neg_format(); }
1.354
1.355 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1.356 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1.357 +#if defined(__SYMBIAN32__WSD__)
1.358 + static _STLP_STATIC_MEMBER_DECLSPEC locale::id& GetFacetLocaleId();
1.359 +#elif defined (__SYMBIAN32__NO_STATIC_IMPORTS__)
1.360 + static _STLP_STATIC_MEMBER_DECLSPEC locale::id& GetFacetLocaleId();
1.361 + static locale::id id;
1.362 #else
1.363 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1.364 + // NOTE: Symbian doesn't support exporting static data.
1.365 + // Users of this class should use GetFacetLocaleId() to access the data member id
1.366 + static _STLP_STATIC_MEMBER_DECLSPEC locale::id id;
1.367 #endif
1.368 +
1.369 # if defined (_STLP_STATIC_CONST_INIT_BUG)
1.370 enum _IntlVal { intl = 1 } ;
1.371 # else
1.372 @@ -321,34 +253,30 @@
1.373 pattern _M_pos_format;
1.374 pattern _M_neg_format;
1.375
1.376 -_STLP_DECLSPEC ~moneypunct _STLP_PSPEC2(wchar_t, true) ();
1.377 + _STLP_DECLSPEC ~moneypunct _STLP_PSPEC2(wchar_t, true) ();
1.378
1.379 -_STLP_DECLSPEC virtual wchar_t do_decimal_point() const;
1.380 + _STLP_DECLSPEC virtual wchar_t do_decimal_point() const;
1.381 _STLP_DECLSPEC virtual wchar_t do_thousands_sep() const;
1.382 -_STLP_DECLSPEC virtual string do_grouping() const;
1.383 + _STLP_DECLSPEC virtual string do_grouping() const;
1.384
1.385 -_STLP_DECLSPEC virtual string_type do_curr_symbol() const;
1.386 + _STLP_DECLSPEC virtual string_type do_curr_symbol() const;
1.387
1.388 -_STLP_DECLSPEC virtual string_type do_positive_sign() const;
1.389 -_STLP_DECLSPEC virtual string_type do_negative_sign() const;
1.390 -_STLP_DECLSPEC virtual int do_frac_digits() const;
1.391 -_STLP_DECLSPEC virtual pattern do_pos_format() const;
1.392 -_STLP_DECLSPEC virtual pattern do_neg_format() const;
1.393 + _STLP_DECLSPEC virtual string_type do_positive_sign() const;
1.394 + _STLP_DECLSPEC virtual string_type do_negative_sign() const;
1.395 + _STLP_DECLSPEC virtual int do_frac_digits() const;
1.396 + _STLP_DECLSPEC virtual pattern do_pos_format() const;
1.397 + _STLP_DECLSPEC virtual pattern do_neg_format() const;
1.398 };
1.399
1.400
1.401 _STLP_TEMPLATE_NULL
1.402 -#ifdef __SYMBIAN32__
1.403 -class moneypunct<wchar_t, false> : public locale::facet, public money_base
1.404 -#else
1.405 class _STLP_CLASS_DECLSPEC moneypunct<wchar_t, false> : public locale::facet, public money_base
1.406 -#endif
1.407 {
1.408 - friend class _Locale;
1.409 + friend class _Locale_impl;
1.410 public:
1.411 typedef wchar_t char_type;
1.412 typedef wstring string_type;
1.413 -_STLP_DECLSPEC explicit moneypunct _STLP_PSPEC2(wchar_t, false) (size_t __refs = 0);
1.414 + _STLP_DECLSPEC explicit moneypunct _STLP_PSPEC2(wchar_t, false) (size_t __refs = 0);
1.415 wchar_t decimal_point() const { return do_decimal_point(); }
1.416 wchar_t thousands_sep() const { return do_thousands_sep(); }
1.417 string grouping() const { return do_grouping(); }
1.418 @@ -359,11 +287,17 @@
1.419 pattern pos_format() const { return do_pos_format(); }
1.420 pattern neg_format() const { return do_neg_format(); }
1.421
1.422 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1.423 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1.424 +#if defined(__SYMBIAN32__WSD__)
1.425 + static _STLP_STATIC_MEMBER_DECLSPEC locale::id& GetFacetLocaleId();
1.426 +#elif defined (__SYMBIAN32__NO_STATIC_IMPORTS__)
1.427 + static _STLP_STATIC_MEMBER_DECLSPEC locale::id& GetFacetLocaleId();
1.428 + static locale::id id;
1.429 #else
1.430 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1.431 + // NOTE: Symbian doesn't support exporting static data.
1.432 + // Users of this class should use GetFacetLocaleId() to access the data member id
1.433 + static _STLP_STATIC_MEMBER_DECLSPEC locale::id id;
1.434 #endif
1.435 +
1.436 # if defined (_STLP_STATIC_CONST_INIT_BUG)
1.437 enum _IntlVal { intl = 0 } ;
1.438 # else
1.439 @@ -374,225 +308,193 @@
1.440 pattern _M_pos_format;
1.441 pattern _M_neg_format;
1.442
1.443 -_STLP_DECLSPEC ~moneypunct _STLP_PSPEC2(wchar_t, false) ();
1.444 + _STLP_DECLSPEC ~moneypunct _STLP_PSPEC2(wchar_t, false) ();
1.445
1.446 -_STLP_DECLSPEC virtual wchar_t do_decimal_point() const;
1.447 + _STLP_DECLSPEC virtual wchar_t do_decimal_point() const;
1.448 _STLP_DECLSPEC virtual wchar_t do_thousands_sep() const;
1.449 -_STLP_DECLSPEC virtual string do_grouping() const;
1.450 + _STLP_DECLSPEC virtual string do_grouping() const;
1.451
1.452 -_STLP_DECLSPEC virtual string_type do_curr_symbol() const;
1.453 + _STLP_DECLSPEC virtual string_type do_curr_symbol() const;
1.454
1.455 -_STLP_DECLSPEC virtual string_type do_positive_sign() const;
1.456 -_STLP_DECLSPEC virtual string_type do_negative_sign() const;
1.457 -_STLP_DECLSPEC virtual int do_frac_digits() const;
1.458 -_STLP_DECLSPEC virtual pattern do_pos_format() const;
1.459 -_STLP_DECLSPEC virtual pattern do_neg_format() const;
1.460 + _STLP_DECLSPEC virtual string_type do_positive_sign() const;
1.461 + _STLP_DECLSPEC virtual string_type do_negative_sign() const;
1.462 + _STLP_DECLSPEC virtual int do_frac_digits() const;
1.463 + _STLP_DECLSPEC virtual pattern do_pos_format() const;
1.464 + _STLP_DECLSPEC virtual pattern do_neg_format() const;
1.465 };
1.466
1.467 # endif
1.468
1.469 +template <class _charT, _STLP_DFL_NON_TYPE_PARAM(bool , _International , false) > class moneypunct_byname {};
1.470
1.471 -#ifdef __SYMBIAN32__
1.472 -_STLP_DECLSPEC _Locale_monetary* __acquire_monetaryE(const char* );
1.473 -_STLP_DECLSPEC void __release_monetaryE (_Locale_monetary* );
1.474 -
1.475 -
1.476 -_STLP_DECLSPEC char _Locale_mon_decimal_pointE(_Locale_monetary* _M_monetary);
1.477 -
1.478 -_STLP_DECLSPEC char _Locale_mon_thousands_sepE(_Locale_monetary* _M_monetary);
1.479 -
1.480 -_STLP_DECLSPEC string _Locale_mon_groupingE(_Locale_monetary* _M_monetary);
1.481 -
1.482 -_STLP_DECLSPEC string _Locale_int_curr_symbolE(_Locale_monetary* _M_monetary);
1.483 -
1.484 -
1.485 -_STLP_DECLSPEC string _Locale_positive_signE(_Locale_monetary* _M_monetary);
1.486 -
1.487 -_STLP_DECLSPEC string _Locale_negative_signE(_Locale_monetary* _M_monetary);
1.488 -
1.489 -_STLP_DECLSPEC int _Locale_int_frac_digitsE(_Locale_monetary* _M_monetary);
1.490 -
1.491 -
1.492 -template <class _CharT, __DFL_NON_TYPE_PARAM(bool , _International , false) >
1.493 -class moneypunct_byname: public moneypunct<_CharT, _International>
1.494 -{
1.495 +_STLP_TEMPLATE_NULL
1.496 +class _STLP_CLASS_DECLSPEC moneypunct_byname<char, true> : public moneypunct<char, true> {
1.497 public:
1.498 typedef money_base::pattern pattern;
1.499 typedef char char_type;
1.500 - typedef basic_string<_CharT> string_type;
1.501 + typedef string string_type;
1.502
1.503 - explicit moneypunct_byname _STLP_PSPEC2(char, _International) (const char * __name, size_t __refs = 0);
1.504 -
1.505 + _STLP_DECLSPEC explicit moneypunct_byname _STLP_PSPEC2(char, true) (const char * __name, size_t __refs = 0,
1.506 + _Locale_name_hint* __hint = 0);
1.507 +
1.508 protected:
1.509 _Locale_monetary* _M_monetary;
1.510 - ~moneypunct_byname _STLP_PSPEC2(_CharT, _International) ();
1.511 - virtual _CharT do_decimal_point() const;
1.512 - virtual _CharT do_thousands_sep() const;
1.513 - virtual string do_grouping() const;
1.514 + _STLP_DECLSPEC ~moneypunct_byname _STLP_PSPEC2(char, true) ();
1.515 + _STLP_DECLSPEC virtual char do_decimal_point() const;
1.516 + _STLP_DECLSPEC virtual char do_thousands_sep() const;
1.517 + _STLP_DECLSPEC virtual string do_grouping() const;
1.518
1.519 - virtual string_type do_curr_symbol() const;
1.520 + _STLP_DECLSPEC virtual string_type do_curr_symbol() const;
1.521
1.522 - virtual string_type do_positive_sign() const;
1.523 - virtual string_type do_negative_sign() const;
1.524 - virtual int do_frac_digits() const;
1.525 - private:
1.526 - void Convert_string2_string_chart(basic_string<_CharT> &dst, string src);
1.527 -
1.528 + _STLP_DECLSPEC virtual string_type do_positive_sign() const;
1.529 + _STLP_DECLSPEC virtual string_type do_negative_sign() const;
1.530 + _STLP_DECLSPEC virtual int do_frac_digits() const;
1.531 +
1.532 +private:
1.533 + typedef moneypunct_byname<char, true> _Self;
1.534 + //explicitely defined as private to avoid warnings:
1.535 + moneypunct_byname(_Self const&);
1.536 + _Self& operator = (_Self const&);
1.537 };
1.538
1.539 -#else
1.540 -
1.541 -template <class _charT, __DFL_NON_TYPE_PARAM(bool , _International , false) > class moneypunct_byname {};
1.542 -
1.543 -#endif
1.544 -
1.545 _STLP_TEMPLATE_NULL
1.546 -class _STLP_CLASS_DECLSPEC moneypunct_byname<char, true> : public moneypunct<char, true>
1.547 +class _STLP_CLASS_DECLSPEC moneypunct_byname<char, false> : public moneypunct<char, false>
1.548 {
1.549 public:
1.550 typedef money_base::pattern pattern;
1.551 typedef char char_type;
1.552 typedef string string_type;
1.553
1.554 - explicit _STLP_DECLSPEC moneypunct_byname _STLP_PSPEC2(char, true) (const char * __name, size_t __refs = 0);
1.555 + _STLP_DECLSPEC explicit moneypunct_byname _STLP_PSPEC2(char, false) (const char * __name, size_t __refs = 0,
1.556 + _Locale_name_hint* __hint = 0);
1.557
1.558 protected:
1.559 _Locale_monetary* _M_monetary;
1.560 -_STLP_DECLSPEC ~moneypunct_byname _STLP_PSPEC2(char, true) ();
1.561 -_STLP_DECLSPEC virtual char do_decimal_point() const;
1.562 + _STLP_DECLSPEC ~moneypunct_byname _STLP_PSPEC2(char, false) ();
1.563 + _STLP_DECLSPEC virtual char do_decimal_point() const;
1.564 _STLP_DECLSPEC virtual char do_thousands_sep() const;
1.565 -_STLP_DECLSPEC virtual string do_grouping() const;
1.566 + _STLP_DECLSPEC virtual string do_grouping() const;
1.567
1.568 -_STLP_DECLSPEC virtual string_type do_curr_symbol() const;
1.569 + _STLP_DECLSPEC virtual string_type do_curr_symbol() const;
1.570
1.571 -_STLP_DECLSPEC virtual string_type do_positive_sign() const;
1.572 -_STLP_DECLSPEC virtual string_type do_negative_sign() const;
1.573 -_STLP_DECLSPEC virtual int do_frac_digits() const;
1.574 + _STLP_DECLSPEC virtual string_type do_positive_sign() const;
1.575 + _STLP_DECLSPEC virtual string_type do_negative_sign() const;
1.576 + _STLP_DECLSPEC virtual int do_frac_digits() const;
1.577 +
1.578 +private:
1.579 + typedef moneypunct_byname<char, false> _Self;
1.580 + //explicitely defined as private to avoid warnings:
1.581 + moneypunct_byname(_Self const&);
1.582 + _Self& operator = (_Self const&);
1.583 + friend _Locale_name_hint* _Locale_extract_hint(moneypunct_byname<char, false>*);
1.584 };
1.585
1.586 +#if !defined (_STLP_NO_WCHAR_T)
1.587 _STLP_TEMPLATE_NULL
1.588 -class _STLP_CLASS_DECLSPEC moneypunct_byname<char, false> : public moneypunct<char, false>
1.589 -{
1.590 -public:
1.591 - typedef money_base::pattern pattern;
1.592 - typedef char char_type;
1.593 - typedef string string_type;
1.594 -
1.595 - explicit _STLP_DECLSPEC moneypunct_byname _STLP_PSPEC2(char, false) (const char * __name, size_t __refs = 0);
1.596 -
1.597 -protected:
1.598 - _Locale_monetary* _M_monetary;
1.599 -_STLP_DECLSPEC ~moneypunct_byname _STLP_PSPEC2(char, false) ();
1.600 -_STLP_DECLSPEC virtual char do_decimal_point() const;
1.601 - _STLP_DECLSPEC virtual char do_thousands_sep() const;
1.602 -_STLP_DECLSPEC virtual string do_grouping() const;
1.603 -
1.604 -_STLP_DECLSPEC virtual string_type do_curr_symbol() const;
1.605 -
1.606 -_STLP_DECLSPEC virtual string_type do_positive_sign() const;
1.607 -_STLP_DECLSPEC virtual string_type do_negative_sign() const;
1.608 -_STLP_DECLSPEC virtual int do_frac_digits() const;
1.609 -};
1.610 -
1.611 -# ifndef _STLP_NO_WCHAR_T
1.612 -_STLP_TEMPLATE_NULL
1.613 -class _STLP_CLASS_DECLSPEC moneypunct_byname<wchar_t, true> : public moneypunct<wchar_t, true>
1.614 +class _STLP_CLASS_DECLSPEC moneypunct_byname<wchar_t, true> : public moneypunct<wchar_t, true>
1.615 {
1.616 public:
1.617 typedef money_base::pattern pattern;
1.618 typedef wchar_t char_type;
1.619 typedef wstring string_type;
1.620
1.621 - explicit _STLP_DECLSPEC moneypunct_byname _STLP_PSPEC2(wchar_t, true) (const char * __name, size_t __refs = 0);
1.622 + _STLP_DECLSPEC explicit moneypunct_byname _STLP_PSPEC2(wchar_t, true) (const char * __name, size_t __refs = 0,
1.623 + _Locale_name_hint* __hint = 0);
1.624
1.625 protected:
1.626 _Locale_monetary* _M_monetary;
1.627 -_STLP_DECLSPEC ~moneypunct_byname _STLP_PSPEC2(wchar_t, true) ();
1.628 -_STLP_DECLSPEC virtual wchar_t do_decimal_point() const;
1.629 + _STLP_DECLSPEC ~moneypunct_byname _STLP_PSPEC2(wchar_t, true) ();
1.630 + _STLP_DECLSPEC virtual wchar_t do_decimal_point() const;
1.631 _STLP_DECLSPEC virtual wchar_t do_thousands_sep() const;
1.632 -_STLP_DECLSPEC virtual string do_grouping() const;
1.633 + _STLP_DECLSPEC virtual string do_grouping() const;
1.634
1.635 -_STLP_DECLSPEC virtual string_type do_curr_symbol() const;
1.636 + _STLP_DECLSPEC virtual string_type do_curr_symbol() const;
1.637
1.638 -_STLP_DECLSPEC virtual string_type do_positive_sign() const;
1.639 -_STLP_DECLSPEC virtual string_type do_negative_sign() const;
1.640 -_STLP_DECLSPEC virtual int do_frac_digits() const;
1.641 + _STLP_DECLSPEC virtual string_type do_positive_sign() const;
1.642 + _STLP_DECLSPEC virtual string_type do_negative_sign() const;
1.643 + _STLP_DECLSPEC virtual int do_frac_digits() const;
1.644 +
1.645 +private:
1.646 + typedef moneypunct_byname<wchar_t, true> _Self;
1.647 + //explicitely defined as private to avoid warnings:
1.648 + moneypunct_byname(_Self const&);
1.649 + _Self& operator = (_Self const&);
1.650 };
1.651
1.652 _STLP_TEMPLATE_NULL
1.653 -class _STLP_CLASS_DECLSPEC moneypunct_byname<wchar_t, false> : public moneypunct<wchar_t, false>
1.654 +class _STLP_CLASS_DECLSPEC moneypunct_byname<wchar_t, false> : public moneypunct<wchar_t, false>
1.655 {
1.656 public:
1.657 typedef money_base::pattern pattern;
1.658 typedef wchar_t char_type;
1.659 typedef wstring string_type;
1.660
1.661 - explicit _STLP_DECLSPEC moneypunct_byname _STLP_PSPEC2(wchar_t, false) (const char * __name, size_t __refs = 0);
1.662 + _STLP_DECLSPEC explicit moneypunct_byname _STLP_PSPEC2(wchar_t, false) (const char * __name, size_t __refs = 0,
1.663 + _Locale_name_hint* __hint = 0);
1.664
1.665 protected:
1.666 _Locale_monetary* _M_monetary;
1.667 -_STLP_DECLSPEC ~moneypunct_byname _STLP_PSPEC2(wchar_t, false) ();
1.668 -_STLP_DECLSPEC virtual wchar_t do_decimal_point() const;
1.669 + _STLP_DECLSPEC ~moneypunct_byname _STLP_PSPEC2(wchar_t, false) ();
1.670 + _STLP_DECLSPEC virtual wchar_t do_decimal_point() const;
1.671 _STLP_DECLSPEC virtual wchar_t do_thousands_sep() const;
1.672 -_STLP_DECLSPEC virtual string do_grouping() const;
1.673 + _STLP_DECLSPEC virtual string do_grouping() const;
1.674
1.675 -_STLP_DECLSPEC virtual string_type do_curr_symbol() const;
1.676 + _STLP_DECLSPEC virtual string_type do_curr_symbol() const;
1.677
1.678 -_STLP_DECLSPEC virtual string_type do_positive_sign() const;
1.679 -_STLP_DECLSPEC virtual string_type do_negative_sign() const;
1.680 -_STLP_DECLSPEC virtual int do_frac_digits() const;
1.681 + _STLP_DECLSPEC virtual string_type do_positive_sign() const;
1.682 + _STLP_DECLSPEC virtual string_type do_negative_sign() const;
1.683 + _STLP_DECLSPEC virtual int do_frac_digits() const;
1.684 +
1.685 +private:
1.686 + typedef moneypunct_byname<wchar_t, false> _Self;
1.687 + //explicitely defined as private to avoid warnings:
1.688 + moneypunct_byname(_Self const&);
1.689 + _Self& operator = (_Self const&);
1.690 };
1.691 -# endif
1.692 +#endif
1.693
1.694 //===== methods ======
1.695
1.696
1.697 // money_put facets
1.698
1.699 -template <class _CharT, __DFL_TMPL_PARAM( _OutputIter , ostreambuf_iterator<_CharT>) >
1.700 +#if defined (_STLP_LIMITED_DEFAULT_TEMPLATES)
1.701 +template <class _CharT, class _OutputIter>
1.702 +#else
1.703 +template <class _CharT, class _OutputIter = ostreambuf_iterator<_CharT, char_traits<_CharT> > >
1.704 +#endif
1.705 class money_put : public locale::facet {
1.706 - friend class _Locale;
1.707 + friend class _Locale_impl;
1.708
1.709 public:
1.710 typedef _CharT char_type;
1.711 typedef _OutputIter iter_type;
1.712 typedef basic_string<_CharT, char_traits<_CharT>, allocator<_CharT> > string_type;
1.713
1.714 - money_put(size_t __refs = 0) : _BaseFacet(__refs) {}
1.715 -# ifndef _STLP_NO_LONG_DOUBLE
1.716 + money_put(size_t __refs = 0) : locale::facet(__refs) {}
1.717 iter_type put(iter_type __s, bool __intl, ios_base& __str,
1.718 - char_type __fill, long double __units) const
1.719 + char_type __fill, _STLP_LONGEST_FLOAT_TYPE __units) const
1.720 { return do_put(__s, __intl, __str, __fill, __units); }
1.721 -# endif
1.722 iter_type put(iter_type __s, bool __intl, ios_base& __str,
1.723 - char_type __fill,
1.724 + char_type __fill,
1.725 const string_type& __digits) const
1.726 { return do_put(__s, __intl, __str, __fill, __digits); }
1.727
1.728 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1.729 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1.730 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id&
1.731 - GetFacetLocaleId(ostreambuf_iterator<wchar_t, char_traits<wchar_t> > *);
1.732 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id&
1.733 - GetFacetLocaleId(wchar_t**);
1.734 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id&
1.735 - GetFacetLocaleId(ostreambuf_iterator<char, char_traits<char> > *);
1.736 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(char**);
1.737 +#if defined(__SYMBIAN32__WSD__)
1.738 + static _STLP_STATIC_MEMBER_DECLSPEC locale::id& GetFacetLocaleId();
1.739 +#elif defined (__SYMBIAN32__NO_STATIC_IMPORTS__)
1.740 + static _STLP_STATIC_MEMBER_DECLSPEC locale::id& GetFacetLocaleId();
1.741 + static locale::id id;
1.742 #else
1.743 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1.744 + // NOTE: Symbian doesn't support exporting static data.
1.745 + // Users of this class should use GetFacetLocaleId() to access the data member id
1.746 + static _STLP_STATIC_MEMBER_DECLSPEC locale::id id;
1.747 #endif
1.748
1.749 protected:
1.750 ~money_put() {}
1.751 -# ifndef _STLP_NO_LONG_DOUBLE
1.752 virtual iter_type do_put(iter_type __s, bool __intl, ios_base& __str,
1.753 - char_type __fill, long double /* __units */ ) const {
1.754 -
1.755 - locale __loc = __str.getloc();
1.756 - _CharT __buf[64];
1.757 - return do_put(__s, __intl, __str, __fill, __buf + 0);
1.758 - }
1.759 -# endif
1.760 + char_type __fill, _STLP_LONGEST_FLOAT_TYPE __units) const;
1.761 virtual iter_type do_put(iter_type __s, bool __intl, ios_base& __str,
1.762 char_type __fill,
1.763 const string_type& __digits) const;
1.764 @@ -601,8 +503,8 @@
1.765 # if defined (_STLP_USE_TEMPLATE_EXPORT)
1.766 _STLP_EXPORT_TEMPLATE_CLASS money_get<char, istreambuf_iterator<char, char_traits<char> > >;
1.767 _STLP_EXPORT_TEMPLATE_CLASS money_put<char, ostreambuf_iterator<char, char_traits<char> > >;
1.768 -// _STLP_EXPORT_TEMPLATE_CLASS money_get<char, const char* >;
1.769 -// _STLP_EXPORT_TEMPLATE_CLASS money_put<char, char* >;
1.770 +//_STLP_EXPORT_TEMPLATE_CLASS money_get<char, const char* >;
1.771 +//_STLP_EXPORT_TEMPLATE_CLASS money_put<char, char* >;
1.772 # if ! defined (_STLP_NO_WCHAR_T)
1.773 _STLP_EXPORT_TEMPLATE_CLASS money_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >;
1.774 _STLP_EXPORT_TEMPLATE_CLASS money_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >;
1.775 @@ -611,26 +513,11 @@
1.776 # endif
1.777 # endif /* _STLP_USE_TEMPLATE_EXPORT */
1.778
1.779 -# if defined (__BORLANDC__) && defined (_RTLDLL)
1.780 -inline void _Stl_loc_init_monetary() {
1.781 - money_get<char, istreambuf_iterator<char, char_traits<char> > >::id._M_index = 8;
1.782 - money_get<char, const char*>::id._M_index = 9;
1.783 - money_put<char, ostreambuf_iterator<char, char_traits<char> > >::id._M_index = 10;
1.784 - money_put<char, char*>::id._M_index = 11;
1.785 -# ifndef _STLP_NO_WCHAR_T
1.786 - money_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >::id._M_index = 27;
1.787 - money_get<wchar_t, const wchar_t*>::id._M_index = 28;
1.788 - money_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >::id._M_index = 29;
1.789 - money_put<wchar_t, wchar_t*>::id._M_index = 30;
1.790 -# endif
1.791 -}
1.792 -#endif
1.793 -
1.794 _STLP_END_NAMESPACE
1.795
1.796 -# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION)
1.797 +#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION)
1.798 # include <stl/_monetary.c>
1.799 -# endif
1.800 +#endif
1.801
1.802 #endif /* _STLP_INTERNAL_MONETARY_H */
1.803