]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/string.cpp
Minor header cleaning.
[wxWidgets.git] / src / common / string.cpp
index 8f20b9ac13d3a347fae78413cab446ac81078d71..b0bc3a1864c3d7ff25ab176fefa6f00a5d76e2aa 100644 (file)
@@ -1677,6 +1677,8 @@ int wxString::Find(const wxChar *pszSub) const
 
 // the implementation of all the functions below is exactly the same so factor
 // it out
+#ifndef __WATCOMC__
+
 template <typename T>
 bool wxStringToIntType(const wxChar *start,
                        T *val,
@@ -1696,22 +1698,44 @@ bool wxStringToIntType(const wxChar *start,
     return !*end && (end != start) && (errno != ERANGE);
 }
 
+#define wxSTR2INT(val, b, func) return wxStringToIntType(c_str(), val, b, func)
+
+#else // __WATCOMC__
+
+//  FIXME, TODO, ASAP !!! - ugly trick to make release for Open Watcom possible
+//  without changing code flow for other compilers
+
+#define wxSTR2INT(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)(c_str(), &end, base);                                      \
+                                                                              \
+    return !*end && (end != c_str()) && (errno != ERANGE)
+
+#endif // !__WATCOMC__/__WATCOMC__
+
 bool wxString::ToLong(long *val, int base) const
 {
-    return wxStringToIntType(c_str(), val, base, wxStrtol);
+    wxSTR2INT(val, base, wxStrtol);
 }
 
 bool wxString::ToULong(unsigned long *val, int base) const
 {
-    return wxStringToIntType(c_str(), val, base, wxStrtoul);
+    wxSTR2INT(val, base, wxStrtoul);
 }
 
 bool wxString::ToLongLong(wxLongLong_t *val, int base) const
 {
 #ifdef wxHAS_STRTOLL
-    return wxStringToIntType(c_str(), val, base, wxStrtoll);
+    wxSTR2INT(val, base, wxStrtoll);
 #else
     // TODO: implement this ourselves
+    wxUnusedVar(val);
+    wxUnusedVar(base);
     return false;
 #endif // wxHAS_STRTOLL
 }
@@ -1719,9 +1743,11 @@ bool wxString::ToLongLong(wxLongLong_t *val, int base) const
 bool wxString::ToULongLong(wxULongLong_t *val, int base) const
 {
 #ifdef wxHAS_STRTOLL
-    return wxStringToIntType(c_str(), val, base, wxStrtoull);
+    wxSTR2INT(val, base, wxStrtoull);
 #else
     // TODO: implement this ourselves
+    wxUnusedVar(val);
+    wxUnusedVar(base);
     return false;
 #endif
 }