// converts Expat-produced string in UTF-8 into wxString using the specified
// conv or keep in UTF-8 if conv is NULL
static wxString CharToString(wxMBConv *conv,
- const char *s, size_t len = wxString::npos)
+ const char *s, size_t len = wxString::npos)
{
-#if wxUSE_UNICODE
- wxUnusedVar(conv);
-
- return wxString(s, wxConvUTF8, len);
-#else // !wxUSE_UNICODE
+#if !wxUSE_UNICODE
if ( conv )
{
// there can be no embedded NULs in this string so we don't need the
return wxString(wbuf, *conv);
}
- else // already in UTF-8, no conversion needed
- {
- return wxString(s, len != wxString::npos ? len : strlen(s));
- }
-#endif // wxUSE_UNICODE/!wxUSE_UNICODE
+ // else: the string is wanted in UTF-8
+#endif // !wxUSE_UNICODE
+
+ wxUnusedVar(conv);
+ return wxString::FromUTF8(s, len);
}
// returns true if the given string contains only whitespaces
ctx.encoding = wxT("UTF-8"); // default in absence of encoding=""
ctx.conv = NULL;
#if !wxUSE_UNICODE
- if ( encoding != wxT("UTF-8") && encoding != wxT("utf-8") )
+ if ( encoding.CmpNoCase(wxT("UTF-8")) != 0 )
ctx.conv = new wxCSConv(encoding);
#endif
ctx.removeWhiteOnlyNodes = (flags & wxXMLDOC_KEEP_WHITESPACE_NODES) == 0;
wxString s;
- wxMBConv *convMem = NULL;
+ wxMBConv *convMem = NULL,
+ *convFile;
#if wxUSE_UNICODE
- wxMBConv *convFile = new wxCSConv(GetFileEncoding());
+ convFile = new wxCSConv(GetFileEncoding());
+ convMem = NULL;
#else
- wxMBConv *convFile = NULL;
- if ( GetFileEncoding() != GetEncoding() )
+ if ( GetFileEncoding().CmpNoCase(GetEncoding()) != 0 )
{
convFile = new wxCSConv(GetFileEncoding());
convMem = new wxCSConv(GetEncoding());
}
+ else // file and in-memory encodings are the same, no conversion needed
+ {
+ convFile =
+ convMem = NULL;
+ }
#endif
s.Printf(wxT("<?xml version=\"%s\" encoding=\"%s\"?>\n"),
OutputNode(stream, GetRoot(), 0, convMem, convFile, indentstep);
OutputString(stream, wxT("\n"));
- if ( convFile )
- delete convFile;
- if ( convMem )
- delete convMem;
+ delete convFile;
+ delete convMem;
return true;
}