size_t nLen;
if ( psz )
{
- // calculate the needed size ourselves or use a provide one
+ // calculate the needed size ourselves or use the provided one
nLen = nLength == wxSTRING_MAXLEN ? conv.MB2WC(NULL, psz, 0) : nLength;
}
else
if ( !AllocBuffer(nLen) )
{
wxFAIL_MSG( _T("out of memory in wxString::wxString") );
- return;
}
-
- // MB2WC wants the buffer size, not the string length
- if ( conv.MB2WC(m_pchData, psz, nLen + 1) != (size_t)-1 )
+ else
{
- // initialized ok
- m_pchData[nLen] = 0;
- return;
+ // MB2WC wants the buffer size, not the string length hence +1
+ nLen = conv.MB2WC(m_pchData, psz, nLen + 1);
+
+ if ( nLen != (size_t)-1 )
+ {
+ // initialized ok, set the real length as nLength specified by
+ // the caller could be greater than the real string length
+ GetStringData()->nDataLength = nLen;
+ m_pchData[nLen] = 0;
+ return;
+ }
+ //else: the conversion failed -- leave the string empty (what else?)
}
- //else: the conversion failed -- leave the string empty (what else?)
}
Init();
size_t nLen;
if ( pwz )
{
- // calculate the needed size ourselves or use a provide one
+ // calculate the needed size ourselves or use the provided one
nLen = nLength == wxSTRING_MAXLEN ? conv.WC2MB(NULL, pwz, 0) : nLength;
}
else
if ( !AllocBuffer(nLen) )
{
wxFAIL_MSG( _T("out of memory in wxString::wxString") );
- return;
}
-
- // WC2MB wants the buffer size, not the string length
- if ( conv.WC2MB(m_pchData, pwz, nLen + 1) != (size_t)-1 )
+ else
{
- // initialized ok
- return;
+ // WC2MB wants the buffer size, not the string length
+ if ( conv.WC2MB(m_pchData, pwz, nLen + 1) != (size_t)-1 )
+ {
+ // initialized ok
+ return;
+ }
+ //else: the conversion failed -- leave the string empty (what else?)
}
- //else: the conversion failed -- leave the string empty (what else?)
}
Init();
return uiCount;
}
+#ifdef __WXWINCE__
+inline int isascii(wxChar c) { return (c >= 0) && (c <=127); }
+#endif
+
bool wxString::IsAscii() const
{
const wxChar *s = (const wxChar*) *this;
// ArrayString
// ============================================================================
+#include "wx/arrstr.h"
+
+#if !wxUSE_STL
+
// size increment = min(50% of current size, ARRAY_MAXSIZE_INCREMENT)
#define ARRAY_MAXSIZE_INCREMENT 4096
qsort(m_pItems, m_nCount, sizeof(wxChar *), (wxStringCompareFn)compareFunction);
}
-#if WXWIN_COMPATIBILITY_2_4
-
void wxArrayString::Sort(bool reverseOrder)
{
Sort(reverseOrder ? wxStringSortDescending : wxStringSortAscending);
}
-#endif // WXWIN_COMPATIBILITY_2_4
-
void wxArrayString::DoSort()
{
wxCHECK_RET( !m_autoSort, wxT("can't use this method with sorted arrays") );
return TRUE;
}
+#endif // !wxUSE_STL
+
int wxStringSortAscending(wxString* s1, wxString* s2)
{
return wxStrcmp(s1->c_str(), s2->c_str());