Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions Doc/c-api/conversion.rst
Original file line number Diff line number Diff line change
Expand Up @@ -162,3 +162,58 @@ The following functions provide locale-independent string to number conversions.

Case insensitive comparison of strings. The function works almost
identically to :c:func:`!strncmp` except that it ignores the case.


Character classification and conversion
=======================================

The following macros provide locale-independent (unlike the C standard library
``ctype.h``) character classification and conversion.
The argument must be a signed or unsigned :c:expr:`char`.


.. c:macro:: Py_ISALNUM(c)

Return true if the character *c* is an alphanumeric character.


.. c:macro:: Py_ISALPHA(c)

Return true if the character *c* is an alphabetic character (``a-z`` and ``A-Z``).


.. c:macro:: Py_ISDIGIT(c)

Return true if the character *c* is a decimal digit (``0-9``).


.. c:macro:: Py_ISLOWER(c)

Return true if the character *c* is a lowercase ASCII letter (``a-z``).


.. c:macro:: Py_ISUPPER(c)

Return true if the character *c* is an uppercase ASCII letter (``A-Z``).


.. c:macro:: Py_ISSPACE(c)

Return true if the character *c* is a whitespace character (space, tab,
carriage return, newline, vertical tab, or form feed).


.. c:macro:: Py_ISXDIGIT(c)

Return true if the character *c* is a hexadecimal digit (``0-9``, ``a-f``, and
``A-F``).


.. c:macro:: Py_TOLOWER(c)

Return the lowercase equivalent of the character *c*.


.. c:macro:: Py_TOUPPER(c)

Return the uppercase equivalent of the character *c*.
4 changes: 2 additions & 2 deletions Doc/library/locale.rst
Original file line number Diff line number Diff line change
Expand Up @@ -524,8 +524,8 @@ The :mod:`locale` module defines the following exception and functions:
SSH connections.

Python doesn't internally use locale-dependent character transformation functions
from ``ctype.h``. Instead, an internal ``pyctype.h`` provides locale-independent
equivalents like :c:macro:`!Py_TOLOWER`.
from ``ctype.h``. Instead, ``pyctype.h`` provides locale-independent
equivalents like :c:macro:`Py_TOLOWER`.


.. data:: LC_COLLATE
Expand Down
18 changes: 8 additions & 10 deletions Doc/whatsnew/2.7.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2181,23 +2181,21 @@ Changes to Python's build process and to the C API include:
discussed in :issue:`5753`, and fixed by Antoine Pitrou.

* New macros: the Python header files now define the following macros:
:c:macro:`!Py_ISALNUM`,
:c:macro:`!Py_ISALPHA`,
:c:macro:`!Py_ISDIGIT`,
:c:macro:`!Py_ISLOWER`,
:c:macro:`!Py_ISSPACE`,
:c:macro:`!Py_ISUPPER`,
:c:macro:`!Py_ISXDIGIT`,
:c:macro:`!Py_TOLOWER`, and :c:macro:`!Py_TOUPPER`.
:c:macro:`Py_ISALNUM`,
:c:macro:`Py_ISALPHA`,
:c:macro:`Py_ISDIGIT`,
:c:macro:`Py_ISLOWER`,
:c:macro:`Py_ISSPACE`,
:c:macro:`Py_ISUPPER`,
:c:macro:`Py_ISXDIGIT`,
:c:macro:`Py_TOLOWER`, and :c:macro:`Py_TOUPPER`.
All of these functions are analogous to the C
standard macros for classifying characters, but ignore the current
locale setting, because in
several places Python needs to analyze characters in a
locale-independent way. (Added by Eric Smith;
:issue:`5793`.)

.. XXX these macros don't seem to be described in the c-api docs.

* Removed function: :c:func:`!PyEval_CallObject` is now only available
as a macro. A function version was being kept around to preserve
ABI linking compatibility, but that was in 1997; it can certainly be
Expand Down
Loading