WXDLLEXPORT_DATA(wxCSConv) wxConvLocal((const wxChar *)NULL);
#else
// stand-ins in absence of wchar_t
- WXDLLEXPORT_DATA(wxMBConv) wxConvLibc, wxConvFile;
+ WXDLLEXPORT_DATA(wxMBConv) wxConvLibc, wxConvFile, wxConvLocal;
#endif // wxUSE_WCHAR_T
WXDLLEXPORT_DATA(wxMBConv *) wxConvCurrent = &wxConvLibc;
return wxWCharBuffer((wchar_t *) NULL);
}
-const wxCharBuffer wxMBConv::cWC2MB(const wchar_t *psz) const
+const wxCharBuffer wxMBConv::cWC2MB(const wchar_t *pwz) const
{
- if (psz)
- {
- size_t nLen = WC2MB((char *) NULL, psz, 0); // return value excludes /0
- if (nLen == (size_t)-1)
- return wxCharBuffer((char *) NULL);
- wxCharBuffer buf(nLen); // this allocates nLen+1
- WC2MB((char *)(const char *) buf, psz, nLen+1);
- return buf;
- }
- else
- return wxCharBuffer((char *) NULL);
+ // return value excludes NUL
+ size_t nLen = pwz ? WC2MB((char *) NULL, pwz, 0) : (size_t)-1;
+ if (nLen == (size_t)-1)
+ return wxCharBuffer((const char *)NULL);
+
+ wxCharBuffer buf(nLen); // this allocates nLen+1
+ WC2MB((char *)(const char *) buf, pwz, nLen+1);
+ return buf;
}
// ----------------------------------------------------------------------------
size_t MB2WC(wchar_t *buf, const char *psz, size_t n)
{
size_t len =
+#ifdef __WXWINE__
+ MultiByteToWideChar(m_CodePage, 0, psz, -1, (WCHAR*) buf, buf ? n : 0);
+#else
MultiByteToWideChar(m_CodePage, 0, psz, -1, buf, buf ? n : 0);
+#endif
//VS: returns # of written chars for buf!=NULL and *size*
// needed buffer for buf==NULL
return len ? (buf ? len : len-1) : (size_t)-1;
size_t WC2MB(char *buf, const wchar_t *psz, size_t n)
{
+#ifdef __WXWINE__
+ size_t len = WideCharToMultiByte(m_CodePage, 0, (const WCHAR*) psz, -1, buf,
+ buf ? n : 0, NULL, NULL);
+#else
size_t len = WideCharToMultiByte(m_CodePage, 0, psz, -1, buf,
buf ? n : 0, NULL, NULL);
+#endif
//VS: returns # of written chars for buf!=NULL and *size*
// needed buffer for buf==NULL
return len ? (buf ? len : len-1) : (size_t)-1;