// static class variables definition
// ---------------------------------------------------------------------------
-#if defined(__VISAGECPP__) && __IBMCPP__ >= 400
-// must define this static for VA or else you get multiply defined symbols
-// everywhere
-const unsigned int wxSTRING_MAXLEN = UINT_MAX - 100;
-#endif // Visual Age
-
#if !wxUSE_STL
- const size_t wxStringBase::npos = wxSTRING_MAXLEN;
+ //According to STL _must_ be a -1 size_t
+ const size_t wxStringBase::npos = (size_t) -1;
#endif
// ----------------------------------------------------------------------------
{
size_type len = length();
- if ( !CopyBeforeWrite() || !Alloc(len + n) ) {
+ if ( !Alloc(len + n) || !CopyBeforeWrite() ) {
wxFAIL_MSG( _T("out of memory in wxStringBase::append") );
}
GetStringData()->nDataLength = len + n;
// allocation failure handled by caller
return false;
}
- memcpy(m_pchData, pData->data(), nOldLen*sizeof(wxChar));
+ // +1 to copy the terminator, too
+ memcpy(m_pchData, pData->data(), (nOldLen+1)*sizeof(wxChar));
+ GetStringData()->nDataLength = nOldLen;
}
else {
nLen += EXTRA_ALLOC;
if ( n == npos ) n = wxStrlen(sz);
if ( n == 0 ) return *this;
- if ( !CopyBeforeWrite() || !Alloc(length() + n) ) {
+ if ( !Alloc(length() + n) || !CopyBeforeWrite() ) {
wxFAIL_MSG( _T("out of memory in wxStringBase::insert") );
}
while(p - c_str() + str.length() <= length() &&
wxTmemcmp(p, str.c_str(), str.length()) )
{
+ //Previosly passed as the first argument to wxTmemchr,
+ //but C/C++ standard does not specify evaluation order
+ //of arguments to functions -
+ //http://embedded.com/showArticle.jhtml?articleID=9900607
+ ++p;
+
//anchor again
- p = (const wxChar*)wxTmemchr(++p,
+ p = (const wxChar*)wxTmemchr(p,
str.c_str()[0],
length() - (p - c_str()));
size_t nRealSize;
wxWCharBuffer theBuffer = conv.cMB2WC(psz, nLen, &nRealSize);
- //Copy
+ //Copy
if (nRealSize)
assign( theBuffer.data() , nRealSize - 1 );
}
size_t nRealSize;
wxCharBuffer theBuffer = conv.cWC2MB(pwz, nLen, &nRealSize);
- //Copy
+ //Copy
if (nRealSize)
assign( theBuffer.data() , nRealSize - 1 );
}
if ( !s.Alloc(wxStrlen(psz) + str.Len()) ) {
wxFAIL_MSG( _T("out of memory in wxString::operator+") );
}
- s = str;
+ s += str;
s += psz;
return s;
wxString& wxString::Trim(bool bFromRight)
{
// first check if we're going to modify the string at all
- if ( !IsEmpty() &&
+ if ( !empty() &&
(
(bFromRight && wxSafeIsspace(GetChar(Len() - 1))) ||
(!bFromRight && wxSafeIsspace(GetChar(0u)))
return array;
}
+void wxArrayString::Remove(size_t nIndex, size_t nRemove)
+{
+ RemoveAt(nIndex, nRemove);
+}
+
#endif // WXWIN_COMPATIBILITY_2_4
// searches the array for an item (forward or backwards)