138
138
/* Shortcut for single character strings */
140
return PyBool_FromLong(Py_ISLOWER(*p));
140
return PyBool_FromLong(Py_ISLOWER(*p));
142
142
/* Special case for empty strings */
148
148
for (; p < e; p++) {
151
else if (!cased && Py_ISLOWER(*p))
151
else if (!cased && Py_ISLOWER(*p))
154
154
return PyBool_FromLong(cased);
172
172
/* Shortcut for single character strings */
174
return PyBool_FromLong(Py_ISUPPER(*p));
174
return PyBool_FromLong(Py_ISUPPER(*p));
176
176
/* Special case for empty strings */
182
182
for (; p < e; p++) {
185
else if (!cased && Py_ISUPPER(*p))
185
else if (!cased && Py_ISUPPER(*p))
188
188
return PyBool_FromLong(cased);
208
208
/* Shortcut for single character strings */
210
return PyBool_FromLong(Py_ISUPPER(*p));
210
return PyBool_FromLong(Py_ISUPPER(*p));
212
212
/* Special case for empty strings */
218
218
previous_is_cased = 0;
219
219
for (; p < e; p++) {
220
register const unsigned char ch = *p;
220
register const unsigned char ch = *p;
222
if (Py_ISUPPER(ch)) {
223
if (previous_is_cased)
225
previous_is_cased = 1;
228
else if (Py_ISLOWER(ch)) {
229
if (!previous_is_cased)
231
previous_is_cased = 1;
235
previous_is_cased = 0;
222
if (Py_ISUPPER(ch)) {
223
if (previous_is_cased)
225
previous_is_cased = 1;
228
else if (Py_ISLOWER(ch)) {
229
if (!previous_is_cased)
231
previous_is_cased = 1;
235
previous_is_cased = 0;
237
237
return PyBool_FromLong(cased);
247
247
_Py_bytes_lower(char *result, const char *cptr, Py_ssize_t len)
252
newobj = PyBytes_FromStringAndSize(NULL, len);
252
newobj = PyBytes_FromStringAndSize(NULL, len);
256
s = PyBytes_AS_STRING(newobj);
256
s = PyBytes_AS_STRING(newobj);
259
Py_MEMCPY(result, cptr, len);
259
Py_MEMCPY(result, cptr, len);
261
for (i = 0; i < len; i++) {
262
int c = Py_CHARMASK(result[i]);
264
result[i] = Py_TOLOWER(c);
261
for (i = 0; i < len; i++) {
262
int c = Py_CHARMASK(result[i]);
264
result[i] = Py_TOLOWER(c);
275
275
_Py_bytes_upper(char *result, const char *cptr, Py_ssize_t len)
280
newobj = PyBytes_FromStringAndSize(NULL, len);
280
newobj = PyBytes_FromStringAndSize(NULL, len);
284
s = PyBytes_AS_STRING(newobj);
284
s = PyBytes_AS_STRING(newobj);
287
Py_MEMCPY(result, cptr, len);
287
Py_MEMCPY(result, cptr, len);
289
for (i = 0; i < len; i++) {
290
int c = Py_CHARMASK(result[i]);
292
result[i] = Py_TOUPPER(c);
289
for (i = 0; i < len; i++) {
290
int c = Py_CHARMASK(result[i]);
292
result[i] = Py_TOUPPER(c);
304
304
_Py_bytes_title(char *result, char *s, Py_ssize_t len)
307
int previous_is_cased = 0;
307
int previous_is_cased = 0;
310
newobj = PyBytes_FromStringAndSize(NULL, len);
313
s_new = PyBytes_AsString(newobj);
310
newobj = PyBytes_FromStringAndSize(NULL, len);
313
s_new = PyBytes_AsString(newobj);
315
for (i = 0; i < len; i++) {
316
int c = Py_CHARMASK(*s++);
318
if (!previous_is_cased)
320
previous_is_cased = 1;
321
} else if (Py_ISUPPER(c)) {
322
if (previous_is_cased)
324
previous_is_cased = 1;
326
previous_is_cased = 0;
315
for (i = 0; i < len; i++) {
316
int c = Py_CHARMASK(*s++);
318
if (!previous_is_cased)
320
previous_is_cased = 1;
321
} else if (Py_ISUPPER(c)) {
322
if (previous_is_cased)
324
previous_is_cased = 1;
326
previous_is_cased = 0;
332
332
PyDoc_STRVAR_shared(_Py_capitalize__doc__,
333
333
"B.capitalize() -> copy of B\n\
335
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.");
338
339
_Py_bytes_capitalize(char *result, char *s, Py_ssize_t len)
343
newobj = PyBytes_FromStringAndSize(NULL, len);
346
s_new = PyBytes_AsString(newobj);
344
newobj = PyBytes_FromStringAndSize(NULL, len);
347
s_new = PyBytes_AsString(newobj);
349
int c = Py_CHARMASK(*s++);
351
*result = Py_TOUPPER(c);
356
for (i = 1; i < len; i++) {
357
int c = Py_CHARMASK(*s++);
359
*result = Py_TOLOWER(c);
350
int c = Py_CHARMASK(*s++);
352
*result = Py_TOUPPER(c);
357
for (i = 1; i < len; i++) {
358
int c = Py_CHARMASK(*s++);
360
*result = Py_TOLOWER(c);
374
375
_Py_bytes_swapcase(char *result, char *s, Py_ssize_t len)
379
newobj = PyBytes_FromStringAndSize(NULL, len);
382
s_new = PyBytes_AsString(newobj);
380
newobj = PyBytes_FromStringAndSize(NULL, len);
383
s_new = PyBytes_AsString(newobj);
384
for (i = 0; i < len; i++) {
385
int c = Py_CHARMASK(*s++);
387
*result = Py_TOUPPER(c);
389
else if (Py_ISUPPER(c)) {
390
*result = Py_TOLOWER(c);
385
for (i = 0; i < len; i++) {
386
int c = Py_CHARMASK(*s++);
388
*result = Py_TOUPPER(c);
390
else if (Py_ISUPPER(c)) {
391
*result = Py_TOLOWER(c);
426
427
_Py_bytes_maketrans(PyObject *args)
428
PyObject *frm, *to, *res = NULL;
436
if (!PyArg_ParseTuple(args, "OO:maketrans", &frm, &to))
438
if (_getbuffer(frm, &bfrm) < 0)
440
if (_getbuffer(to, &bto) < 0)
442
if (bfrm.len != bto.len) {
443
PyErr_Format(PyExc_ValueError,
444
"maketrans arguments must have same length");
447
res = PyBytes_FromStringAndSize(NULL, 256);
451
p = PyBytes_AS_STRING(res);
452
for (i = 0; i < 256; i++)
454
for (i = 0; i < bfrm.len; i++) {
455
p[((unsigned char *)bfrm.buf)[i]] = ((char *)bto.buf)[i];
429
PyObject *frm, *to, *res = NULL;
437
if (!PyArg_ParseTuple(args, "OO:maketrans", &frm, &to))
439
if (_getbuffer(frm, &bfrm) < 0)
441
if (_getbuffer(to, &bto) < 0)
443
if (bfrm.len != bto.len) {
444
PyErr_Format(PyExc_ValueError,
445
"maketrans arguments must have same length");
448
res = PyBytes_FromStringAndSize(NULL, 256);
452
p = PyBytes_AS_STRING(res);
453
for (i = 0; i < 256; i++)
455
for (i = 0; i < bfrm.len; i++) {
456
p[((unsigned char *)bfrm.buf)[i]] = ((char *)bto.buf)[i];
460
PyBuffer_Release(&bfrm);
462
PyBuffer_Release(&bto);
461
PyBuffer_Release(&bfrm);
463
PyBuffer_Release(&bto);