home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / stlpt453.zip / STLport-4.5.3 / src / monetary.cpp < prev    next >
C/C++ Source or Header  |  2001-03-28  |  6KB  |  150 lines

  1. /*
  2.  * Copyright (c) 1999
  3.  * Silicon Graphics Computer Systems, Inc.
  4.  *
  5.  * Copyright (c) 1999 
  6.  * Boris Fomitchev
  7.  *
  8.  * This material is provided "as is", with absolutely no warranty expressed
  9.  * or implied. Any use is at your own risk.
  10.  *
  11.  * Permission to use or copy this software for any purpose is hereby granted 
  12.  * without fee, provided the above notices are retained on all copies.
  13.  * Permission to modify the code and to distribute modified code is granted,
  14.  * provided the above notices are retained, and a notice that the code was
  15.  * modified is included with the above copyright notice.
  16.  *
  17.  */ 
  18. # include "stlport_prefix.h"
  19.  
  20. #include <stl/_monetary.h>
  21. #include <stl/_istream.h>
  22.  
  23. _STLP_BEGIN_NAMESPACE
  24.  
  25. static void _Init_monetary_formats(money_base::pattern& pos_format,
  26.                    money_base::pattern& neg_format) {
  27.   pos_format.field[0] = (char) money_base::symbol;
  28.   pos_format.field[1] = (char) money_base::sign;
  29.   pos_format.field[2] = (char) money_base::none;
  30.   pos_format.field[3] = (char) money_base::value;
  31.  
  32.   neg_format.field[0] = (char) money_base::symbol;
  33.   neg_format.field[1] = (char) money_base::sign;
  34.   neg_format.field[2] = (char) money_base::none;
  35.   neg_format.field[3] = (char) money_base::value;
  36. }
  37.  
  38. // This is being used throughout the library
  39. string _S_empty_string("");
  40. # ifndef _STLP_NO_WCHAR_T
  41. wstring _S_empty_wstring(L"");
  42. # endif
  43.  
  44. //
  45. // moneypunct<>
  46. //
  47.  
  48. moneypunct<char, true>::moneypunct(size_t __refs) : _BaseFacet(__refs) { 
  49.     _Init_monetary_formats(_M_pos_format, _M_neg_format); 
  50. }
  51. moneypunct<char, true>::~moneypunct() {}
  52.  
  53. char moneypunct<char, true>::do_decimal_point() const {return ' ';}
  54. char moneypunct<char, true>::do_thousands_sep() const {return ' ';}
  55. string moneypunct<char, true>::do_grouping() const { return _S_empty_string; }
  56. string moneypunct<char, true>::do_curr_symbol() const { return _S_empty_string; }
  57. string moneypunct<char, true>::do_positive_sign() const { return _S_empty_string; }
  58. string moneypunct<char, true>::do_negative_sign() const { return _S_empty_string; }
  59. money_base::pattern moneypunct<char, true>::do_pos_format() const  {return _M_pos_format;}
  60. money_base::pattern moneypunct<char, true>::do_neg_format() const {return _M_neg_format;}
  61. int moneypunct<char, true>::do_frac_digits() const {return 0;}
  62.  
  63. moneypunct<char, false>::moneypunct(size_t __refs) : _BaseFacet(__refs) { 
  64.     _Init_monetary_formats(_M_pos_format, _M_neg_format); 
  65. }
  66. moneypunct<char, false>::~moneypunct() {}
  67.  
  68. char moneypunct<char, false>::do_decimal_point() const {return ' ';}
  69. char moneypunct<char, false>::do_thousands_sep() const {return ' ';}
  70.  
  71. string moneypunct<char, false>::do_grouping() const { return _S_empty_string; }
  72. string moneypunct<char, false>::do_curr_symbol() const { return _S_empty_string; }
  73. string moneypunct<char, false>::do_positive_sign() const { return _S_empty_string; }
  74. string moneypunct<char, false>::do_negative_sign() const { return _S_empty_string; }
  75. money_base::pattern moneypunct<char, false>::do_pos_format() const {return _M_pos_format;}
  76. money_base::pattern moneypunct<char, false>::do_neg_format() const {return _M_neg_format;}
  77. int moneypunct<char, false>::do_frac_digits() const {return 0;}
  78.  
  79.  
  80. # ifndef _STLP_NO_WCHAR_T
  81.  
  82. moneypunct<wchar_t, true>::moneypunct(size_t __refs) : _BaseFacet(__refs) { 
  83.     _Init_monetary_formats(_M_pos_format, _M_neg_format); 
  84. }
  85. moneypunct<wchar_t, true>::~moneypunct() {}
  86.  
  87. wchar_t moneypunct<wchar_t, true>::do_decimal_point() const {return L' ';}
  88. wchar_t moneypunct<wchar_t, true>::do_thousands_sep() const {return L' ';}
  89. string moneypunct<wchar_t, true>::do_grouping() const {return _S_empty_string;}
  90.  
  91. wstring moneypunct<wchar_t, true>::do_curr_symbol() const
  92.   {return _S_empty_wstring;}
  93. wstring moneypunct<wchar_t, true>::do_positive_sign() const
  94.   {return _S_empty_wstring;}
  95. wstring moneypunct<wchar_t, true>::do_negative_sign() const
  96.   {return _S_empty_wstring;}
  97. int moneypunct<wchar_t, true>::do_frac_digits() const {return 0;}
  98. money_base::pattern moneypunct<wchar_t, true>::do_pos_format() const
  99.   {return _M_pos_format;}
  100. money_base::pattern moneypunct<wchar_t, true>::do_neg_format() const
  101.   {return _M_neg_format;}
  102.  
  103. moneypunct<wchar_t, false>::moneypunct(size_t __refs) : _BaseFacet(__refs) { 
  104.     _Init_monetary_formats(_M_pos_format, _M_neg_format); 
  105. }
  106. moneypunct<wchar_t, false>::~moneypunct() {}
  107.  
  108. wchar_t moneypunct<wchar_t, false>::do_decimal_point() const {return L' ';}
  109. wchar_t moneypunct<wchar_t, false>::do_thousands_sep() const {return L' ';}
  110. string moneypunct<wchar_t, false>::do_grouping() const { return _S_empty_string;}
  111. wstring moneypunct<wchar_t, false>::do_curr_symbol() const
  112.   {return _S_empty_wstring;}
  113. wstring moneypunct<wchar_t, false>::do_positive_sign() const
  114.   {return _S_empty_wstring;}
  115. wstring moneypunct<wchar_t, false>::do_negative_sign() const
  116.   {return _S_empty_wstring;}
  117. int moneypunct<wchar_t, false>::do_frac_digits() const {return 0;}
  118.  
  119. money_base::pattern moneypunct<wchar_t, false>::do_pos_format() const
  120.   {return _M_pos_format;}
  121. money_base::pattern moneypunct<wchar_t, false>::do_neg_format() const
  122.   {return _M_neg_format;}
  123.  
  124. # endif /* WCHAR_T */
  125.  
  126. //
  127. // Instantiations
  128. //
  129.  
  130. # if !defined(_STLP_NO_FORCE_INSTANTIATE)
  131.  
  132. template class money_get<char, istreambuf_iterator<char, char_traits<char> > >;
  133. template class money_put<char, ostreambuf_iterator<char, char_traits<char> > >;
  134. // template class money_put<char, char*>;
  135.  
  136. #ifndef _STLP_NO_WCHAR_T
  137. template class money_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >;
  138. template class money_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >;
  139. // template class money_put<wchar_t, wchar_t*>;
  140. // template class money_get<wchar_t, const wchar_t*>;
  141. #endif
  142.  
  143. # endif
  144.  
  145. _STLP_END_NAMESPACE  
  146.  
  147. // Local Variables:
  148. // mode:C++
  149. // End:
  150.