summaryrefslogtreecommitdiffstats
path: root/Python/pystrtod.c
diff options
context:
space:
mode:
authorEric Smith <eric@trueblade.com>2009-04-27 19:04:37 (GMT)
committerEric Smith <eric@trueblade.com>2009-04-27 19:04:37 (GMT)
commitcac7af6863a997376bffe00ecf07a62c5618a5d9 (patch)
tree625ae6ebde4f6027d49bb3d40b6955888527fb05 /Python/pystrtod.c
parentec047e0725cf31f24eb5ed3c43e6da843deea83a (diff)
downloadcpython-cac7af6863a997376bffe00ecf07a62c5618a5d9.zip
cpython-cac7af6863a997376bffe00ecf07a62c5618a5d9.tar.gz
cpython-cac7af6863a997376bffe00ecf07a62c5618a5d9.tar.bz2
Issue #5793: rationalize isdigit / isalpha / tolower, etc. Will port to py3k. Should fix Windows buildbot errors.
Diffstat (limited to 'Python/pystrtod.c')
-rw-r--r--Python/pystrtod.c24
1 files changed, 9 insertions, 15 deletions
diff --git a/Python/pystrtod.c b/Python/pystrtod.c
index ea7f1f5..e677305 100644
--- a/Python/pystrtod.c
+++ b/Python/pystrtod.c
@@ -3,12 +3,6 @@
#include <Python.h>
#include <locale.h>
-/* ascii character tests (as opposed to locale tests) */
-#define ISSPACE(c) ((c) == ' ' || (c) == '\f' || (c) == '\n' || \
- (c) == '\r' || (c) == '\t' || (c) == '\v')
-#define ISDIGIT(c) ((c) >= '0' && (c) <= '9')
-
-
/**
* PyOS_ascii_strtod:
* @nptr: the string to convert to a numeric value.
@@ -81,7 +75,7 @@ PyOS_ascii_strtod(const char *nptr, char **endptr)
p = nptr;
/* Skip leading space */
- while (ISSPACE(*p))
+ while (Py_ISSPACE(*p))
p++;
/* Process leading sign, if present */
@@ -124,7 +118,7 @@ PyOS_ascii_strtod(const char *nptr, char **endptr)
goto invalid_string;
/* Check that what's left begins with a digit or decimal point */
- if (!ISDIGIT(*p) && *p != '.')
+ if (!Py_ISDIGIT(*p) && *p != '.')
goto invalid_string;
digits_pos = p;
@@ -135,7 +129,7 @@ PyOS_ascii_strtod(const char *nptr, char **endptr)
swapped for the current locale's decimal point before we
call strtod. On the other hand, if we find the current
locale's decimal point then the input is invalid. */
- while (ISDIGIT(*p))
+ while (Py_ISDIGIT(*p))
p++;
if (*p == '.')
@@ -143,14 +137,14 @@ PyOS_ascii_strtod(const char *nptr, char **endptr)
decimal_point_pos = p++;
/* locate end of number */
- while (ISDIGIT(*p))
+ while (Py_ISDIGIT(*p))
p++;
if (*p == 'e' || *p == 'E')
p++;
if (*p == '+' || *p == '-')
p++;
- while (ISDIGIT(*p))
+ while (Py_ISDIGIT(*p))
p++;
end = p;
}
@@ -244,7 +238,7 @@ change_decimal_from_locale_to_dot(char* buffer)
if (*buffer == '+' || *buffer == '-')
buffer++;
- while (isdigit(Py_CHARMASK(*buffer)))
+ while (Py_ISDIGIT(*buffer))
buffer++;
if (strncmp(buffer, decimal_point, decimal_point_len) == 0) {
*buffer = '.';
@@ -306,7 +300,7 @@ ensure_minimum_exponent_length(char* buffer, size_t buf_size)
/* Find the end of the exponent, keeping track of leading
zeros. */
- while (*p && isdigit(Py_CHARMASK(*p))) {
+ while (*p && Py_ISDIGIT(*p)) {
if (in_leading_zeros && *p == '0')
++leading_zero_cnt;
if (*p != '0')
@@ -369,11 +363,11 @@ ensure_decimal_point(char* buffer, size_t buf_size)
/* Skip leading sign, if present. I think this could only
ever be '-', but it can't hurt to check for both. */
++p;
- while (*p && isdigit(Py_CHARMASK(*p)))
+ while (*p && Py_ISDIGIT(*p))
++p;
if (*p == '.') {
- if (isdigit(Py_CHARMASK(*(p+1)))) {
+ if (Py_ISDIGIT(*(p+1))) {
/* Nothing to do, we already have a decimal
point and a digit after it */
}