1c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#ifndef Py_BYTES_CTYPE_H
2c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#define Py_BYTES_CTYPE_H
3c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel
4c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel/*
5c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel * The internal implementation behind PyString (bytes) and PyBytes (buffer)
6c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel * methods of the given names, they operate on ASCII byte strings.
7c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel */
8c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDanielextern PyObject* _Py_bytes_isspace(const char *cptr, Py_ssize_t len);
9c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDanielextern PyObject* _Py_bytes_isalpha(const char *cptr, Py_ssize_t len);
10c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDanielextern PyObject* _Py_bytes_isalnum(const char *cptr, Py_ssize_t len);
11c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDanielextern PyObject* _Py_bytes_isdigit(const char *cptr, Py_ssize_t len);
12c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDanielextern PyObject* _Py_bytes_islower(const char *cptr, Py_ssize_t len);
13c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDanielextern PyObject* _Py_bytes_isupper(const char *cptr, Py_ssize_t len);
14c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDanielextern PyObject* _Py_bytes_istitle(const char *cptr, Py_ssize_t len);
15c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel
16c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel/* These store their len sized answer in the given preallocated *result arg. */
17c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDanielextern void _Py_bytes_lower(char *result, const char *cptr, Py_ssize_t len);
18c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDanielextern void _Py_bytes_upper(char *result, const char *cptr, Py_ssize_t len);
19c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDanielextern void _Py_bytes_title(char *result, char *s, Py_ssize_t len);
20c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDanielextern void _Py_bytes_capitalize(char *result, char *s, Py_ssize_t len);
21c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDanielextern void _Py_bytes_swapcase(char *result, char *s, Py_ssize_t len);
22c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel
23c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel/* Shared __doc__ strings. */
24c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDanielextern const char _Py_isspace__doc__[];
25c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDanielextern const char _Py_isalpha__doc__[];
26c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDanielextern const char _Py_isalnum__doc__[];
27c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDanielextern const char _Py_isdigit__doc__[];
28c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDanielextern const char _Py_islower__doc__[];
29c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDanielextern const char _Py_isupper__doc__[];
30c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDanielextern const char _Py_istitle__doc__[];
31c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDanielextern const char _Py_lower__doc__[];
32c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDanielextern const char _Py_upper__doc__[];
33c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDanielextern const char _Py_title__doc__[];
34c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDanielextern const char _Py_capitalize__doc__[];
35c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDanielextern const char _Py_swapcase__doc__[];
36c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel
37c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel/* These are left in for backward compatibility and will be removed
38c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel   in 2.8/3.2 */
39c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#define ISLOWER(c)  Py_ISLOWER(c)
40c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#define ISUPPER(c)  Py_ISUPPER(c)
41c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#define ISALPHA(c)  Py_ISALPHA(c)
42c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#define ISDIGIT(c)  Py_ISDIGIT(c)
43c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#define ISXDIGIT(c) Py_ISXDIGIT(c)
44c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#define ISALNUM(c)  Py_ISALNUM(c)
45c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#define ISSPACE(c)  Py_ISSPACE(c)
46c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel
47c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#undef islower
48c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#define islower(c) undefined_islower(c)
49c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#undef isupper
50c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#define isupper(c) undefined_isupper(c)
51c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#undef isalpha
52c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#define isalpha(c) undefined_isalpha(c)
53c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#undef isdigit
54c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#define isdigit(c) undefined_isdigit(c)
55c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#undef isxdigit
56c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#define isxdigit(c) undefined_isxdigit(c)
57c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#undef isalnum
58c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#define isalnum(c) undefined_isalnum(c)
59c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#undef isspace
60c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#define isspace(c) undefined_isspace(c)
61c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel
62c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel/* These are left in for backward compatibility and will be removed
63c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel   in 2.8/3.2 */
64c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#define TOLOWER(c) Py_TOLOWER(c)
65c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#define TOUPPER(c) Py_TOUPPER(c)
66c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel
67c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#undef tolower
68c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#define tolower(c) undefined_tolower(c)
69c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#undef toupper
70c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#define toupper(c) undefined_toupper(c)
71c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel
72c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel/* this is needed because some docs are shared from the .o, not static */
73c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#define PyDoc_STRVAR_shared(name,str) const char name[] = PyDoc_STR(str)
74c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel
75c8042e10763bca064df257547d04ae3dfcdfaf91Daryl McDaniel#endif /* !Py_BYTES_CTYPE_H */
76