+++ /dev/null
-#include "Python.h"\r
-#include "bytes_methods.h"\r
-\r
-PyDoc_STRVAR_shared(_Py_isspace__doc__,\r
-"B.isspace() -> bool\n\\r
-\n\\r
-Return True if all characters in B are whitespace\n\\r
-and there is at least one character in B, False otherwise.");\r
-\r
-PyObject*\r
-_Py_bytes_isspace(const char *cptr, Py_ssize_t len)\r
-{\r
- register const unsigned char *p\r
- = (unsigned char *) cptr;\r
- register const unsigned char *e;\r
-\r
- /* Shortcut for single character strings */\r
- if (len == 1 && Py_ISSPACE(*p))\r
- Py_RETURN_TRUE;\r
-\r
- /* Special case for empty strings */\r
- if (len == 0)\r
- Py_RETURN_FALSE;\r
-\r
- e = p + len;\r
- for (; p < e; p++) {\r
- if (!Py_ISSPACE(*p))\r
- Py_RETURN_FALSE;\r
- }\r
- Py_RETURN_TRUE;\r
-}\r
-\r
-\r
-PyDoc_STRVAR_shared(_Py_isalpha__doc__,\r
-"B.isalpha() -> bool\n\\r
-\n\\r
-Return True if all characters in B are alphabetic\n\\r
-and there is at least one character in B, False otherwise.");\r
-\r
-PyObject*\r
-_Py_bytes_isalpha(const char *cptr, Py_ssize_t len)\r
-{\r
- register const unsigned char *p\r
- = (unsigned char *) cptr;\r
- register const unsigned char *e;\r
-\r
- /* Shortcut for single character strings */\r
- if (len == 1 && Py_ISALPHA(*p))\r
- Py_RETURN_TRUE;\r
-\r
- /* Special case for empty strings */\r
- if (len == 0)\r
- Py_RETURN_FALSE;\r
-\r
- e = p + len;\r
- for (; p < e; p++) {\r
- if (!Py_ISALPHA(*p))\r
- Py_RETURN_FALSE;\r
- }\r
- Py_RETURN_TRUE;\r
-}\r
-\r
-\r
-PyDoc_STRVAR_shared(_Py_isalnum__doc__,\r
-"B.isalnum() -> bool\n\\r
-\n\\r
-Return True if all characters in B are alphanumeric\n\\r
-and there is at least one character in B, False otherwise.");\r
-\r
-PyObject*\r
-_Py_bytes_isalnum(const char *cptr, Py_ssize_t len)\r
-{\r
- register const unsigned char *p\r
- = (unsigned char *) cptr;\r
- register const unsigned char *e;\r
-\r
- /* Shortcut for single character strings */\r
- if (len == 1 && Py_ISALNUM(*p))\r
- Py_RETURN_TRUE;\r
-\r
- /* Special case for empty strings */\r
- if (len == 0)\r
- Py_RETURN_FALSE;\r
-\r
- e = p + len;\r
- for (; p < e; p++) {\r
- if (!Py_ISALNUM(*p))\r
- Py_RETURN_FALSE;\r
- }\r
- Py_RETURN_TRUE;\r
-}\r
-\r
-\r
-PyDoc_STRVAR_shared(_Py_isdigit__doc__,\r
-"B.isdigit() -> bool\n\\r
-\n\\r
-Return True if all characters in B are digits\n\\r
-and there is at least one character in B, False otherwise.");\r
-\r
-PyObject*\r
-_Py_bytes_isdigit(const char *cptr, Py_ssize_t len)\r
-{\r
- register const unsigned char *p\r
- = (unsigned char *) cptr;\r
- register const unsigned char *e;\r
-\r
- /* Shortcut for single character strings */\r
- if (len == 1 && Py_ISDIGIT(*p))\r
- Py_RETURN_TRUE;\r
-\r
- /* Special case for empty strings */\r
- if (len == 0)\r
- Py_RETURN_FALSE;\r
-\r
- e = p + len;\r
- for (; p < e; p++) {\r
- if (!Py_ISDIGIT(*p))\r
- Py_RETURN_FALSE;\r
- }\r
- Py_RETURN_TRUE;\r
-}\r
-\r
-\r
-PyDoc_STRVAR_shared(_Py_islower__doc__,\r
-"B.islower() -> bool\n\\r
-\n\\r
-Return True if all cased characters in B are lowercase and there is\n\\r
-at least one cased character in B, False otherwise.");\r
-\r
-PyObject*\r
-_Py_bytes_islower(const char *cptr, Py_ssize_t len)\r
-{\r
- register const unsigned char *p\r
- = (unsigned char *) cptr;\r
- register const unsigned char *e;\r
- int cased;\r
-\r
- /* Shortcut for single character strings */\r
- if (len == 1)\r
- return PyBool_FromLong(Py_ISLOWER(*p));\r
-\r
- /* Special case for empty strings */\r
- if (len == 0)\r
- Py_RETURN_FALSE;\r
-\r
- e = p + len;\r
- cased = 0;\r
- for (; p < e; p++) {\r
- if (Py_ISUPPER(*p))\r
- Py_RETURN_FALSE;\r
- else if (!cased && Py_ISLOWER(*p))\r
- cased = 1;\r
- }\r
- return PyBool_FromLong(cased);\r
-}\r
-\r
-\r
-PyDoc_STRVAR_shared(_Py_isupper__doc__,\r
-"B.isupper() -> bool\n\\r
-\n\\r
-Return True if all cased characters in B are uppercase and there is\n\\r
-at least one cased character in B, False otherwise.");\r
-\r
-PyObject*\r
-_Py_bytes_isupper(const char *cptr, Py_ssize_t len)\r
-{\r
- register const unsigned char *p\r
- = (unsigned char *) cptr;\r
- register const unsigned char *e;\r
- int cased;\r
-\r
- /* Shortcut for single character strings */\r
- if (len == 1)\r
- return PyBool_FromLong(Py_ISUPPER(*p));\r
-\r
- /* Special case for empty strings */\r
- if (len == 0)\r
- Py_RETURN_FALSE;\r
-\r
- e = p + len;\r
- cased = 0;\r
- for (; p < e; p++) {\r
- if (Py_ISLOWER(*p))\r
- Py_RETURN_FALSE;\r
- else if (!cased && Py_ISUPPER(*p))\r
- cased = 1;\r
- }\r
- return PyBool_FromLong(cased);\r
-}\r
-\r
-\r
-PyDoc_STRVAR_shared(_Py_istitle__doc__,\r
-"B.istitle() -> bool\n\\r
-\n\\r
-Return True if B is a titlecased string and there is at least one\n\\r
-character in B, i.e. uppercase characters may only follow uncased\n\\r
-characters and lowercase characters only cased ones. Return False\n\\r
-otherwise.");\r
-\r
-PyObject*\r
-_Py_bytes_istitle(const char *cptr, Py_ssize_t len)\r
-{\r
- register const unsigned char *p\r
- = (unsigned char *) cptr;\r
- register const unsigned char *e;\r
- int cased, previous_is_cased;\r
-\r
- /* Shortcut for single character strings */\r
- if (len == 1)\r
- return PyBool_FromLong(Py_ISUPPER(*p));\r
-\r
- /* Special case for empty strings */\r
- if (len == 0)\r
- Py_RETURN_FALSE;\r
-\r
- e = p + len;\r
- cased = 0;\r
- previous_is_cased = 0;\r
- for (; p < e; p++) {\r
- register const unsigned char ch = *p;\r
-\r
- if (Py_ISUPPER(ch)) {\r
- if (previous_is_cased)\r
- Py_RETURN_FALSE;\r
- previous_is_cased = 1;\r
- cased = 1;\r
- }\r
- else if (Py_ISLOWER(ch)) {\r
- if (!previous_is_cased)\r
- Py_RETURN_FALSE;\r
- previous_is_cased = 1;\r
- cased = 1;\r
- }\r
- else\r
- previous_is_cased = 0;\r
- }\r
- return PyBool_FromLong(cased);\r
-}\r
-\r
-\r
-PyDoc_STRVAR_shared(_Py_lower__doc__,\r
-"B.lower() -> copy of B\n\\r
-\n\\r
-Return a copy of B with all ASCII characters converted to lowercase.");\r
-\r
-void\r
-_Py_bytes_lower(char *result, const char *cptr, Py_ssize_t len)\r
-{\r
- Py_ssize_t i;\r
-\r
- /*\r
- newobj = PyString_FromStringAndSize(NULL, len);\r
- if (!newobj)\r
- return NULL;\r
-\r
- s = PyString_AS_STRING(newobj);\r
- */\r
-\r
- Py_MEMCPY(result, cptr, len);\r
-\r
- for (i = 0; i < len; i++) {\r
- int c = Py_CHARMASK(result[i]);\r
- if (Py_ISUPPER(c))\r
- result[i] = Py_TOLOWER(c);\r
- }\r
-}\r
-\r
-\r
-PyDoc_STRVAR_shared(_Py_upper__doc__,\r
-"B.upper() -> copy of B\n\\r
-\n\\r
-Return a copy of B with all ASCII characters converted to uppercase.");\r
-\r
-void\r
-_Py_bytes_upper(char *result, const char *cptr, Py_ssize_t len)\r
-{\r
- Py_ssize_t i;\r
-\r
- /*\r
- newobj = PyString_FromStringAndSize(NULL, len);\r
- if (!newobj)\r
- return NULL;\r
-\r
- s = PyString_AS_STRING(newobj);\r
- */\r
-\r
- Py_MEMCPY(result, cptr, len);\r
-\r
- for (i = 0; i < len; i++) {\r
- int c = Py_CHARMASK(result[i]);\r
- if (Py_ISLOWER(c))\r
- result[i] = Py_TOUPPER(c);\r
- }\r
-}\r
-\r
-\r
-PyDoc_STRVAR_shared(_Py_title__doc__,\r
-"B.title() -> copy of B\n\\r
-\n\\r
-Return a titlecased version of B, i.e. ASCII words start with uppercase\n\\r
-characters, all remaining cased characters have lowercase.");\r
-\r
-void\r
-_Py_bytes_title(char *result, char *s, Py_ssize_t len)\r
-{\r
- Py_ssize_t i;\r
- int previous_is_cased = 0;\r
-\r
- /*\r
- newobj = PyString_FromStringAndSize(NULL, len);\r
- if (newobj == NULL)\r
- return NULL;\r
- s_new = PyString_AsString(newobj);\r
- */\r
- for (i = 0; i < len; i++) {\r
- int c = Py_CHARMASK(*s++);\r
- if (Py_ISLOWER(c)) {\r
- if (!previous_is_cased)\r
- c = Py_TOUPPER(c);\r
- previous_is_cased = 1;\r
- } else if (Py_ISUPPER(c)) {\r
- if (previous_is_cased)\r
- c = Py_TOLOWER(c);\r
- previous_is_cased = 1;\r
- } else\r
- previous_is_cased = 0;\r
- *result++ = c;\r
- }\r
-}\r
-\r
-\r
-PyDoc_STRVAR_shared(_Py_capitalize__doc__,\r
-"B.capitalize() -> copy of B\n\\r
-\n\\r
-Return a copy of B with only its first character capitalized (ASCII)\n\\r
-and the rest lower-cased.");\r
-\r
-void\r
-_Py_bytes_capitalize(char *result, char *s, Py_ssize_t len)\r
-{\r
- Py_ssize_t i;\r
-\r
- /*\r
- newobj = PyString_FromStringAndSize(NULL, len);\r
- if (newobj == NULL)\r
- return NULL;\r
- s_new = PyString_AsString(newobj);\r
- */\r
- if (0 < len) {\r
- int c = Py_CHARMASK(*s++);\r
- if (Py_ISLOWER(c))\r
- *result = Py_TOUPPER(c);\r
- else\r
- *result = c;\r
- result++;\r
- }\r
- for (i = 1; i < len; i++) {\r
- int c = Py_CHARMASK(*s++);\r
- if (Py_ISUPPER(c))\r
- *result = Py_TOLOWER(c);\r
- else\r
- *result = c;\r
- result++;\r
- }\r
-}\r
-\r
-\r
-PyDoc_STRVAR_shared(_Py_swapcase__doc__,\r
-"B.swapcase() -> copy of B\n\\r
-\n\\r
-Return a copy of B with uppercase ASCII characters converted\n\\r
-to lowercase ASCII and vice versa.");\r
-\r
-void\r
-_Py_bytes_swapcase(char *result, char *s, Py_ssize_t len)\r
-{\r
- Py_ssize_t i;\r
-\r
- /*\r
- newobj = PyString_FromStringAndSize(NULL, len);\r
- if (newobj == NULL)\r
- return NULL;\r
- s_new = PyString_AsString(newobj);\r
- */\r
- for (i = 0; i < len; i++) {\r
- int c = Py_CHARMASK(*s++);\r
- if (Py_ISLOWER(c)) {\r
- *result = Py_TOUPPER(c);\r
- }\r
- else if (Py_ISUPPER(c)) {\r
- *result = Py_TOLOWER(c);\r
- }\r
- else\r
- *result = c;\r
- result++;\r
- }\r
-}\r
-\r