- wxStringCharType *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)
-#ifndef __WXWINCE__
- && (errno != ERANGE)
-#endif
- ;
-}
+#define WX_STRING_TO_INT_TYPE(val, base, func) \
+ wxCHECK_MSG( val, false, _T("NULL output pointer") ); \
+ wxASSERT_MSG( !base || (base > 1 && base <= 36), _T("invalid base") ); \
+ \
+ DO_IF_NOT_WINCE( errno = 0; ) \
+ \
+ const wxStringCharType *start = wx_str(); \
+ wxStringCharType *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) \
+ DO_IF_NOT_WINCE( && (errno != ERANGE) )