- { return wxCRT_Isxdigit_lA(c, loc.Get()); }
- inline char wxTolower_l(char c, const wxXLocale& loc)
- { return wxCRT_Tolower_lA(c, loc.Get()); }
- inline char wxToupper_l(char c, const wxXLocale& loc)
- { return wxCRT_Toupper_lA(c, loc.Get()); }
+ { return wxCRT_Isxdigit_lA(static_cast<unsigned char>(c), loc.Get()); }
+ inline int wxTolower_l(char c, const wxXLocale& loc)
+ { return wxCRT_Tolower_lA(static_cast<unsigned char>(c), loc.Get()); }
+ inline int wxToupper_l(char c, const wxXLocale& loc)
+ { return wxCRT_Toupper_lA(static_cast<unsigned char>(c), loc.Get()); }
+
+
+ // stdlib functions for numeric <-> string conversion
+ // NOTE: GNU libc does not have ato[fil]_l functions;
+ // MSVC++8 does not have _strto[u]ll_l functions;
+ // thus we take the minimal set of functions provided in both environments:
+
+ #define wxCRT_Strtod_lA wxXLOCALE_IDENT(strtod_l)
+ #define wxCRT_Strtol_lA wxXLOCALE_IDENT(strtol_l)
+ #define wxCRT_Strtoul_lA wxXLOCALE_IDENT(strtoul_l)
+
+ inline double wxStrtod_lA(const char *c, char **endptr, const wxXLocale& loc)
+ { return wxCRT_Strtod_lA(c, endptr, loc.Get()); }
+ inline long wxStrtol_lA(const char *c, char **endptr, int base, const wxXLocale& loc)
+ { return wxCRT_Strtol_lA(c, endptr, base, loc.Get()); }
+ inline unsigned long wxStrtoul_lA(const char *c, char **endptr, int base, const wxXLocale& loc)
+ { return wxCRT_Strtoul_lA(c, endptr, base, loc.Get()); }