This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/Borland/BCC55/Include/Rw/messages.h

167 lines
5.2 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef __MESSAGES_H
#define __MESSAGES_H
#pragma option push -b -a8 -pc -Vx- -Ve- -w-inl -w-aus -w-sig
// -*- C++ -*-
/***************************************************************************
*
* messages - Declarations for the Standard Library messaging facet
*
***************************************************************************
*
* Copyright (c) 1994-1999 Rogue Wave Software, Inc. All Rights Reserved.
*
* This computer software is owned by Rogue Wave Software, Inc. and is
* protected by U.S. copyright laws and other laws and by international
* treaties. This computer software is furnished by Rogue Wave Software,
* Inc. pursuant to a written license agreement and may be used, copied,
* transmitted, and stored only in accordance with the terms of such
* license and with the inclusion of the above copyright notice. This
* computer software or any other copies thereof may not be provided or
* otherwise made available to any other person.
*
* U.S. Government Restricted Rights. This computer software is provided
* with Restricted Rights. Use, duplication, or disclosure by the
* Government is subject to restrictions as set forth in subparagraph (c)
* (1) (ii) of The Rights in Technical Data and Computer Software clause
* at DFARS 252.227-7013 or subparagraphs (c) (1) and (2) of the
* Commercial Computer Software Restricted Rights at 48 CFR 52.227-19,
* as applicable. Manufacturer is Rogue Wave Software, Inc., 5500
* Flatiron Parkway, Boulder, Colorado 80301 USA.
*
**************************************************************************/
#ifndef __STD_MESSAGE__
#define __STD_MESSAGE__
#ifndef __STD_RWLOCALE__
#include <rw/rwlocale>
#endif
#ifndef _RWSTD_NO_NAMESPACE
namespace std {
#endif
struct _RWSTDExport messages_base {
typedef size_t catalog;
};
#ifndef _RWSTD_NO_NAMESPACE
} namespace __rwstd {
#endif
// --------------------------------------
// Implementation class -- messages_impl.
// --------------------------------------
class _RWSTDExport messages_impl {
_RW_STD::string loc_name_; \
protected:
messages_impl (_RW_STD::string name);
_RW_STD::messages_base::catalog open_cat_ (const _RW_STD::string &,const _RW_STD::locale &) const;
char *get_mess_ (_RW_STD::messages_base::catalog,int,int) const;
const _RW_STD::locale &get_loc_ (_RW_STD::messages_base::catalog) const;
void close_cat_ (_RW_STD::messages_base::catalog) const;
static _RW_STD::string get_loc_name_ (const char*);
};
#ifndef _RWSTD_NO_NAMESPACE
} namespace std {
#endif
// ----------------------------------------------------
// Standard message retrieval facet -- messages<charT>.
// ----------------------------------------------------
template <class charT>
class _RWSTDExportTemplate messages: public locale::facet, public messages_base,
public __RWSTD::messages_impl
{
public:
typedef charT char_type;
typedef basic_string<charT,char_traits<charT>,allocator<charT> > string_type;
_EXPLICIT messages (size_t refs=0);
catalog open (const string& fn, const locale& loc) const
{ return do_open(fn,loc); }
string_type get (catalog c, int set, int msgid, const string_type& df) const
{ return do_get(c,set,msgid,df); }
void close (catalog c) const { do_close(c); }
static locale::id id;
// Implementation:
enum { __facet_cat = locale::__rw_messages_category, __ok_implicit = 1 };
protected:
virtual ~messages();
virtual catalog do_open (const string&, const locale&) const;
virtual string_type do_get (catalog, int, int, const string_type&) const;
virtual void do_close (catalog) const;
// Implementation:
messages (size_t refs,string);
private:
#ifdef _RWSTD_NO_MEMBER_TEMPLATES
locale::id &__get_id (void) const { return id; }
#endif
};
// -------------------------------------------------
// Standard derived facet -- messages_byname<charT>.
// -------------------------------------------------
template <class charT>
class messages_byname: public messages<charT> {
public:
_EXPLICIT messages_byname (const char*, size_t refs=0);
protected:
// Virtual members inherited from messages<charT>:
// ~messages_byname();
// catalog do_open (const string&, const locale&) const;
// string_type do_get (catalog, int, int, const string_type&) const;
// void do_close (catalog) const;
};
#ifndef _RWSTD_NO_NAMESPACE
} namespace __rwstd {
#endif
#ifndef _RWSTD_NO_FUNC_PARTIAL_SPEC
template <class charT>
inline _RW_STD::messages<charT>* create_named_facet
(_RW_STD::messages<charT>*,const char *name,size_t refs)
{ return new _RW_STD::messages_byname<charT>(name,refs); }
#else
_RWSTD_TEMPLATE
inline _RW_STD::messages<char>* create_named_facet
(_RW_STD::messages<char>*,const char *name,size_t refs)
{ return new _RW_STD::messages_byname<char>(name,refs); }
#ifndef _RWSTD_NO_WIDE_CHAR
_RWSTD_TEMPLATE
inline _RW_STD::messages<wchar_t>* create_named_facet
(_RW_STD::messages<wchar_t>*,const char *name,size_t refs)
{ return new _RW_STD::messages_byname<wchar_t>(name,refs); }
#endif // _RWSTD_NO_WIDE_CHAR
#endif // _RWSTD_NO_FUNC_PARTIAL_SPEC
#ifndef _RWSTD_NO_NAMESPACE
} // namespace __rwstd
#endif
#ifdef _RWSTD_COMPILE_INSTANTIATE
#include <rw/messages.cc>
#endif
#endif /* __STD_MESSAGE__ */
#pragma option pop
#endif /* __MESSAGES_H */