X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bca6a3a5553884d5e210706b144dc3855798934d..a19063065b6abe40fc9fb373d6f96ea4e6ab616a:/src/common/string.cpp diff --git a/src/common/string.cpp b/src/common/string.cpp index 6bfe815b8e..4551c66931 100644 --- a/src/common/string.cpp +++ b/src/common/string.cpp @@ -35,7 +35,11 @@ #endif #include -#include + +#ifndef __WXWINCE__ + #include +#endif + #include #include @@ -1604,7 +1608,7 @@ wxString& wxString::Trim(bool bFromRight) reverse_iterator psz = rbegin(); while ( (psz != rend()) && wxSafeIsspace(*psz) ) psz++; - + // truncate at trailing space start erase(psz.base(), end()); } @@ -1677,68 +1681,52 @@ int wxString::Find(const wxChar *pszSub) const // the implementation of all the functions below is exactly the same so factor // it out -#ifndef __WATCOMC__ + +#ifdef __WATCOMC__ + #define STR2INTLINK _WCRTLINK +#else + #define STR2INTLINK +#endif template bool wxStringToIntType(const wxChar *start, T *val, int base, - T (*func)(const wxChar *, wxChar **, int)) + T STR2INTLINK (*func)(const wxChar *, wxChar **, int)) { wxCHECK_MSG( val, false, _T("NULL output pointer") ); wxASSERT_MSG( !base || (base > 1 && base <= 36), _T("invalid base") ); +#ifndef __WXWINCE__ errno = 0; +#endif wxChar *end; *val = (*func)(start, &end, base); // return true only if scan was stopped by the terminating NUL and if the // string was not empty to start with and no under/overflow occurred - return !*end && (end != start) && (errno != ERANGE); -} - -#else - -// FIXME, TODO, ASAP !!! - ugly trick to make release for Open Watcom possible -// without changing code flow for other compilers - -#define wxStringToIntType(start, val, base, func) \ - wxCHECK_MSG( val, false, _T("NULL output pointer") ); \ - wxASSERT_MSG( !base || (base > 1 && base <= 36), _T("invalid base") ); \ - \ - errno = 0; \ - \ - wxChar *end; \ - *val = (*func)(start, &end, base); \ - \ - return !*end && (end != start) && (errno != ERANGE) - + return !*end && (end != start) +#ifndef __WXWINCE__ + && (errno != ERANGE) #endif + ; +} bool wxString::ToLong(long *val, int base) const { -#ifndef __WATCOMC__ - return -#endif - wxStringToIntType(c_str(), val, base, wxStrtol); + return wxStringToIntType(c_str(), val, base, wxStrtol); } bool wxString::ToULong(unsigned long *val, int base) const { -#ifndef __WATCOMC__ - return -#endif - wxStringToIntType(c_str(), val, base, wxStrtoul); + return wxStringToIntType(c_str(), val, base, wxStrtoul); } bool wxString::ToLongLong(wxLongLong_t *val, int base) const { #ifdef wxHAS_STRTOLL -#ifndef __WATCOMC__ - return -#endif - wxStringToIntType(c_str(), val, base, wxStrtoll); + return wxStringToIntType(c_str(), val, base, wxStrtoll); #else // TODO: implement this ourselves wxUnusedVar(val); @@ -1750,10 +1738,7 @@ bool wxString::ToLongLong(wxLongLong_t *val, int base) const bool wxString::ToULongLong(wxULongLong_t *val, int base) const { #ifdef wxHAS_STRTOLL -#ifndef __WATCOMC__ - return -#endif - wxStringToIntType(c_str(), val, base, wxStrtoull); + return wxStringToIntType(c_str(), val, base, wxStrtoull); #else // TODO: implement this ourselves wxUnusedVar(val); @@ -1766,7 +1751,9 @@ bool wxString::ToDouble(double *val) const { wxCHECK_MSG( val, false, _T("NULL pointer in wxString::ToDouble") ); +#ifndef __WXWINCE__ errno = 0; +#endif const wxChar *start = c_str(); wxChar *end; @@ -1774,7 +1761,11 @@ bool wxString::ToDouble(double *val) const // return true only if scan was stopped by the terminating NUL and if the // string was not empty to start with and no under/overflow occurred - return !*end && (end != start) && (errno != ERANGE); + return !*end && (end != start) +#ifndef __WXWINCE__ + && (errno != ERANGE) +#endif + ; } // ---------------------------------------------------------------------------