return (size_t)-1;
}
#ifdef WC_UTF16
- size_t pa = encode_utf16(res, buf);
+ // cast is ok because wchar_t == wxUuint16 if WC_UTF16
+ size_t pa = encode_utf16(res, (wxUint16 *)buf);
if (pa == (size_t)-1)
return (size_t)-1;
if (buf)
{
wxUint32 cc;
#ifdef WC_UTF16
- size_t pa = decode_utf16(psz, cc);
+ // cast is ok for WC_UTF16
+ size_t pa = decode_utf16((const wxUint16 *)psz, cc);
psz += (pa == (size_t)-1) ? 1 : pa;
#else
cc=(*psz++) & 0x7fffffff;
if (buf)
{
*(wxUint16*)buf = cc[0];
- buf += sizeof(wxUint16);
+ buf += sizeof(wxUint16);
if (pa > 1)
{
*(wxUint16*)buf = cc[1];
{
wxUint32 cc;
- size_t pa=decode_utf16(psz, cc);
+ // cast is ok for WC_UTF16
+ size_t pa = decode_utf16((const wxUint16 *)psz, cc);
if (pa == (size_t)-1)
return pa;
len += sizeof(wxUint32);
psz += pa;
}
- if (buf && len<=n-sizeof(wxUint32)) *(wxUint32*)buf=0;
+
+ if (buf && len<=n-sizeof(wxUint32))
+ *(wxUint32*)buf=0;
return len;
}
len += pa;
psz += sizeof(wxUint32);
}
- if (buf && len<n) *buf=0;
+
+ if (buf && len<n)
+ *buf=0;
return len;
}
{
char cc[4];
- size_t pa=decode_utf16(psz, *(wxUint32*)cc);
+ // cast is ok for WC_UTF16
+ size_t pa=decode_utf16((const wxUint16 *)psz, *(wxUint32*)cc);
if (pa == (size_t)-1)
return pa;
len += sizeof(wxUint32);
psz += pa;
}
- if (buf && len<=n-sizeof(wxUint32)) *(wxUint32*)buf=0;
+
+ if (buf && len<=n-sizeof(wxUint32))
+ *(wxUint32*)buf=0;
return len;
}
len++;
psz += sizeof(wxUint32);
}
- if (buf && len<n) *buf=0;
+
+ if (buf && len<n)
+ *buf=0;
return len;
}
psz++;
}
- if (buf && len<=n-sizeof(wxUint32)) *(wxUint32*)buf=0;
+ if (buf && len<=n-sizeof(wxUint32))
+ *(wxUint32*)buf=0;
return len;
}
len++;
psz += sizeof(wxUint32);
}
- if (buf && len<n) *buf=0;
+
+ if (buf && len<n)
+ *buf=0;
return len;
}
len += sizeof(wxUint32);
psz++;
}
- if (buf && len<=n-sizeof(wxUint32)) *(wxUint32*)buf=0;
+
+ if (buf && len<=n-sizeof(wxUint32))
+ *(wxUint32*)buf=0;
return len;
}
buf ? n : 0 // size of output buffer
);
- // note that it returns # of written chars for buf != NULL and *size*
- // of the needed buffer for buf == NULL
- return len ? (buf ? len : len - 1) : (size_t)-1;
+ // note that it returns count of written chars for buf != NULL and size
+ // of the needed buffer for buf == NULL so in either case the length of
+ // the string (which never includes the terminating NUL) is one less
+ return len ? len - 1 : (size_t)-1;
}
size_t WC2MB(char *buf, const wchar_t *psz, size_t n) const
NULL // [out] was it used?
);
- // see the comment above!
- return len ? (buf ? len : len - 1) : (size_t)-1;
+ // see the comment above for the reason of "len - 1"
+ return len ? len - 1 : (size_t)-1;
}
bool IsOk() const
m_deferred = true;
}
-// find a valid value for the encoding
-void wxCSConv::SetEncoding()
-{
-#if wxUSE_INTL
- m_encoding = wxLocale::GetSystemEncoding();
-#else
- m_encoding = wxFONTENCODING_SYSTEM;
-#endif
-}
-
wxCSConv::wxCSConv(const wxChar *charset)
{
Init();
if ( charset )
{
- // not used
- m_encoding = wxFONTENCODING_SYSTEM;
-
SetName(charset);
}
- else // no charset specified
- {
- SetEncoding();
- }
+
+ m_encoding = wxFONTENCODING_SYSTEM;
}
wxCSConv::wxCSConv(wxFontEncoding encoding)
{
- if ( encoding == wxFONTENCODING_MAX ||
- encoding == wxFONTENCODING_DEFAULT )
+ if ( encoding == wxFONTENCODING_MAX || encoding == wxFONTENCODING_DEFAULT )
{
wxFAIL_MSG( _T("invalid encoding value in wxCSConv ctor") );
Init();
- if ( encoding == wxFONTENCODING_SYSTEM )
- {
- SetEncoding();
- }
- else // have valid encoding, use it
- {
- m_encoding = encoding;
- }
+ m_encoding = encoding;
}
wxCSConv::~wxCSConv()
case wxFONTENCODING_UTF8:
return new wxMBConvUTF8;
- case wxFONTENCODING_UTF16:
- return new wxMBConvUTF16;
-
case wxFONTENCODING_UTF16BE:
return new wxMBConvUTF16BE;
case wxFONTENCODING_UTF16LE:
return new wxMBConvUTF16LE;
- case wxFONTENCODING_UTF32:
- return new wxMBConvUTF32;
-
case wxFONTENCODING_UTF32BE:
return new wxMBConvUTF32BE;
if ( m_deferred )
{
wxCSConv *self = (wxCSConv *)this; // const_cast
+
+#if wxUSE_INTL
+ // if we don't have neither the name nor the encoding, use the default
+ // encoding for this system
+ if ( !m_name && m_encoding == wxFONTENCODING_SYSTEM )
+ {
+ self->m_encoding = wxLocale::GetSystemEncoding();
+ }
+#endif // wxUSE_INTL
+
self->m_convReal = DoCreate();
self->m_deferred = false;
}
#ifdef __WINDOWS__
static wxMBConv_win32 wxConvLibcObj;
#else
- static wxMBConvSystem wxConvLibcObj;
+ static wxMBConvLibc wxConvLibcObj;
#endif
static wxCSConv wxConvLocalObj(wxFONTENCODING_SYSTEM);