more wxMBConv classes cleanup, define wxConvLibc to use Win32 API under Windows

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@23825 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2003-09-22 20:29:15 +00:00
parent 57c5293e49
commit bde4baaced
2 changed files with 105 additions and 130 deletions

View File

@@ -33,20 +33,24 @@
#if wxUSE_WCHAR_T
// ----------------------------------------------------------------------------
// wxMBConv (base class for conversions, using libc conversion itself)
// wxMBConv (abstract base class for conversions)
// ----------------------------------------------------------------------------
class WXDLLIMPEXP_BASE wxMBConv
{
public:
// the actual conversion takes place here
virtual size_t MB2WC(wchar_t *buf, const char *psz, size_t n) const;
virtual size_t WC2MB(char *buf, const wchar_t *psz, size_t n) const;
//
// note that n is the size of the output buffer, not the length of input
// (which is always supposed to be NUL-terminated)
virtual size_t MB2WC(wchar_t *buf, const char *psz, size_t n) const = 0;
virtual size_t WC2MB(char *buf, const wchar_t *psz, size_t n) const = 0;
// No longer inline since BC++ complains.
// MB <-> WC
const wxWCharBuffer cMB2WC(const char *psz) const;
const wxCharBuffer cWC2MB(const wchar_t *psz) const;
// convenience functions for converting MB or WC to/from wxWin default
#if wxUSE_UNICODE
const wxWCharBuffer cMB2WX(const char *psz) const { return cMB2WC(psz); }
const wxCharBuffer cWX2MB(const wchar_t *psz) const { return cWC2MB(psz); }
@@ -63,7 +67,22 @@ public:
virtual ~wxMBConv();
};
WXDLLIMPEXP_DATA_BASE(extern wxMBConv) wxConvLibc;
// ----------------------------------------------------------------------------
// wxMBConvLibc uses standard mbstowcs() and wcstombs() functions for
// conversion (hence it depends on the current locale)
// ----------------------------------------------------------------------------
class WXDLLIMPEXP_BASE wxMBConvLibc : public wxMBConv
{
public:
virtual size_t MB2WC(wchar_t *buf, const char *psz, size_t n) const;
virtual size_t WC2MB(char *buf, const wchar_t *psz, size_t n) const;
};
// not very accurately named because it is not necessarily of type wxMBConvLibc
// (but the name can't eb changed because of backwards compatibility) default
// conversion
WXDLLIMPEXP_DATA_BASE(extern wxMBConv&) wxConvLibc;
// ----------------------------------------------------------------------------
// wxMBConvUTF7 (for conversion using UTF7 encoding)
@@ -76,7 +95,7 @@ public:
virtual size_t WC2MB(char *buf, const wchar_t *psz, size_t n) const;
};
WXDLLIMPEXP_DATA_BASE(extern wxMBConvUTF7) wxConvUTF7;
WXDLLIMPEXP_DATA_BASE(extern wxMBConvUTF7&) wxConvUTF7;
// ----------------------------------------------------------------------------
// wxMBConvUTF8 (for conversion using UTF8 encoding)
@@ -89,7 +108,7 @@ public:
virtual size_t WC2MB(char *buf, const wchar_t *psz, size_t n) const;
};
WXDLLIMPEXP_DATA_BASE(extern wxMBConvUTF8) wxConvUTF8;
WXDLLIMPEXP_DATA_BASE(extern wxMBConvUTF8&) wxConvUTF8;
// ----------------------------------------------------------------------------
// wxMBConvUTF16LE (for conversion using UTF16 Little Endian encoding)
@@ -184,8 +203,8 @@ private:
};
#define wxConvFile wxConvLocal
WXDLLIMPEXP_DATA_BASE(extern wxCSConv) wxConvLocal;
WXDLLIMPEXP_DATA_BASE(extern wxCSConv) wxConvISO8859_1;
WXDLLIMPEXP_DATA_BASE(extern wxCSConv&) wxConvLocal;
WXDLLIMPEXP_DATA_BASE(extern wxCSConv&) wxConvISO8859_1;
WXDLLIMPEXP_DATA_BASE(extern wxMBConv *) wxConvCurrent;
// ----------------------------------------------------------------------------
@@ -233,8 +252,9 @@ public:
const char* cWX2MB(const char *psz) const { return psz; }
};
#define wxConvFile wxConvLocal
WXDLLIMPEXP_DATA_BASE(extern wxMBConv) wxConvLibc,
wxConvFile,
wxConvLocal,
wxConvISO8859_1,
wxConvUTF8;