mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	 11e83488c5
			
		
	
	
		11e83488c5
		
			
		
	
	
	
	
		
			
			* Revert "gh-111089: Use PyUnicode_AsUTF8() in Argument Clinic (#111585)" This reverts commitd9b606b3d0. * Revert "gh-111089: Use PyUnicode_AsUTF8() in getargs.c (#111620)" This reverts commitcde1071b2a. * Revert "gh-111089: PyUnicode_AsUTF8() now raises on embedded NUL (#111091)" This reverts commitd731579bfb. * Revert "gh-111089: Add PyUnicode_AsUTF8() to the limited C API (#111121)" This reverts commitd8f32be5b6. * Revert "gh-111089: Use PyUnicode_AsUTF8() in sqlite3 (#111122)" This reverts commit37e4e20eaa.
		
			
				
	
	
		
			1021 lines
		
	
	
	
		
			35 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			1021 lines
		
	
	
	
		
			35 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef Py_UNICODEOBJECT_H
 | |
| #define Py_UNICODEOBJECT_H
 | |
| 
 | |
| /*
 | |
| 
 | |
| Unicode implementation based on original code by Fredrik Lundh,
 | |
| modified by Marc-Andre Lemburg (mal@lemburg.com) according to the
 | |
| Unicode Integration Proposal. (See
 | |
| http://www.egenix.com/files/python/unicode-proposal.txt).
 | |
| 
 | |
| Copyright (c) Corporation for National Research Initiatives.
 | |
| 
 | |
| 
 | |
|  Original header:
 | |
|  --------------------------------------------------------------------
 | |
| 
 | |
|  * Yet another Unicode string type for Python.  This type supports the
 | |
|  * 16-bit Basic Multilingual Plane (BMP) only.
 | |
|  *
 | |
|  * Written by Fredrik Lundh, January 1999.
 | |
|  *
 | |
|  * Copyright (c) 1999 by Secret Labs AB.
 | |
|  * Copyright (c) 1999 by Fredrik Lundh.
 | |
|  *
 | |
|  * fredrik@pythonware.com
 | |
|  * http://www.pythonware.com
 | |
|  *
 | |
|  * --------------------------------------------------------------------
 | |
|  * This Unicode String Type is
 | |
|  *
 | |
|  * Copyright (c) 1999 by Secret Labs AB
 | |
|  * Copyright (c) 1999 by Fredrik Lundh
 | |
|  *
 | |
|  * By obtaining, using, and/or copying this software and/or its
 | |
|  * associated documentation, you agree that you have read, understood,
 | |
|  * and will comply with the following terms and conditions:
 | |
|  *
 | |
|  * Permission to use, copy, modify, and distribute this software and its
 | |
|  * associated documentation for any purpose and without fee is hereby
 | |
|  * granted, provided that the above copyright notice appears in all
 | |
|  * copies, and that both that copyright notice and this permission notice
 | |
|  * appear in supporting documentation, and that the name of Secret Labs
 | |
|  * AB or the author not be used in advertising or publicity pertaining to
 | |
|  * distribution of the software without specific, written prior
 | |
|  * permission.
 | |
|  *
 | |
|  * SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO
 | |
|  * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
 | |
|  * FITNESS.  IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR
 | |
|  * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 | |
|  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 | |
|  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 | |
|  * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 | |
|  * -------------------------------------------------------------------- */
 | |
| 
 | |
| /* === Internal API ======================================================= */
 | |
| 
 | |
| /* --- Internal Unicode Format -------------------------------------------- */
 | |
| 
 | |
| /* Python 3.x requires unicode */
 | |
| #define Py_USING_UNICODE
 | |
| 
 | |
| #ifndef SIZEOF_WCHAR_T
 | |
| #error Must define SIZEOF_WCHAR_T
 | |
| #endif
 | |
| 
 | |
| #define Py_UNICODE_SIZE SIZEOF_WCHAR_T
 | |
| 
 | |
| /* If wchar_t can be used for UCS-4 storage, set Py_UNICODE_WIDE.
 | |
|    Otherwise, Unicode strings are stored as UCS-2 (with limited support
 | |
|    for UTF-16) */
 | |
| 
 | |
| #if Py_UNICODE_SIZE >= 4
 | |
| #define Py_UNICODE_WIDE
 | |
| #endif
 | |
| 
 | |
| /* Set these flags if the platform has "wchar.h" and the
 | |
|    wchar_t type is a 16-bit unsigned type */
 | |
| /* #define HAVE_WCHAR_H */
 | |
| /* #define HAVE_USABLE_WCHAR_T */
 | |
| 
 | |
| /* If the compiler provides a wchar_t type we try to support it
 | |
|    through the interface functions PyUnicode_FromWideChar(),
 | |
|    PyUnicode_AsWideChar() and PyUnicode_AsWideCharString(). */
 | |
| 
 | |
| #ifdef HAVE_USABLE_WCHAR_T
 | |
| # ifndef HAVE_WCHAR_H
 | |
| #  define HAVE_WCHAR_H
 | |
| # endif
 | |
| #endif
 | |
| 
 | |
| /* Py_UCS4 and Py_UCS2 are typedefs for the respective
 | |
|    unicode representations. */
 | |
| typedef uint32_t Py_UCS4;
 | |
| typedef uint16_t Py_UCS2;
 | |
| typedef uint8_t Py_UCS1;
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| 
 | |
| PyAPI_DATA(PyTypeObject) PyUnicode_Type;
 | |
| PyAPI_DATA(PyTypeObject) PyUnicodeIter_Type;
 | |
| 
 | |
| #define PyUnicode_Check(op) \
 | |
|     PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
 | |
| #define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
 | |
| 
 | |
| /* --- Constants ---------------------------------------------------------- */
 | |
| 
 | |
| /* This Unicode character will be used as replacement character during
 | |
|    decoding if the errors argument is set to "replace". Note: the
 | |
|    Unicode character U+FFFD is the official REPLACEMENT CHARACTER in
 | |
|    Unicode 3.0. */
 | |
| 
 | |
| #define Py_UNICODE_REPLACEMENT_CHARACTER ((Py_UCS4) 0xFFFD)
 | |
| 
 | |
| /* === Public API ========================================================= */
 | |
| 
 | |
| /* Similar to PyUnicode_FromUnicode(), but u points to UTF-8 encoded bytes */
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_FromStringAndSize(
 | |
|     const char *u,             /* UTF-8 encoded string */
 | |
|     Py_ssize_t size            /* size of buffer */
 | |
|     );
 | |
| 
 | |
| /* Similar to PyUnicode_FromUnicode(), but u points to null-terminated
 | |
|    UTF-8 encoded bytes.  The size is determined with strlen(). */
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_FromString(
 | |
|     const char *u              /* UTF-8 encoded string */
 | |
|     );
 | |
| 
 | |
| #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_Substring(
 | |
|     PyObject *str,
 | |
|     Py_ssize_t start,
 | |
|     Py_ssize_t end);
 | |
| #endif
 | |
| 
 | |
| #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
 | |
| /* Copy the string into a UCS4 buffer including the null character if copy_null
 | |
|    is set. Return NULL and raise an exception on error. Raise a SystemError if
 | |
|    the buffer is smaller than the string. Return buffer on success.
 | |
| 
 | |
|    buflen is the length of the buffer in (Py_UCS4) characters. */
 | |
| PyAPI_FUNC(Py_UCS4*) PyUnicode_AsUCS4(
 | |
|     PyObject *unicode,
 | |
|     Py_UCS4* buffer,
 | |
|     Py_ssize_t buflen,
 | |
|     int copy_null);
 | |
| 
 | |
| /* Copy the string into a UCS4 buffer. A new buffer is allocated using
 | |
|  * PyMem_Malloc; if this fails, NULL is returned with a memory error
 | |
|    exception set. */
 | |
| PyAPI_FUNC(Py_UCS4*) PyUnicode_AsUCS4Copy(PyObject *unicode);
 | |
| #endif
 | |
| 
 | |
| #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
 | |
| /* Get the length of the Unicode object. */
 | |
| 
 | |
| PyAPI_FUNC(Py_ssize_t) PyUnicode_GetLength(
 | |
|     PyObject *unicode
 | |
| );
 | |
| #endif
 | |
| 
 | |
| #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
 | |
| /* Read a character from the string. */
 | |
| 
 | |
| PyAPI_FUNC(Py_UCS4) PyUnicode_ReadChar(
 | |
|     PyObject *unicode,
 | |
|     Py_ssize_t index
 | |
|     );
 | |
| 
 | |
| /* Write a character to the string. The string must have been created through
 | |
|    PyUnicode_New, must not be shared, and must not have been hashed yet.
 | |
| 
 | |
|    Return 0 on success, -1 on error. */
 | |
| 
 | |
| PyAPI_FUNC(int) PyUnicode_WriteChar(
 | |
|     PyObject *unicode,
 | |
|     Py_ssize_t index,
 | |
|     Py_UCS4 character
 | |
|     );
 | |
| #endif
 | |
| 
 | |
| /* Resize a Unicode object. The length is the number of codepoints.
 | |
| 
 | |
|    *unicode is modified to point to the new (resized) object and 0
 | |
|    returned on success.
 | |
| 
 | |
|    Try to resize the string in place (which is usually faster than allocating
 | |
|    a new string and copy characters), or create a new string.
 | |
| 
 | |
|    Error handling is implemented as follows: an exception is set, -1
 | |
|    is returned and *unicode left untouched.
 | |
| 
 | |
|    WARNING: The function doesn't check string content, the result may not be a
 | |
|             string in canonical representation. */
 | |
| 
 | |
| PyAPI_FUNC(int) PyUnicode_Resize(
 | |
|     PyObject **unicode,         /* Pointer to the Unicode object */
 | |
|     Py_ssize_t length           /* New length */
 | |
|     );
 | |
| 
 | |
| /* Decode obj to a Unicode object.
 | |
| 
 | |
|    bytes, bytearray and other bytes-like objects are decoded according to the
 | |
|    given encoding and error handler. The encoding and error handler can be
 | |
|    NULL to have the interface use UTF-8 and "strict".
 | |
| 
 | |
|    All other objects (including Unicode objects) raise an exception.
 | |
| 
 | |
|    The API returns NULL in case of an error. The caller is responsible
 | |
|    for decref'ing the returned objects.
 | |
| 
 | |
| */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_FromEncodedObject(
 | |
|     PyObject *obj,              /* Object */
 | |
|     const char *encoding,       /* encoding */
 | |
|     const char *errors          /* error handling */
 | |
|     );
 | |
| 
 | |
| /* Copy an instance of a Unicode subtype to a new true Unicode object if
 | |
|    necessary. If obj is already a true Unicode object (not a subtype), return
 | |
|    the reference with *incremented* refcount.
 | |
| 
 | |
|    The API returns NULL in case of an error. The caller is responsible
 | |
|    for decref'ing the returned objects.
 | |
| 
 | |
| */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_FromObject(
 | |
|     PyObject *obj      /* Object */
 | |
|     );
 | |
| 
 | |
| PyAPI_FUNC(PyObject *) PyUnicode_FromFormatV(
 | |
|     const char *format,   /* ASCII-encoded string  */
 | |
|     va_list vargs
 | |
|     );
 | |
| PyAPI_FUNC(PyObject *) PyUnicode_FromFormat(
 | |
|     const char *format,   /* ASCII-encoded string  */
 | |
|     ...
 | |
|     );
 | |
| 
 | |
| PyAPI_FUNC(void) PyUnicode_InternInPlace(PyObject **);
 | |
| PyAPI_FUNC(PyObject *) PyUnicode_InternFromString(
 | |
|     const char *u              /* UTF-8 encoded string */
 | |
|     );
 | |
| 
 | |
| /* --- wchar_t support for platforms which support it --------------------- */
 | |
| 
 | |
| #ifdef HAVE_WCHAR_H
 | |
| 
 | |
| /* Create a Unicode Object from the wchar_t buffer w of the given
 | |
|    size.
 | |
| 
 | |
|    The buffer is copied into the new object. */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_FromWideChar(
 | |
|     const wchar_t *w,           /* wchar_t buffer */
 | |
|     Py_ssize_t size             /* size of buffer */
 | |
|     );
 | |
| 
 | |
| /* Copies the Unicode Object contents into the wchar_t buffer w.  At
 | |
|    most size wchar_t characters are copied.
 | |
| 
 | |
|    Note that the resulting wchar_t string may or may not be
 | |
|    0-terminated.  It is the responsibility of the caller to make sure
 | |
|    that the wchar_t string is 0-terminated in case this is required by
 | |
|    the application.
 | |
| 
 | |
|    Returns the number of wchar_t characters copied (excluding a
 | |
|    possibly trailing 0-termination character) or -1 in case of an
 | |
|    error. */
 | |
| 
 | |
| PyAPI_FUNC(Py_ssize_t) PyUnicode_AsWideChar(
 | |
|     PyObject *unicode,          /* Unicode object */
 | |
|     wchar_t *w,                 /* wchar_t buffer */
 | |
|     Py_ssize_t size             /* size of buffer */
 | |
|     );
 | |
| 
 | |
| /* Convert the Unicode object to a wide character string. The output string
 | |
|    always ends with a nul character. If size is not NULL, write the number of
 | |
|    wide characters (excluding the null character) into *size.
 | |
| 
 | |
|    Returns a buffer allocated by PyMem_Malloc() (use PyMem_Free() to free it)
 | |
|    on success. On error, returns NULL, *size is undefined and raises a
 | |
|    MemoryError. */
 | |
| 
 | |
| PyAPI_FUNC(wchar_t*) PyUnicode_AsWideCharString(
 | |
|     PyObject *unicode,          /* Unicode object */
 | |
|     Py_ssize_t *size            /* number of characters of the result */
 | |
|     );
 | |
| 
 | |
| #endif
 | |
| 
 | |
| /* --- Unicode ordinals --------------------------------------------------- */
 | |
| 
 | |
| /* Create a Unicode Object from the given Unicode code point ordinal.
 | |
| 
 | |
|    The ordinal must be in range(0x110000). A ValueError is
 | |
|    raised in case it is not.
 | |
| 
 | |
| */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_FromOrdinal(int ordinal);
 | |
| 
 | |
| /* === Builtin Codecs =====================================================
 | |
| 
 | |
|    Many of these APIs take two arguments encoding and errors. These
 | |
|    parameters encoding and errors have the same semantics as the ones
 | |
|    of the builtin str() API.
 | |
| 
 | |
|    Setting encoding to NULL causes the default encoding (UTF-8) to be used.
 | |
| 
 | |
|    Error handling is set by errors which may also be set to NULL
 | |
|    meaning to use the default handling defined for the codec. Default
 | |
|    error handling for all builtin codecs is "strict" (ValueErrors are
 | |
|    raised).
 | |
| 
 | |
|    The codecs all use a similar interface. Only deviation from the
 | |
|    generic ones are documented.
 | |
| 
 | |
| */
 | |
| 
 | |
| /* --- Manage the default encoding ---------------------------------------- */
 | |
| 
 | |
| /* Returns "utf-8".  */
 | |
| PyAPI_FUNC(const char*) PyUnicode_GetDefaultEncoding(void);
 | |
| 
 | |
| /* --- Generic Codecs ----------------------------------------------------- */
 | |
| 
 | |
| /* Create a Unicode object by decoding the encoded string s of the
 | |
|    given size. */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_Decode(
 | |
|     const char *s,              /* encoded string */
 | |
|     Py_ssize_t size,            /* size of buffer */
 | |
|     const char *encoding,       /* encoding */
 | |
|     const char *errors          /* error handling */
 | |
|     );
 | |
| 
 | |
| /* Decode a Unicode object unicode and return the result as Python
 | |
|    object.
 | |
| 
 | |
|    This API is DEPRECATED. The only supported standard encoding is rot13.
 | |
|    Use PyCodec_Decode() to decode with rot13 and non-standard codecs
 | |
|    that decode from str. */
 | |
| 
 | |
| Py_DEPRECATED(3.6) PyAPI_FUNC(PyObject*) PyUnicode_AsDecodedObject(
 | |
|     PyObject *unicode,          /* Unicode object */
 | |
|     const char *encoding,       /* encoding */
 | |
|     const char *errors          /* error handling */
 | |
|     );
 | |
| 
 | |
| /* Decode a Unicode object unicode and return the result as Unicode
 | |
|    object.
 | |
| 
 | |
|    This API is DEPRECATED. The only supported standard encoding is rot13.
 | |
|    Use PyCodec_Decode() to decode with rot13 and non-standard codecs
 | |
|    that decode from str to str. */
 | |
| 
 | |
| Py_DEPRECATED(3.6) PyAPI_FUNC(PyObject*) PyUnicode_AsDecodedUnicode(
 | |
|     PyObject *unicode,          /* Unicode object */
 | |
|     const char *encoding,       /* encoding */
 | |
|     const char *errors          /* error handling */
 | |
|     );
 | |
| 
 | |
| /* Encodes a Unicode object and returns the result as Python
 | |
|    object.
 | |
| 
 | |
|    This API is DEPRECATED.  It is superseded by PyUnicode_AsEncodedString()
 | |
|    since all standard encodings (except rot13) encode str to bytes.
 | |
|    Use PyCodec_Encode() for encoding with rot13 and non-standard codecs
 | |
|    that encode form str to non-bytes. */
 | |
| 
 | |
| Py_DEPRECATED(3.6) PyAPI_FUNC(PyObject*) PyUnicode_AsEncodedObject(
 | |
|     PyObject *unicode,          /* Unicode object */
 | |
|     const char *encoding,       /* encoding */
 | |
|     const char *errors          /* error handling */
 | |
|     );
 | |
| 
 | |
| /* Encodes a Unicode object and returns the result as Python string
 | |
|    object. */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_AsEncodedString(
 | |
|     PyObject *unicode,          /* Unicode object */
 | |
|     const char *encoding,       /* encoding */
 | |
|     const char *errors          /* error handling */
 | |
|     );
 | |
| 
 | |
| /* Encodes a Unicode object and returns the result as Unicode
 | |
|    object.
 | |
| 
 | |
|    This API is DEPRECATED.  The only supported standard encodings is rot13.
 | |
|    Use PyCodec_Encode() to encode with rot13 and non-standard codecs
 | |
|    that encode from str to str. */
 | |
| 
 | |
| Py_DEPRECATED(3.6) PyAPI_FUNC(PyObject*) PyUnicode_AsEncodedUnicode(
 | |
|     PyObject *unicode,          /* Unicode object */
 | |
|     const char *encoding,       /* encoding */
 | |
|     const char *errors          /* error handling */
 | |
|     );
 | |
| 
 | |
| /* Build an encoding map. */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_BuildEncodingMap(
 | |
|     PyObject* string            /* 256 character map */
 | |
|    );
 | |
| 
 | |
| /* --- UTF-7 Codecs ------------------------------------------------------- */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF7(
 | |
|     const char *string,         /* UTF-7 encoded string */
 | |
|     Py_ssize_t length,          /* size of string */
 | |
|     const char *errors          /* error handling */
 | |
|     );
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF7Stateful(
 | |
|     const char *string,         /* UTF-7 encoded string */
 | |
|     Py_ssize_t length,          /* size of string */
 | |
|     const char *errors,         /* error handling */
 | |
|     Py_ssize_t *consumed        /* bytes consumed */
 | |
|     );
 | |
| 
 | |
| /* --- UTF-8 Codecs ------------------------------------------------------- */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF8(
 | |
|     const char *string,         /* UTF-8 encoded string */
 | |
|     Py_ssize_t length,          /* size of string */
 | |
|     const char *errors          /* error handling */
 | |
|     );
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF8Stateful(
 | |
|     const char *string,         /* UTF-8 encoded string */
 | |
|     Py_ssize_t length,          /* size of string */
 | |
|     const char *errors,         /* error handling */
 | |
|     Py_ssize_t *consumed        /* bytes consumed */
 | |
|     );
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_AsUTF8String(
 | |
|     PyObject *unicode           /* Unicode object */
 | |
|     );
 | |
| 
 | |
| /* Returns a pointer to the default encoding (UTF-8) of the
 | |
|    Unicode object unicode and the size of the encoded representation
 | |
|    in bytes stored in *size.
 | |
| 
 | |
|    In case of an error, no *size is set.
 | |
| 
 | |
|    This function caches the UTF-8 encoded string in the unicodeobject
 | |
|    and subsequent calls will return the same string.  The memory is released
 | |
|    when the unicodeobject is deallocated.
 | |
| */
 | |
| 
 | |
| #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x030A0000
 | |
| PyAPI_FUNC(const char *) PyUnicode_AsUTF8AndSize(
 | |
|     PyObject *unicode,
 | |
|     Py_ssize_t *size);
 | |
| #endif
 | |
| 
 | |
| /* --- UTF-32 Codecs ------------------------------------------------------ */
 | |
| 
 | |
| /* Decodes length bytes from a UTF-32 encoded buffer string and returns
 | |
|    the corresponding Unicode object.
 | |
| 
 | |
|    errors (if non-NULL) defines the error handling. It defaults
 | |
|    to "strict".
 | |
| 
 | |
|    If byteorder is non-NULL, the decoder starts decoding using the
 | |
|    given byte order:
 | |
| 
 | |
|     *byteorder == -1: little endian
 | |
|     *byteorder == 0:  native order
 | |
|     *byteorder == 1:  big endian
 | |
| 
 | |
|    In native mode, the first four bytes of the stream are checked for a
 | |
|    BOM mark. If found, the BOM mark is analysed, the byte order
 | |
|    adjusted and the BOM skipped.  In the other modes, no BOM mark
 | |
|    interpretation is done. After completion, *byteorder is set to the
 | |
|    current byte order at the end of input data.
 | |
| 
 | |
|    If byteorder is NULL, the codec starts in native order mode.
 | |
| 
 | |
| */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF32(
 | |
|     const char *string,         /* UTF-32 encoded string */
 | |
|     Py_ssize_t length,          /* size of string */
 | |
|     const char *errors,         /* error handling */
 | |
|     int *byteorder              /* pointer to byteorder to use
 | |
|                                    0=native;-1=LE,1=BE; updated on
 | |
|                                    exit */
 | |
|     );
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF32Stateful(
 | |
|     const char *string,         /* UTF-32 encoded string */
 | |
|     Py_ssize_t length,          /* size of string */
 | |
|     const char *errors,         /* error handling */
 | |
|     int *byteorder,             /* pointer to byteorder to use
 | |
|                                    0=native;-1=LE,1=BE; updated on
 | |
|                                    exit */
 | |
|     Py_ssize_t *consumed        /* bytes consumed */
 | |
|     );
 | |
| 
 | |
| /* Returns a Python string using the UTF-32 encoding in native byte
 | |
|    order. The string always starts with a BOM mark.  */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_AsUTF32String(
 | |
|     PyObject *unicode           /* Unicode object */
 | |
|     );
 | |
| 
 | |
| /* Returns a Python string object holding the UTF-32 encoded value of
 | |
|    the Unicode data.
 | |
| 
 | |
|    If byteorder is not 0, output is written according to the following
 | |
|    byte order:
 | |
| 
 | |
|    byteorder == -1: little endian
 | |
|    byteorder == 0:  native byte order (writes a BOM mark)
 | |
|    byteorder == 1:  big endian
 | |
| 
 | |
|    If byteorder is 0, the output string will always start with the
 | |
|    Unicode BOM mark (U+FEFF). In the other two modes, no BOM mark is
 | |
|    prepended.
 | |
| 
 | |
| */
 | |
| 
 | |
| /* --- UTF-16 Codecs ------------------------------------------------------ */
 | |
| 
 | |
| /* Decodes length bytes from a UTF-16 encoded buffer string and returns
 | |
|    the corresponding Unicode object.
 | |
| 
 | |
|    errors (if non-NULL) defines the error handling. It defaults
 | |
|    to "strict".
 | |
| 
 | |
|    If byteorder is non-NULL, the decoder starts decoding using the
 | |
|    given byte order:
 | |
| 
 | |
|     *byteorder == -1: little endian
 | |
|     *byteorder == 0:  native order
 | |
|     *byteorder == 1:  big endian
 | |
| 
 | |
|    In native mode, the first two bytes of the stream are checked for a
 | |
|    BOM mark. If found, the BOM mark is analysed, the byte order
 | |
|    adjusted and the BOM skipped.  In the other modes, no BOM mark
 | |
|    interpretation is done. After completion, *byteorder is set to the
 | |
|    current byte order at the end of input data.
 | |
| 
 | |
|    If byteorder is NULL, the codec starts in native order mode.
 | |
| 
 | |
| */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF16(
 | |
|     const char *string,         /* UTF-16 encoded string */
 | |
|     Py_ssize_t length,          /* size of string */
 | |
|     const char *errors,         /* error handling */
 | |
|     int *byteorder              /* pointer to byteorder to use
 | |
|                                    0=native;-1=LE,1=BE; updated on
 | |
|                                    exit */
 | |
|     );
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF16Stateful(
 | |
|     const char *string,         /* UTF-16 encoded string */
 | |
|     Py_ssize_t length,          /* size of string */
 | |
|     const char *errors,         /* error handling */
 | |
|     int *byteorder,             /* pointer to byteorder to use
 | |
|                                    0=native;-1=LE,1=BE; updated on
 | |
|                                    exit */
 | |
|     Py_ssize_t *consumed        /* bytes consumed */
 | |
|     );
 | |
| 
 | |
| /* Returns a Python string using the UTF-16 encoding in native byte
 | |
|    order. The string always starts with a BOM mark.  */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_AsUTF16String(
 | |
|     PyObject *unicode           /* Unicode object */
 | |
|     );
 | |
| 
 | |
| /* --- Unicode-Escape Codecs ---------------------------------------------- */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_DecodeUnicodeEscape(
 | |
|     const char *string,         /* Unicode-Escape encoded string */
 | |
|     Py_ssize_t length,          /* size of string */
 | |
|     const char *errors          /* error handling */
 | |
|     );
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_AsUnicodeEscapeString(
 | |
|     PyObject *unicode           /* Unicode object */
 | |
|     );
 | |
| 
 | |
| /* --- Raw-Unicode-Escape Codecs ------------------------------------------ */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_DecodeRawUnicodeEscape(
 | |
|     const char *string,         /* Raw-Unicode-Escape encoded string */
 | |
|     Py_ssize_t length,          /* size of string */
 | |
|     const char *errors          /* error handling */
 | |
|     );
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_AsRawUnicodeEscapeString(
 | |
|     PyObject *unicode           /* Unicode object */
 | |
|     );
 | |
| 
 | |
| /* --- Latin-1 Codecs -----------------------------------------------------
 | |
| 
 | |
|    Note: Latin-1 corresponds to the first 256 Unicode ordinals. */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_DecodeLatin1(
 | |
|     const char *string,         /* Latin-1 encoded string */
 | |
|     Py_ssize_t length,          /* size of string */
 | |
|     const char *errors          /* error handling */
 | |
|     );
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_AsLatin1String(
 | |
|     PyObject *unicode           /* Unicode object */
 | |
|     );
 | |
| 
 | |
| /* --- ASCII Codecs -------------------------------------------------------
 | |
| 
 | |
|    Only 7-bit ASCII data is expected. All other codes generate errors.
 | |
| 
 | |
| */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_DecodeASCII(
 | |
|     const char *string,         /* ASCII encoded string */
 | |
|     Py_ssize_t length,          /* size of string */
 | |
|     const char *errors          /* error handling */
 | |
|     );
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_AsASCIIString(
 | |
|     PyObject *unicode           /* Unicode object */
 | |
|     );
 | |
| 
 | |
| /* --- Character Map Codecs -----------------------------------------------
 | |
| 
 | |
|    This codec uses mappings to encode and decode characters.
 | |
| 
 | |
|    Decoding mappings must map byte ordinals (integers in the range from 0 to
 | |
|    255) to Unicode strings, integers (which are then interpreted as Unicode
 | |
|    ordinals) or None.  Unmapped data bytes (ones which cause a LookupError)
 | |
|    as well as mapped to None, 0xFFFE or '\ufffe' are treated as "undefined
 | |
|    mapping" and cause an error.
 | |
| 
 | |
|    Encoding mappings must map Unicode ordinal integers to bytes objects,
 | |
|    integers in the range from 0 to 255 or None.  Unmapped character
 | |
|    ordinals (ones which cause a LookupError) as well as mapped to
 | |
|    None are treated as "undefined mapping" and cause an error.
 | |
| 
 | |
| */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_DecodeCharmap(
 | |
|     const char *string,         /* Encoded string */
 | |
|     Py_ssize_t length,          /* size of string */
 | |
|     PyObject *mapping,          /* decoding mapping */
 | |
|     const char *errors          /* error handling */
 | |
|     );
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_AsCharmapString(
 | |
|     PyObject *unicode,          /* Unicode object */
 | |
|     PyObject *mapping           /* encoding mapping */
 | |
|     );
 | |
| 
 | |
| /* --- MBCS codecs for Windows -------------------------------------------- */
 | |
| 
 | |
| #ifdef MS_WINDOWS
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_DecodeMBCS(
 | |
|     const char *string,         /* MBCS encoded string */
 | |
|     Py_ssize_t length,          /* size of string */
 | |
|     const char *errors          /* error handling */
 | |
|     );
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_DecodeMBCSStateful(
 | |
|     const char *string,         /* MBCS encoded string */
 | |
|     Py_ssize_t length,          /* size of string */
 | |
|     const char *errors,         /* error handling */
 | |
|     Py_ssize_t *consumed        /* bytes consumed */
 | |
|     );
 | |
| 
 | |
| #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_DecodeCodePageStateful(
 | |
|     int code_page,              /* code page number */
 | |
|     const char *string,         /* encoded string */
 | |
|     Py_ssize_t length,          /* size of string */
 | |
|     const char *errors,         /* error handling */
 | |
|     Py_ssize_t *consumed        /* bytes consumed */
 | |
|     );
 | |
| #endif
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_AsMBCSString(
 | |
|     PyObject *unicode           /* Unicode object */
 | |
|     );
 | |
| 
 | |
| #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_EncodeCodePage(
 | |
|     int code_page,              /* code page number */
 | |
|     PyObject *unicode,          /* Unicode object */
 | |
|     const char *errors          /* error handling */
 | |
|     );
 | |
| #endif
 | |
| 
 | |
| #endif /* MS_WINDOWS */
 | |
| 
 | |
| /* --- Locale encoding --------------------------------------------------- */
 | |
| 
 | |
| #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
 | |
| /* Decode a string from the current locale encoding. The decoder is strict if
 | |
|    *surrogateescape* is equal to zero, otherwise it uses the 'surrogateescape'
 | |
|    error handler (PEP 383) to escape undecodable bytes. If a byte sequence can
 | |
|    be decoded as a surrogate character and *surrogateescape* is not equal to
 | |
|    zero, the byte sequence is escaped using the 'surrogateescape' error handler
 | |
|    instead of being decoded. *str* must end with a null character but cannot
 | |
|    contain embedded null characters. */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_DecodeLocaleAndSize(
 | |
|     const char *str,
 | |
|     Py_ssize_t len,
 | |
|     const char *errors);
 | |
| 
 | |
| /* Similar to PyUnicode_DecodeLocaleAndSize(), but compute the string
 | |
|    length using strlen(). */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_DecodeLocale(
 | |
|     const char *str,
 | |
|     const char *errors);
 | |
| 
 | |
| /* Encode a Unicode object to the current locale encoding. The encoder is
 | |
|    strict is *surrogateescape* is equal to zero, otherwise the
 | |
|    "surrogateescape" error handler is used. Return a bytes object. The string
 | |
|    cannot contain embedded null characters. */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_EncodeLocale(
 | |
|     PyObject *unicode,
 | |
|     const char *errors
 | |
|     );
 | |
| #endif
 | |
| 
 | |
| /* --- File system encoding ---------------------------------------------- */
 | |
| 
 | |
| /* ParseTuple converter: encode str objects to bytes using
 | |
|    PyUnicode_EncodeFSDefault(); bytes objects are output as-is. */
 | |
| 
 | |
| PyAPI_FUNC(int) PyUnicode_FSConverter(PyObject*, void*);
 | |
| 
 | |
| /* ParseTuple converter: decode bytes objects to unicode using
 | |
|    PyUnicode_DecodeFSDefaultAndSize(); str objects are output as-is. */
 | |
| 
 | |
| PyAPI_FUNC(int) PyUnicode_FSDecoder(PyObject*, void*);
 | |
| 
 | |
| /* Decode a null-terminated string from the Python filesystem encoding
 | |
|    and error handler.
 | |
| 
 | |
|    If the string length is known, use PyUnicode_DecodeFSDefaultAndSize(). */
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_DecodeFSDefault(
 | |
|     const char *s               /* encoded string */
 | |
|     );
 | |
| 
 | |
| /* Decode a string from the Python filesystem encoding and error handler. */
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_DecodeFSDefaultAndSize(
 | |
|     const char *s,               /* encoded string */
 | |
|     Py_ssize_t size              /* size */
 | |
|     );
 | |
| 
 | |
| /* Encode a Unicode object to the Python filesystem encoding and error handler.
 | |
|    Return bytes. */
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_EncodeFSDefault(
 | |
|     PyObject *unicode
 | |
|     );
 | |
| 
 | |
| /* --- Methods & Slots ----------------------------------------------------
 | |
| 
 | |
|    These are capable of handling Unicode objects and strings on input
 | |
|    (we refer to them as strings in the descriptions) and return
 | |
|    Unicode objects or integers as appropriate. */
 | |
| 
 | |
| /* Concat two strings giving a new Unicode string. */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_Concat(
 | |
|     PyObject *left,             /* Left string */
 | |
|     PyObject *right             /* Right string */
 | |
|     );
 | |
| 
 | |
| /* Concat two strings and put the result in *pleft
 | |
|    (sets *pleft to NULL on error) */
 | |
| 
 | |
| PyAPI_FUNC(void) PyUnicode_Append(
 | |
|     PyObject **pleft,           /* Pointer to left string */
 | |
|     PyObject *right             /* Right string */
 | |
|     );
 | |
| 
 | |
| /* Concat two strings, put the result in *pleft and drop the right object
 | |
|    (sets *pleft to NULL on error) */
 | |
| 
 | |
| PyAPI_FUNC(void) PyUnicode_AppendAndDel(
 | |
|     PyObject **pleft,           /* Pointer to left string */
 | |
|     PyObject *right             /* Right string */
 | |
|     );
 | |
| 
 | |
| /* Split a string giving a list of Unicode strings.
 | |
| 
 | |
|    If sep is NULL, splitting will be done at all whitespace
 | |
|    substrings. Otherwise, splits occur at the given separator.
 | |
| 
 | |
|    At most maxsplit splits will be done. If negative, no limit is set.
 | |
| 
 | |
|    Separators are not included in the resulting list.
 | |
| 
 | |
| */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_Split(
 | |
|     PyObject *s,                /* String to split */
 | |
|     PyObject *sep,              /* String separator */
 | |
|     Py_ssize_t maxsplit         /* Maxsplit count */
 | |
|     );
 | |
| 
 | |
| /* Dito, but split at line breaks.
 | |
| 
 | |
|    CRLF is considered to be one line break. Line breaks are not
 | |
|    included in the resulting list. */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_Splitlines(
 | |
|     PyObject *s,                /* String to split */
 | |
|     int keepends                /* If true, line end markers are included */
 | |
|     );
 | |
| 
 | |
| /* Partition a string using a given separator. */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_Partition(
 | |
|     PyObject *s,                /* String to partition */
 | |
|     PyObject *sep               /* String separator */
 | |
|     );
 | |
| 
 | |
| /* Partition a string using a given separator, searching from the end of the
 | |
|    string. */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_RPartition(
 | |
|     PyObject *s,                /* String to partition */
 | |
|     PyObject *sep               /* String separator */
 | |
|     );
 | |
| 
 | |
| /* Split a string giving a list of Unicode strings.
 | |
| 
 | |
|    If sep is NULL, splitting will be done at all whitespace
 | |
|    substrings. Otherwise, splits occur at the given separator.
 | |
| 
 | |
|    At most maxsplit splits will be done. But unlike PyUnicode_Split
 | |
|    PyUnicode_RSplit splits from the end of the string. If negative,
 | |
|    no limit is set.
 | |
| 
 | |
|    Separators are not included in the resulting list.
 | |
| 
 | |
| */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_RSplit(
 | |
|     PyObject *s,                /* String to split */
 | |
|     PyObject *sep,              /* String separator */
 | |
|     Py_ssize_t maxsplit         /* Maxsplit count */
 | |
|     );
 | |
| 
 | |
| /* Translate a string by applying a character mapping table to it and
 | |
|    return the resulting Unicode object.
 | |
| 
 | |
|    The mapping table must map Unicode ordinal integers to Unicode strings,
 | |
|    Unicode ordinal integers or None (causing deletion of the character).
 | |
| 
 | |
|    Mapping tables may be dictionaries or sequences. Unmapped character
 | |
|    ordinals (ones which cause a LookupError) are left untouched and
 | |
|    are copied as-is.
 | |
| 
 | |
| */
 | |
| 
 | |
| PyAPI_FUNC(PyObject *) PyUnicode_Translate(
 | |
|     PyObject *str,              /* String */
 | |
|     PyObject *table,            /* Translate table */
 | |
|     const char *errors          /* error handling */
 | |
|     );
 | |
| 
 | |
| /* Join a sequence of strings using the given separator and return
 | |
|    the resulting Unicode string. */
 | |
| 
 | |
| PyAPI_FUNC(PyObject*) PyUnicode_Join(
 | |
|     PyObject *separator,        /* Separator string */
 | |
|     PyObject *seq               /* Sequence object */
 | |
|     );
 | |
| 
 | |
| /* Return 1 if substr matches str[start:end] at the given tail end, 0
 | |
|    otherwise. */
 | |
| 
 | |
| PyAPI_FUNC(Py_ssize_t) PyUnicode_Tailmatch(
 | |
|     PyObject *str,              /* String */
 | |
|     PyObject *substr,           /* Prefix or Suffix string */
 | |
|     Py_ssize_t start,           /* Start index */
 | |
|     Py_ssize_t end,             /* Stop index */
 | |
|     int direction               /* Tail end: -1 prefix, +1 suffix */
 | |
|     );
 | |
| 
 | |
| /* Return the first position of substr in str[start:end] using the
 | |
|    given search direction or -1 if not found. -2 is returned in case
 | |
|    an error occurred and an exception is set. */
 | |
| 
 | |
| PyAPI_FUNC(Py_ssize_t) PyUnicode_Find(
 | |
|     PyObject *str,              /* String */
 | |
|     PyObject *substr,           /* Substring to find */
 | |
|     Py_ssize_t start,           /* Start index */
 | |
|     Py_ssize_t end,             /* Stop index */
 | |
|     int direction               /* Find direction: +1 forward, -1 backward */
 | |
|     );
 | |
| 
 | |
| #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
 | |
| /* Like PyUnicode_Find, but search for single character only. */
 | |
| PyAPI_FUNC(Py_ssize_t) PyUnicode_FindChar(
 | |
|     PyObject *str,
 | |
|     Py_UCS4 ch,
 | |
|     Py_ssize_t start,
 | |
|     Py_ssize_t end,
 | |
|     int direction
 | |
|     );
 | |
| #endif
 | |
| 
 | |
| /* Count the number of occurrences of substr in str[start:end]. */
 | |
| 
 | |
| PyAPI_FUNC(Py_ssize_t) PyUnicode_Count(
 | |
|     PyObject *str,              /* String */
 | |
|     PyObject *substr,           /* Substring to count */
 | |
|     Py_ssize_t start,           /* Start index */
 | |
|     Py_ssize_t end              /* Stop index */
 | |
|     );
 | |
| 
 | |
| /* Replace at most maxcount occurrences of substr in str with replstr
 | |
|    and return the resulting Unicode object. */
 | |
| 
 | |
| PyAPI_FUNC(PyObject *) PyUnicode_Replace(
 | |
|     PyObject *str,              /* String */
 | |
|     PyObject *substr,           /* Substring to find */
 | |
|     PyObject *replstr,          /* Substring to replace */
 | |
|     Py_ssize_t maxcount         /* Max. number of replacements to apply;
 | |
|                                    -1 = all */
 | |
|     );
 | |
| 
 | |
| /* Compare two strings and return -1, 0, 1 for less than, equal,
 | |
|    greater than resp.
 | |
|    Raise an exception and return -1 on error. */
 | |
| 
 | |
| PyAPI_FUNC(int) PyUnicode_Compare(
 | |
|     PyObject *left,             /* Left string */
 | |
|     PyObject *right             /* Right string */
 | |
|     );
 | |
| 
 | |
| /* Compare a Unicode object with C string and return -1, 0, 1 for less than,
 | |
|    equal, and greater than, respectively.  It is best to pass only
 | |
|    ASCII-encoded strings, but the function interprets the input string as
 | |
|    ISO-8859-1 if it contains non-ASCII characters.
 | |
|    This function does not raise exceptions. */
 | |
| 
 | |
| PyAPI_FUNC(int) PyUnicode_CompareWithASCIIString(
 | |
|     PyObject *left,
 | |
|     const char *right           /* ASCII-encoded string */
 | |
|     );
 | |
| 
 | |
| #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x030D0000
 | |
| /* Compare a Unicode object with UTF-8 encoded C string.
 | |
|    Return 1 if they are equal, or 0 otherwise.
 | |
|    This function does not raise exceptions. */
 | |
| 
 | |
| PyAPI_FUNC(int) PyUnicode_EqualToUTF8(PyObject *, const char *);
 | |
| PyAPI_FUNC(int) PyUnicode_EqualToUTF8AndSize(PyObject *, const char *, Py_ssize_t);
 | |
| #endif
 | |
| 
 | |
| /* Rich compare two strings and return one of the following:
 | |
| 
 | |
|    - NULL in case an exception was raised
 | |
|    - Py_True or Py_False for successful comparisons
 | |
|    - Py_NotImplemented in case the type combination is unknown
 | |
| 
 | |
|    Possible values for op:
 | |
| 
 | |
|      Py_GT, Py_GE, Py_EQ, Py_NE, Py_LT, Py_LE
 | |
| 
 | |
| */
 | |
| 
 | |
| PyAPI_FUNC(PyObject *) PyUnicode_RichCompare(
 | |
|     PyObject *left,             /* Left string */
 | |
|     PyObject *right,            /* Right string */
 | |
|     int op                      /* Operation: Py_EQ, Py_NE, Py_GT, etc. */
 | |
|     );
 | |
| 
 | |
| /* Apply an argument tuple or dictionary to a format string and return
 | |
|    the resulting Unicode string. */
 | |
| 
 | |
| PyAPI_FUNC(PyObject *) PyUnicode_Format(
 | |
|     PyObject *format,           /* Format string */
 | |
|     PyObject *args              /* Argument tuple or dictionary */
 | |
|     );
 | |
| 
 | |
| /* Checks whether element is contained in container and return 1/0
 | |
|    accordingly.
 | |
| 
 | |
|    element has to coerce to a one element Unicode string. -1 is
 | |
|    returned in case of an error. */
 | |
| 
 | |
| PyAPI_FUNC(int) PyUnicode_Contains(
 | |
|     PyObject *container,        /* Container string */
 | |
|     PyObject *element           /* Element string */
 | |
|     );
 | |
| 
 | |
| /* Checks whether argument is a valid identifier. */
 | |
| 
 | |
| PyAPI_FUNC(int) PyUnicode_IsIdentifier(PyObject *s);
 | |
| 
 | |
| /* === Characters Type APIs =============================================== */
 | |
| 
 | |
| #ifndef Py_LIMITED_API
 | |
| #  define Py_CPYTHON_UNICODEOBJECT_H
 | |
| #  include "cpython/unicodeobject.h"
 | |
| #  undef Py_CPYTHON_UNICODEOBJECT_H
 | |
| #endif
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| #endif /* !Py_UNICODEOBJECT_H */
 |