don't use implicit wxString->char*/wchar_t* conversion, it will not be available in wxUSE_STL build in the future

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46391 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2007-06-10 17:42:41 +00:00
parent 52de37c78f
commit 8650108199
51 changed files with 330 additions and 304 deletions

View File

@@ -55,7 +55,7 @@ enum wxStreamProtocolType
\membersection{wxFilterClassFactory::CanHandle}\label{wxfilterclassfactorycanhandle}
\constfunc{bool}{CanHandle}{\param{const wxChar* }{protocol}, \param{wxStreamProtocolType }{type = wxSTREAM\_PROTOCOL}}
\constfunc{bool}{CanHandle}{\param{const wxString\& }{protocol}, \param{wxStreamProtocolType }{type = wxSTREAM\_PROTOCOL}}
Returns true if this factory can handle the given protocol, MIME type, HTTP
encoding or file extension.
@@ -66,7 +66,7 @@ can be a complete filename rather than just an extension.
\membersection{wxFilterClassFactory::Find}\label{wxfilterclassfactoryfind}
\func{static const wxFilterClassFactory*}{Find}{\param{const wxChar* }{protocol}, \param{wxStreamProtocolType }{type = wxSTREAM\_PROTOCOL}}
\func{static const wxFilterClassFactory*}{Find}{\param{const wxString\& }{protocol}, \param{wxStreamProtocolType }{type = wxSTREAM\_PROTOCOL}}
A static member that finds a factory that can handle a given protocol, MIME
type, HTTP encoding or file extension. Returns a pointer to the class

View File

@@ -1044,7 +1044,7 @@ temporary storage that should not be deallocated.
\membersection{::wxFindFirstFile}\label{wxfindfirstfile}
\func{wxString}{wxFindFirstFile}{\param{const char *}{spec}, \param{int}{ flags = 0}}
\func{wxString}{wxFindFirstFile}{\param{const wxString\& }{spec}, \param{int}{ flags = 0}}
This function does directory searching; returns the first file
that matches the path {\it spec}, or the empty string. Use \helpref{wxFindNextFile}{wxfindnextfile} to
@@ -1342,7 +1342,7 @@ Note that empty tokens will be generated if there are two or more adjacent separ
\membersection{::wxSplitPath}\label{wxsplitfunction}
\func{void}{wxSplitPath}{\param{const char *}{ fullname}, \param{wxString *}{ path}, \param{wxString *}{ name}, \param{wxString *}{ ext}}
\func{void}{wxSplitPath}{\param{const wxString\&}{ fullname}, \param{wxString *}{ path}, \param{wxString *}{ name}, \param{wxString *}{ ext}}
{\bf NB:} This function is obsolete, please use
\helpref{wxFileName::SplitPath}{wxfilenamesplitpath} instead.

View File

@@ -347,7 +347,7 @@ public:
wxMBConv& GetConv() const
{ if (m_pConv) return *m_pConv; else return wxConvLocal; }
static const wxArchiveClassFactory *Find(const wxChar *protocol,
static const wxArchiveClassFactory *Find(const wxString& protocol,
wxStreamProtocolType type
= wxSTREAM_PROTOCOL);

View File

@@ -45,7 +45,7 @@ public:
wxArrayString(size_t sz, const wxChar** a);
wxArrayString(size_t sz, const wxString* a);
int Index(const wxChar* sz, bool bCase = true, bool bFromEnd = false) const;
int Index(const wxString& str, bool bCase = true, bool bFromEnd = false) const;
void Sort(bool reverseOrder = false);
void Sort(CompareFunction function);
@@ -75,7 +75,7 @@ public:
Add(src[n]);
}
int Index(const wxChar* sz, bool bCase = true, bool bFromEnd = false) const;
int Index(const wxString& str, bool bCase = true, bool bFromEnd = false) const;
};
#else // if !wxUSE_STL
@@ -158,7 +158,7 @@ public:
// bFromEnd is false or from end otherwise. If bCase, comparison is case
// sensitive (default). Returns index of the first item matched or
// wxNOT_FOUND
int Index (const wxChar *sz, bool bCase = true, bool bFromEnd = false) const;
int Index (const wxString& str, bool bCase = true, bool bFromEnd = false) const;
// add new element at the end (if the array is not sorted), return its
// index
size_t Add(const wxString& str, size_t nInsert = 1);

View File

@@ -209,7 +209,7 @@ public:
void Reset();
// break down the command line in arguments
static wxArrayString ConvertStringToArgs(const wxChar *cmdline);
static wxArrayString ConvertStringToArgs(const wxString& cmdline);
private:
// get usage string
@@ -230,7 +230,7 @@ private:
class WXDLLIMPEXP_BASE wxCmdLineParser
{
public:
static wxArrayString ConvertStringToArgs(const wxChar *cmdline);
static wxArrayString ConvertStringToArgs(const wxString& cmdline);
};
#endif // wxUSE_CMDLINE_PARSER/!wxUSE_CMDLINE_PARSER

View File

@@ -358,7 +358,7 @@ WXDLLIMPEXP_BASE wxString wxExpandEnvVars(const wxString &sz);
/*
Split path into parts removing '..' in progress
*/
WXDLLIMPEXP_BASE void wxSplitPath(wxArrayString& aParts, const wxChar *sz);
WXDLLIMPEXP_BASE void wxSplitPath(wxArrayString& aParts, const wxString& path);
#endif // _WX_CONFBASE_H_

View File

@@ -56,7 +56,10 @@ public:
// Calls that CLIENT can make
virtual bool Execute(const wxChar *data, int size = -1, wxIPCFormat format = wxIPC_TEXT ) = 0;
virtual bool Execute(const wxString& str) { return Execute(str, -1, wxIPC_TEXT); }
// FIXME-UTF8: review this code for compatibility implications, update
// accordingly, don' use c_str() below
virtual bool Execute(const wxString& str)
{ return Execute(str.c_str(), -1, wxIPC_TEXT); }
virtual wxChar *Request(const wxString& item, int *size = (int *) NULL, wxIPCFormat format = wxIPC_TEXT) = 0;
virtual bool Poke(const wxString& item, wxChar *data, int size = -1, wxIPCFormat format = wxIPC_TEXT) = 0;
virtual bool StartAdvise(const wxString& item) = 0;

View File

@@ -82,8 +82,10 @@ public:
void Compress(bool on);
// unhide the Execute overload from wxConnectionBase
// FIXME-UTF8: change Execute() to DoExecute() to avoid having to do this;
// don't use c_str() below after removing ANSI build
virtual bool Execute(const wxString& str)
{ return Execute(str, -1, wxIPC_TEXT); }
{ return Execute(str.c_str(), -1, wxIPC_TEXT); }
protected:
wxSocketBase *m_sock;

View File

@@ -26,7 +26,6 @@ public:
// ctor associates the stream with the given string which makes a copy of
// it
wxStringInputStream(const wxString& s);
virtual ~wxStringInputStream();
virtual wxFileOffset GetLength() const;
@@ -40,7 +39,7 @@ private:
wxString m_str;
// the buffer we're reading from
char* m_buf;
wxCharBuffer m_buf;
// length of the buffer we're reading from
size_t m_len;

View File

@@ -29,6 +29,8 @@
#if wxUSE_WCHAR_T
class WXDLLIMPEXP_BASE wxString;
// the error value returned by wxMBConv methods
#define wxCONV_FAILED ((size_t)-1)
@@ -199,7 +201,7 @@ public:
class WXDLLIMPEXP_BASE wxConvBrokenFileNames : public wxMBConv
{
public:
wxConvBrokenFileNames(const wxChar *charset);
wxConvBrokenFileNames(const wxString& charset);
wxConvBrokenFileNames(const wxConvBrokenFileNames& conv)
: wxMBConv(),
m_conv(conv.m_conv ? conv.m_conv->Clone() : NULL)
@@ -387,7 +389,7 @@ class WXDLLIMPEXP_BASE wxCSConv : public wxMBConv
public:
// we can be created either from charset name or from an encoding constant
// but we can't have both at once
wxCSConv(const wxChar *charset);
wxCSConv(const wxString& charset);
wxCSConv(wxFontEncoding encoding);
wxCSConv(const wxCSConv& conv);
@@ -426,12 +428,12 @@ private:
// set the name (may be only called when m_name == NULL), makes copy of
// charset string
void SetName(const wxChar *charset);
void SetName(const char *charset);
// note that we can't use wxString here because of compilation
// dependencies: we're included from wx/string.h
wxChar *m_name;
char *m_name;
wxFontEncoding m_encoding;
// use CreateConvIfNeeded() before accessing m_convReal!

View File

@@ -354,12 +354,12 @@ public:
virtual const wxChar * const *GetProtocols(wxStreamProtocolType type
= wxSTREAM_PROTOCOL) const = 0;
bool CanHandle(const wxChar *protocol,
bool CanHandle(const wxString& protocol,
wxStreamProtocolType type
= wxSTREAM_PROTOCOL) const;
protected:
wxString::size_type FindExtension(const wxChar *location) const;
wxString::size_type FindExtension(const wxString& location) const;
DECLARE_ABSTRACT_CLASS(wxFilterClassFactoryBase)
};
@@ -374,7 +374,7 @@ public:
virtual wxFilterInputStream *NewStream(wxInputStream *stream) const = 0;
virtual wxFilterOutputStream *NewStream(wxOutputStream *stream) const = 0;
static const wxFilterClassFactory *Find(const wxChar *protocol,
static const wxFilterClassFactory *Find(const wxString& protocol,
wxStreamProtocolType type
= wxSTREAM_PROTOCOL);

View File

@@ -23,7 +23,7 @@
// the archive classes they use.
const wxArchiveClassFactory *
wxArchiveClassFactory::Find(const wxChar *protocol, wxStreamProtocolType type)
wxArchiveClassFactory::Find(const wxString& protocol, wxStreamProtocolType type)
{
for (const wxArchiveClassFactory *f = GetFirst(); f; f = f->GetNext())
if (f->CanHandle(protocol, type))

View File

@@ -197,7 +197,7 @@ void wxArrayString::Shrink()
}
// searches the array for an item (forward or backwards)
int wxArrayString::Index(const wxChar *sz, bool bCase, bool bFromEnd) const
int wxArrayString::Index(const wxString& str, bool bCase, bool bFromEnd) const
{
if ( m_autoSort ) {
// use binary search in the sorted array
@@ -211,7 +211,7 @@ int wxArrayString::Index(const wxChar *sz, bool bCase, bool bFromEnd) const
while ( lo < hi ) {
i = (lo + hi)/2;
res = wxStrcmp(sz, m_pItems[i]);
res = str.compare(m_pItems[i]);
if ( res < 0 )
hi = i;
else if ( res > 0 )
@@ -228,7 +228,7 @@ int wxArrayString::Index(const wxChar *sz, bool bCase, bool bFromEnd) const
if ( m_nCount > 0 ) {
size_t ui = m_nCount;
do {
if ( m_pItems[--ui].IsSameAs(sz, bCase) )
if ( m_pItems[--ui].IsSameAs(str, bCase) )
return ui;
}
while ( ui != 0 );
@@ -236,7 +236,7 @@ int wxArrayString::Index(const wxChar *sz, bool bCase, bool bFromEnd) const
}
else {
for( size_t ui = 0; ui < m_nCount; ui++ ) {
if( m_pItems[ui].IsSameAs(sz, bCase) )
if( m_pItems[ui].IsSameAs(str, bCase) )
return ui;
}
}

View File

@@ -49,11 +49,15 @@
static wxString GetTypeName(wxCmdLineParamType type);
static wxString GetOptionName(const wxChar *p, const wxChar *allowedChars);
static wxString GetOptionName(wxString::const_iterator p,
wxString::const_iterator end,
const wxChar *allowedChars);
static wxString GetShortOptionName(const wxChar *p);
static wxString GetShortOptionName(wxString::const_iterator p,
wxString::const_iterator end);
static wxString GetLongOptionName(const wxChar *p);
static wxString GetLongOptionName(wxString::const_iterator p,
wxString::const_iterator end);
// ----------------------------------------------------------------------------
// private structs
@@ -74,13 +78,13 @@ struct wxCmdLineOption
wxASSERT_MSG
(
GetShortOptionName(shrt).Len() == shrt.Len(),
GetShortOptionName(shrt.begin(), shrt.end()).Len() == shrt.Len(),
wxT("Short option contains invalid characters")
);
wxASSERT_MSG
(
GetLongOptionName(lng).Len() == lng.Len(),
GetLongOptionName(lng.begin(), lng.end()).Len() == lng.Len(),
wxT("Long option contains invalid characters")
);
@@ -572,24 +576,25 @@ int wxCmdLineParser::Parse(bool showUsage)
// empty argument or just '-' is not an option but a parameter
if ( maybeOption && arg.length() > 1 &&
wxStrchr(m_data->m_switchChars, arg[0u]) )
// FIXME-UTF8: use wc_str() after removing ANSI build
wxStrchr(m_data->m_switchChars.c_str(), arg[0u]) )
{
bool isLong;
wxString name;
int optInd = wxNOT_FOUND; // init to suppress warnings
// an option or a switch: find whether it's a long or a short one
if ( arg[0u] == _T('-') && arg[1u] == _T('-') )
if ( arg.length() >= 3 && arg[0u] == _T('-') && arg[1u] == _T('-') )
{
// a long one
isLong = true;
// Skip leading "--"
const wxChar *p = arg.c_str() + 2;
wxString::const_iterator p = arg.begin() + 2;
bool longOptionsEnabled = AreLongOptionsEnabled();
name = GetLongOptionName(p);
name = GetLongOptionName(p, arg.end());
if (longOptionsEnabled)
{
@@ -617,9 +622,9 @@ int wxCmdLineParser::Parse(bool showUsage)
// a short one: as they can be cumulated, we try to find the
// longest substring which is a valid option
const wxChar *p = arg.c_str() + 1;
wxString::const_iterator p = arg.begin() + 1;
name = GetShortOptionName(p);
name = GetShortOptionName(p, arg.end());
size_t len = name.length();
do
@@ -679,15 +684,17 @@ int wxCmdLineParser::Parse(bool showUsage)
// look at what follows:
// +1 for leading '-'
const wxChar *p = arg.c_str() + 1 + name.length();
wxString::const_iterator p = arg.begin() + 1 + name.length();
wxString::const_iterator end = arg.end();
if ( isLong )
p++; // for another leading '-'
++p; // for another leading '-'
wxCmdLineOption& opt = m_data->m_options[(size_t)optInd];
if ( opt.kind == wxCMD_LINE_SWITCH )
{
// we must check that there is no value following the switch
if ( *p != _T('\0') )
if ( p != arg.end() )
{
errorMsg << wxString::Format(_("Unexpected characters following option '%s'."), name.c_str())
<< _T('\n');
@@ -722,12 +729,12 @@ int wxCmdLineParser::Parse(bool showUsage)
}
else // short option
{
switch ( *p )
switch ( (*p).GetValue() )
{
case _T('='):
case _T(':'):
// the value follows
p++;
++p;
break;
case 0:
@@ -744,7 +751,8 @@ int wxCmdLineParser::Parse(bool showUsage)
else
{
// ... take it from there
p = m_data->m_arguments[n].c_str();
p = m_data->m_arguments[n].begin();
end = m_data->m_arguments[n].end();
}
break;
@@ -764,7 +772,7 @@ int wxCmdLineParser::Parse(bool showUsage)
if ( ok )
{
wxString value = p;
wxString value(p, end);
switch ( opt.type )
{
default:
@@ -797,7 +805,8 @@ int wxCmdLineParser::Parse(bool showUsage)
case wxCMD_LINE_VAL_DATE:
{
wxDateTime dt;
const wxChar *res = dt.ParseDate(value);
// FIXME-UTF8: ParseDate API will need changes
const wxChar *res = dt.ParseDate(value.c_str());
if ( !res || *res )
{
errorMsg << wxString::Format(_("Option '%s': '%s' cannot be converted to a date."),
@@ -1140,12 +1149,13 @@ the parameter allowedChars.
For example, if p points to "abcde-@-_", and allowedChars is "-_",
this function returns "abcde-".
*/
static wxString GetOptionName(const wxChar *p,
static wxString GetOptionName(wxString::const_iterator p,
wxString::const_iterator end,
const wxChar *allowedChars)
{
wxString argName;
while ( *p && (wxIsalnum(*p) || wxStrchr(allowedChars, *p)) )
while ( p != end && (wxIsalnum(*p) || wxStrchr(allowedChars, *p)) )
{
argName += *p++;
}
@@ -1163,14 +1173,16 @@ static wxString GetOptionName(const wxChar *p,
#define wxCMD_LINE_CHARS_ALLOWED_BY_LONG_OPTION \
wxCMD_LINE_CHARS_ALLOWED_BY_SHORT_OPTION wxT("-")
static wxString GetShortOptionName(const wxChar *p)
static wxString GetShortOptionName(wxString::const_iterator p,
wxString::const_iterator end)
{
return GetOptionName(p, wxCMD_LINE_CHARS_ALLOWED_BY_SHORT_OPTION);
return GetOptionName(p, end, wxCMD_LINE_CHARS_ALLOWED_BY_SHORT_OPTION);
}
static wxString GetLongOptionName(const wxChar *p)
static wxString GetLongOptionName(wxString::const_iterator p,
wxString::const_iterator end)
{
return GetOptionName(p, wxCMD_LINE_CHARS_ALLOWED_BY_LONG_OPTION);
return GetOptionName(p, end, wxCMD_LINE_CHARS_ALLOWED_BY_LONG_OPTION);
}
#endif // wxUSE_CMDLINE_PARSER
@@ -1188,7 +1200,7 @@ static wxString GetLongOptionName(const wxChar *p)
*/
/* static */
wxArrayString wxCmdLineParser::ConvertStringToArgs(const wxChar *p)
wxArrayString wxCmdLineParser::ConvertStringToArgs(const wxString& cmdline)
{
wxArrayString args;
@@ -1196,14 +1208,17 @@ wxArrayString wxCmdLineParser::ConvertStringToArgs(const wxChar *p)
arg.reserve(1024);
bool isInsideQuotes = false;
wxString::const_iterator p = cmdline.begin();
for ( ;; )
{
// skip white space
while ( *p == _T(' ') || *p == _T('\t') )
p++;
while ( p != cmdline.end() && (*p == _T(' ') || *p == _T('\t')) )
++p;
// anything left?
if ( *p == _T('\0') )
if ( p == cmdline.end() )
break;
// parse this parameter
@@ -1211,7 +1226,7 @@ wxArrayString wxCmdLineParser::ConvertStringToArgs(const wxChar *p)
bool lastBS = false;
for ( arg.clear(); !endParam; p++ )
{
switch ( *p )
switch ( (*p).GetValue() )
{
case _T('"'):
if ( !lastBS )

View File

@@ -264,7 +264,7 @@ wxConfigPathChanger::wxConfigPathChanger(const wxConfigBase *pContainer,
/* JACS: work around a memory bug that causes an assert
when using wxRegConfig, related to reference-counting.
Can be reproduced by removing (const wxChar*) below and
Can be reproduced by removing .wc_str() below and
adding the following code to the config sample OnInit under
Windows:
@@ -273,7 +273,7 @@ wxConfigPathChanger::wxConfigPathChanger(const wxConfigBase *pContainer,
int value;
pConfig->Read(_T("MainWindowX"), & value);
*/
m_strOldPath = (const wxChar*) m_pContainer->GetPath();
m_strOldPath = m_pContainer->GetPath().wc_str();
if ( *m_strOldPath.c_str() != wxCONFIG_PATH_SEPARATOR )
m_strOldPath += wxCONFIG_PATH_SEPARATOR;
m_pContainer->SetPath(strPath);
@@ -399,19 +399,20 @@ wxString wxExpandEnvVars(const wxString& str)
wxString strVarName(str.c_str() + n + 1, m - n - 1);
#ifdef __WXWINCE__
const wxChar *pszValue = NULL;
const bool expanded = false;
#else
// NB: use wxGetEnv instead of wxGetenv as otherwise variables
// set through wxSetEnv may not be read correctly!
const wxChar *pszValue = NULL;
bool expanded = false;
wxString tmp;
if (wxGetEnv(strVarName, &tmp))
pszValue = tmp;
#endif
if ( pszValue != NULL ) {
strResult += pszValue;
{
strResult += tmp;
expanded = true;
}
else {
else
#endif
{
// variable doesn't exist => don't change anything
#ifdef __WXMSW__
if ( bracket != Bracket_Windows )
@@ -437,7 +438,7 @@ wxString wxExpandEnvVars(const wxString& str)
}
else {
// skip closing bracket unless the variables wasn't expanded
if ( pszValue == NULL )
if ( !expanded )
strResult << (wxChar)bracket;
m++;
}
@@ -466,21 +467,21 @@ wxString wxExpandEnvVars(const wxString& str)
}
// this function is used to properly interpret '..' in path
void wxSplitPath(wxArrayString& aParts, const wxChar *sz)
void wxSplitPath(wxArrayString& aParts, const wxString& path)
{
aParts.clear();
wxString strCurrent;
const wxChar *pc = sz;
wxString::const_iterator pc = path.begin();
for ( ;; ) {
if ( *pc == wxT('\0') || *pc == wxCONFIG_PATH_SEPARATOR ) {
if ( pc == path.end() || *pc == wxCONFIG_PATH_SEPARATOR ) {
if ( strCurrent == wxT(".") ) {
// ignore
}
else if ( strCurrent == wxT("..") ) {
// go up one level
if ( aParts.size() == 0 )
wxLogWarning(_("'%s' has extra '..', ignored."), sz);
wxLogWarning(_("'%s' has extra '..', ignored."), path);
else
aParts.erase(aParts.end() - 1);
@@ -493,12 +494,12 @@ void wxSplitPath(wxArrayString& aParts, const wxChar *sz)
//else:
// could log an error here, but we prefer to ignore extra '/'
if ( *pc == wxT('\0') )
if ( pc == path.end() )
break;
}
else
strCurrent += *pc;
pc++;
++pc;
}
}

View File

@@ -2172,9 +2172,9 @@ void wxDCBase::GetMultiLineTextExtent(const wxString& text,
heightTextTotal = 0, heightLineDefault = 0, heightLine = 0;
wxString curLine;
for ( const wxChar *pc = text; ; pc++ )
for ( wxString::const_iterator pc = text.begin(); ; ++pc )
{
if ( *pc == _T('\n') || *pc == _T('\0') )
if ( pc == text.end() || *pc == _T('\n') )
{
if ( curLine.empty() )
{
@@ -2205,15 +2205,14 @@ void wxDCBase::GetMultiLineTextExtent(const wxString& text,
heightTextTotal += heightLine;
}
if ( *pc == _T('\n') )
if ( pc == text.end() )
{
break;
}
else // '\n'
{
curLine.clear();
}
else
{
// the end of string
break;
}
}
else
{

View File

@@ -112,7 +112,7 @@ static const wxChar *s_MRUEntryFormat = wxT("&%d %s");
// local functions
// ----------------------------------------------------------------------------
static wxString FindExtension(const wxChar *path)
static wxString FindExtension(const wxString& path)
{
wxString ext;
wxSplitPath(path, NULL, NULL, &ext);
@@ -456,8 +456,7 @@ bool wxDocument::OnSaveModified()
msgTitle = wxString(_("Warning"));
wxString prompt;
prompt.Printf(_("Do you want to save changes to document %s?"),
(const wxChar *)title);
prompt.Printf(_("Do you want to save changes to document %s?"), title);
int res = wxMessageBox(prompt, msgTitle,
wxYES_NO|wxCANCEL|wxICON_QUESTION,
GetDocumentWindow());

View File

@@ -427,17 +427,31 @@ _WX_DEFINE_BASEARRAY(wxString, wxBaseArrayStringBase)
// extern "C" functions and the functions with C++ linkage and ptr_fun and
// wxStringCompareLess can't take wxStrcmp/wxStricmp directly as arguments in
// this case, we need the wrappers below to make this work
inline int wxStrcmpCppWrapper(const wxChar *p, const wxChar *q)
struct wxStringCmp
{
return wxStrcmp(p, q);
}
typedef wxString first_argument_type;
typedef wxString second_argument_type;
typedef int result_type;
inline int wxStricmpCppWrapper(const wxChar *p, const wxChar *q)
int operator()(const wxString& s1, const wxString& s2) const
{
return wxStricmp(p, q);
return s1.compare(s2);
}
};
int wxArrayString::Index(const wxChar* sz, bool bCase, bool WXUNUSED(bFromEnd)) const
struct wxStringCmpNoCase
{
typedef wxString first_argument_type;
typedef wxString second_argument_type;
typedef int result_type;
int operator()(const wxString& s1, const wxString& s2) const
{
return s1.CmpNoCase(s2);
}
};
int wxArrayString::Index(const wxString& str, bool bCase, bool WXUNUSED(bFromEnd)) const
{
wxArrayString::const_iterator it;
@@ -446,14 +460,14 @@ int wxArrayString::Index(const wxChar* sz, bool bCase, bool WXUNUSED(bFromEnd))
it = std::find_if(begin(), end(),
std::not1(
std::bind2nd(
std::ptr_fun(wxStrcmpCppWrapper), sz)));
wxStringCmp(), str)));
}
else // !bCase
{
it = std::find_if(begin(), end(),
std::not1(
std::bind2nd(
std::ptr_fun(wxStricmpCppWrapper), sz)));
wxStringCmpNoCase(), str)));
}
return it == end() ? wxNOT_FOUND : it - begin();
@@ -464,8 +478,6 @@ class wxStringCompareLess
{
public:
wxStringCompareLess(F f) : m_f(f) { }
bool operator()(const wxChar* s1, const wxChar* s2)
{ return m_f(s1, s2) < 0; }
bool operator()(const wxString& s1, const wxString& s2)
{ return m_f(s1, s2) < 0; }
private:
@@ -495,33 +507,32 @@ void wxArrayString::Sort(bool reverseOrder)
}
}
int wxSortedArrayString::Index(const wxChar* sz, bool bCase, bool WXUNUSED(bFromEnd)) const
int wxSortedArrayString::Index(const wxString& str, bool bCase, bool WXUNUSED(bFromEnd)) const
{
wxSortedArrayString::const_iterator it;
wxString s(sz);
if (bCase)
it = std::lower_bound(begin(), end(), s,
wxStringCompare(wxStrcmpCppWrapper));
it = std::lower_bound(begin(), end(), str,
wxStringCompare(wxStringCmp()));
else
it = std::lower_bound(begin(), end(), s,
wxStringCompare(wxStricmpCppWrapper));
it = std::lower_bound(begin(), end(), str,
wxStringCompare(wxStringCmpNoCase()));
if (it == end())
return wxNOT_FOUND;
if (bCase)
{
if (wxStrcmp(it->c_str(), sz) != 0)
if (str.Cmp(*it) != 0)
return wxNOT_FOUND;
}
else
{
if (wxStricmp(it->c_str(), sz) != 0)
if (str.CmpNoCase(*it) != 0)
return wxNOT_FOUND;
}
return it - begin();
}
#endif
#endif // wxUSE_STL

View File

@@ -222,12 +222,12 @@ public:
bool IsEmpty() const { return Entries().IsEmpty() && Groups().IsEmpty(); }
// find entry/subgroup (NULL if not found)
wxFileConfigGroup *FindSubgroup(const wxChar *szName) const;
wxFileConfigEntry *FindEntry (const wxChar *szName) const;
wxFileConfigGroup *FindSubgroup(const wxString& name) const;
wxFileConfigEntry *FindEntry (const wxString& name) const;
// delete entry/subgroup, return false if doesn't exist
bool DeleteSubgroupByName(const wxChar *szName);
bool DeleteEntry(const wxChar *szName);
bool DeleteSubgroupByName(const wxString& name);
bool DeleteEntry(const wxString& name);
// create new entry/subgroup returning pointer to newly created element
wxFileConfigGroup *AddSubgroup(const wxString& strName);
@@ -536,15 +536,16 @@ wxFileConfig::~wxFileConfig()
void wxFileConfig::Parse(const wxTextBuffer& buffer, bool bLocal)
{
const wxChar *pStart;
const wxChar *pEnd;
wxString strLine;
size_t nLineCount = buffer.GetLineCount();
for ( size_t n = 0; n < nLineCount; n++ )
{
strLine = buffer[n];
wxString strLine = buffer[n];
// FIXME-UTF8: rewrite using iterators, without this buffer
wxWxCharBuffer buf(strLine.c_str());
const wxChar *pStart;
const wxChar *pEnd;
// add the line to linked list
if ( bLocal )
@@ -560,7 +561,7 @@ void wxFileConfig::Parse(const wxTextBuffer& buffer, bool bLocal)
// skip leading spaces
for ( pStart = strLine; wxIsspace(*pStart); pStart++ )
for ( pStart = buf; wxIsspace(*pStart); pStart++ )
;
// skip blank/comment lines
@@ -1059,7 +1060,7 @@ bool wxFileConfig::Save(wxOutputStream& os, const wxMBConv& conv)
bool wxFileConfig::RenameEntry(const wxString& oldName,
const wxString& newName)
{
wxASSERT_MSG( !wxStrchr(oldName, wxCONFIG_PATH_SEPARATOR),
wxASSERT_MSG( oldName.find(wxCONFIG_PATH_SEPARATOR) == wxString::npos,
_T("RenameEntry(): paths are not supported") );
// check that the entry exists
@@ -1148,7 +1149,8 @@ bool wxFileConfig::DeleteAll()
if ( m_fnLocalFile.IsOk() )
{
if ( m_fnLocalFile.FileExists() && wxRemove(m_fnLocalFile.GetFullPath()) == -1 )
if ( m_fnLocalFile.FileExists() &&
!wxRemoveFile(m_fnLocalFile.GetFullPath()) )
{
wxLogSysError(_("can't delete user configuration file '%s'"),
m_fnLocalFile.GetFullPath().c_str());
@@ -1548,7 +1550,7 @@ wxString wxFileConfigGroup::GetFullName() const
// use binary search because the array is sorted
wxFileConfigEntry *
wxFileConfigGroup::FindEntry(const wxChar *szName) const
wxFileConfigGroup::FindEntry(const wxString& name) const
{
size_t i,
lo = 0,
@@ -1561,9 +1563,9 @@ wxFileConfigGroup::FindEntry(const wxChar *szName) const
pEntry = m_aEntries[i];
#if wxCONFIG_CASE_SENSITIVE
res = wxStrcmp(pEntry->Name(), szName);
res = pEntry->Name().compare(name);
#else
res = wxStricmp(pEntry->Name(), szName);
res = pEntry->Name().CmpNoCase(name);
#endif
if ( res > 0 )
@@ -1578,7 +1580,7 @@ wxFileConfigGroup::FindEntry(const wxChar *szName) const
}
wxFileConfigGroup *
wxFileConfigGroup::FindSubgroup(const wxChar *szName) const
wxFileConfigGroup::FindSubgroup(const wxString& name) const
{
size_t i,
lo = 0,
@@ -1591,9 +1593,9 @@ wxFileConfigGroup::FindSubgroup(const wxChar *szName) const
pGroup = m_aSubgroups[i];
#if wxCONFIG_CASE_SENSITIVE
res = wxStrcmp(pGroup->Name(), szName);
res = pGroup->Name().compare(name);
#else
res = wxStricmp(pGroup->Name(), szName);
res = pGroup->Name().CmpNoCase(name);
#endif
if ( res > 0 )
@@ -1644,9 +1646,9 @@ wxFileConfigGroup *wxFileConfigGroup::AddSubgroup(const wxString& strName)
delete several of them.
*/
bool wxFileConfigGroup::DeleteSubgroupByName(const wxChar *szName)
bool wxFileConfigGroup::DeleteSubgroupByName(const wxString& name)
{
wxFileConfigGroup * const pGroup = FindSubgroup(szName);
wxFileConfigGroup * const pGroup = FindSubgroup(name);
return pGroup ? DeleteSubgroup(pGroup) : false;
}
@@ -1765,9 +1767,9 @@ bool wxFileConfigGroup::DeleteSubgroup(wxFileConfigGroup *pGroup)
return true;
}
bool wxFileConfigGroup::DeleteEntry(const wxChar *szName)
bool wxFileConfigGroup::DeleteEntry(const wxString& name)
{
wxFileConfigEntry *pEntry = FindEntry(szName);
wxFileConfigEntry *pEntry = FindEntry(name);
if ( !pEntry )
{
// entry doesn't exist, nothing to do
@@ -1920,18 +1922,18 @@ void wxFileConfigEntry::SetValue(const wxString& strValue, bool bUser)
int CompareEntries(wxFileConfigEntry *p1, wxFileConfigEntry *p2)
{
#if wxCONFIG_CASE_SENSITIVE
return wxStrcmp(p1->Name(), p2->Name());
return p1->Name().compare(p2->Name());
#else
return wxStricmp(p1->Name(), p2->Name());
return p1->Name().CmpNoCase(p2->Name());
#endif
}
int CompareGroups(wxFileConfigGroup *p1, wxFileConfigGroup *p2)
{
#if wxCONFIG_CASE_SENSITIVE
return wxStrcmp(p1->Name(), p2->Name());
return p1->Name().compare(p2->Name());
#else
return wxStricmp(p1->Name(), p2->Name());
return p1->Name().CmpNoCase(p2->Name());
#endif
}

View File

@@ -767,7 +767,7 @@ static wxString wxCreateTempImpl(
path += _T("XXXXXX");
// we need to copy the path to the buffer in which mkstemp() can modify it
wxCharBuffer buf( wxConvFile.cWX2MB( path ) );
wxCharBuffer buf(path.fn_str());
// cast is safe because the string length doesn't change
int fdTemp = mkstemp( (char*)(const char*) buf );

View File

@@ -23,7 +23,7 @@
// the filter classes they use.
const wxFilterClassFactory *
wxFilterClassFactory::Find(const wxChar *protocol, wxStreamProtocolType type)
wxFilterClassFactory::Find(const wxString& protocol, wxStreamProtocolType type)
{
for (const wxFilterClassFactory *f = GetFirst(); f; f = f->GetNext())
if (f->CanHandle(protocol, type))

View File

@@ -314,7 +314,7 @@ char wxFTP::GetResult()
}
else // subsequent line of multiline reply
{
if ( wxStrncmp(line, code, LEN_CODE) == 0 )
if ( line.compare(0, LEN_CODE, code) == 0 )
{
if ( chMarker == _T(' ') )
{
@@ -378,7 +378,7 @@ bool wxFTP::SetTransferMode(TransferMode transferMode)
if ( !DoSimpleCommand(_T("TYPE"), mode) )
{
wxLogError(_("Failed to set FTP transfer mode to %s."), (const wxChar*)
wxLogError(_("Failed to set FTP transfer mode to %s."),
(transferMode == ASCII ? _("ASCII") : _("binary")));
return false;
@@ -707,18 +707,20 @@ wxSocketBase *wxFTP::GetPassivePort()
return NULL;
}
const wxChar *addrStart = wxStrchr(m_lastResult, _T('('));
const wxChar *addrEnd = addrStart ? wxStrchr(addrStart, _T(')')) : NULL;
if ( !addrEnd )
size_t addrStart = m_lastResult.find(_T('('));
size_t addrEnd = (addrStart == wxString::npos)
? wxString::npos
: m_lastResult.find(_T(')'), addrStart);
if ( addrEnd == wxString::npos )
{
m_lastError = wxPROTO_PROTERR;
return NULL;
}
// get the port number and address
int a[6];
wxString straddr(addrStart + 1, addrEnd);
wxString straddr(m_lastResult, addrStart + 1, addrEnd - (addrStart + 1));
wxSscanf(straddr, wxT("%d,%d,%d,%d,%d,%d"),
&a[2],&a[3],&a[4],&a[5],&a[0],&a[1]);

View File

@@ -75,7 +75,7 @@ wxHTTP::wxHeaderIterator wxHTTP::FindHeader(const wxString& header)
wxHeaderIterator it = m_headers.begin();
for ( wxHeaderIterator en = m_headers.end(); it != en; ++it )
{
if ( wxStricmp(it->first, header) == 0 )
if ( header.CmpNoCase(it->first) == 0 )
break;
}
@@ -87,7 +87,7 @@ wxHTTP::wxHeaderConstIterator wxHTTP::FindHeader(const wxString& header) const
wxHeaderConstIterator it = m_headers.begin();
for ( wxHeaderConstIterator en = m_headers.end(); it != en; ++it )
{
if ( wxStricmp(it->first, header) == 0 )
if ( header.CmpNoCase(it->first) == 0 )
break;
}
@@ -274,8 +274,8 @@ bool wxHTTP::BuildRequest(const wxString& path, wxHTTP_Req req)
wxString buf;
buf.Printf(wxT("%s %s HTTP/1.0\r\n"), request, path.c_str());
const wxWX2MBbuf pathbuf = wxConvLocal.cWX2MB(buf);
Write(pathbuf, strlen(wxMBSTRINGCAST pathbuf));
const wxWX2MBbuf pathbuf = buf.mb_str();
Write(pathbuf, strlen(pathbuf));
SendHeaders();
Write("\r\n", 2);
@@ -407,7 +407,7 @@ wxInputStream *wxHTTP::GetInputStream(const wxString& path)
inp_stream = new wxHTTPStream(this);
if (!GetHeader(wxT("Content-Length")).empty())
inp_stream->m_httpsize = wxAtoi(WXSTRINGCAST GetHeader(wxT("Content-Length")));
inp_stream->m_httpsize = wxAtoi(GetHeader(wxT("Content-Length")));
else
inp_stream->m_httpsize = (size_t)-1;

View File

@@ -2231,7 +2231,7 @@ bool wxImage::LoadFile( wxInputStream& stream, const wxString& mimetype, int ind
if (stream.IsSeekable() && !handler->CanRead(stream))
{
wxLogError(_("Image file is not of type %s."), (const wxChar*) mimetype);
wxLogError(_("Image file is not of type %s."), mimetype);
return false;
}
else

View File

@@ -40,25 +40,18 @@
// just add +1 to m_len in the ctor
wxStringInputStream::wxStringInputStream(const wxString& s)
#if wxUSE_UNICODE
: m_str(s), m_buf(wxMBConvUTF8().cWX2MB(s).release()), m_len(strlen(m_buf))
// FIXME-UTF8: use wxCharBufferWithLength if we have it
: m_str(s), m_buf(s.utf8_str()), m_len(strlen(m_buf))
#else
: m_str(s), m_buf((char*)(const char*)s.c_str()), m_len(s.length())
: m_str(s), m_buf(s.mb_str()), m_len(s.length())
#endif
{
#if wxUSE_UNICODE
wxASSERT_MSG(m_buf != NULL, _T("Could not convert string to UTF8!"));
wxASSERT_MSG(m_buf.data() != NULL, _T("Could not convert string to UTF8!"));
#endif
m_pos = 0;
}
wxStringInputStream::~wxStringInputStream()
{
#if wxUSE_UNICODE
// Note: wx[W]CharBuffer uses malloc()/free()
free(m_buf);
#endif
}
// ----------------------------------------------------------------------------
// getlength
// ----------------------------------------------------------------------------
@@ -126,7 +119,7 @@ size_t wxStringInputStream::OnSysRead(void *buffer, size_t size)
size = sizeMax;
}
memcpy(buffer, m_buf + m_pos, size);
memcpy(buffer, m_buf.data() + m_pos, size);
m_pos += size;
return size;

View File

@@ -476,10 +476,10 @@ size_t wxMBConvLibc::WC2MB(char *buf, const wchar_t *psz, size_t n) const
#ifdef __UNIX__
wxConvBrokenFileNames::wxConvBrokenFileNames(const wxChar *charset)
wxConvBrokenFileNames::wxConvBrokenFileNames(const wxString& charset)
{
if ( !charset || wxStricmp(charset, _T("UTF-8")) == 0
|| wxStricmp(charset, _T("UTF8")) == 0 )
if ( wxStricmp(charset, _T("UTF-8")) == 0 ||
wxStricmp(charset, _T("UTF8")) == 0 )
m_conv = new wxMBConvUTF8(wxMBConvUTF8::MAP_INVALID_UTF8_TO_PUA);
else
m_conv = new wxCSConv(charset);
@@ -1588,7 +1588,7 @@ wxMBConvUTF32swap::FromWChar(char *dst, size_t dstLen,
class wxMBConv_iconv : public wxMBConv
{
public:
wxMBConv_iconv(const wxChar *name);
wxMBConv_iconv(const char *name);
virtual ~wxMBConv_iconv();
virtual size_t MB2WC(wchar_t *buf, const char *psz, size_t n) const;
@@ -1603,7 +1603,7 @@ public:
virtual wxMBConv *Clone() const
{
wxMBConv_iconv *p = new wxMBConv_iconv(m_name);
wxMBConv_iconv *p = new wxMBConv_iconv(m_name.ToAscii());
p->m_minMBCharWidth = m_minMBCharWidth;
return p;
}
@@ -1641,7 +1641,7 @@ private:
};
// make the constructor available for unit testing
WXDLLIMPEXP_BASE wxMBConv* new_wxMBConv_iconv( const wxChar* name )
WXDLLIMPEXP_BASE wxMBConv* new_wxMBConv_iconv( const char* name )
{
wxMBConv_iconv* result = new wxMBConv_iconv( name );
if ( !result->IsOk() )
@@ -1656,15 +1656,11 @@ WXDLLIMPEXP_BASE wxMBConv* new_wxMBConv_iconv( const wxChar* name )
wxString wxMBConv_iconv::ms_wcCharsetName;
bool wxMBConv_iconv::ms_wcNeedsSwap = false;
wxMBConv_iconv::wxMBConv_iconv(const wxChar *name)
wxMBConv_iconv::wxMBConv_iconv(const char *name)
: m_name(name)
{
m_minMBCharWidth = 0;
// iconv operates with chars, not wxChars, but luckily it uses only ASCII
// names for the charsets
const wxCharBuffer cname(wxString(name).ToAscii());
// check for charset that represents wchar_t:
if ( ms_wcCharsetName.empty() )
{
@@ -1701,13 +1697,13 @@ wxMBConv_iconv::wxMBConv_iconv(const wxChar *name)
wxLogTrace(TRACE_STRCONV, _T(" trying charset \"%s\""),
nameXE.c_str());
m2w = iconv_open(nameXE.ToAscii(), cname);
m2w = iconv_open(nameXE.ToAscii(), name);
if ( m2w == ICONV_T_INVALID )
{
// try charset w/o bytesex info (e.g. "UCS4")
wxLogTrace(TRACE_STRCONV, _T(" trying charset \"%s\""),
nameCS.c_str());
m2w = iconv_open(nameCS.ToAscii(), cname);
m2w = iconv_open(nameCS.ToAscii(), name);
// and check for bytesex ourselves:
if ( m2w != ICONV_T_INVALID )
@@ -1757,7 +1753,7 @@ wxMBConv_iconv::wxMBConv_iconv(const wxChar *name)
}
else // we already have ms_wcCharsetName
{
m2w = iconv_open(ms_wcCharsetName.ToAscii(), cname);
m2w = iconv_open(ms_wcCharsetName.ToAscii(), name);
}
if ( ms_wcCharsetName.empty() )
@@ -1766,12 +1762,12 @@ wxMBConv_iconv::wxMBConv_iconv(const wxChar *name)
}
else
{
w2m = iconv_open(cname, ms_wcCharsetName.ToAscii());
w2m = iconv_open(name, ms_wcCharsetName.ToAscii());
if ( w2m == ICONV_T_INVALID )
{
wxLogTrace(TRACE_STRCONV,
wxT("\"%s\" -> \"%s\" works but not the converse!?"),
ms_wcCharsetName.c_str(), cname.data());
ms_wcCharsetName.c_str(), name);
}
}
}
@@ -1982,8 +1978,8 @@ size_t wxMBConv_iconv::GetMBNulLen() const
#if wxUSE_UNICODE_UTF8
bool wxMBConv_iconv::IsUTF8() const
{
return wxStricmp(m_name, _T("UTF-8")) == 0 ||
wxStricmp(m_name, _T("UTF8")) == 0;
return wxStricmp(m_name, "UTF-8") == 0 ||
wxStricmp(m_name, "UTF8") == 0;
}
#endif
@@ -1998,7 +1994,7 @@ bool wxMBConv_iconv::IsUTF8() const
// from utils.cpp
#if wxUSE_FONTMAP
extern WXDLLIMPEXP_BASE long wxCharsetToCodepage(const wxChar *charset);
extern WXDLLIMPEXP_BASE long wxCharsetToCodepage(const char *charset);
extern WXDLLIMPEXP_BASE long wxEncodingToCodepage(wxFontEncoding encoding);
#endif
@@ -2019,7 +2015,7 @@ public:
}
#if wxUSE_FONTMAP
wxMBConv_win32(const wxChar* name)
wxMBConv_win32(const char* name)
{
m_CodePage = wxCharsetToCodepage(name);
m_minMBCharWidth = 0;
@@ -3107,7 +3103,7 @@ private:
public:
// temporarily just use wxEncodingConverter stuff,
// so that it works while a better implementation is built
wxMBConv_wxwin(const wxChar* name)
wxMBConv_wxwin(const char* name)
{
if (name)
m_enc = wxFontMapperBase::Get()->CharsetToEncoding(name, false);
@@ -3180,7 +3176,7 @@ private:
};
// make the constructors available for unit testing
WXDLLIMPEXP_BASE wxMBConv* new_wxMBConv_wxwin( const wxChar* name )
WXDLLIMPEXP_BASE wxMBConv* new_wxMBConv_wxwin( const char* name )
{
wxMBConv_wxwin* result = new wxMBConv_wxwin( name );
if ( !result->IsOk() )
@@ -3205,13 +3201,13 @@ void wxCSConv::Init()
m_deferred = true;
}
wxCSConv::wxCSConv(const wxChar *charset)
wxCSConv::wxCSConv(const wxString& charset)
{
Init();
if ( charset )
if ( !charset.empty() )
{
SetName(charset);
SetName(charset.ToAscii());
}
#if wxUSE_FONTMAP
@@ -3268,11 +3264,11 @@ void wxCSConv::Clear()
m_convReal = NULL;
}
void wxCSConv::SetName(const wxChar *charset)
void wxCSConv::SetName(const char *charset)
{
if (charset)
{
m_name = wxStrdup(charset);
m_name = strdup(charset);
m_deferred = true;
}
}
@@ -3291,7 +3287,7 @@ wxMBConv *wxCSConv::DoCreate() const
wxLogTrace(TRACE_STRCONV,
wxT("creating conversion for %s"),
(m_name ? m_name
: (const wxChar*)wxFontMapperBase::GetEncodingName(m_encoding).c_str()));
: (const char*)wxFontMapperBase::GetEncodingName(m_encoding).mb_str()));
#endif // wxUSE_FONTMAP
// check for the special case of ASCII or ISO8859-1 charset: as we have
@@ -3318,14 +3314,13 @@ wxMBConv *wxCSConv::DoCreate() const
if ( m_name )
#endif // !wxUSE_FONTMAP
{
wxString name(m_name);
#if wxUSE_FONTMAP
wxFontEncoding encoding(m_encoding);
#endif
if ( !name.empty() )
if ( m_name )
{
wxMBConv_iconv *conv = new wxMBConv_iconv(name);
wxMBConv_iconv *conv = new wxMBConv_iconv(m_name);
if ( conv->IsOk() )
return conv;
@@ -3333,7 +3328,7 @@ wxMBConv *wxCSConv::DoCreate() const
#if wxUSE_FONTMAP
encoding =
wxFontMapperBase::Get()->CharsetToEncoding(name, false);
wxFontMapperBase::Get()->CharsetToEncoding(m_name, false);
#endif // wxUSE_FONTMAP
}
#if wxUSE_FONTMAP
@@ -3344,7 +3339,7 @@ wxMBConv *wxCSConv::DoCreate() const
if ( it->second.empty() )
return NULL;
wxMBConv_iconv *conv = new wxMBConv_iconv(it->second);
wxMBConv_iconv *conv = new wxMBConv_iconv(it->second.ToAscii());
if ( conv->IsOk() )
return conv;
@@ -3352,15 +3347,19 @@ wxMBConv *wxCSConv::DoCreate() const
}
const wxChar** names = wxFontMapperBase::GetAllEncodingNames(encoding);
// CS : in case this does not return valid names (eg for MacRoman) encoding
// got a 'failure' entry in the cache all the same, although it just has to
// be created using a different method, so only store failed iconv creation
// attempts (or perhaps we shoulnd't do this at all ?)
// CS : in case this does not return valid names (eg for MacRoman)
// encoding got a 'failure' entry in the cache all the same,
// although it just has to be created using a different method, so
// only store failed iconv creation attempts (or perhaps we
// shoulnd't do this at all ?)
if ( names[0] != NULL )
{
for ( ; *names; ++names )
{
wxMBConv_iconv *conv = new wxMBConv_iconv(*names);
// FIXME-UTF8: wxFontMapperBase::GetAllEncodingNames()
// will need changes that will obsolete this
wxString name(*names);
wxMBConv_iconv *conv = new wxMBConv_iconv(name.ToAscii());
if ( conv->IsOk() )
{
gs_nameCache[encoding] = *names;
@@ -3494,9 +3493,9 @@ wxMBConv *wxCSConv::DoCreate() const
m_name ? m_name
:
#if wxUSE_FONTMAP
(const wxChar*)wxFontMapperBase::GetEncodingDescription(m_encoding).c_str()
(const char*)wxFontMapperBase::GetEncodingDescription(m_encoding).ToAscii()
#else // !wxUSE_FONTMAP
(const wxChar*)wxString::Format(_("encoding %i"), m_encoding).c_str()
(const char*)wxString::Format(_("encoding %i"), m_encoding).ToAscii()
#endif // wxUSE_FONTMAP/!wxUSE_FONTMAP
);

View File

@@ -1156,29 +1156,25 @@ wxString wxFilterClassFactoryBase::PopExtension(const wxString& location) const
}
wxString::size_type wxFilterClassFactoryBase::FindExtension(
const wxChar *location) const
const wxString& location) const
{
size_t len = wxStrlen(location);
for (const wxChar *const *p = GetProtocols(wxSTREAM_FILEEXT); *p; p++)
{
size_t l = wxStrlen(*p);
if (l <= len && wxStrcmp(*p, location + len - l) == 0)
return len - l;
if ( location.EndsWith(*p) )
return location.length() - wxStrlen(*p);
}
return wxString::npos;
}
bool wxFilterClassFactoryBase::CanHandle(const wxChar *protocol,
bool wxFilterClassFactoryBase::CanHandle(const wxString& protocol,
wxStreamProtocolType type) const
{
if (type == wxSTREAM_FILEEXT)
return FindExtension(protocol) != wxString::npos;
else
for (const wxChar *const *p = GetProtocols(type); *p; p++)
if (wxStrcmp(*p, protocol) == 0)
if (protocol == *p)
return true;
return false;

View File

@@ -829,8 +829,8 @@ wxTarNumber wxTarInputStream::GetHeaderNumber(int id) const
if ((value = GetExtendedHeader(m_hdr->Name(id))) != wxEmptyString) {
wxTarNumber n = 0;
const wxChar *p = value;
while (*p == ' ')
wxString::const_iterator p = value.begin();
while (*p == ' ' && p != value.end())
p++;
while (isdigit(*p))
n = n * 10 + (*p++ - '0');

View File

@@ -416,7 +416,8 @@ void wxTextOutputStream::WriteString(const wxString& string)
}
#if wxUSE_UNICODE
wxCharBuffer buffer = m_conv->cWC2MB(out, out.length(), &len);
// FIXME-UTF8: use wxCharBufferWithLength if/when we have it
wxCharBuffer buffer = m_conv->cWC2MB(out.wc_str(), out.length(), &len);
m_output.Write(buffer, len);
#else
m_output.Write(out.c_str(), out.length() );

View File

@@ -93,7 +93,10 @@ const wxChar* wxURI::Create(const wxString& uri)
if (m_fields)
Clear();
return Parse(uri);
// FIXME-UTF8: rewrite ParseXXX() methods using iterators
// NB: using wxWxCharBuffer instead of just c_str() avoids keeping
// converted string in memory for longer than needed
return Parse(wxWxCharBuffer(uri.c_str()));
}
// ---------------------------------------------------------------------------

View File

@@ -1004,7 +1004,7 @@ size_t wxZipEntry::ReadLocal(wxInputStream& stream, wxMBConv& conv)
size_t wxZipEntry::WriteLocal(wxOutputStream& stream, wxMBConv& conv) const
{
wxString unixName = GetName(wxPATH_UNIX);
const wxWX2MBbuf name_buf = conv.cWX2MB(unixName);
const wxWX2MBbuf name_buf = unixName.mb_str(conv);
const char *name = name_buf;
if (!name) name = "";
wxUint16 nameLen = wx_truncate_cast(wxUint16, strlen(name));
@@ -1080,12 +1080,12 @@ size_t wxZipEntry::ReadCentral(wxInputStream& stream, wxMBConv& conv)
size_t wxZipEntry::WriteCentral(wxOutputStream& stream, wxMBConv& conv) const
{
wxString unixName = GetName(wxPATH_UNIX);
const wxWX2MBbuf name_buf = conv.cWX2MB(unixName);
const wxWX2MBbuf name_buf = unixName.mb_str(conv);
const char *name = name_buf;
if (!name) name = "";
wxUint16 nameLen = wx_truncate_cast(wxUint16, strlen(name));
const wxWX2MBbuf comment_buf = conv.cWX2MB(m_Comment);
const wxWX2MBbuf comment_buf = m_Comment.mb_str(conv);
const char *comment = comment_buf;
if (!comment) comment = "";
wxUint16 commentLen = wx_truncate_cast(wxUint16, strlen(comment));
@@ -1235,7 +1235,7 @@ wxZipEndRec::wxZipEndRec()
bool wxZipEndRec::Write(wxOutputStream& stream, wxMBConv& conv) const
{
const wxWX2MBbuf comment_buf = conv.cWX2MB(m_Comment);
const wxWX2MBbuf comment_buf = m_Comment.mb_str(conv);
const char *comment = comment_buf;
if (!comment) comment = "";
wxUint16 commentLen = (wxUint16)strlen(comment);

View File

@@ -82,8 +82,7 @@ wxAnimation& wxAnimation::operator=(const wxAnimation& that)
bool wxAnimation::LoadFile(const wxString &name, wxAnimationType WXUNUSED(type))
{
UnRef();
m_pixbuf = gdk_pixbuf_animation_new_from_file(
wxConvFileName->cWX2MB(name), NULL);
m_pixbuf = gdk_pixbuf_animation_new_from_file(name.fn_str(), NULL);
return IsOk();
}

View File

@@ -148,7 +148,7 @@ wxDirDialog::wxDirDialog(wxWindow* parent, const wxString& title,
if ( !defaultPath.empty() )
gtk_file_chooser_set_current_folder( GTK_FILE_CHOOSER(m_widget),
wxConvFileName->cWX2MB(defaultPath) );
defaultPath.fn_str() );
}
else
wxGenericDirDialog::Create(parent, title, defaultPath, style, pos, sz, name);
@@ -192,7 +192,8 @@ void wxDirDialog::SetPath(const wxString& dir)
{
if (wxDirExists(dir))
{
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(m_widget), wxConvFileName->cWX2MB(dir));
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(m_widget),
dir.fn_str());
}
}
else
@@ -204,7 +205,7 @@ wxString wxDirDialog::GetPath() const
if (!gtk_check_version(2,4,0))
{
wxGtkString str(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(m_widget)));
return wxConvFileName->cMB2WX(str);
return wxString(str, *wxConvFileName);
}
return wxGenericDirDialog::GetPath();

View File

@@ -50,7 +50,7 @@ static void gtk_filedialog_ok_callback(GtkWidget *widget, wxFileDialog *dialog)
msg.Printf(
_("File '%s' already exists, do you really want to overwrite it?"),
wxString(wxConvFileName->cMB2WX(filename)).c_str());
wxString(filename, *wxConvFileName));
wxMessageDialog dlg(dialog, msg, _("Confirm"),
wxYES_NO | wxICON_QUESTION);
@@ -318,7 +318,7 @@ wxString wxFileDialog::GetPath() const
if (!gtk_check_version(2,4,0))
{
wxGtkString str(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(m_widget)));
return wxConvFileName->cMB2WX(str);
return wxString(str, *wxConvFileName);
}
return wxGenericFileDialog::GetPath();
@@ -350,7 +350,7 @@ void wxFileDialog::GetPaths(wxArrayString& paths) const
GSList *gpaths = gpathsi;
while (gpathsi)
{
wxString file(wxConvFileName->cMB2WX((gchar*) gpathsi->data));
wxString file((gchar*) gpathsi->data, *wxConvFileName);
paths.Add(file);
g_free(gpathsi->data);
gpathsi = gpathsi->next;
@@ -382,7 +382,7 @@ void wxFileDialog::SetPath(const wxString& path)
{
if (path.empty()) return;
gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(m_widget), wxConvFileName->cWX2MB(path));
gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(m_widget), path.fn_str());
}
else
wxGenericFileDialog::SetPath( path );
@@ -394,7 +394,7 @@ void wxFileDialog::SetDirectory(const wxString& dir)
{
if (wxDirExists(dir))
{
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(m_widget), wxConvFileName->cWX2MB(dir));
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(m_widget), dir.fn_str());
}
}
else
@@ -406,7 +406,7 @@ wxString wxFileDialog::GetDirectory() const
if (!gtk_check_version(2,4,0))
{
wxGtkString str(gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(m_widget)));
return wxConvFileName->cMB2WX(str);
return wxString(str, *wxConvFileName);
}
return wxGenericFileDialog::GetDirectory();

View File

@@ -151,7 +151,7 @@ wxString wxHyperlinkCtrl::GetURL() const
if ( UseNative() )
{
const gchar *str = gtk_link_button_get_uri(GTK_LINK_BUTTON(m_widget));
return wxConvFileName->cMB2WX(str);
return wxString(str, *wxConvFileName);
}
return wxGenericHyperlinkCtrl::GetURL();

View File

@@ -55,14 +55,12 @@ static wxString GetGtkHotKey( const wxMenuItem& item );
static wxString wxReplaceUnderscore( const wxString& title )
{
const wxChar *pc;
// GTK 1.2 wants to have "_" instead of "&" for accelerators
wxString str;
pc = title;
while (*pc != wxT('\0'))
for ( wxString::const_iterator pc = title.begin(); pc != title.end(); ++pc )
{
if ((*pc == wxT('&')) && (*(pc+1) == wxT('&')))
if ((*pc == wxT('&')) && (pc+1 != title.end()) && (*(pc+1) == wxT('&')))
{
// "&" is doubled to indicate "&" instead of accelerator
++pc;
@@ -83,7 +81,6 @@ static wxString wxReplaceUnderscore( const wxString& title )
str << *pc;
}
++pc;
}
// wxPrintf( wxT("before %s after %s\n"), title.c_str(), str.c_str() );

View File

@@ -275,7 +275,8 @@ bool wxRadioBox::Create( wxWindow *parent, wxWindowID id, const wxString& title,
radio_button_group = gtk_radio_button_get_group( GTK_RADIO_BUTTON(rbtn) );
label.Empty();
for ( const wxChar *pc = choices[i]; *pc; pc++ )
for ( wxString::const_iterator pc = choices[i].begin();
pc != choices[i].end(); ++pc )
{
if ( *pc != wxT('&') )
label += *pc;

View File

@@ -1444,7 +1444,7 @@ extern WXDLLIMPEXP_BASE long wxEncodingToCodepage(wxFontEncoding encoding)
return (long) ret;
}
extern long wxCharsetToCodepage(const wxChar *name)
extern long wxCharsetToCodepage(const char *name)
{
// first get the font encoding for this charset
if ( !name )
@@ -1463,7 +1463,7 @@ extern long wxCharsetToCodepage(const wxChar *name)
#include "wx/msw/registry.h"
// this should work if Internet Exploiter is installed
extern long wxCharsetToCodepage(const wxChar *name)
extern long wxCharsetToCodepage(const char *name)
{
if (!name)
return GetACP();

View File

@@ -394,7 +394,7 @@ void wxRichTextHTMLHandler::WriteImage(wxRichTextImage* image, wxOutputStream& s
if (image->GetImage().Ok())
{
wxString ext(image->GetImageBlock().GetExtension());
wxString tempFilename(wxString::Format(wxT("image%d.%s"), sm_fileCounter, (const wxChar*) ext));
wxString tempFilename(wxString::Format(wxT("image%d.%s"), sm_fileCounter, ext));
wxMemoryFSHandler::AddFile(tempFilename, image->GetImage(), image->GetImageBlock().GetImageType());
m_imageLocations.Add(tempFilename);
@@ -420,7 +420,7 @@ void wxRichTextHTMLHandler::WriteImage(wxRichTextImage* image, wxOutputStream& s
tempDir = wxFileName::GetTempDir();
wxString ext(image->GetImageBlock().GetExtension());
wxString tempFilename(wxString::Format(wxT("%s/image%d.%s"), (const wxChar*) tempDir, sm_fileCounter, (const wxChar*) ext));
wxString tempFilename(wxString::Format(wxT("%s/image%d.%s"), tempDir, sm_fileCounter, ext));
image->GetImageBlock().Write(tempFilename);
m_imageLocations.Add(tempFilename);

View File

@@ -724,7 +724,7 @@ void wxRichTextStyleOrganiserDialog::OnDeleteClick( wxCommandEvent& WXUNUSED(eve
{
wxRichTextStyleDefinition* def = m_stylesListBox->GetStyleListBox()->GetStyle(sel);
wxString name(def->GetName());
if (wxYES == wxMessageBox(wxString::Format(_("Delete style %s?"), (const wxChar*) name), _("Delete Style"), wxYES_NO|wxICON_QUESTION, this))
if (wxYES == wxMessageBox(wxString::Format(_("Delete style %s?"), name), _("Delete Style"), wxYES_NO|wxICON_QUESTION, this))
{
m_stylesListBox->GetStyleListBox()->SetItemCount(0);

View File

@@ -573,7 +573,7 @@ bool wxRichTextXMLHandler::DoSaveFile(wxRichTextBuffer *buffer, wxOutputStream&
wxString s ;
s.Printf(wxT("<?xml version=\"%s\" encoding=\"%s\"?>\n"),
(const wxChar*) version, (const wxChar*) fileEncoding );
version, fileEncoding);
OutputString(stream, s, NULL, NULL);
OutputString(stream, wxT("<richtext version=\"1.0.0.0\" xmlns=\"http://www.wxwidgets.org\">") , NULL, NULL);

View File

@@ -132,7 +132,7 @@ bool wxDirData::Read(wxString *filename)
return false;
#if wxUSE_UNICODE
de_d_name = wxConvFileName->cMB2WC( de->d_name );
de_d_name = wxString(de->d_name, *wxConvFileName);
#else
de_d_name = de->d_name;
#endif

View File

@@ -1367,14 +1367,15 @@ size_t wxFileTypeImpl::GetAllCommands(wxArrayString *verbs,
bool wxFileTypeImpl::GetExtensions(wxArrayString& extensions)
{
wxString strExtensions = m_manager->GetExtension(m_index[0]);
const wxString strExtensions = m_manager->GetExtension(m_index[0]);
extensions.Empty();
// one extension in the space or comma-delimited list
wxString strExt;
for ( const wxChar *p = strExtensions; /* nothing */; p++ )
wxString::const_iterator end = strExtensions.end();
for ( wxString::const_iterator p = strExtensions.begin(); /* nothing */; ++p )
{
if ( *p == wxT(' ') || *p == wxT(',') || *p == wxT('\0') )
if ( p == end || *p == wxT(' ') || *p == wxT(',') )
{
if ( !strExt.empty() )
{
@@ -1384,7 +1385,7 @@ bool wxFileTypeImpl::GetExtensions(wxArrayString& extensions)
//else: repeated spaces
// (shouldn't happen, but it's not that important if it does happen)
if ( *p == wxT('\0') )
if ( p == end )
break;
}
else if ( *p == wxT('.') )
@@ -2488,8 +2489,7 @@ wxMimeTypesManagerImpl::ProcessOtherMailcapField(MailcapLineData& data,
}
// is this something of the form foo=bar?
const wxChar *pEq = wxStrchr(curField, wxT('='));
if ( pEq != NULL )
if ( curField.find('=') != wxString::npos )
{
// split "LHS = RHS" in 2
wxString lhs = curField.BeforeFirst(wxT('=')),

View File

@@ -917,7 +917,8 @@ wxOperatingSystemId wxGetOsVersion(int *verMaj, int *verMin)
// get OS version
int major, minor;
wxString release = wxGetCommandOutput(wxT("uname -r"));
if ( release.empty() || wxSscanf(release, wxT("%d.%d"), &major, &minor) != 2 )
if ( release.empty() ||
wxSscanf(release.c_str(), wxT("%d.%d"), &major, &minor) != 2 )
{
// failed to get version string or unrecognized format
major =
@@ -1051,7 +1052,7 @@ bool wxGetDiskSpace(const wxString& path, wxDiskspaceSize_t *pTotal, wxDiskspace
bool wxGetEnv(const wxString& var, wxString *value)
{
// wxGetenv is defined as getenv()
wxChar *p = wxGetenv(var);
char *p = wxGetenv(var);
if ( !p )
return false;

View File

@@ -558,8 +558,7 @@ static int UnknownEncodingHnd(void * WXUNUSED(encodingHandlerData),
// We must build conversion table for expat. The easiest way to do so
// is to let wxCSConv convert as string containing all characters to
// wide character representation:
wxString str(name, wxConvLibc);
wxCSConv conv(str.c_str());
wxCSConv conv(name);
char mbBuf[2];
wchar_t wcBuf[10];
size_t i;

View File

@@ -82,7 +82,7 @@ public:
static size_t GetNumber() { return ms_bars; }
const wxChar *GetName() const { return m_name; }
const wxChar *GetName() const { return m_name.c_str(); }
private:
wxString m_name;

View File

@@ -639,7 +639,7 @@ void DateTimeTestCase::TestTimeFormat()
// convert back
wxDateTime dt2;
const wxChar *result = dt2.ParseFormat(s, fmt);
const wxChar *result = dt2.ParseFormat(s.c_str(), fmt);
if ( !result )
{
// converion failed - should it have?

View File

@@ -286,7 +286,7 @@ void FormatConverterTestCase::doTest(const wxChar *input,
void FormatConverterTestCase::check(const wxString& input,
const wxString& expected)
{
wxString result = wxConvertFormat(input);
wxString result = wxConvertFormat(input.wc_str());
wxString msg = _T("input: '") + input +
_T("', result: '") + result +
_T("', expected: '") + expected + _T("'");

View File

@@ -61,7 +61,7 @@ public:
static size_t GetNumber() { return ms_bars; }
const wxChar *GetName() const { return m_name; }
const wxChar *GetName() const { return m_name.c_str(); }
private:
wxString m_name;

View File

@@ -120,7 +120,7 @@ private:
size_t wideChars, // the number of wide characters at wideBuffer
const char* multiBuffer, // a multibyte encoded character sequence that can be decoded by "converter"
size_t multiBytes, // the byte length of the multibyte character sequence that can be decoded by "converter"
wxMBConv* converter, // the wxMBConv object that can decode multiBuffer into a wide character sequence
wxMBConv& converter, // the wxMBConv object that can decode multiBuffer into a wide character sequence
int sizeofNull // number of bytes occupied by terminating null in this encoding
);
@@ -130,7 +130,7 @@ private:
size_t wideChars, // the number of wide characters at wideBuffer
const char* multiBuffer, // a multibyte encoded character sequence that can be decoded by "converter"
size_t multiBytes, // the byte length of the multibyte character sequence that can be decoded by "converter"
wxMBConv* converter, // the wxMBConv object that can decode multiBuffer into a wide character sequence
wxMBConv& converter, // the wxMBConv object that can decode multiBuffer into a wide character sequence
int sizeofNull // number of bytes occupied by terminating null in this encoding
);
@@ -142,7 +142,7 @@ private:
size_t wideChars, // the number of wide characters at wideBuffer
const char* multiBuffer, // a multibyte encoded character sequence that can be decoded by "converter"
size_t multiBytes, // the byte length of the multibyte character sequence that can be decoded by "converter"
wxMBConv* converter // the wxMBConv object that can decode multiBuffer into a wide character sequence
wxMBConv& converter // the wxMBConv object that can decode multiBuffer into a wide character sequence
);
// use wxTextOutputStream to exercise wxMBConv interface
@@ -152,7 +152,7 @@ private:
size_t wideChars, // the number of wide characters at wideBuffer
const char* multiBuffer, // a multibyte encoded character sequence that can be decoded by "converter"
size_t multiBytes, // the byte length of the multibyte character sequence that can be decoded by "converter"
wxMBConv* converter // the wxMBConv object that can decode multiBuffer into a wide character sequence
wxMBConv& converter // the wxMBConv object that can decode multiBuffer into a wide character sequence
);
#endif
@@ -167,7 +167,7 @@ private:
size_t multiBytes, // the byte length of the multibyte character sequence that can be decoded by "converter"
const char* utf8Buffer, // the same character sequence as multiBuffer, encoded as UTF-8
size_t utf8Bytes, // the byte length of the UTF-8 encoded character sequence
wxMBConv* converter, // the wxMBConv object that can decode multiBuffer into a wide character sequence
wxMBConv& converter, // the wxMBConv object that can decode multiBuffer into a wide character sequence
int sizeofNull // the number of bytes occupied by a terminating null in the converter's encoding
);
@@ -393,7 +393,7 @@ void MBConvTestCase::UTF7Tests()
sizeof(welcome_wchar_t)/sizeof(wchar_t),
(const char*)welcome_utf7_iconv,
sizeof(welcome_utf7_iconv),
&wxConvUTF7,
wxConvUTF7,
1
);
TestDecoder
@@ -402,7 +402,7 @@ void MBConvTestCase::UTF7Tests()
sizeof(welcome_wchar_t)/sizeof(wchar_t),
(const char*)welcome_utf7_wx,
sizeof(welcome_utf7_wx),
&wxConvUTF7,
wxConvUTF7,
1
);
#if 0
@@ -415,7 +415,7 @@ void MBConvTestCase::UTF7Tests()
sizeof(welcome_wchar_t)/sizeof(wchar_t),
(const char*)welcome_utf7_iconv,
sizeof(welcome_utf7_iconv),
&wxConvUTF7,
wxConvUTF7,
1
);
#endif
@@ -425,7 +425,7 @@ void MBConvTestCase::UTF7Tests()
sizeof(welcome_wchar_t)/sizeof(wchar_t),
(const char*)welcome_utf7_wx,
sizeof(welcome_utf7_wx),
&wxConvUTF7,
wxConvUTF7,
1
);
}
@@ -438,7 +438,7 @@ void MBConvTestCase::UTF8Tests()
sizeof(welcome_wchar_t)/sizeof(wchar_t),
(const char*)welcome_utf8,
sizeof(welcome_utf8),
&wxConvUTF8,
wxConvUTF8,
1
);
TestEncoder
@@ -447,7 +447,7 @@ void MBConvTestCase::UTF8Tests()
sizeof(welcome_wchar_t)/sizeof(wchar_t),
(const char*)welcome_utf8,
sizeof(welcome_utf8),
&wxConvUTF8,
wxConvUTF8,
1
);
}
@@ -461,7 +461,7 @@ void MBConvTestCase::UTF16LETests()
sizeof(welcome_wchar_t)/sizeof(wchar_t),
(const char*)welcome_utf16le,
sizeof(welcome_utf16le),
&convUTF16LE,
convUTF16LE,
2
);
TestEncoder
@@ -470,7 +470,7 @@ void MBConvTestCase::UTF16LETests()
sizeof(welcome_wchar_t)/sizeof(wchar_t),
(const char*)welcome_utf16le,
sizeof(welcome_utf16le),
&convUTF16LE,
convUTF16LE,
2
);
}
@@ -484,7 +484,7 @@ void MBConvTestCase::UTF16BETests()
sizeof(welcome_wchar_t)/sizeof(wchar_t),
(const char*)welcome_utf16be,
sizeof(welcome_utf16be),
&convUTF16BE,
convUTF16BE,
2
);
TestEncoder
@@ -493,7 +493,7 @@ void MBConvTestCase::UTF16BETests()
sizeof(welcome_wchar_t)/sizeof(wchar_t),
(const char*)welcome_utf16be,
sizeof(welcome_utf16be),
&convUTF16BE,
convUTF16BE,
2
);
}
@@ -507,7 +507,7 @@ void MBConvTestCase::UTF32LETests()
sizeof(welcome_wchar_t)/sizeof(wchar_t),
(const char*)welcome_utf32le,
sizeof(welcome_utf32le),
&convUTF32LE,
convUTF32LE,
4
);
TestEncoder
@@ -516,7 +516,7 @@ void MBConvTestCase::UTF32LETests()
sizeof(welcome_wchar_t)/sizeof(wchar_t),
(const char*)welcome_utf32le,
sizeof(welcome_utf32le),
&convUTF32LE,
convUTF32LE,
4
);
}
@@ -530,7 +530,7 @@ void MBConvTestCase::UTF32BETests()
sizeof(welcome_wchar_t)/sizeof(wchar_t),
(const char*)welcome_utf32be,
sizeof(welcome_utf32be),
&convUTF32BE,
convUTF32BE,
4
);
TestEncoder
@@ -539,7 +539,7 @@ void MBConvTestCase::UTF32BETests()
sizeof(welcome_wchar_t)/sizeof(wchar_t),
(const char*)welcome_utf32be,
sizeof(welcome_utf32be),
&convUTF32BE,
convUTF32BE,
4
);
}
@@ -553,7 +553,7 @@ void MBConvTestCase::CP932Tests()
sizeof(welcome_wchar_t)/sizeof(wchar_t),
(const char*)welcome_cp932,
sizeof(welcome_cp932),
&convCP932,
convCP932,
1
);
TestEncoder
@@ -562,7 +562,7 @@ void MBConvTestCase::CP932Tests()
sizeof(welcome_wchar_t)/sizeof(wchar_t),
(const char*)welcome_cp932,
sizeof(welcome_cp932),
&convCP932,
convCP932,
1
);
}
@@ -743,7 +743,7 @@ void MBConvTestCase::TestCoder(
size_t multiBytes, // the byte length of the multibyte character sequence that can be decoded by "converter"
const char* utf8Buffer, // the same character sequence as multiBuffer, encoded as UTF-8
size_t utf8Bytes, // the byte length of the UTF-8 encoded character sequence
wxMBConv* converter, // the wxMBConv object thta can decode multiBuffer into a wide character sequence
wxMBConv& converter, // the wxMBConv object thta can decode multiBuffer into a wide character sequence
int sizeofNull // the number of bytes occupied by a terminating null in the converter's encoding
)
{
@@ -777,12 +777,12 @@ void MBConvTestCase::TestCoder(
}
WXDLLIMPEXP_BASE wxMBConv* new_wxMBConv_wxwin( const wxChar* name );
WXDLLIMPEXP_BASE wxMBConv* new_wxMBConv_wxwin( const char* name );
void MBConvTestCase::FontmapTests()
{
#ifdef wxUSE_FONTMAP
wxMBConv* converter = new_wxMBConv_wxwin( _T("CP1252") );
wxMBConv* converter = new_wxMBConv_wxwin("CP1252");
if ( !converter )
{
return;
@@ -792,7 +792,7 @@ void MBConvTestCase::FontmapTests()
sizeof(CP1252),
(const char*)CP1252_utf8,
sizeof(CP1252_utf8),
converter,
*converter,
1
);
delete converter;
@@ -800,12 +800,12 @@ void MBConvTestCase::FontmapTests()
}
WXDLLIMPEXP_BASE wxMBConv* new_wxMBConv_iconv( const wxChar* name );
WXDLLIMPEXP_BASE wxMBConv* new_wxMBConv_iconv( const char* name );
void MBConvTestCase::IconvTests()
{
#ifdef HAVE_ICONV
wxMBConv* converter = new_wxMBConv_iconv( _T("CP932") );
wxMBConv* converter = new_wxMBConv_iconv("CP932");
if ( !converter )
{
return;
@@ -815,7 +815,7 @@ void MBConvTestCase::IconvTests()
sizeof(welcome_cp932),
(const char*)welcome_utf8,
sizeof(welcome_utf8),
converter,
*converter,
1
);
delete converter;
@@ -830,7 +830,7 @@ void MBConvTestCase::CP1252Tests()
sizeof(CP1252),
(const char*)CP1252_utf8,
sizeof(CP1252_utf8),
&convCP1252,
convCP1252,
1
);
}
@@ -874,7 +874,7 @@ void MBConvTestCase::TestDecoder(
size_t wideChars, // the number of wide characters at wideBuffer
const char* multiBuffer, // a multibyte encoded character sequence that can be decoded by "converter"
size_t multiBytes, // the byte length of the multibyte character sequence that can be decoded by "converter"
wxMBConv* converter, // the wxMBConv object that can decode multiBuffer into a wide character sequence
wxMBConv& converter, // the wxMBConv object that can decode multiBuffer into a wide character sequence
int sizeofNull // number of bytes occupied by terminating null in this encoding
)
{
@@ -886,7 +886,7 @@ void MBConvTestCase::TestDecoder(
memset( &inputCopy.data()[multiBytes], 0, sizeofNull );
// calculate the output size
size_t outputWritten = converter->MB2WC
size_t outputWritten = converter.MB2WC
(
0,
(const char*)inputCopy.data(),
@@ -902,7 +902,7 @@ void MBConvTestCase::TestDecoder(
wxWCharBuffer outputBuffer(outputBufferChars);
memset( outputBuffer.data(), UNINITIALIZED, outputBufferChars*sizeof(wchar_t) );
outputWritten = converter->MB2WC
outputWritten = converter.MB2WC
(
outputBuffer.data(),
(const char*)inputCopy.data(),
@@ -934,7 +934,7 @@ void MBConvTestCase::TestEncoder(
size_t wideChars, // the number of wide characters at wideBuffer
const char* multiBuffer, // a multibyte encoded character sequence that can be decoded by "converter"
size_t multiBytes, // the byte length of the multibyte character sequence that can be decoded by "converter"
wxMBConv* converter, // the wxMBConv object that can decode multiBuffer into a wide character sequence
wxMBConv& converter, // the wxMBConv object that can decode multiBuffer into a wide character sequence
int sizeofNull // number of bytes occupied by terminating null in this encoding
)
{
@@ -946,7 +946,7 @@ void MBConvTestCase::TestEncoder(
inputCopy.data()[wideChars] = 0;
// calculate the output size
size_t outputWritten = converter->WC2MB
size_t outputWritten = converter.WC2MB
(
0,
(const wchar_t*)inputCopy.data(),
@@ -961,7 +961,7 @@ void MBConvTestCase::TestEncoder(
wxCharBuffer outputBuffer(outputBufferSize);
memset( outputBuffer.data(), UNINITIALIZED, outputBufferSize );
outputWritten = converter->WC2MB
outputWritten = converter.WC2MB
(
outputBuffer.data(),
(const wchar_t*)inputCopy.data(),
@@ -1001,14 +1001,14 @@ void MBConvTestCase::TestStreamDecoder(
size_t wideChars, // the number of wide characters at wideBuffer
const char* multiBuffer, // a multibyte encoded character sequence that can be decoded by "converter"
size_t multiBytes, // the byte length of the multibyte character sequence that can be decoded by "converter"
wxMBConv* converter // the wxMBConv object that can decode multiBuffer into a wide character sequence
wxMBConv& converter // the wxMBConv object that can decode multiBuffer into a wide character sequence
)
{
// this isn't meant to test wxMemoryInputStream or wxTextInputStream
// it's meant to test the way wxTextInputStream uses wxMBConv
// (which has exposed some problems with wxMBConv)
wxMemoryInputStream memoryInputStream( multiBuffer, multiBytes );
wxTextInputStream textInputStream( memoryInputStream, wxT(""), *converter );
wxTextInputStream textInputStream( memoryInputStream, wxT(""), converter );
for ( size_t i = 0; i < wideChars; i++ )
{
wxChar wc = textInputStream.GetChar();
@@ -1027,7 +1027,7 @@ void MBConvTestCase::TestStreamEncoder(
size_t wideChars, // the number of wide characters at wideBuffer
const char* multiBuffer, // a multibyte encoded character sequence that can be decoded by "converter"
size_t multiBytes, // the byte length of the multibyte character sequence that can be decoded by "converter"
wxMBConv* converter // the wxMBConv object that can decode multiBuffer into a wide character sequence
wxMBConv& converter // the wxMBConv object that can decode multiBuffer into a wide character sequence
)
{
// this isn't meant to test wxMemoryOutputStream or wxTextOutputStream
@@ -1035,7 +1035,7 @@ void MBConvTestCase::TestStreamEncoder(
// (which has exposed some problems with wxMBConv)
wxMemoryOutputStream memoryOutputStream;
// wxEOL_UNIX will pass \n \r unchanged
wxTextOutputStream textOutputStream( memoryOutputStream, wxEOL_UNIX, *converter );
wxTextOutputStream textOutputStream( memoryOutputStream, wxEOL_UNIX, converter );
for ( size_t i = 0; i < wideChars; i++ )
{
textOutputStream.PutChar( wideBuffer[i] );

View File

@@ -178,8 +178,9 @@ wxString RegExTestCase::Conv(const char *str)
//
void RegExTestCase::parseFlags(const wxString& flags)
{
for (const wxChar *p = flags; *p; p++) {
switch (*p) {
for ( wxString::const_iterator p = flags.begin(); p != flags.end(); ++p )
{
switch ( (*p).GetValue() ) {
// noop
case '-': break;