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:
@@ -33,20 +33,24 @@
|
|||||||
#if wxUSE_WCHAR_T
|
#if wxUSE_WCHAR_T
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// wxMBConv (base class for conversions, using libc conversion itself)
|
// wxMBConv (abstract base class for conversions)
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
class WXDLLIMPEXP_BASE wxMBConv
|
class WXDLLIMPEXP_BASE wxMBConv
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// the actual conversion takes place here
|
// 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 wxWCharBuffer cMB2WC(const char *psz) const;
|
||||||
const wxCharBuffer cWC2MB(const wchar_t *psz) const;
|
const wxCharBuffer cWC2MB(const wchar_t *psz) const;
|
||||||
|
|
||||||
|
// convenience functions for converting MB or WC to/from wxWin default
|
||||||
#if wxUSE_UNICODE
|
#if wxUSE_UNICODE
|
||||||
const wxWCharBuffer cMB2WX(const char *psz) const { return cMB2WC(psz); }
|
const wxWCharBuffer cMB2WX(const char *psz) const { return cMB2WC(psz); }
|
||||||
const wxCharBuffer cWX2MB(const wchar_t *psz) const { return cWC2MB(psz); }
|
const wxCharBuffer cWX2MB(const wchar_t *psz) const { return cWC2MB(psz); }
|
||||||
@@ -63,7 +67,22 @@ public:
|
|||||||
virtual ~wxMBConv();
|
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)
|
// 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;
|
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)
|
// 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;
|
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)
|
// wxMBConvUTF16LE (for conversion using UTF16 Little Endian encoding)
|
||||||
@@ -184,8 +203,8 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
#define wxConvFile wxConvLocal
|
#define wxConvFile wxConvLocal
|
||||||
WXDLLIMPEXP_DATA_BASE(extern wxCSConv) wxConvLocal;
|
WXDLLIMPEXP_DATA_BASE(extern wxCSConv&) wxConvLocal;
|
||||||
WXDLLIMPEXP_DATA_BASE(extern wxCSConv) wxConvISO8859_1;
|
WXDLLIMPEXP_DATA_BASE(extern wxCSConv&) wxConvISO8859_1;
|
||||||
WXDLLIMPEXP_DATA_BASE(extern wxMBConv *) wxConvCurrent;
|
WXDLLIMPEXP_DATA_BASE(extern wxMBConv *) wxConvCurrent;
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -233,8 +252,9 @@ public:
|
|||||||
const char* cWX2MB(const char *psz) const { return psz; }
|
const char* cWX2MB(const char *psz) const { return psz; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define wxConvFile wxConvLocal
|
||||||
|
|
||||||
WXDLLIMPEXP_DATA_BASE(extern wxMBConv) wxConvLibc,
|
WXDLLIMPEXP_DATA_BASE(extern wxMBConv) wxConvLibc,
|
||||||
wxConvFile,
|
|
||||||
wxConvLocal,
|
wxConvLocal,
|
||||||
wxConvISO8859_1,
|
wxConvISO8859_1,
|
||||||
wxConvUTF8;
|
wxConvUTF8;
|
||||||
|
@@ -34,6 +34,10 @@
|
|||||||
#include "wx/log.h"
|
#include "wx/log.h"
|
||||||
#endif // WX_PRECOMP
|
#endif // WX_PRECOMP
|
||||||
|
|
||||||
|
#include "wx/strconv.h"
|
||||||
|
|
||||||
|
#if wxUSE_WCHAR_T
|
||||||
|
|
||||||
#ifdef __WXMSW__
|
#ifdef __WXMSW__
|
||||||
#include "wx/msw/private.h"
|
#include "wx/msw/private.h"
|
||||||
#endif
|
#endif
|
||||||
@@ -46,57 +50,14 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include "wx/module.h"
|
|
||||||
#include "wx/strconv.h"
|
|
||||||
|
|
||||||
#if defined(__WIN32__) && !defined(__WXMICROWIN__)
|
#if defined(__WIN32__) && !defined(__WXMICROWIN__)
|
||||||
#define wxHAVE_WIN32_MB2WC
|
#define wxHAVE_WIN32_MB2WC
|
||||||
#endif // __WIN32__ but !__WXMICROWIN__
|
#endif // __WIN32__ but !__WXMICROWIN__
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
// globals
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
#if wxUSE_WCHAR_T
|
|
||||||
WXDLLIMPEXP_DATA_BASE(wxMBConv) wxConvLibc;
|
|
||||||
WXDLLIMPEXP_DATA_BASE(wxCSConv) wxConvLocal((const wxChar *)NULL);
|
|
||||||
WXDLLIMPEXP_DATA_BASE(wxCSConv) wxConvISO8859_1(_T("iso-8859-1"));
|
|
||||||
#else
|
|
||||||
// stand-ins in absence of wchar_t
|
|
||||||
WXDLLIMPEXP_DATA_BASE(wxMBConv) wxConvLibc,
|
|
||||||
wxConvFile,
|
|
||||||
wxConvISO8859_1,
|
|
||||||
wxConvLocal,
|
|
||||||
wxConvUTF8;
|
|
||||||
#endif // wxUSE_WCHAR_T
|
|
||||||
|
|
||||||
WXDLLIMPEXP_DATA_BASE(wxMBConv *) wxConvCurrent = &wxConvLibc;
|
|
||||||
|
|
||||||
class wxStrConvModule: public wxModule
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
wxStrConvModule() : wxModule() { }
|
|
||||||
virtual bool OnInit() { return true; }
|
|
||||||
virtual void OnExit()
|
|
||||||
{
|
|
||||||
#if wxUSE_WCHAR_T
|
|
||||||
wxConvLocal.Clear();
|
|
||||||
wxConvISO8859_1.Clear();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
DECLARE_DYNAMIC_CLASS(wxStrConvModule)
|
|
||||||
};
|
|
||||||
|
|
||||||
IMPLEMENT_DYNAMIC_CLASS(wxStrConvModule, wxModule)
|
|
||||||
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// headers
|
// headers
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
#if wxUSE_WCHAR_T
|
|
||||||
|
|
||||||
#ifdef __SALFORDC__
|
#ifdef __SALFORDC__
|
||||||
#include <clib.h>
|
#include <clib.h>
|
||||||
#endif
|
#endif
|
||||||
@@ -115,12 +76,6 @@ IMPLEMENT_DYNAMIC_CLASS(wxStrConvModule, wxModule)
|
|||||||
#define BSWAP_UCS4(str, len) { unsigned _c; for (_c=0; _c<len; _c++) str[_c]=wxUINT32_SWAP_ALWAYS(str[_c]); }
|
#define BSWAP_UCS4(str, len) { unsigned _c; for (_c=0; _c<len; _c++) str[_c]=wxUINT32_SWAP_ALWAYS(str[_c]); }
|
||||||
#define BSWAP_UTF16(str, len) { unsigned _c; for (_c=0; _c<len; _c++) str[_c]=wxUINT16_SWAP_ALWAYS(str[_c]); }
|
#define BSWAP_UTF16(str, len) { unsigned _c; for (_c=0; _c<len; _c++) str[_c]=wxUINT16_SWAP_ALWAYS(str[_c]); }
|
||||||
|
|
||||||
// under Unix SIZEOF_WCHAR_T is defined by configure, but under other platforms
|
|
||||||
// it might be not defined - assume the most common value
|
|
||||||
#ifndef SIZEOF_WCHAR_T
|
|
||||||
#define SIZEOF_WCHAR_T 2
|
|
||||||
#endif // !defined(SIZEOF_WCHAR_T)
|
|
||||||
|
|
||||||
#if SIZEOF_WCHAR_T == 4
|
#if SIZEOF_WCHAR_T == 4
|
||||||
#define WC_NAME "UCS4"
|
#define WC_NAME "UCS4"
|
||||||
#define WC_BSWAP BSWAP_UCS4
|
#define WC_BSWAP BSWAP_UCS4
|
||||||
@@ -139,8 +94,8 @@ IMPLEMENT_DYNAMIC_CLASS(wxStrConvModule, wxModule)
|
|||||||
#define WC_NAME_BEST "UTF-16LE"
|
#define WC_NAME_BEST "UTF-16LE"
|
||||||
#endif
|
#endif
|
||||||
#else // sizeof(wchar_t) != 2 nor 4
|
#else // sizeof(wchar_t) != 2 nor 4
|
||||||
// I don't know what to do about this
|
// does this ever happen?
|
||||||
#error "Weird sizeof(wchar_t): please report your platform details to wx-users mailing list"
|
#error "Unknown sizeof(wchar_t): please report this to wx-dev@lists.wxwindows.org"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
@@ -198,49 +153,11 @@ static size_t decode_utf16(const wxUint16* input, wxUint32& output)
|
|||||||
// wxMBConv
|
// wxMBConv
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
#define IGNORE_LIBC 0
|
|
||||||
|
|
||||||
wxMBConv::~wxMBConv()
|
wxMBConv::~wxMBConv()
|
||||||
{
|
{
|
||||||
// nothing to do here
|
// nothing to do here
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t wxMBConv::MB2WC(wchar_t *buf, const char *psz, size_t n) const
|
|
||||||
{
|
|
||||||
#if IGNORE_LIBC
|
|
||||||
if (buf)
|
|
||||||
{
|
|
||||||
for (size_t i = 0; i < strlen( psz )+1; i++)
|
|
||||||
buf[i] = (wchar_t) psz[i];
|
|
||||||
return strlen( psz );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return strlen( psz );
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
return wxMB2WC(buf, psz, n);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t wxMBConv::WC2MB(char *buf, const wchar_t *psz, size_t n) const
|
|
||||||
{
|
|
||||||
#if IGNORE_LIBC
|
|
||||||
if (buf)
|
|
||||||
{
|
|
||||||
for (size_t i = 0; i < wxStrlen( psz )+1; i++)
|
|
||||||
buf[i] = (char) psz[i];
|
|
||||||
return wxStrlen( psz );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return wxStrlen( psz );
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
return wxWC2MB(buf, psz, n);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
const wxWCharBuffer wxMBConv::cMB2WC(const char *psz) const
|
const wxWCharBuffer wxMBConv::cMB2WC(const char *psz) const
|
||||||
{
|
{
|
||||||
if ( psz )
|
if ( psz )
|
||||||
@@ -282,10 +199,22 @@ const wxCharBuffer wxMBConv::cWC2MB(const wchar_t *pwz) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// UTF-7
|
// wxMBConvLibc
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
WXDLLIMPEXP_DATA_BASE(wxMBConvUTF7) wxConvUTF7;
|
size_t wxMBConvLibc::MB2WC(wchar_t *buf, const char *psz, size_t n) const
|
||||||
|
{
|
||||||
|
return wxMB2WC(buf, psz, n);
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t wxMBConvLibc::WC2MB(char *buf, const wchar_t *psz, size_t n) const
|
||||||
|
{
|
||||||
|
return wxWC2MB(buf, psz, n);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// UTF-7
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
static char utf7_setD[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
static char utf7_setD[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||||
@@ -316,8 +245,6 @@ size_t wxMBConvUTF7::WC2MB(char * WXUNUSED(buf),
|
|||||||
// UTF-8
|
// UTF-8
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
WXDLLIMPEXP_DATA_BASE(wxMBConvUTF8) wxConvUTF8;
|
|
||||||
|
|
||||||
static wxUint32 utf8_max[]=
|
static wxUint32 utf8_max[]=
|
||||||
{ 0x7f, 0x7ff, 0xffff, 0x1fffff, 0x3ffffff, 0x7fffffff, 0xffffffff };
|
{ 0x7f, 0x7ff, 0xffff, 0x1fffff, 0x3ffffff, 0x7fffffff, 0xffffffff };
|
||||||
|
|
||||||
@@ -433,24 +360,16 @@ size_t wxMBConvUTF8::WC2MB(char *buf, const wchar_t *psz, size_t n) const
|
|||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
#ifdef WORDS_BIGENDIAN
|
#ifdef WORDS_BIGENDIAN
|
||||||
#define wxMBConvUTF16straight wxMBConvUTF16BE
|
#define wxMBConvUTF16straight wxMBConvUTF16BE
|
||||||
#define wxMBConvUTF16swap wxMBConvUTF16LE
|
#define wxMBConvUTF16swap wxMBConvUTF16LE
|
||||||
#else
|
#else
|
||||||
#define wxMBConvUTF16swap wxMBConvUTF16BE
|
#define wxMBConvUTF16swap wxMBConvUTF16BE
|
||||||
#define wxMBConvUTF16straight wxMBConvUTF16LE
|
#define wxMBConvUTF16straight wxMBConvUTF16LE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
WXDLLIMPEXP_DATA_BASE(wxMBConvUTF16LE) wxConvUTF16LE;
|
|
||||||
WXDLLIMPEXP_DATA_BASE(wxMBConvUTF16BE) wxConvUTF16BE;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef WC_UTF16
|
#ifdef WC_UTF16
|
||||||
|
|
||||||
|
|
||||||
// copy 16bit MB to 16bit String
|
// copy 16bit MB to 16bit String
|
||||||
size_t wxMBConvUTF16straight::MB2WC(wchar_t *buf, const char *psz, size_t n) const
|
size_t wxMBConvUTF16straight::MB2WC(wchar_t *buf, const char *psz, size_t n) const
|
||||||
{
|
{
|
||||||
@@ -918,8 +837,8 @@ public:
|
|||||||
wxMBConv_iconv(const wxChar *name);
|
wxMBConv_iconv(const wxChar *name);
|
||||||
virtual ~wxMBConv_iconv();
|
virtual ~wxMBConv_iconv();
|
||||||
|
|
||||||
virtual size_t MB2WC(wchar_t *buf, const char *psz, size_t n);
|
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);
|
virtual size_t WC2MB(char *buf, const wchar_t *psz, size_t n) const;
|
||||||
|
|
||||||
bool IsOk() const
|
bool IsOk() const
|
||||||
{ return (m2w != (iconv_t)-1) && (w2m != (iconv_t)-1); }
|
{ return (m2w != (iconv_t)-1) && (w2m != (iconv_t)-1); }
|
||||||
@@ -1038,7 +957,7 @@ wxMBConv_iconv::~wxMBConv_iconv()
|
|||||||
iconv_close(w2m);
|
iconv_close(w2m);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t wxMBConv_iconv::MB2WC(wchar_t *buf, const char *psz, size_t n)
|
size_t wxMBConv_iconv::MB2WC(wchar_t *buf, const char *psz, size_t n) const
|
||||||
{
|
{
|
||||||
size_t inbuf = strlen(psz);
|
size_t inbuf = strlen(psz);
|
||||||
size_t outbuf = n * SIZEOF_WCHAR_T;
|
size_t outbuf = n * SIZEOF_WCHAR_T;
|
||||||
@@ -1095,7 +1014,7 @@ size_t wxMBConv_iconv::MB2WC(wchar_t *buf, const char *psz, size_t n)
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t wxMBConv_iconv::WC2MB(char *buf, const wchar_t *psz, size_t n)
|
size_t wxMBConv_iconv::WC2MB(char *buf, const wchar_t *psz, size_t n) const
|
||||||
{
|
{
|
||||||
size_t inbuf = wxWcslen(psz) * SIZEOF_WCHAR_T;
|
size_t inbuf = wxWcslen(psz) * SIZEOF_WCHAR_T;
|
||||||
size_t outbuf = n;
|
size_t outbuf = n;
|
||||||
@@ -1174,17 +1093,22 @@ extern WXDLLIMPEXP_BASE long wxEncodingToCodepage(wxFontEncoding encoding);
|
|||||||
class wxMBConv_win32 : public wxMBConv
|
class wxMBConv_win32 : public wxMBConv
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
wxMBConv_win32()
|
||||||
|
{
|
||||||
|
m_CodePage = CP_ACP;
|
||||||
|
}
|
||||||
|
|
||||||
wxMBConv_win32(const wxChar* name)
|
wxMBConv_win32(const wxChar* name)
|
||||||
{
|
{
|
||||||
m_CodePage = wxCharsetToCodepage(name);
|
m_CodePage = wxCharsetToCodepage(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
wxMBConv_win32(wxFontEncoding encoding)
|
wxMBConv_win32(wxFontEncoding encoding)
|
||||||
{
|
{
|
||||||
m_CodePage = wxEncodingToCodepage(encoding);
|
m_CodePage = wxEncodingToCodepage(encoding);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t MB2WC(wchar_t *buf, const char *psz, size_t n)
|
size_t MB2WC(wchar_t *buf, const char *psz, size_t n) const
|
||||||
{
|
{
|
||||||
const size_t len = ::MultiByteToWideChar
|
const size_t len = ::MultiByteToWideChar
|
||||||
(
|
(
|
||||||
@@ -1201,7 +1125,7 @@ public:
|
|||||||
return len ? (buf ? len : len - 1) : (size_t)-1;
|
return len ? (buf ? len : len - 1) : (size_t)-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t WC2MB(char *buf, const wchar_t *psz, size_t n)
|
size_t WC2MB(char *buf, const wchar_t *psz, size_t n) const
|
||||||
{
|
{
|
||||||
const size_t len = ::WideCharToMultiByte
|
const size_t len = ::WideCharToMultiByte
|
||||||
(
|
(
|
||||||
@@ -1264,7 +1188,7 @@ public:
|
|||||||
Init();
|
Init();
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t MB2WC(wchar_t *buf, const char *psz, size_t WXUNUSED(n))
|
size_t MB2WC(wchar_t *buf, const char *psz, size_t WXUNUSED(n)) const
|
||||||
{
|
{
|
||||||
size_t inbuf = strlen(psz);
|
size_t inbuf = strlen(psz);
|
||||||
if (buf)
|
if (buf)
|
||||||
@@ -1272,7 +1196,7 @@ public:
|
|||||||
return inbuf;
|
return inbuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t WC2MB(char *buf, const wchar_t *psz, size_t WXUNUSED(n))
|
size_t WC2MB(char *buf, const wchar_t *psz, size_t WXUNUSED(n)) const
|
||||||
{
|
{
|
||||||
const size_t inbuf = wxWcslen(psz);
|
const size_t inbuf = wxWcslen(psz);
|
||||||
if (buf)
|
if (buf)
|
||||||
@@ -1565,6 +1489,37 @@ size_t wxCSConv::WC2MB(char *buf, const wchar_t *psz, size_t n) const
|
|||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // wxUSE_WCHAR_T
|
// ----------------------------------------------------------------------------
|
||||||
|
// globals
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#ifdef __WINDOWS__
|
||||||
|
static wxMBConv_win32 wxConvLibcObj;
|
||||||
|
#else
|
||||||
|
static wxMBConvSystem wxConvLibcObj;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static wxCSConv wxConvLocalObj(wxFONTENCODING_SYSTEM);
|
||||||
|
static wxCSConv wxConvISO8859_1Obj(wxFONTENCODING_ISO8859_1);
|
||||||
|
static wxMBConvUTF7 wxConvUTF7Obj;
|
||||||
|
static wxMBConvUTF8 wxConvUTF8Obj;
|
||||||
|
|
||||||
|
|
||||||
|
WXDLLIMPEXP_DATA_BASE(wxMBConv&) wxConvLibc = wxConvLibcObj;
|
||||||
|
WXDLLIMPEXP_DATA_BASE(wxCSConv&) wxConvLocal = wxConvLocalObj;
|
||||||
|
WXDLLIMPEXP_DATA_BASE(wxCSConv&) wxConvISO8859_1 = wxConvISO8859_1Obj;
|
||||||
|
WXDLLIMPEXP_DATA_BASE(wxMBConvUTF7&) wxConvUTF7 = wxConvUTF7Obj;
|
||||||
|
WXDLLIMPEXP_DATA_BASE(wxMBConvUTF8&) wxConvUTF8 = wxConvUTF8Obj;
|
||||||
|
WXDLLIMPEXP_DATA_BASE(wxMBConv *) wxConvCurrent = &wxConvLibcObj;
|
||||||
|
|
||||||
|
#else // !wxUSE_WCHAR_T
|
||||||
|
|
||||||
|
// stand-ins in absence of wchar_t
|
||||||
|
WXDLLIMPEXP_DATA_BASE(wxMBConv) wxConvLibc,
|
||||||
|
wxConvISO8859_1,
|
||||||
|
wxConvLocal,
|
||||||
|
wxConvUTF8;
|
||||||
|
|
||||||
|
#endif // wxUSE_WCHAR_T/!wxUSE_WCHAR_T
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user