19720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/*
29720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999
39720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Silicon Graphics Computer Systems, Inc.
49720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
59720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999
69720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Boris Fomitchev
79720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
89720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * This material is provided "as is", with absolutely no warranty expressed
99720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * or implied. Any use is at your own risk.
109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to use or copy this software for any purpose is hereby granted
129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * without fee, provided the above notices are retained on all copies.
139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to modify the code and to distribute modified code is granted,
149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * provided the above notices are retained, and a notice that the code was
159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * modified is included with the above copyright notice.
169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// WARNING: This is an internal header file, included by other C++
199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// standard library headers.  You should not attempt to use this header
209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// file directly.
219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_NUMPUNCT_H
249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_INTERNAL_NUMPUNCT_H
259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_IOS_BASE_H
279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/_ios_base.h>
289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# ifndef _STLP_C_LOCALE_H
319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  include <stl/c_locale.h>
329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif
339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_STRING_H
359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/_string.h>
369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_BEGIN_NAMESPACE
399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block//----------------------------------------------------------------------
419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// numpunct facets
429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT> class numpunct {};
449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT> class numpunct_byname {};
459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Ch, class _InIt> class num_get;
469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_TEMPLATE_NULL
48e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass _STLP_CLASS_DECLSPEC numpunct<char> : public locale::facet {
499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic:
509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef char               char_type;
519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef string             string_type;
529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  explicit numpunct(size_t __refs = 0)
54e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    : locale::facet(__refs) {}
559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  char decimal_point() const { return do_decimal_point(); }
579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  char thousands_sep() const { return do_thousands_sep(); }
589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  string grouping() const { return do_grouping(); }
599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  string truename() const { return do_truename(); }
609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  string falsename() const { return do_falsename(); }
619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
62e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  static _STLP_STATIC_DECLSPEC locale::id id;
639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected:
659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  ~numpunct();
669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  virtual char do_decimal_point() const;
689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  virtual char do_thousands_sep() const;
699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  virtual string do_grouping() const;
709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  virtual string do_truename() const;
719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  virtual string do_falsename()  const;
729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block};
739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# if ! defined (_STLP_NO_WCHAR_T)
759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_TEMPLATE_NULL
77e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass _STLP_CLASS_DECLSPEC numpunct<wchar_t> : public locale::facet {
789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic:
799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef wchar_t               char_type;
809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef wstring               string_type;
819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  explicit numpunct(size_t __refs = 0)
83e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    : locale::facet(__refs) {}
849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  wchar_t decimal_point() const { return do_decimal_point(); }
869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  wchar_t thousands_sep() const { return do_thousands_sep(); }
879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  string grouping() const { return do_grouping(); }
889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  wstring truename() const { return do_truename(); }
899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  wstring falsename() const { return do_falsename(); }
909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
91e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  static _STLP_STATIC_DECLSPEC locale::id id;
929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected:
949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  ~numpunct();
959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  virtual wchar_t do_decimal_point() const;
979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  virtual wchar_t do_thousands_sep() const;
989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  virtual string do_grouping() const;
999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  virtual wstring do_truename() const;
1009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  virtual wstring do_falsename()  const;
1019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block};
1029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif /* WCHAR_T */
1049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_TEMPLATE_NULL
1069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _STLP_CLASS_DECLSPEC numpunct_byname<char> : public numpunct<char> {
107e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  friend class _Locale_impl;
1089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic:
1099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef char                char_type;
1109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef string              string_type;
1119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
112e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  explicit numpunct_byname(const char* __name, size_t __refs = 0);
1139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected:
1159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  ~numpunct_byname();
1179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  virtual char   do_decimal_point() const;
1199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  virtual char   do_thousands_sep() const;
1209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  virtual string do_grouping()      const;
121e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  virtual string do_truename()      const;
122e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  virtual string do_falsename()     const;
1239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate:
125e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  numpunct_byname(_Locale_numeric *__numeric)
126e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    : _M_numeric(__numeric) {}
1279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  //explicitely defined as private to avoid warnings:
1299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef numpunct_byname<char> _Self;
1309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  numpunct_byname(_Self const&);
1319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  _Self& operator = (_Self const&);
132e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
133e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _Locale_numeric* _M_numeric;
1349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block};
1359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# ifndef _STLP_NO_WCHAR_T
1379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_TEMPLATE_NULL
1389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _STLP_CLASS_DECLSPEC numpunct_byname<wchar_t>: public numpunct<wchar_t> {
139e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  friend class _Locale_impl;
1409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic:
1419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef wchar_t               char_type;
1429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef wstring               string_type;
1439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
144e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  explicit numpunct_byname(const char* __name, size_t __refs = 0);
1459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected:
1479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  ~numpunct_byname();
1489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  virtual wchar_t   do_decimal_point() const;
1509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  virtual wchar_t   do_thousands_sep() const;
1519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  virtual string do_grouping() const;
152e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  virtual wstring do_truename() const;
153e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  virtual wstring do_falsename() const;
1549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate:
156e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  numpunct_byname(_Locale_numeric *__numeric)
157e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    : _M_numeric(__numeric) {}
1589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  //explicitely defined as private to avoid warnings:
1609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef numpunct_byname<wchar_t> _Self;
1619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  numpunct_byname(_Self const&);
1629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  _Self& operator = (_Self const&);
163e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
164e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _Locale_numeric* _M_numeric;
1659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block};
1669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif /* WCHAR_T */
1689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_END_NAMESPACE
1709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_NUMPUNCT_H */
1729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Local Variables:
1749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// mode:C++
1759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// End:
1769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
177