Issue #10288: The deprecated family of "char"-handling macros

(ISLOWER()/ISUPPER()/etc) have now been removed: use Py_ISLOWER() etc
instead.
This commit is contained in:
David Malcolm 2010-11-05 17:23:41 +00:00
parent de11b189d1
commit 9696088b6d
4 changed files with 28 additions and 59 deletions

View File

@ -38,41 +38,6 @@ extern const char _Py_capitalize__doc__[];
extern const char _Py_swapcase__doc__[]; extern const char _Py_swapcase__doc__[];
extern const char _Py_maketrans__doc__[]; extern const char _Py_maketrans__doc__[];
/* These are left in for backward compatibility and will be removed
in 2.8/3.2 */
#define ISLOWER(c) Py_ISLOWER(c)
#define ISUPPER(c) Py_ISUPPER(c)
#define ISALPHA(c) Py_ISALPHA(c)
#define ISDIGIT(c) Py_ISDIGIT(c)
#define ISXDIGIT(c) Py_ISXDIGIT(c)
#define ISALNUM(c) Py_ISALNUM(c)
#define ISSPACE(c) Py_ISSPACE(c)
#undef islower
#define islower(c) undefined_islower(c)
#undef isupper
#define isupper(c) undefined_isupper(c)
#undef isalpha
#define isalpha(c) undefined_isalpha(c)
#undef isdigit
#define isdigit(c) undefined_isdigit(c)
#undef isxdigit
#define isxdigit(c) undefined_isxdigit(c)
#undef isalnum
#define isalnum(c) undefined_isalnum(c)
#undef isspace
#define isspace(c) undefined_isspace(c)
/* These are left in for backward compatibility and will be removed
in 2.8/3.2 */
#define TOLOWER(c) Py_TOLOWER(c)
#define TOUPPER(c) Py_TOUPPER(c)
#undef tolower
#define tolower(c) undefined_tolower(c)
#undef toupper
#define toupper(c) undefined_toupper(c)
/* this is needed because some docs are shared from the .o, not static */ /* this is needed because some docs are shared from the .o, not static */
#define PyDoc_STRVAR_shared(name,str) const char name[] = PyDoc_STR(str) #define PyDoc_STRVAR_shared(name,str) const char name[] = PyDoc_STR(str)

View File

@ -252,6 +252,10 @@ Extensions
C-API C-API
----- -----
- Issue #10288: The deprecated family of "char"-handling macros
(ISLOWER()/ISUPPER()/etc) have now been removed: use Py_ISLOWER() etc
instead.
- Issue #9778: Hash values are now always the size of pointers. A new Py_hash_t - Issue #9778: Hash values are now always the size of pointers. A new Py_hash_t
type has been introduced. type has been introduced.

View File

@ -178,7 +178,7 @@ PyBytes_FromFormatV(const char *format, va_list vargs)
for (f = format; *f; f++) { for (f = format; *f; f++) {
if (*f == '%') { if (*f == '%') {
const char* p = f; const char* p = f;
while (*++f && *f != '%' && !ISALPHA(*f)) while (*++f && *f != '%' && !Py_ISALPHA(*f))
; ;
/* skip the 'l' or 'z' in {%ld, %zd, %lu, %zu} since /* skip the 'l' or 'z' in {%ld, %zd, %lu, %zu} since
@ -247,15 +247,15 @@ PyBytes_FromFormatV(const char *format, va_list vargs)
/* parse the width.precision part (we're only /* parse the width.precision part (we're only
interested in the precision value, if any) */ interested in the precision value, if any) */
n = 0; n = 0;
while (ISDIGIT(*f)) while (Py_ISDIGIT(*f))
n = (n*10) + *f++ - '0'; n = (n*10) + *f++ - '0';
if (*f == '.') { if (*f == '.') {
f++; f++;
n = 0; n = 0;
while (ISDIGIT(*f)) while (Py_ISDIGIT(*f))
n = (n*10) + *f++ - '0'; n = (n*10) + *f++ - '0';
} }
while (*f && *f != '%' && !ISALPHA(*f)) while (*f && *f != '%' && !Py_ISALPHA(*f))
f++; f++;
/* handle the long flag, but only for %ld and %lu. /* handle the long flag, but only for %ld and %lu.
others can be added when necessary. */ others can be added when necessary. */
@ -446,22 +446,22 @@ PyObject *PyBytes_DecodeEscape(const char *s,
*p++ = c; *p++ = c;
break; break;
case 'x': case 'x':
if (s+1 < end && ISXDIGIT(s[0]) && ISXDIGIT(s[1])) { if (s+1 < end && Py_ISXDIGIT(s[0]) && Py_ISXDIGIT(s[1])) {
unsigned int x = 0; unsigned int x = 0;
c = Py_CHARMASK(*s); c = Py_CHARMASK(*s);
s++; s++;
if (ISDIGIT(c)) if (Py_ISDIGIT(c))
x = c - '0'; x = c - '0';
else if (ISLOWER(c)) else if (Py_ISLOWER(c))
x = 10 + c - 'a'; x = 10 + c - 'a';
else else
x = 10 + c - 'A'; x = 10 + c - 'A';
x = x << 4; x = x << 4;
c = Py_CHARMASK(*s); c = Py_CHARMASK(*s);
s++; s++;
if (ISDIGIT(c)) if (Py_ISDIGIT(c))
x += c - '0'; x += c - '0';
else if (ISLOWER(c)) else if (Py_ISLOWER(c))
x += 10 + c - 'a'; x += 10 + c - 'a';
else else
x += 10 + c - 'A'; x += 10 + c - 'A';
@ -1406,7 +1406,7 @@ do_strip(PyBytesObject *self, int striptype)
i = 0; i = 0;
if (striptype != RIGHTSTRIP) { if (striptype != RIGHTSTRIP) {
while (i < len && ISSPACE(s[i])) { while (i < len && Py_ISSPACE(s[i])) {
i++; i++;
} }
} }
@ -1415,7 +1415,7 @@ do_strip(PyBytesObject *self, int striptype)
if (striptype != LEFTSTRIP) { if (striptype != LEFTSTRIP) {
do { do {
j--; j--;
} while (j >= i && ISSPACE(s[j])); } while (j >= i && Py_ISSPACE(s[j]));
j++; j++;
} }
@ -2347,11 +2347,11 @@ hex_digit_to_int(Py_UNICODE c)
{ {
if (c >= 128) if (c >= 128)
return -1; return -1;
if (ISDIGIT(c)) if (Py_ISDIGIT(c))
return c - '0'; return c - '0';
else { else {
if (ISUPPER(c)) if (Py_ISUPPER(c))
c = TOLOWER(c); c = Py_TOLOWER(c);
if (c >= 'a' && c <= 'f') if (c >= 'a' && c <= 'f')
return c - 'a' + 10; return c - 'a' + 10;
} }

View File

@ -757,9 +757,9 @@ PyUnicode_FromFormatV(const char *format, va_list vargs)
continue; continue;
if (*(f+1)=='S' || *(f+1)=='R' || *(f+1)=='A') if (*(f+1)=='S' || *(f+1)=='R' || *(f+1)=='A')
++callcount; ++callcount;
while (ISDIGIT((unsigned)*f)) while (Py_ISDIGIT((unsigned)*f))
width = (width*10) + *f++ - '0'; width = (width*10) + *f++ - '0';
while (*++f && *f != '%' && !ISALPHA((unsigned)*f)) while (*++f && *f != '%' && !Py_ISALPHA((unsigned)*f))
; ;
if (*f == 's') if (*f == 's')
++callcount; ++callcount;
@ -790,9 +790,9 @@ PyUnicode_FromFormatV(const char *format, va_list vargs)
#endif #endif
const char* p = f; const char* p = f;
width = 0; width = 0;
while (ISDIGIT((unsigned)*f)) while (Py_ISDIGIT((unsigned)*f))
width = (width*10) + *f++ - '0'; width = (width*10) + *f++ - '0';
while (*++f && *f != '%' && !ISALPHA((unsigned)*f)) while (*++f && *f != '%' && !Py_ISALPHA((unsigned)*f))
; ;
/* skip the 'l' or 'z' in {%ld, %zd, %lu, %zu} since /* skip the 'l' or 'z' in {%ld, %zd, %lu, %zu} since
@ -965,12 +965,12 @@ PyUnicode_FromFormatV(const char *format, va_list vargs)
zeropad = (*f == '0'); zeropad = (*f == '0');
/* parse the width.precision part */ /* parse the width.precision part */
width = 0; width = 0;
while (ISDIGIT((unsigned)*f)) while (Py_ISDIGIT((unsigned)*f))
width = (width*10) + *f++ - '0'; width = (width*10) + *f++ - '0';
precision = 0; precision = 0;
if (*f == '.') { if (*f == '.') {
f++; f++;
while (ISDIGIT((unsigned)*f)) while (Py_ISDIGIT((unsigned)*f))
precision = (precision*10) + *f++ - '0'; precision = (precision*10) + *f++ - '0';
} }
/* Handle %ld, %lu, %lld and %llu. */ /* Handle %ld, %lu, %lld and %llu. */
@ -1419,8 +1419,8 @@ normalize_encoding(const char *encoding,
while (*e) { while (*e) {
if (l == l_end) if (l == l_end)
return 0; return 0;
if (ISUPPER(*e)) { if (Py_ISUPPER(*e)) {
*l++ = TOLOWER(*e++); *l++ = Py_TOLOWER(*e++);
} }
else if (*e == '_') { else if (*e == '_') {
*l++ = '-'; *l++ = '-';
@ -3790,7 +3790,7 @@ PyObject *PyUnicode_DecodeUnicodeEscape(const char *s,
} }
for (i = 0; i < digits; ++i) { for (i = 0; i < digits; ++i) {
c = (unsigned char) s[i]; c = (unsigned char) s[i];
if (!ISXDIGIT(c)) { if (!Py_ISXDIGIT(c)) {
endinpos = (s+i+1)-starts; endinpos = (s+i+1)-starts;
if (unicode_decode_call_errorhandler( if (unicode_decode_call_errorhandler(
errors, &errorHandler, errors, &errorHandler,
@ -4156,7 +4156,7 @@ PyObject *PyUnicode_DecodeRawUnicodeEscape(const char *s,
outpos = p-PyUnicode_AS_UNICODE(v); outpos = p-PyUnicode_AS_UNICODE(v);
for (x = 0, i = 0; i < count; ++i, ++s) { for (x = 0, i = 0; i < count; ++i, ++s) {
c = (unsigned char)*s; c = (unsigned char)*s;
if (!ISXDIGIT(c)) { if (!Py_ISXDIGIT(c)) {
endinpos = s-starts; endinpos = s-starts;
if (unicode_decode_call_errorhandler( if (unicode_decode_call_errorhandler(
errors, &errorHandler, errors, &errorHandler,