#endif
#include <ctype.h>
-#include <errno.h>
+
+#ifndef __WXWINCE__
+ #include <errno.h>
+#endif
+
#include <string.h>
#include <stdlib.h>
reverse_iterator psz = rbegin();
while ( (psz != rend()) && wxSafeIsspace(*psz) )
psz++;
-
+
// truncate at trailing space start
erase(psz.base(), end());
}
// 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);
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);
{
wxCHECK_MSG( val, false, _T("NULL pointer in wxString::ToDouble") );
+#ifndef __WXWINCE__
errno = 0;
+#endif
const wxChar *start = c_str();
wxChar *end;
// 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
+ ;
}
// ---------------------------------------------------------------------------