]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/string.cpp
rebaked after addition of XRC handler for richtext control
[wxWidgets.git] / src / common / string.cpp
index 6bfe815b8ea28af90eb010f75abaeae3af3f2c71..4551c669318d178426b6ff5b4f0629ad125781f6 100644 (file)
 #endif
 
 #include <ctype.h>
-#include <errno.h>
+
+#ifndef __WXWINCE__
+    #include <errno.h>
+#endif
+
 #include <string.h>
 #include <stdlib.h>
 
@@ -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 <typename T>
 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
+    ;
 }
 
 // ---------------------------------------------------------------------------