Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
// xlocmes internal header (from <locale>) #pragma once #ifndef _XLOCMES_ #define _XLOCMES_ #include <xiosbase>
#pragma pack(push,8) #pragma warning(push,3) _STD_BEGIN
// STRUCT messages_base struct _CRTIMP2 messages_base : public locale::facet { // base class for messages typedef int catalog;
explicit messages_base(size_t _Refs = 0) : locale::facet(_Refs) { // default constructor } };
// TEMPLATE CLASS messages template<class _Elem> class messages : public messages_base { // facet for obtaining messages from a catalog public: typedef _Elem char_type; typedef basic_string<_Elem, char_traits<_Elem>, allocator<_Elem> > string_type;
catalog open(const string& _Catname, const locale& _Loc) const { // open catalog return (do_open(_Catname, _Loc)); }
string_type get(catalog _Catval, int _Set, int _Message, const string_type& _Dflt) const { // get message from set in catalog return (do_get(_Catval, _Set, _Message, _Dflt)); }
void close(catalog _Catval) const { // close catalog do_close(_Catval); }
static locale::id id; // unique facet id
explicit messages(size_t _Refs = 0) : messages_base(_Refs) { // construct from current locale _Init(_Locinfo()); }
messages(const _Locinfo& _Lobj, size_t _Refs = 0) : messages_base(_Refs) { // construct from specified locale _Init(_Lobj); }
static size_t __cdecl _Getcat(const locale::facet **_Ppf = 0) { // return locale category mask and construct standard facet if (_Ppf != 0 && *_Ppf == 0) *_Ppf = _NEW_CRT messages<_Elem>; return (_X_MESSAGE); }
protected: void _Init(const _Locinfo&) { // initialize from _Locinfo object (do nothing) }
virtual catalog do_open(const string&, const locale&) const { // open catalog (do nothing) return (0); }
virtual string_type do_get(catalog, int, int, const string_type& _Dflt) const { // get message from set in catalog (return default) return (_Dflt); }
virtual void do_close(catalog) const { // close catalog (do nothing) } };
// STATIC messages::id OBJECT template<class _Elem> locale::id messages<_Elem>::id;
// TEMPLATE CLASS messages_byname template<class _Elem> class messages_byname : public messages<_Elem> { // messages for named locale public: explicit messages_byname(const char *_Locname, size_t _Refs = 0) : messages<_Elem>(_Locinfo(_Locname), _Refs) { // construct for named locale }
_PROTECTED: virtual ~messages_byname() { // destroy the object } };
#ifdef _DLL_CPPLIB template class _CRTIMP2 messages<char>; template class _CRTIMP2 messages<wchar_t>; #endif // _DLL_CPPLIB _STD_END #pragma warning(pop) #pragma pack(pop)
#endif /* _XLOCMES_ */
/* * Copyright (c) 1992-2001 by P.J. Plauger. ALL RIGHTS RESERVED. * Consult your license regarding permissions and restrictions. V3.10:0009 */
|