Changeset 391 for python/trunk/Objects/bytes_methods.c
- Timestamp:
- Mar 19, 2014, 11:31:01 PM (11 years ago)
- Location:
- python/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
python/trunk
-
Property svn:mergeinfo
set to
/python/vendor/Python-2.7.6 merged eligible /python/vendor/current merged eligible
-
Property svn:mergeinfo
set to
-
python/trunk/Objects/bytes_methods.c
r2 r391 2 2 #include "bytes_methods.h" 3 3 4 /* Our own locale-independent ctype.h-like macros */5 6 const unsigned int _Py_ctype_table[256] = {7 0, /* 0x0 '\x00' */8 0, /* 0x1 '\x01' */9 0, /* 0x2 '\x02' */10 0, /* 0x3 '\x03' */11 0, /* 0x4 '\x04' */12 0, /* 0x5 '\x05' */13 0, /* 0x6 '\x06' */14 0, /* 0x7 '\x07' */15 0, /* 0x8 '\x08' */16 FLAG_SPACE, /* 0x9 '\t' */17 FLAG_SPACE, /* 0xa '\n' */18 FLAG_SPACE, /* 0xb '\v' */19 FLAG_SPACE, /* 0xc '\f' */20 FLAG_SPACE, /* 0xd '\r' */21 0, /* 0xe '\x0e' */22 0, /* 0xf '\x0f' */23 0, /* 0x10 '\x10' */24 0, /* 0x11 '\x11' */25 0, /* 0x12 '\x12' */26 0, /* 0x13 '\x13' */27 0, /* 0x14 '\x14' */28 0, /* 0x15 '\x15' */29 0, /* 0x16 '\x16' */30 0, /* 0x17 '\x17' */31 0, /* 0x18 '\x18' */32 0, /* 0x19 '\x19' */33 0, /* 0x1a '\x1a' */34 0, /* 0x1b '\x1b' */35 0, /* 0x1c '\x1c' */36 0, /* 0x1d '\x1d' */37 0, /* 0x1e '\x1e' */38 0, /* 0x1f '\x1f' */39 FLAG_SPACE, /* 0x20 ' ' */40 0, /* 0x21 '!' */41 0, /* 0x22 '"' */42 0, /* 0x23 '#' */43 0, /* 0x24 '$' */44 0, /* 0x25 '%' */45 0, /* 0x26 '&' */46 0, /* 0x27 "'" */47 0, /* 0x28 '(' */48 0, /* 0x29 ')' */49 0, /* 0x2a '*' */50 0, /* 0x2b '+' */51 0, /* 0x2c ',' */52 0, /* 0x2d '-' */53 0, /* 0x2e '.' */54 0, /* 0x2f '/' */55 FLAG_DIGIT|FLAG_XDIGIT, /* 0x30 '0' */56 FLAG_DIGIT|FLAG_XDIGIT, /* 0x31 '1' */57 FLAG_DIGIT|FLAG_XDIGIT, /* 0x32 '2' */58 FLAG_DIGIT|FLAG_XDIGIT, /* 0x33 '3' */59 FLAG_DIGIT|FLAG_XDIGIT, /* 0x34 '4' */60 FLAG_DIGIT|FLAG_XDIGIT, /* 0x35 '5' */61 FLAG_DIGIT|FLAG_XDIGIT, /* 0x36 '6' */62 FLAG_DIGIT|FLAG_XDIGIT, /* 0x37 '7' */63 FLAG_DIGIT|FLAG_XDIGIT, /* 0x38 '8' */64 FLAG_DIGIT|FLAG_XDIGIT, /* 0x39 '9' */65 0, /* 0x3a ':' */66 0, /* 0x3b ';' */67 0, /* 0x3c '<' */68 0, /* 0x3d '=' */69 0, /* 0x3e '>' */70 0, /* 0x3f '?' */71 0, /* 0x40 '@' */72 FLAG_UPPER|FLAG_XDIGIT, /* 0x41 'A' */73 FLAG_UPPER|FLAG_XDIGIT, /* 0x42 'B' */74 FLAG_UPPER|FLAG_XDIGIT, /* 0x43 'C' */75 FLAG_UPPER|FLAG_XDIGIT, /* 0x44 'D' */76 FLAG_UPPER|FLAG_XDIGIT, /* 0x45 'E' */77 FLAG_UPPER|FLAG_XDIGIT, /* 0x46 'F' */78 FLAG_UPPER, /* 0x47 'G' */79 FLAG_UPPER, /* 0x48 'H' */80 FLAG_UPPER, /* 0x49 'I' */81 FLAG_UPPER, /* 0x4a 'J' */82 FLAG_UPPER, /* 0x4b 'K' */83 FLAG_UPPER, /* 0x4c 'L' */84 FLAG_UPPER, /* 0x4d 'M' */85 FLAG_UPPER, /* 0x4e 'N' */86 FLAG_UPPER, /* 0x4f 'O' */87 FLAG_UPPER, /* 0x50 'P' */88 FLAG_UPPER, /* 0x51 'Q' */89 FLAG_UPPER, /* 0x52 'R' */90 FLAG_UPPER, /* 0x53 'S' */91 FLAG_UPPER, /* 0x54 'T' */92 FLAG_UPPER, /* 0x55 'U' */93 FLAG_UPPER, /* 0x56 'V' */94 FLAG_UPPER, /* 0x57 'W' */95 FLAG_UPPER, /* 0x58 'X' */96 FLAG_UPPER, /* 0x59 'Y' */97 FLAG_UPPER, /* 0x5a 'Z' */98 0, /* 0x5b '[' */99 0, /* 0x5c '\\' */100 0, /* 0x5d ']' */101 0, /* 0x5e '^' */102 0, /* 0x5f '_' */103 0, /* 0x60 '`' */104 FLAG_LOWER|FLAG_XDIGIT, /* 0x61 'a' */105 FLAG_LOWER|FLAG_XDIGIT, /* 0x62 'b' */106 FLAG_LOWER|FLAG_XDIGIT, /* 0x63 'c' */107 FLAG_LOWER|FLAG_XDIGIT, /* 0x64 'd' */108 FLAG_LOWER|FLAG_XDIGIT, /* 0x65 'e' */109 FLAG_LOWER|FLAG_XDIGIT, /* 0x66 'f' */110 FLAG_LOWER, /* 0x67 'g' */111 FLAG_LOWER, /* 0x68 'h' */112 FLAG_LOWER, /* 0x69 'i' */113 FLAG_LOWER, /* 0x6a 'j' */114 FLAG_LOWER, /* 0x6b 'k' */115 FLAG_LOWER, /* 0x6c 'l' */116 FLAG_LOWER, /* 0x6d 'm' */117 FLAG_LOWER, /* 0x6e 'n' */118 FLAG_LOWER, /* 0x6f 'o' */119 FLAG_LOWER, /* 0x70 'p' */120 FLAG_LOWER, /* 0x71 'q' */121 FLAG_LOWER, /* 0x72 'r' */122 FLAG_LOWER, /* 0x73 's' */123 FLAG_LOWER, /* 0x74 't' */124 FLAG_LOWER, /* 0x75 'u' */125 FLAG_LOWER, /* 0x76 'v' */126 FLAG_LOWER, /* 0x77 'w' */127 FLAG_LOWER, /* 0x78 'x' */128 FLAG_LOWER, /* 0x79 'y' */129 FLAG_LOWER, /* 0x7a 'z' */130 0, /* 0x7b '{' */131 0, /* 0x7c '|' */132 0, /* 0x7d '}' */133 0, /* 0x7e '~' */134 0, /* 0x7f '\x7f' */135 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,137 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,138 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,139 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143 };144 145 146 const unsigned char _Py_ctype_tolower[256] = {147 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,148 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,149 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,150 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,151 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,152 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,153 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,154 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,155 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,156 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,157 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,158 0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,159 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,160 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,161 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,162 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,163 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,164 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,165 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,166 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,167 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,168 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,169 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,170 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,171 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,172 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,173 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,174 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,175 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,176 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,177 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,178 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,179 };180 181 const unsigned char _Py_ctype_toupper[256] = {182 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,183 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,184 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,185 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,186 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,187 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,188 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,189 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,190 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,191 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,192 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,193 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,194 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,195 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,196 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,197 0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,198 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,199 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,200 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,201 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,202 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,203 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,204 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,205 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,206 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,207 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,208 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,209 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,210 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,211 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,212 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,213 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,214 };215 216 217 4 PyDoc_STRVAR_shared(_Py_isspace__doc__, 218 5 "B.isspace() -> bool\n\ … … 229 16 230 17 /* Shortcut for single character strings */ 231 if (len == 1 && ISSPACE(*p))18 if (len == 1 && Py_ISSPACE(*p)) 232 19 Py_RETURN_TRUE; 233 20 … … 238 25 e = p + len; 239 26 for (; p < e; p++) { 240 if (!ISSPACE(*p))27 if (!Py_ISSPACE(*p)) 241 28 Py_RETURN_FALSE; 242 29 } … … 259 46 260 47 /* Shortcut for single character strings */ 261 if (len == 1 && ISALPHA(*p))262 263 264 /* Special case for empty strings */ 265 if (len == 0) 266 267 268 e = p + len; 269 for (; p < e; p++) { 270 if (!ISALPHA(*p))271 48 if (len == 1 && Py_ISALPHA(*p)) 49 Py_RETURN_TRUE; 50 51 /* Special case for empty strings */ 52 if (len == 0) 53 Py_RETURN_FALSE; 54 55 e = p + len; 56 for (; p < e; p++) { 57 if (!Py_ISALPHA(*p)) 58 Py_RETURN_FALSE; 272 59 } 273 60 Py_RETURN_TRUE; … … 289 76 290 77 /* Shortcut for single character strings */ 291 if (len == 1 && ISALNUM(*p))292 293 294 /* Special case for empty strings */ 295 if (len == 0) 296 297 298 e = p + len; 299 for (; p < e; p++) { 300 if (!ISALNUM(*p))301 78 if (len == 1 && Py_ISALNUM(*p)) 79 Py_RETURN_TRUE; 80 81 /* Special case for empty strings */ 82 if (len == 0) 83 Py_RETURN_FALSE; 84 85 e = p + len; 86 for (; p < e; p++) { 87 if (!Py_ISALNUM(*p)) 88 Py_RETURN_FALSE; 302 89 } 303 90 Py_RETURN_TRUE; … … 319 106 320 107 /* Shortcut for single character strings */ 321 if (len == 1 && ISDIGIT(*p))322 323 324 /* Special case for empty strings */ 325 if (len == 0) 326 327 328 e = p + len; 329 for (; p < e; p++) { 330 if (!ISDIGIT(*p))331 108 if (len == 1 && Py_ISDIGIT(*p)) 109 Py_RETURN_TRUE; 110 111 /* Special case for empty strings */ 112 if (len == 0) 113 Py_RETURN_FALSE; 114 115 e = p + len; 116 for (; p < e; p++) { 117 if (!Py_ISDIGIT(*p)) 118 Py_RETURN_FALSE; 332 119 } 333 120 Py_RETURN_TRUE; … … 351 138 /* Shortcut for single character strings */ 352 139 if (len == 1) 353 return PyBool_FromLong(ISLOWER(*p));354 355 /* Special case for empty strings */ 356 if (len == 0) 357 140 return PyBool_FromLong(Py_ISLOWER(*p)); 141 142 /* Special case for empty strings */ 143 if (len == 0) 144 Py_RETURN_FALSE; 358 145 359 146 e = p + len; 360 147 cased = 0; 361 148 for (; p < e; p++) { 362 if (ISUPPER(*p))363 364 else if (!cased &&ISLOWER(*p))365 149 if (Py_ISUPPER(*p)) 150 Py_RETURN_FALSE; 151 else if (!cased && Py_ISLOWER(*p)) 152 cased = 1; 366 153 } 367 154 return PyBool_FromLong(cased); … … 385 172 /* Shortcut for single character strings */ 386 173 if (len == 1) 387 return PyBool_FromLong(ISUPPER(*p));388 389 /* Special case for empty strings */ 390 if (len == 0) 391 174 return PyBool_FromLong(Py_ISUPPER(*p)); 175 176 /* Special case for empty strings */ 177 if (len == 0) 178 Py_RETURN_FALSE; 392 179 393 180 e = p + len; 394 181 cased = 0; 395 182 for (; p < e; p++) { 396 if (ISLOWER(*p))397 398 else if (!cased &&ISUPPER(*p))399 183 if (Py_ISLOWER(*p)) 184 Py_RETURN_FALSE; 185 else if (!cased && Py_ISUPPER(*p)) 186 cased = 1; 400 187 } 401 188 return PyBool_FromLong(cased); … … 421 208 /* Shortcut for single character strings */ 422 209 if (len == 1) 423 return PyBool_FromLong(ISUPPER(*p));424 425 /* Special case for empty strings */ 426 if (len == 0) 427 210 return PyBool_FromLong(Py_ISUPPER(*p)); 211 212 /* Special case for empty strings */ 213 if (len == 0) 214 Py_RETURN_FALSE; 428 215 429 216 e = p + len; … … 431 218 previous_is_cased = 0; 432 219 for (; p < e; p++) { 433 434 435 if (ISUPPER(ch)) {436 437 438 439 440 441 else if (ISLOWER(ch)) {442 443 444 445 446 447 448 220 register const unsigned char ch = *p; 221 222 if (Py_ISUPPER(ch)) { 223 if (previous_is_cased) 224 Py_RETURN_FALSE; 225 previous_is_cased = 1; 226 cased = 1; 227 } 228 else if (Py_ISLOWER(ch)) { 229 if (!previous_is_cased) 230 Py_RETURN_FALSE; 231 previous_is_cased = 1; 232 cased = 1; 233 } 234 else 235 previous_is_cased = 0; 449 236 } 450 237 return PyBool_FromLong(cased); … … 460 247 _Py_bytes_lower(char *result, const char *cptr, Py_ssize_t len) 461 248 { 462 463 464 /* 465 466 467 468 469 470 */ 471 472 473 474 475 476 if (ISUPPER(c))477 result[i] =TOLOWER(c);478 249 Py_ssize_t i; 250 251 /* 252 newobj = PyString_FromStringAndSize(NULL, len); 253 if (!newobj) 254 return NULL; 255 256 s = PyString_AS_STRING(newobj); 257 */ 258 259 Py_MEMCPY(result, cptr, len); 260 261 for (i = 0; i < len; i++) { 262 int c = Py_CHARMASK(result[i]); 263 if (Py_ISUPPER(c)) 264 result[i] = Py_TOLOWER(c); 265 } 479 266 } 480 267 … … 488 275 _Py_bytes_upper(char *result, const char *cptr, Py_ssize_t len) 489 276 { 490 491 492 /* 493 494 495 496 497 498 */ 499 500 501 502 503 504 if (ISLOWER(c))505 result[i] =TOUPPER(c);506 277 Py_ssize_t i; 278 279 /* 280 newobj = PyString_FromStringAndSize(NULL, len); 281 if (!newobj) 282 return NULL; 283 284 s = PyString_AS_STRING(newobj); 285 */ 286 287 Py_MEMCPY(result, cptr, len); 288 289 for (i = 0; i < len; i++) { 290 int c = Py_CHARMASK(result[i]); 291 if (Py_ISLOWER(c)) 292 result[i] = Py_TOUPPER(c); 293 } 507 294 } 508 295 … … 517 304 _Py_bytes_title(char *result, char *s, Py_ssize_t len) 518 305 { 519 520 521 522 /* 523 524 525 526 527 */ 528 529 530 if (ISLOWER(c)) {531 532 c =TOUPPER(c);533 534 } else if (ISUPPER(c)) {535 536 c =TOLOWER(c);537 538 539 540 541 306 Py_ssize_t i; 307 int previous_is_cased = 0; 308 309 /* 310 newobj = PyString_FromStringAndSize(NULL, len); 311 if (newobj == NULL) 312 return NULL; 313 s_new = PyString_AsString(newobj); 314 */ 315 for (i = 0; i < len; i++) { 316 int c = Py_CHARMASK(*s++); 317 if (Py_ISLOWER(c)) { 318 if (!previous_is_cased) 319 c = Py_TOUPPER(c); 320 previous_is_cased = 1; 321 } else if (Py_ISUPPER(c)) { 322 if (previous_is_cased) 323 c = Py_TOLOWER(c); 324 previous_is_cased = 1; 325 } else 326 previous_is_cased = 0; 327 *result++ = c; 328 } 542 329 } 543 330 … … 546 333 "B.capitalize() -> copy of B\n\ 547 334 \n\ 548 Return a copy of B with only its first character capitalized (ASCII)."); 335 Return a copy of B with only its first character capitalized (ASCII)\n\ 336 and the rest lower-cased."); 549 337 550 338 void 551 339 _Py_bytes_capitalize(char *result, char *s, Py_ssize_t len) 552 340 { 553 554 555 /* 556 557 558 559 560 */ 561 562 563 if (ISLOWER(c))564 *result =TOUPPER(c);565 566 567 568 569 570 571 if (ISUPPER(c))572 *result =TOLOWER(c);573 574 575 576 341 Py_ssize_t i; 342 343 /* 344 newobj = PyString_FromStringAndSize(NULL, len); 345 if (newobj == NULL) 346 return NULL; 347 s_new = PyString_AsString(newobj); 348 */ 349 if (0 < len) { 350 int c = Py_CHARMASK(*s++); 351 if (Py_ISLOWER(c)) 352 *result = Py_TOUPPER(c); 353 else 354 *result = c; 355 result++; 356 } 357 for (i = 1; i < len; i++) { 358 int c = Py_CHARMASK(*s++); 359 if (Py_ISUPPER(c)) 360 *result = Py_TOLOWER(c); 361 else 362 *result = c; 363 result++; 364 } 577 365 } 578 366 … … 587 375 _Py_bytes_swapcase(char *result, char *s, Py_ssize_t len) 588 376 { 589 590 591 /* 592 593 594 595 596 */ 597 598 599 if (ISLOWER(c)) {600 *result =TOUPPER(c);601 602 else if (ISUPPER(c)) {603 *result =TOLOWER(c);604 605 606 607 608 609 } 610 377 Py_ssize_t i; 378 379 /* 380 newobj = PyString_FromStringAndSize(NULL, len); 381 if (newobj == NULL) 382 return NULL; 383 s_new = PyString_AsString(newobj); 384 */ 385 for (i = 0; i < len; i++) { 386 int c = Py_CHARMASK(*s++); 387 if (Py_ISLOWER(c)) { 388 *result = Py_TOUPPER(c); 389 } 390 else if (Py_ISUPPER(c)) { 391 *result = Py_TOLOWER(c); 392 } 393 else 394 *result = c; 395 result++; 396 } 397 } 398
Note:
See TracChangeset
for help on using the changeset viewer.