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