X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/19a2deddc5d218ac59b6f99ff959f586462e3220..c9baf9d7381850790040b26b11cc9456877ddc4e:/src/common/string.cpp diff --git a/src/common/string.cpp b/src/common/string.cpp index 7a30eb68ce..d0297f3c97 100644 --- a/src/common/string.cpp +++ b/src/common/string.cpp @@ -38,8 +38,6 @@ #include "wx/thread.h" #endif -#include "wx/regex.h" // for wxString::Matches() - #include #include #include @@ -135,7 +133,7 @@ extern const wxChar WXDLLEXPORT *wxEmptyString = &g_strEmpty.dummy; #endif //compiler #endif // no vsnprintf -#ifdef _AIX +#if defined(_AIX) // AIX has vsnprintf, but there's no prototype in the system headers. extern "C" int vsnprintf(char* str, size_t n, const char* format, va_list ap); #endif @@ -1458,7 +1456,11 @@ int wxString::PrintfV(const wxChar* pszFormat, va_list argptr) // of them) bool wxString::Matches(const wxChar *pszMask) const { -#if wxUSE_REGEX + // I disable this code as it doesn't seem to be faster (in fact, it seems + // to be much slower) than the old, hand-written code below and using it + // here requires always linking with libregex even if the user code doesn't + // use it +#if 0 // wxUSE_REGEX // first translate the shell-like mask into a regex wxString pattern; pattern.reserve(wxStrlen(pszMask)); @@ -1892,16 +1894,17 @@ wxString& wxString::replace(size_t nStart, size_t nLen, // ArrayString // ============================================================================ -// size increment = max(50% of current size, ARRAY_MAXSIZE_INCREMENT) +// size increment = min(50% of current size, ARRAY_MAXSIZE_INCREMENT) #define ARRAY_MAXSIZE_INCREMENT 4096 + #ifndef ARRAY_DEFAULT_INITIAL_SIZE // also defined in dynarray.h - #define ARRAY_DEFAULT_INITIAL_SIZE (16) +#define ARRAY_DEFAULT_INITIAL_SIZE (16) #endif #define STRING(p) ((wxString *)(&(p))) // ctor -wxArrayString::wxArrayString(bool autoSort) +void wxArrayString::Init(bool autoSort) { m_nSize = m_nCount = 0; @@ -1912,10 +1915,7 @@ wxArrayString::wxArrayString(bool autoSort) // copy ctor wxArrayString::wxArrayString(const wxArrayString& src) { - m_nSize = - m_nCount = 0; - m_pItems = (wxChar **) NULL; - m_autoSort = src.m_autoSort; + Init(src.m_autoSort); *this = src; } @@ -2045,6 +2045,21 @@ void wxArrayString::Shrink() } } +// return a wxString[] as required for some control ctors. +wxString* wxArrayString::GetStringArray() const +{ + wxString *array = 0; + + if( m_nCount > 0 ) + { + array = new wxString[m_nCount]; + for( size_t i = 0; i < m_nCount; i++ ) + array[i] = m_pItems[i]; + } + + return array; +} + // searches the array for an item (forward or backwards) int wxArrayString::Index(const wxChar *sz, bool bCase, bool bFromEnd) const { @@ -2222,7 +2237,8 @@ static wxArrayString::CompareFunction gs_compareFunction = NULL; static bool gs_sortAscending = TRUE; // function which is called by quick sort -static int LINKAGEMODE wxStringCompareFunction(const void *first, const void *second) +extern "C" int LINKAGEMODE +wxStringCompareFunction(const void *first, const void *second) { wxString *strFirst = (wxString *)first; wxString *strSecond = (wxString *)second;