111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 1999
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Silicon Graphics Computer Systems, Inc.
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 1999
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Boris Fomitchev
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * This material is provided "as is", with absolutely no warranty expressed
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * or implied. Any use is at your own risk.
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Permission to use or copy this software for any purpose is hereby granted
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * without fee, provided the above notices are retained on all copies.
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Permission to modify the code and to distribute modified code is granted,
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * provided the above notices are retained, and a notice that the code was
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * modified is included with the above copyright notice.
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// WARNING: This is an internal header file, included by other C++
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// standard library headers.  You should not attempt to use this header
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// file directly.
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _STLP_INTERNAL_MESSAGES_H
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _STLP_INTERNAL_MESSAGES_H
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _STLP_IOS_BASE_H
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#  include <stl/_ios_base.h>
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _STLP_C_LOCALE_H
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#  include <stl/c_locale.h>
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _STLP_INTERNAL_STRING_H
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#  include <stl/_string.h>
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_BEGIN_NAMESPACE
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// messages facets
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass messages_base {
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  public:
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    typedef int catalog;
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT> class messages {};
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_MOVE_TO_PRIV_NAMESPACE
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass _Messages;
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_MOVE_TO_STD_NAMESPACE
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_TEMPLATE_NULL
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass _STLP_CLASS_DECLSPEC messages<char> : public locale::facet, public messages_base {
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpublic:
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef messages_base::catalog catalog;
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef char                   char_type;
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef string                 string_type;
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  explicit messages(size_t __refs = 0);
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  catalog open(const string& __fn, const locale& __loc) const
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  { return do_open(__fn, __loc); }
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  string_type get(catalog __c, int __set, int __msgid,
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert                  const string_type& __dfault) const
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  { return do_get(__c, __set, __msgid, __dfault); }
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  inline void close(catalog __c) const
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  { do_close(__c); }
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  static _STLP_STATIC_DECLSPEC locale::id id;
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertprotected:
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  ~messages() {}
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  virtual catalog     do_open(const string& __fn, const locale& __loc) const
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  { return -1; }
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  virtual string_type do_get(catalog __c, int __set, int __msgid,
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert                             const string_type& __dfault) const
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  { return __dfault; }
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  virtual void        do_close(catalog __c) const
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  {}
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if !defined (_STLP_NO_WCHAR_T)
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_TEMPLATE_NULL
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass _STLP_CLASS_DECLSPEC messages<wchar_t> : public locale::facet, public messages_base {
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpublic:
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef messages_base::catalog catalog;
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef wchar_t                char_type;
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef wstring                string_type;
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  explicit messages(size_t __refs = 0);
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  inline catalog open(const string& __fn, const locale& __loc) const
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  { return do_open(__fn, __loc); }
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  inline string_type get(catalog __c, int __set, int __msgid,
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert                         const string_type& __dfault) const
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  { return do_get(__c, __set, __msgid, __dfault); }
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  inline void close(catalog __c) const
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  { do_close(__c); }
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  static _STLP_STATIC_DECLSPEC locale::id id;
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertprotected:
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  ~messages() {}
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  virtual catalog     do_open(const string& __fn, const locale& __loc) const
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  { return -1; }
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  virtual string_type do_get(catalog __c, int __set, int __msgid,
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert                             const string_type& __dfault) const
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  { return __dfault; }
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  virtual void        do_close(catalog __c) const
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  {}
11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT> class messages_byname {};
12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_TEMPLATE_NULL
12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass _STLP_CLASS_DECLSPEC messages_byname<char> : public messages<char> {
12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  friend class _Locale_impl;
12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpublic:
12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef messages_base::catalog catalog;
12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef string     string_type;
12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  explicit messages_byname(const char* __name, size_t __refs = 0);
13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertprotected:
13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  ~messages_byname();
13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  virtual catalog     do_open(const string& __fn, const locale& __loc) const;
13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  virtual string_type do_get(catalog __c, int __set, int __msgid,
13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert                             const string_type& __dfault) const;
13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  virtual void        do_close(catalog __c) const;
13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertprivate:
14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  messages_byname(_Locale_messages*);
14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef messages_byname<char> _Self;
14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  //explicitely defined as private to avoid warnings:
14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  messages_byname(_Self const&);
14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  _Self& operator = (_Self const&);
14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  _STLP_PRIV _Messages* _M_impl;
14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if !defined (_STLP_NO_WCHAR_T)
15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_TEMPLATE_NULL
15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass _STLP_CLASS_DECLSPEC messages_byname<wchar_t> : public messages<wchar_t> {
15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  friend class _Locale_impl;
15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpublic:
15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef messages_base::catalog catalog;
15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef wstring                string_type;
15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  explicit messages_byname(const char* __name, size_t __refs = 0);
15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertprotected:
16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  ~messages_byname();
16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  virtual catalog     do_open(const string& __fn, const locale& __loc) const;
16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  virtual string_type do_get(catalog __c, int __set, int __msgid,
16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert                             const string_type& __dfault) const;
16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  virtual void        do_close(catalog __c) const;
16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertprivate:
16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  messages_byname(_Locale_messages*);
16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef messages_byname<wchar_t> _Self;
17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  //explicitely defined as private to avoid warnings:
17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  messages_byname(_Self const&);
17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  _Self& operator = (_Self const&);
17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  _STLP_PRIV _Messages* _M_impl;
17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* WCHAR_T */
17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_END_NAMESPACE
17911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* _STLP_INTERNAL_MESSAGES_H */
18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Local Variables:
18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// mode:C++
18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// End:
18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
186