1.1 --- a/epoc32/include/stdapis/stlport/stl/_monetary.h Tue Mar 16 16:12:26 2010 +0000
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,641 +0,0 @@
1.4 -/*
1.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation. All rights reserved.
1.6 - *
1.7 - * Copyright (c) 1999
1.8 - * Silicon Graphics Computer Systems, Inc.
1.9 - *
1.10 - * Copyright (c) 1999
1.11 - * Boris Fomitchev
1.12 - *
1.13 - * This material is provided "as is", with absolutely no warranty expressed
1.14 - * or implied. Any use is at your own risk.
1.15 - *
1.16 - * Permission to use or copy this software for any purpose is hereby granted
1.17 - * without fee, provided the above notices are retained on all copies.
1.18 - * Permission to modify the code and to distribute modified code is granted,
1.19 - * provided the above notices are retained, and a notice that the code was
1.20 - * modified is included with the above copyright notice.
1.21 - *
1.22 - */
1.23 -// WARNING: This is an internal header file, included by other C++
1.24 -// standard library headers. You should not attempt to use this header
1.25 -// file directly.
1.26 -
1.27 -
1.28 -#ifndef _STLP_INTERNAL_MONETARY_H
1.29 -#define _STLP_INTERNAL_MONETARY_H
1.30 -
1.31 -#ifndef _STLP_INTERNAL_CTYPE_H
1.32 -# include <stl/_ctype.h>
1.33 -#endif
1.34 -
1.35 -#ifndef _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H
1.36 -# include <stl/_ostreambuf_iterator.h>
1.37 -#endif
1.38 -
1.39 -#ifndef _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H
1.40 -# include <stl/_istreambuf_iterator.h>
1.41 -#endif
1.42 -
1.43 -_STLP_BEGIN_NAMESPACE
1.44 -
1.45 -class money_base {
1.46 -public:
1.47 - enum part {none, space, symbol, sign, value};
1.48 - struct pattern {
1.49 - char field[4];
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 -
1.128 -// money_get facets
1.129 -
1.130 -template <class _CharT, __DFL_TMPL_PARAM(_InputIter , istreambuf_iterator<_CharT>) >
1.131 -class money_get : public locale::facet
1.132 -{
1.133 - friend class _Locale;
1.134 -public:
1.135 - typedef _CharT char_type;
1.136 - typedef _InputIter iter_type;
1.137 - typedef basic_string<_CharT, char_traits<_CharT>, allocator<_CharT> > string_type;
1.138 -
1.139 - money_get(size_t __refs = 0) : _BaseFacet(__refs) {}
1.140 -# ifndef _STLP_NO_LONG_DOUBLE
1.141 - iter_type get(iter_type __s, iter_type __end, bool __intl,
1.142 - ios_base& __str, ios_base::iostate& __err,
1.143 - long double& __units) const
1.144 - { return do_get(__s, __end, __intl, __str, __err, __units); }
1.145 -# endif
1.146 - iter_type get(iter_type __s, iter_type __end, bool __intl,
1.147 - ios_base& __str, ios_base::iostate& __err,
1.148 - string_type& __digits) const
1.149 - { return do_get(__s, __end, __intl, __str, __err, __digits); }
1.150 -
1.151 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1.152 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1.153 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(istreambuf_iterator<wchar_t, char_traits<wchar_t> >* );
1.154 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(const wchar_t**);
1.155 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(istreambuf_iterator<char, char_traits<char> >* );
1.156 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(const char **);
1.157 -#else
1.158 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1.159 -#endif
1.160 -
1.161 -protected:
1.162 - ~money_get() {}
1.163 -# ifndef _STLP_NO_LONG_DOUBLE
1.164 - virtual iter_type do_get(iter_type __s, iter_type __end, bool __intl,
1.165 - ios_base& __str, ios_base::iostate& __err,
1.166 - long double& __units) const;
1.167 -# endif
1.168 - virtual iter_type do_get(iter_type __s, iter_type __end, bool __intl,
1.169 - ios_base& __str, ios_base::iostate& __err,
1.170 - string_type& __digits) const;
1.171 -};
1.172 -
1.173 -
1.174 -// moneypunct facets: definition of specializations
1.175 -
1.176 -_STLP_TEMPLATE_NULL
1.177 -#ifdef __SYMBIAN32__
1.178 -class moneypunct<char, true> : public locale::facet, public money_base
1.179 -#else
1.180 -class _STLP_CLASS_DECLSPEC moneypunct<char, true> : public locale::facet, public money_base
1.181 -#endif
1.182 -{
1.183 -
1.184 -public:
1.185 - typedef char char_type;
1.186 - typedef string string_type;
1.187 -_STLP_DECLSPEC explicit moneypunct _STLP_PSPEC2(char, true) (size_t __refs = 0);
1.188 -
1.189 - char decimal_point() const { return do_decimal_point(); }
1.190 - char thousands_sep() const { return do_thousands_sep(); }
1.191 - string grouping() const { return do_grouping(); }
1.192 - string_type curr_symbol() const { return do_curr_symbol(); }
1.193 - string_type positive_sign() const { return do_positive_sign(); }
1.194 - string_type negative_sign() const { return do_negative_sign(); }
1.195 - int frac_digits() const { return do_frac_digits(); }
1.196 - pattern pos_format() const { return do_pos_format(); }
1.197 - pattern neg_format() const { return do_neg_format(); }
1.198 -
1.199 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1.200 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1.201 -#else
1.202 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1.203 -#endif
1.204 -# if defined (_STLP_STATIC_CONST_INIT_BUG)
1.205 - enum _IntlVal { intl = 1 } ;
1.206 -# else
1.207 - static const bool intl = true;
1.208 -# endif
1.209 -
1.210 -protected:
1.211 - pattern _M_pos_format;
1.212 - pattern _M_neg_format;
1.213 -
1.214 -_STLP_DECLSPEC ~moneypunct _STLP_PSPEC2(char, true) ();
1.215 -
1.216 -_STLP_DECLSPEC virtual char do_decimal_point() const;
1.217 - _STLP_DECLSPEC virtual char do_thousands_sep() const;
1.218 -_STLP_DECLSPEC virtual string do_grouping() const;
1.219 -
1.220 -_STLP_DECLSPEC virtual string do_curr_symbol() const;
1.221 -
1.222 -_STLP_DECLSPEC virtual string do_positive_sign() const;
1.223 -_STLP_DECLSPEC virtual string do_negative_sign() const;
1.224 -_STLP_DECLSPEC virtual int do_frac_digits() const;
1.225 -_STLP_DECLSPEC virtual pattern do_pos_format() const;
1.226 -_STLP_DECLSPEC virtual pattern do_neg_format() const;
1.227 -
1.228 - friend class _Locale;
1.229 -
1.230 -};
1.231 -
1.232 -_STLP_TEMPLATE_NULL
1.233 -#ifdef __SYMBIAN32__
1.234 -class moneypunct<char, false> : public locale::facet, public money_base
1.235 -#else
1.236 -class _STLP_CLASS_DECLSPEC moneypunct<char, false> : public locale::facet, public money_base
1.237 -#endif
1.238 -{
1.239 -public:
1.240 - typedef char char_type;
1.241 - typedef string string_type;
1.242 -
1.243 -_STLP_DECLSPEC explicit moneypunct _STLP_PSPEC2(char, false) (size_t __refs = 0);
1.244 -
1.245 - char decimal_point() const { return do_decimal_point(); }
1.246 - char thousands_sep() const { return do_thousands_sep(); }
1.247 - string grouping() const { return do_grouping(); }
1.248 - string_type curr_symbol() const { return do_curr_symbol(); }
1.249 - string_type positive_sign() const { return do_positive_sign(); }
1.250 - string_type negative_sign() const { return do_negative_sign(); }
1.251 - int frac_digits() const { return do_frac_digits(); }
1.252 - pattern pos_format() const { return do_pos_format(); }
1.253 - pattern neg_format() const { return do_neg_format(); }
1.254 -
1.255 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1.256 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1.257 -#else
1.258 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1.259 -#endif
1.260 -# if defined (_STLP_STATIC_CONST_INIT_BUG)
1.261 - enum _IntlVal { intl = 0 } ;
1.262 -# else
1.263 - static const bool intl = false;
1.264 -# endif
1.265 -
1.266 -protected:
1.267 - pattern _M_pos_format;
1.268 - pattern _M_neg_format;
1.269 -
1.270 -_STLP_DECLSPEC ~moneypunct _STLP_PSPEC2(char, false) ();
1.271 -
1.272 -_STLP_DECLSPEC virtual char do_decimal_point() const;
1.273 - _STLP_DECLSPEC virtual char do_thousands_sep() const;
1.274 -_STLP_DECLSPEC virtual string do_grouping() const;
1.275 -
1.276 -_STLP_DECLSPEC virtual string do_curr_symbol() const;
1.277 -
1.278 -_STLP_DECLSPEC virtual string do_positive_sign() const;
1.279 -_STLP_DECLSPEC virtual string do_negative_sign() const;
1.280 -_STLP_DECLSPEC virtual int do_frac_digits() const;
1.281 -_STLP_DECLSPEC virtual pattern do_pos_format() const;
1.282 -_STLP_DECLSPEC virtual pattern do_neg_format() const;
1.283 -
1.284 - friend class _Locale;
1.285 -};
1.286 -
1.287 -
1.288 -# ifndef _STLP_NO_WCHAR_T
1.289 -
1.290 -_STLP_TEMPLATE_NULL
1.291 -#ifdef __SYMBIAN32__
1.292 -class moneypunct<wchar_t, true> : public locale::facet, public money_base
1.293 -#else
1.294 -class _STLP_CLASS_DECLSPEC moneypunct<wchar_t, true> : public locale::facet, public money_base
1.295 -#endif
1.296 -{
1.297 - friend class _Locale;
1.298 -public:
1.299 - typedef wchar_t char_type;
1.300 - typedef wstring string_type;
1.301 -_STLP_DECLSPEC explicit moneypunct _STLP_PSPEC2(wchar_t, true) (size_t __refs = 0);
1.302 - wchar_t decimal_point() const { return do_decimal_point(); }
1.303 - wchar_t thousands_sep() const { return do_thousands_sep(); }
1.304 - string grouping() const { return do_grouping(); }
1.305 - string_type curr_symbol() const { return do_curr_symbol(); }
1.306 - string_type positive_sign() const { return do_positive_sign(); }
1.307 - string_type negative_sign() const { return do_negative_sign(); }
1.308 - int frac_digits() const { return do_frac_digits(); }
1.309 - pattern pos_format() const { return do_pos_format(); }
1.310 - pattern neg_format() const { return do_neg_format(); }
1.311 -
1.312 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1.313 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1.314 -#else
1.315 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1.316 -#endif
1.317 -# if defined (_STLP_STATIC_CONST_INIT_BUG)
1.318 - enum _IntlVal { intl = 1 } ;
1.319 -# else
1.320 - static const bool intl = true;
1.321 -# endif
1.322 -
1.323 -protected:
1.324 - pattern _M_pos_format;
1.325 - pattern _M_neg_format;
1.326 -
1.327 -_STLP_DECLSPEC ~moneypunct _STLP_PSPEC2(wchar_t, true) ();
1.328 -
1.329 -_STLP_DECLSPEC virtual wchar_t do_decimal_point() const;
1.330 - _STLP_DECLSPEC virtual wchar_t do_thousands_sep() const;
1.331 -_STLP_DECLSPEC virtual string do_grouping() const;
1.332 -
1.333 -_STLP_DECLSPEC virtual string_type do_curr_symbol() const;
1.334 -
1.335 -_STLP_DECLSPEC virtual string_type do_positive_sign() const;
1.336 -_STLP_DECLSPEC virtual string_type do_negative_sign() const;
1.337 -_STLP_DECLSPEC virtual int do_frac_digits() const;
1.338 -_STLP_DECLSPEC virtual pattern do_pos_format() const;
1.339 -_STLP_DECLSPEC virtual pattern do_neg_format() const;
1.340 -};
1.341 -
1.342 -
1.343 -_STLP_TEMPLATE_NULL
1.344 -#ifdef __SYMBIAN32__
1.345 -class moneypunct<wchar_t, false> : public locale::facet, public money_base
1.346 -#else
1.347 -class _STLP_CLASS_DECLSPEC moneypunct<wchar_t, false> : public locale::facet, public money_base
1.348 -#endif
1.349 -{
1.350 - friend class _Locale;
1.351 -public:
1.352 - typedef wchar_t char_type;
1.353 - typedef wstring string_type;
1.354 -_STLP_DECLSPEC explicit moneypunct _STLP_PSPEC2(wchar_t, false) (size_t __refs = 0);
1.355 - wchar_t decimal_point() const { return do_decimal_point(); }
1.356 - wchar_t thousands_sep() const { return do_thousands_sep(); }
1.357 - string grouping() const { return do_grouping(); }
1.358 - string_type curr_symbol() const { return do_curr_symbol(); }
1.359 - string_type positive_sign() const { return do_positive_sign(); }
1.360 - string_type negative_sign() const { return do_negative_sign(); }
1.361 - int frac_digits() const { return do_frac_digits(); }
1.362 - pattern pos_format() const { return do_pos_format(); }
1.363 - pattern neg_format() const { return do_neg_format(); }
1.364 -
1.365 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1.366 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1.367 -#else
1.368 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1.369 -#endif
1.370 -# if defined (_STLP_STATIC_CONST_INIT_BUG)
1.371 - enum _IntlVal { intl = 0 } ;
1.372 -# else
1.373 - static const bool intl = false;
1.374 -# endif
1.375 -
1.376 -protected:
1.377 - pattern _M_pos_format;
1.378 - pattern _M_neg_format;
1.379 -
1.380 -_STLP_DECLSPEC ~moneypunct _STLP_PSPEC2(wchar_t, false) ();
1.381 -
1.382 -_STLP_DECLSPEC virtual wchar_t do_decimal_point() const;
1.383 - _STLP_DECLSPEC virtual wchar_t do_thousands_sep() const;
1.384 -_STLP_DECLSPEC virtual string do_grouping() const;
1.385 -
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 -};
1.394 -
1.395 -# endif
1.396 -
1.397 -
1.398 -#ifdef __SYMBIAN32__
1.399 -_STLP_DECLSPEC _Locale_monetary* __acquire_monetaryE(const char* );
1.400 -_STLP_DECLSPEC void __release_monetaryE (_Locale_monetary* );
1.401 -
1.402 -
1.403 -_STLP_DECLSPEC char _Locale_mon_decimal_pointE(_Locale_monetary* _M_monetary);
1.404 -
1.405 -_STLP_DECLSPEC char _Locale_mon_thousands_sepE(_Locale_monetary* _M_monetary);
1.406 -
1.407 -_STLP_DECLSPEC string _Locale_mon_groupingE(_Locale_monetary* _M_monetary);
1.408 -
1.409 -_STLP_DECLSPEC string _Locale_int_curr_symbolE(_Locale_monetary* _M_monetary);
1.410 -
1.411 -
1.412 -_STLP_DECLSPEC string _Locale_positive_signE(_Locale_monetary* _M_monetary);
1.413 -
1.414 -_STLP_DECLSPEC string _Locale_negative_signE(_Locale_monetary* _M_monetary);
1.415 -
1.416 -_STLP_DECLSPEC int _Locale_int_frac_digitsE(_Locale_monetary* _M_monetary);
1.417 -
1.418 -
1.419 -template <class _CharT, __DFL_NON_TYPE_PARAM(bool , _International , false) >
1.420 -class moneypunct_byname: public moneypunct<_CharT, _International>
1.421 -{
1.422 -public:
1.423 - typedef money_base::pattern pattern;
1.424 - typedef char char_type;
1.425 - typedef basic_string<_CharT> string_type;
1.426 -
1.427 - explicit moneypunct_byname _STLP_PSPEC2(char, _International) (const char * __name, size_t __refs = 0);
1.428 -
1.429 -protected:
1.430 - _Locale_monetary* _M_monetary;
1.431 - ~moneypunct_byname _STLP_PSPEC2(_CharT, _International) ();
1.432 - virtual _CharT do_decimal_point() const;
1.433 - virtual _CharT do_thousands_sep() const;
1.434 - virtual string do_grouping() const;
1.435 -
1.436 - virtual string_type do_curr_symbol() const;
1.437 -
1.438 - virtual string_type do_positive_sign() const;
1.439 - virtual string_type do_negative_sign() const;
1.440 - virtual int do_frac_digits() const;
1.441 - private:
1.442 - void Convert_string2_string_chart(basic_string<_CharT> &dst, string src);
1.443 -
1.444 -};
1.445 -
1.446 -#else
1.447 -
1.448 -template <class _charT, __DFL_NON_TYPE_PARAM(bool , _International , false) > class moneypunct_byname {};
1.449 -
1.450 -#endif
1.451 -
1.452 -_STLP_TEMPLATE_NULL
1.453 -class _STLP_CLASS_DECLSPEC moneypunct_byname<char, true> : public moneypunct<char, true>
1.454 -{
1.455 -public:
1.456 - typedef money_base::pattern pattern;
1.457 - typedef char char_type;
1.458 - typedef string string_type;
1.459 -
1.460 - explicit _STLP_DECLSPEC moneypunct_byname _STLP_PSPEC2(char, true) (const char * __name, size_t __refs = 0);
1.461 -
1.462 -protected:
1.463 - _Locale_monetary* _M_monetary;
1.464 -_STLP_DECLSPEC ~moneypunct_byname _STLP_PSPEC2(char, true) ();
1.465 -_STLP_DECLSPEC virtual char do_decimal_point() const;
1.466 - _STLP_DECLSPEC virtual char do_thousands_sep() const;
1.467 -_STLP_DECLSPEC virtual string do_grouping() const;
1.468 -
1.469 -_STLP_DECLSPEC virtual string_type do_curr_symbol() const;
1.470 -
1.471 -_STLP_DECLSPEC virtual string_type do_positive_sign() const;
1.472 -_STLP_DECLSPEC virtual string_type do_negative_sign() const;
1.473 -_STLP_DECLSPEC virtual int do_frac_digits() const;
1.474 -};
1.475 -
1.476 -_STLP_TEMPLATE_NULL
1.477 -class _STLP_CLASS_DECLSPEC moneypunct_byname<char, false> : public moneypunct<char, false>
1.478 -{
1.479 -public:
1.480 - typedef money_base::pattern pattern;
1.481 - typedef char char_type;
1.482 - typedef string string_type;
1.483 -
1.484 - explicit _STLP_DECLSPEC moneypunct_byname _STLP_PSPEC2(char, false) (const char * __name, size_t __refs = 0);
1.485 -
1.486 -protected:
1.487 - _Locale_monetary* _M_monetary;
1.488 -_STLP_DECLSPEC ~moneypunct_byname _STLP_PSPEC2(char, false) ();
1.489 -_STLP_DECLSPEC virtual char do_decimal_point() const;
1.490 - _STLP_DECLSPEC virtual char do_thousands_sep() const;
1.491 -_STLP_DECLSPEC virtual string do_grouping() const;
1.492 -
1.493 -_STLP_DECLSPEC virtual string_type do_curr_symbol() const;
1.494 -
1.495 -_STLP_DECLSPEC virtual string_type do_positive_sign() const;
1.496 -_STLP_DECLSPEC virtual string_type do_negative_sign() const;
1.497 -_STLP_DECLSPEC virtual int do_frac_digits() const;
1.498 -};
1.499 -
1.500 -# ifndef _STLP_NO_WCHAR_T
1.501 -_STLP_TEMPLATE_NULL
1.502 -class _STLP_CLASS_DECLSPEC moneypunct_byname<wchar_t, true> : public moneypunct<wchar_t, true>
1.503 -{
1.504 -public:
1.505 - typedef money_base::pattern pattern;
1.506 - typedef wchar_t char_type;
1.507 - typedef wstring string_type;
1.508 -
1.509 - explicit _STLP_DECLSPEC moneypunct_byname _STLP_PSPEC2(wchar_t, true) (const char * __name, size_t __refs = 0);
1.510 -
1.511 -protected:
1.512 - _Locale_monetary* _M_monetary;
1.513 -_STLP_DECLSPEC ~moneypunct_byname _STLP_PSPEC2(wchar_t, true) ();
1.514 -_STLP_DECLSPEC virtual wchar_t do_decimal_point() const;
1.515 - _STLP_DECLSPEC virtual wchar_t do_thousands_sep() const;
1.516 -_STLP_DECLSPEC virtual string do_grouping() const;
1.517 -
1.518 -_STLP_DECLSPEC virtual string_type do_curr_symbol() const;
1.519 -
1.520 -_STLP_DECLSPEC virtual string_type do_positive_sign() const;
1.521 -_STLP_DECLSPEC virtual string_type do_negative_sign() const;
1.522 -_STLP_DECLSPEC virtual int do_frac_digits() const;
1.523 -};
1.524 -
1.525 -_STLP_TEMPLATE_NULL
1.526 -class _STLP_CLASS_DECLSPEC moneypunct_byname<wchar_t, false> : public moneypunct<wchar_t, false>
1.527 -{
1.528 -public:
1.529 - typedef money_base::pattern pattern;
1.530 - typedef wchar_t char_type;
1.531 - typedef wstring string_type;
1.532 -
1.533 - explicit _STLP_DECLSPEC moneypunct_byname _STLP_PSPEC2(wchar_t, false) (const char * __name, size_t __refs = 0);
1.534 -
1.535 -protected:
1.536 - _Locale_monetary* _M_monetary;
1.537 -_STLP_DECLSPEC ~moneypunct_byname _STLP_PSPEC2(wchar_t, false) ();
1.538 -_STLP_DECLSPEC virtual wchar_t do_decimal_point() const;
1.539 - _STLP_DECLSPEC virtual wchar_t do_thousands_sep() const;
1.540 -_STLP_DECLSPEC virtual string do_grouping() const;
1.541 -
1.542 -_STLP_DECLSPEC virtual string_type do_curr_symbol() const;
1.543 -
1.544 -_STLP_DECLSPEC virtual string_type do_positive_sign() const;
1.545 -_STLP_DECLSPEC virtual string_type do_negative_sign() const;
1.546 -_STLP_DECLSPEC virtual int do_frac_digits() const;
1.547 -};
1.548 -# endif
1.549 -
1.550 -//===== methods ======
1.551 -
1.552 -
1.553 -// money_put facets
1.554 -
1.555 -template <class _CharT, __DFL_TMPL_PARAM( _OutputIter , ostreambuf_iterator<_CharT>) >
1.556 -class money_put : public locale::facet {
1.557 - friend class _Locale;
1.558 -
1.559 -public:
1.560 - typedef _CharT char_type;
1.561 - typedef _OutputIter iter_type;
1.562 - typedef basic_string<_CharT, char_traits<_CharT>, allocator<_CharT> > string_type;
1.563 -
1.564 - money_put(size_t __refs = 0) : _BaseFacet(__refs) {}
1.565 -# ifndef _STLP_NO_LONG_DOUBLE
1.566 - iter_type put(iter_type __s, bool __intl, ios_base& __str,
1.567 - char_type __fill, long double __units) const
1.568 - { return do_put(__s, __intl, __str, __fill, __units); }
1.569 -# endif
1.570 - iter_type put(iter_type __s, bool __intl, ios_base& __str,
1.571 - char_type __fill,
1.572 - const string_type& __digits) const
1.573 - { return do_put(__s, __intl, __str, __fill, __digits); }
1.574 -
1.575 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1.576 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1.577 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id&
1.578 - GetFacetLocaleId(ostreambuf_iterator<wchar_t, char_traits<wchar_t> > *);
1.579 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id&
1.580 - GetFacetLocaleId(wchar_t**);
1.581 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id&
1.582 - GetFacetLocaleId(ostreambuf_iterator<char, char_traits<char> > *);
1.583 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(char**);
1.584 -#else
1.585 - _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1.586 -#endif
1.587 -
1.588 -protected:
1.589 - ~money_put() {}
1.590 -# ifndef _STLP_NO_LONG_DOUBLE
1.591 - virtual iter_type do_put(iter_type __s, bool __intl, ios_base& __str,
1.592 - char_type __fill, long double /* __units */ ) const {
1.593 -
1.594 - locale __loc = __str.getloc();
1.595 - _CharT __buf[64];
1.596 - return do_put(__s, __intl, __str, __fill, __buf + 0);
1.597 - }
1.598 -# endif
1.599 - virtual iter_type do_put(iter_type __s, bool __intl, ios_base& __str,
1.600 - char_type __fill,
1.601 - const string_type& __digits) const;
1.602 -};
1.603 -
1.604 -# if defined (_STLP_USE_TEMPLATE_EXPORT)
1.605 -_STLP_EXPORT_TEMPLATE_CLASS money_get<char, istreambuf_iterator<char, char_traits<char> > >;
1.606 -_STLP_EXPORT_TEMPLATE_CLASS money_put<char, ostreambuf_iterator<char, char_traits<char> > >;
1.607 -// _STLP_EXPORT_TEMPLATE_CLASS money_get<char, const char* >;
1.608 -// _STLP_EXPORT_TEMPLATE_CLASS money_put<char, char* >;
1.609 -# if ! defined (_STLP_NO_WCHAR_T)
1.610 -_STLP_EXPORT_TEMPLATE_CLASS money_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >;
1.611 -_STLP_EXPORT_TEMPLATE_CLASS money_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >;
1.612 -// _STLP_EXPORT_TEMPLATE_CLASS money_get<wchar_t, const wchar_t* >;
1.613 -// _STLP_EXPORT_TEMPLATE_CLASS money_put<wchar_t, wchar_t* >;
1.614 -# endif
1.615 -# endif /* _STLP_USE_TEMPLATE_EXPORT */
1.616 -
1.617 -# if defined (__BORLANDC__) && defined (_RTLDLL)
1.618 -inline void _Stl_loc_init_monetary() {
1.619 - money_get<char, istreambuf_iterator<char, char_traits<char> > >::id._M_index = 8;
1.620 - money_get<char, const char*>::id._M_index = 9;
1.621 - money_put<char, ostreambuf_iterator<char, char_traits<char> > >::id._M_index = 10;
1.622 - money_put<char, char*>::id._M_index = 11;
1.623 -# ifndef _STLP_NO_WCHAR_T
1.624 - money_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >::id._M_index = 27;
1.625 - money_get<wchar_t, const wchar_t*>::id._M_index = 28;
1.626 - money_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >::id._M_index = 29;
1.627 - money_put<wchar_t, wchar_t*>::id._M_index = 30;
1.628 -# endif
1.629 -}
1.630 -#endif
1.631 -
1.632 -_STLP_END_NAMESPACE
1.633 -
1.634 -# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION)
1.635 -# include <stl/_monetary.c>
1.636 -# endif
1.637 -
1.638 -#endif /* _STLP_INTERNAL_MONETARY_H */
1.639 -
1.640 -// Local Variables:
1.641 -// mode:C++
1.642 -// End:
1.643 -
1.644 -