home *** CD-ROM | disk | FTP | other *** search
/ Inter.Net 55-1 / Inter.Net 55-1.iso / CBuilder / Setup / BCB / data.z / money.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-02-09  |  20.6 KB  |  598 lines

  1. #ifndef __STD_MONEY__
  2. #define __STD_MONEY__
  3. #pragma option push -b -a4 -Vx- -Ve- -w-inl -w-aus -w-sig
  4.  
  5. /***************************************************************************
  6.  *
  7.  * money - Declarations for the Standard Library money facets
  8.  *
  9.  *
  10.  ***************************************************************************
  11.  *
  12.  * (c) Copyright 1994, 1995 Rogue Wave Software, Inc.
  13.  * ALL RIGHTS RESERVED *
  14.  * The software and information contained herein are proprietary to, and
  15.  * comprise valuable trade secrets of, Rogue Wave Software, Inc., which
  16.  * intends to preserve as trade secrets such software and information.
  17.  * This software is furnished pursuant to a written license agreement and
  18.  * may be used, copied, transmitted, and stored only in accordance with
  19.  * the terms of such license and with the inclusion of the above copyright
  20.  * notice.  This software and information or any other copies thereof may
  21.  * not be provided or otherwise made available to any other person.
  22.  *
  23.  * Notwithstanding any other lease or license that may pertain to, or
  24.  * accompany the delivery of, this computer software and information, the
  25.  * rights of the Government regarding its use, reproduction and disclosure
  26.  * are as set forth in Section 52.227-19 of the FARS Computer
  27.  * Software-Restricted Rights clause.
  28.  *
  29.  * Use, duplication, or disclosure by the Government is subject to
  30.  * restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in
  31.  * Technical Data and Computer Software clause at DFARS 252.227-7013.
  32.  * Contractor/Manufacturer is Rogue Wave Software, Inc.,
  33.  * P.O. Box 2328, Corvallis, Oregon 97339.
  34.  *
  35.  * This computer software and information is distributed with "restricted
  36.  * rights."  Use, duplication or disclosure is subject to restrictions as
  37.  * set forth in NASA FAR SUP 18-52.227-79 (April 1985) "Commercial
  38.  * Computer Software-Restricted Rights (April 1985)."  If the Clause at
  39.  * 18-52.227-74 "Rights in Data General" is specified in the contract,
  40.  * then the "Alternate III" clause applies.
  41.  *
  42.  **************************************************************************/
  43.  
  44.  
  45. #ifndef __STD_RWLOCALE__
  46. #include "rw/rwlocale.h"
  47. #endif
  48.  
  49. #ifndef __STD_RW_LOCNUMRW__
  50. #include <rw/numbrw>
  51. #endif
  52.  
  53. #ifndef _RWSTD_NO_NAMESPACE
  54. namespace std {
  55. #endif
  56.  
  57. struct _RWSTDExport money_base {
  58.   enum part { none, space, symbol, sign, value };
  59.   struct pattern { char field[4]; };
  60. };
  61.  
  62. #ifndef _RWSTD_NO_NAMESPACE
  63. } namespace __rwstd {
  64. #endif
  65.  
  66. template <class charT>
  67.   class _RWSTDExportTemplate money_handler_base_1;
  68. template <class charT>
  69.   class _RWSTDExportTemplate money_reader_base_1;
  70. template <class charT,class OutputIterator>
  71.   class _RWSTDExportTemplate money_reader_base_2;
  72. template <class charT>
  73.   class _RWSTDExportTemplate money_writer_base_1;
  74. template <class charT,class OutputIterator>
  75.   class _RWSTDExportTemplate money_writer_base_2;
  76.  
  77.  
  78. // --------------------------------------------------------
  79. // Implementation class template -- moneypunct_init<charT>.
  80. // --------------------------------------------------------
  81.  
  82. // Structure used to initialize a rwstd::moneypunct_data<charT>.
  83.  
  84. template <class charT>
  85. class _RWSTDExportTemplate moneypunct_init {
  86.  public:
  87.   bool del_;                        // Delete when initialization is done
  88.   charT dp_, ts_;                   // Decimal point and thousands separator
  89.   const char *gr_;                  // Grouping pattern
  90.   const charT *cs_;                 // Currency symbol string
  91.   const charT *ps_, *ns_;           // Positive and negative sign strings
  92.   int fd_;                          // Number of fractional digits
  93.   money_base::pattern pf_, nf_;     // Positive and negative format patterns
  94. };
  95.  
  96. // ----------------------------------------
  97. // Implementation class -- moneypunct_base.
  98. // ----------------------------------------
  99.  
  100. // Contains parts of moneypunct<charT> that do not depend on the template
  101. // parameter.
  102.  
  103. class _RWSTDExport moneypunct_base {
  104.  public:
  105.   static __RWSTD::moneypunct_init<char> *get_named_init_
  106.       (const char*,bool);
  107. };
  108.  
  109. // --------------------------------------------------------
  110. // Implementation class template -- moneypunct_data<charT>.
  111. // --------------------------------------------------------
  112.  
  113. // moneypunct<charT,Intl> derives from this (via moneypunct_impl<charT,Intl>)
  114. // to get its private data members.
  115.  
  116. template <class charT>
  117. class _RWSTDExportTemplate moneypunct_data :
  118.     public moneypunct_base,
  119.     public punct_data<charT>
  120. {
  121.   friend class money_handler_base_1<charT>;
  122.   friend class _STD::moneypunct<charT,false>;
  123.   friend class _STD::moneypunct<charT,true>;
  124.  
  125.   typedef basic_string<charT,char_traits<charT>,allocator<charT> > string_type;
  126.  
  127.   string_type cs_;                  // Currency symbol
  128.   string_type ps_, ns_;             // Positive and negative sign strings
  129.   int fd_;                          // Number of fractional digits
  130.   money_base::pattern pf_, nf_;     // Positive and negative format patterns
  131.  
  132.  protected:
  133.   moneypunct_data (moneypunct_init<charT>*);
  134.  
  135.   void rw_init (void);
  136.   moneypunct_init<charT> *get_init_by_name_ (const char*,bool);
  137. };
  138.  
  139.  
  140. // -------------------------------------------------------------
  141. // Implementation class template -- money_handler_base_1<charT>.
  142. // -------------------------------------------------------------
  143.  
  144. // Contains common money_reader and money_writer functionality that depends
  145. // only on the charT template parameter.
  146.  
  147. template <class charT>
  148. class _RWSTDExportTemplate money_handler_base_1
  149. {
  150.   const moneypunct_data<charT> &mpunct;
  151.  protected:
  152.   typedef basic_string<charT,char_traits<charT>,allocator<charT> > string_type;
  153.  
  154.   money_handler_base_1
  155.       (const moneypunct_data<charT> &p): mpunct(p) { }
  156.  
  157.   inline static const moneypunct_data<charT>&
  158.       get_punct_data (const locale &loc,bool intl);
  159.  
  160.   const money_base::pattern &get_pos_format() const { return mpunct.pf_; }
  161.   const money_base::pattern &get_neg_format() const { return mpunct.nf_; }
  162.   const string_type &get_positive_sign() const      { return mpunct.ps_; }
  163.   const string_type &get_negative_sign() const      { return mpunct.ns_; }
  164.   const string_type &get_curr_symbol() const        { return mpunct.cs_; }
  165.   int get_frac_digits() const                       { return mpunct.fd_; }
  166. };
  167.  
  168.  
  169.  
  170. // ------------------------------------------------------------
  171. // Implementation class template -- money_reader_base_1<charT>.
  172. // ------------------------------------------------------------
  173.  
  174. // Contains parts of money_reader<charT,InputIterator> that depend only on the
  175. // charT template parameter.
  176.  
  177. template <class charT>
  178. class _RWSTDExportTemplate money_reader_base_1:
  179.     public money_handler_base_1<charT>
  180. {
  181.  protected:
  182.   typedef basic_string<charT,char_traits<charT>,allocator<charT> > string_type;
  183.  
  184.   digit_reader_base_1<charT> &reader;
  185.  
  186.   money_reader_base_1
  187.       (digit_reader_base_1<charT> &r,
  188.        const moneypunct_data<charT> &mp);
  189.  
  190.  public:
  191.   void get_money_string (string_type&,const char*);
  192. };
  193.  
  194. // --------------------------------------------------------------------------
  195. // Implementation class template -- money_reader_base_2<charT,InputIterator>.
  196. // --------------------------------------------------------------------------
  197.  
  198. // Contains parts of money_reader<charT,InputIterator> that do not depend on
  199. // the intl constructor parameter.
  200.  
  201. template <class charT, class InputIterator>
  202. class _RWSTDExportTemplate money_reader_base_2 :
  203.     public digit_reader<charT,InputIterator>,
  204.     public money_reader_base_1<charT>
  205. {
  206.  protected:
  207.   typedef basic_string<charT,char_traits<charT>,allocator<charT> > string_type;
  208.  
  209.   money_reader_base_2 (InputIterator &i,InputIterator &e,
  210.       ios_base &b,const moneypunct_data<charT> &mp);
  211.  
  212.  public:
  213.   char *get_money_digits (void);    // Get monetary-format digits
  214. };
  215.  
  216. // -------------------------------------------------------------------
  217. // Implementation class template -- money_reader<charT,InputIterator>.
  218. // -------------------------------------------------------------------
  219.  
  220. template <class charT, class InputIterator>
  221. class _RWSTDExportTemplate money_reader :
  222.     public money_reader_base_2<charT,InputIterator>
  223. {
  224.  public:
  225.   money_reader (InputIterator &i,InputIterator &e,
  226.       ios_base &b,bool intl);
  227. };
  228.  
  229.  
  230. // ------------------------------------------------------------
  231. // Implementation class template -- money_writer_base_1<charT>.
  232. // ------------------------------------------------------------
  233.  
  234. // Contains parts of money_writer<charT,Intl,OutputIterator> that depend only
  235. // on the charT template parameter.
  236.  
  237. template <class charT>
  238. class _RWSTDExportTemplate money_writer_base_1 :
  239.     public money_handler_base_1<charT>
  240. {
  241.  public:
  242.   typedef basic_string<charT,char_traits<charT>,allocator<charT> > string_type;
  243.  
  244.   void put_money (charT fill);
  245.   void put_money (const string_type&,charT fill);
  246.  
  247.  protected:
  248.   digit_writer_base_1<charT> &writer;
  249.  
  250.   money_writer_base_1
  251.       (digit_writer_base_1<charT> &w,
  252.        const moneypunct_data<charT> &mp);
  253.  
  254.   virtual void put_money_sub (const charT*,const charT*,bool,charT)=0;
  255. };
  256.  
  257. // ---------------------------------------------------------------------------
  258. // Implementation class template -- money_writer_base_2<charT,OutputIterator>.
  259. // ---------------------------------------------------------------------------
  260.  
  261. // Contains parts of money_writer<charT,OutputIterator> that do not depend on
  262. // the intl constructor parameter.
  263.  
  264. template <class charT,class OutputIterator>
  265. class _RWSTDExportTemplate money_writer_base_2:
  266.     public digit_writer<charT,OutputIterator>,
  267.     public money_writer_base_1<charT>
  268. {
  269.  protected:
  270.   typedef basic_string<charT,char_traits<charT>,allocator<charT> > string_type;
  271.  
  272.   money_writer_base_2 (OutputIterator &os,ios_base &io,
  273.       const moneypunct_data<charT> &mp);
  274.  
  275.   virtual void put_money_sub (const charT*,const charT*,bool,charT fill);
  276. };
  277.  
  278. // --------------------------------------------------------------------
  279. // Implementation class template -- money_writer<charT,OutputIterator>.
  280. // --------------------------------------------------------------------
  281.  
  282. template <class charT,class OutputIterator>
  283. class _RWSTDExportTemplate money_writer :
  284.     public money_writer_base_2<charT,OutputIterator>
  285. {
  286.  public:
  287.   money_writer (OutputIterator &os,ios_base &io,bool intl);
  288. };
  289.  
  290. template <class charT>
  291. moneypunct_init<charT>*
  292. fixup_moneypunct_init (moneypunct_init<char>*,charT*);
  293.  
  294. _RWSTD_TEMPLATE
  295. inline moneypunct_init<char>* fixup_moneypunct_init
  296.     (moneypunct_init<char> *init,char*)
  297. {
  298.   return init;
  299. }
  300.  
  301.  
  302. // -------------------------------------------------------------
  303. // Implementation class template -- moneypunct_impl<charT,Intl>.
  304. // -------------------------------------------------------------
  305.  
  306. // moneypunct<charT,Intl> derives from this to get the parts of its behavior
  307. // that are specialized for the character type and the Intl format selection.
  308.  
  309. template <class charT,bool Intl>
  310. class _RWSTDExportTemplate moneypunct_impl:
  311.     public moneypunct_data<charT>
  312. {
  313.  protected:
  314.   moneypunct_impl (void);
  315. };
  316.  
  317. _RWSTD_TEMPLATE
  318. class _RWSTDExport moneypunct_impl<char,false>:          // Specialization
  319.     public moneypunct_data<char>
  320. {
  321.   friend class moneypunct_base;
  322.  protected:
  323.   typedef moneypunct_data<char> parent_type;
  324.   static moneypunct_init<char> ivals_;      // Vendor-supplied
  325.   moneypunct_impl
  326.       ( moneypunct_init<char> *init=&ivals_ ):
  327.         parent_type(init) { }
  328. };
  329.  
  330. _RWSTD_TEMPLATE
  331. class _RWSTDExport moneypunct_impl<char,true>:           // Specialization
  332.     public moneypunct_data<char>
  333. {
  334.   friend class moneypunct_base;
  335.  protected:
  336.   typedef moneypunct_data<char> parent_type;
  337.   static moneypunct_init<char> ivals_;      // Vendor-supplied
  338.   moneypunct_impl
  339.       ( moneypunct_init<char> *init=&ivals_ ):
  340.         parent_type(init) { }
  341. };
  342.  
  343. #ifndef _RWSTD_NO_WIDE_CHAR
  344. _RWSTD_TEMPLATE
  345. class _RWSTDExport moneypunct_impl<wchar_t,false>:       // Specialization
  346.     public moneypunct_data<wchar_t>
  347. {
  348.  protected:
  349.   typedef moneypunct_data<wchar_t> parent_type;
  350.   static moneypunct_init<wchar_t> ivals_;   // Vendor-supplied
  351.   moneypunct_impl
  352.       ( moneypunct_init<wchar_t> *init=&ivals_ ):
  353.         parent_type(init) { }
  354. };
  355.  
  356. _RWSTD_TEMPLATE
  357. class _RWSTDExport moneypunct_impl<wchar_t,true>:        // Specialization
  358.     public moneypunct_data<wchar_t>
  359. {
  360.  protected:
  361.   typedef moneypunct_data<wchar_t> parent_type;
  362.   static moneypunct_init<wchar_t> ivals_;   // Vendor-supplied
  363.   moneypunct_impl
  364.       ( moneypunct_init<wchar_t> *init=&ivals_ ):
  365.         parent_type(init) { }
  366. };
  367. #endif // _RWSTD_NO_WIDE_CHAR
  368.  
  369. #ifndef _RWSTD_NO_NAMESPACE
  370. } namespace std {
  371. #endif
  372.  
  373.  
  374. // ---------------------------------------------------------------
  375. // Standard money parsing facet -- money_get<charT,InputIterator>.
  376. // ---------------------------------------------------------------
  377.  
  378. template <class charT, class InputIterator>
  379. class  money_get: public locale::facet {
  380.  public:
  381.   typedef charT char_type;
  382.   typedef InputIterator iter_type;
  383.   typedef basic_string<charT,char_traits<charT>,allocator<charT> > string_type;
  384.  
  385.   _EXPLICIT money_get (size_t refs=0): locale::facet(refs,locale::monetary) { }
  386.  
  387.   iter_type get (iter_type s, bool intl, iter_type e, ios_base& f,
  388.                  ios_base::iostate& err, long double& units) const
  389.   { return do_get(s,intl,e,f,err,units); }
  390.  
  391.   iter_type get (iter_type s, bool intl, iter_type e, ios_base& f,
  392.                  ios_base::iostate& err, string_type& digits) const
  393.   { return do_get(s,intl,e,f,err,digits); }
  394.  
  395.   static locale::id id;
  396.  
  397.   // Implementation:
  398.   enum { facet_cat_ = locale::monetary, ok_implicit_ = 1 };
  399.  
  400.  protected:
  401.   virtual ~money_get();
  402.  
  403.   virtual iter_type do_get (iter_type, bool, iter_type, ios_base&,
  404.                             ios_base::iostate&, long double& units) const;
  405.   virtual iter_type do_get (iter_type, bool, iter_type, ios_base&,
  406.                             ios_base::iostate&, string_type& digits) const;
  407.  
  408.  private:
  409.   #ifdef _RWSTD_NO_MEMBER_TEMPLATES
  410.   locale::id &get_id (void) const { return id; }
  411.   #endif
  412. };
  413.  
  414. // -------------------------------------------------------------------
  415. // Standard money formatting facet -- money_put<charT,OutputIterator>.
  416. // -------------------------------------------------------------------
  417.  
  418. template <class charT, class OutputIterator>
  419. class  money_put: public locale::facet {
  420.  public:
  421.   typedef charT char_type;
  422.   typedef OutputIterator iter_type;
  423.   typedef basic_string<charT,char_traits<charT>,allocator<charT> > string_type;
  424.  
  425.   _EXPLICIT money_put (size_t refs=0): locale::facet(refs,locale::monetary) { }
  426.  
  427. #ifndef _RWSTD_NO_LONG_DOUBLE
  428.   iter_type put (iter_type out, bool intl, ios_base& io, char_type fill,
  429.                  long double quant) const
  430. #else
  431.   iter_type put (iter_type out, bool intl, ios_base& io, char_type fill,
  432.                  double quant) const
  433. #endif
  434.      { return do_put(out,intl,io,fill,quant); }
  435.  
  436.   iter_type put (iter_type out, bool intl, ios_base& io, char_type fill,
  437.                  const string_type& digits) const
  438.      { return do_put(out,intl,io,fill,digits); }
  439.  
  440.   static locale::id  id;
  441.  
  442.   // Implementation:
  443.   enum { facet_cat_ = locale::monetary, ok_implicit_ = 1 };
  444.  
  445.  protected:
  446.   virtual ~money_put();
  447.  
  448. #ifndef _RWSTD_NO_LONG_DOUBLE
  449.   virtual iter_type do_put (iter_type out, bool intl, ios_base& io,
  450.                             char_type fill, long double quant) const;
  451. #else
  452.   virtual iter_type do_put (iter_type out, bool intl, ios_base& io,
  453.                             char_type fill, double quant) const;
  454. #endif
  455.  
  456.   virtual iter_type do_put (iter_type out, bool intl, ios_base& io,
  457.                             char_type fill, const string_type &digits) const;
  458.  
  459.  private:
  460.   #ifdef _RWSTD_NO_MEMBER_TEMPLATES
  461.   locale::id &get_id (void) const { return id; }
  462.   #endif
  463. };
  464.  
  465. // -----------------------------------------------------------
  466. // Standard money punctuation facet -- moneypunct<charT,bool>.
  467. // -----------------------------------------------------------
  468.  
  469. template <class charT, bool Intl>
  470. class  moneypunct: public locale::facet, public money_base,
  471.     public __RWSTD::moneypunct_impl<charT,Intl>
  472. {
  473.  public:
  474.   typedef charT char_type;
  475.   typedef basic_string<charT,char_traits<charT>,allocator<charT> > string_type;
  476.  
  477.   #ifndef _RWSTD_NO_STI_SIMPLE
  478.   static const bool intl = Intl;
  479.   #else
  480.   enum { intl = Intl };
  481.   #endif
  482.  
  483.   // The second parameter (i) to the constructor is implementation specific.
  484.   // For portable code, always let it default as shown.
  485.   _EXPLICIT moneypunct (size_t refs=0,
  486.       __RWSTD::moneypunct_init<charT> *i = get_ivals_());
  487.  
  488.   char_type    decimal_point() const  { return do_decimal_point(); }
  489.   char_type    thousands_sep() const  { return do_thousands_sep(); }
  490.   string       grouping()      const  { return do_grouping(); }
  491.   string_type  curr_symbol()   const  { return do_curr_symbol(); };
  492.   string_type  positive_sign() const  { return do_positive_sign(); }
  493.   string_type  negative_sign() const  { return do_negative_sign(); }
  494.   int          frac_digits()   const  { return do_frac_digits(); }
  495.   pattern      pos_format()    const  { return do_pos_format(); }
  496.   pattern      neg_format()    const  { return do_neg_format(); }
  497.  
  498.   static locale::id id;
  499.  
  500.   // Implementation:
  501.   enum { facet_cat_ = locale::monetary, ok_implicit_ = 1 };
  502.  
  503.  protected:
  504.   virtual ~moneypunct();
  505.  
  506.   virtual char_type    do_decimal_point()  const;
  507.   virtual char_type    do_thousands_sep()  const;
  508.   virtual string       do_grouping()       const;
  509.   virtual string_type  do_curr_symbol()    const;
  510.   virtual string_type  do_positive_sign()  const;
  511.   virtual string_type  do_negative_sign()  const;
  512.   virtual int          do_frac_digits()    const;
  513.   virtual pattern      do_pos_format()     const;
  514.   virtual pattern      do_neg_format()     const;
  515.  
  516.  private:
  517.   void rw_init (void);
  518.  
  519.   #ifdef _RWSTD_NO_MEMBER_TEMPLATES
  520.   locale::id &get_id (void) const { return id; }
  521.   #endif
  522.  
  523.   static __RWSTD::moneypunct_init<charT> *get_ivals_ ()
  524.     { return &__RWSTD::moneypunct_impl<charT,Intl>::ivals_; }
  525. };
  526.  
  527. template <class charT,bool Intl>
  528. inline moneypunct<charT,Intl>::moneypunct
  529.     (size_t refs,__RWSTD::moneypunct_init<charT> *init):
  530.      locale::facet(refs,locale::monetary),
  531.      __RWSTD::moneypunct_impl<charT,Intl>(init) { }
  532.  
  533.  
  534. // --------------------------------------------------------
  535. // Standard derived facet -- moneypunct_byname<charT,Intl>.
  536. // --------------------------------------------------------
  537.  
  538. template <class charT, bool Intl>
  539. class _RWSTDExportTemplate moneypunct_byname: public moneypunct<charT,Intl> {
  540.  public:
  541.   _EXPLICIT moneypunct_byname (const char*, size_t refs=0);
  542.  
  543.  protected:
  544.   virtual ~moneypunct_byname();
  545.  
  546. // Virtual member functions inherited from moneypunct<charT,Intl>:
  547. // virtual char_type     do_decimal_point () const;
  548. // virtual char_type     do_thousands_sep () const;
  549. // virtual string        do_grouping ()      const;
  550. // virtual string_type   do_curr_symbol ()   const;
  551. // virtual string_type   do_positive_sign () const;
  552. // virtual string_type   do_negative_sign () const;
  553. // virtual int           do_frac_digits ()   const;
  554. // virtual pattern       do_pos_format ()    const;
  555. // virtual pattern       do_neg_format ()    const;
  556. };
  557.  
  558. #ifndef _RWSTD_NO_NAMESPACE
  559. } namespace __rwstd {
  560. using namespace std;
  561. #endif
  562.  
  563. #ifndef _RWSTD_NO_FUNC_PARTIAL_SPEC
  564. template <class charT,bool Intl>
  565. inline moneypunct<charT,Intl>* _RWSTDExport create_named_facet
  566.     (moneypunct<charT,Intl>*,const char *name,size_t refs)
  567. { return new moneypunct_byname<charT,Intl>(name,refs); }
  568. #else
  569. inline _STD::moneypunct<char,false>* _RWSTDExport create_named_facet
  570.     (_STD::moneypunct<char,false>*,const char *name,size_t refs)
  571. { return new moneypunct_byname<char,false>(name,refs); }
  572. inline _STD::moneypunct<char,true>* _RWSTDExport create_named_facet
  573.     (_STD::moneypunct<char,true>*,const char *name,size_t refs)
  574. { return new moneypunct_byname<char,true>(name,refs); }
  575. #ifndef _RWSTD_NO_WIDE_CHAR
  576.  
  577. inline _STD::moneypunct<wchar_t,false>* _RWSTDExport create_named_facet
  578.     (_STD::moneypunct<wchar_t,false>*,const char *name,size_t refs)
  579. { return new moneypunct_byname<wchar_t,false>(name,refs); }
  580.  
  581. inline _STD::moneypunct<wchar_t,true>* _RWSTDExport create_named_facet
  582.     (_STD::moneypunct<wchar_t,true>*,const char *name,size_t refs)
  583. { return new moneypunct_byname<wchar_t,true>(name,refs); }
  584. #endif
  585. #endif
  586.  
  587.  
  588. #ifndef _RWSTD_NO_NAMESPACE
  589. }
  590. #endif
  591.  
  592. #ifdef _RWSTD_COMPILE_INSTANTIATE
  593. #include <rw/money.cc>
  594. #endif
  595.  
  596. #pragma option pop
  597. #endif // __STD_MONEY__
  598.