17db96d56Sopenharmony_ci#ifndef Py_UNICODEOBJECT_H 27db96d56Sopenharmony_ci#define Py_UNICODEOBJECT_H 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_ci#include <stdarg.h> // va_list 57db96d56Sopenharmony_ci 67db96d56Sopenharmony_ci/* 77db96d56Sopenharmony_ci 87db96d56Sopenharmony_ciUnicode implementation based on original code by Fredrik Lundh, 97db96d56Sopenharmony_cimodified by Marc-Andre Lemburg (mal@lemburg.com) according to the 107db96d56Sopenharmony_ciUnicode Integration Proposal. (See 117db96d56Sopenharmony_cihttp://www.egenix.com/files/python/unicode-proposal.txt). 127db96d56Sopenharmony_ci 137db96d56Sopenharmony_ciCopyright (c) Corporation for National Research Initiatives. 147db96d56Sopenharmony_ci 157db96d56Sopenharmony_ci 167db96d56Sopenharmony_ci Original header: 177db96d56Sopenharmony_ci -------------------------------------------------------------------- 187db96d56Sopenharmony_ci 197db96d56Sopenharmony_ci * Yet another Unicode string type for Python. This type supports the 207db96d56Sopenharmony_ci * 16-bit Basic Multilingual Plane (BMP) only. 217db96d56Sopenharmony_ci * 227db96d56Sopenharmony_ci * Written by Fredrik Lundh, January 1999. 237db96d56Sopenharmony_ci * 247db96d56Sopenharmony_ci * Copyright (c) 1999 by Secret Labs AB. 257db96d56Sopenharmony_ci * Copyright (c) 1999 by Fredrik Lundh. 267db96d56Sopenharmony_ci * 277db96d56Sopenharmony_ci * fredrik@pythonware.com 287db96d56Sopenharmony_ci * http://www.pythonware.com 297db96d56Sopenharmony_ci * 307db96d56Sopenharmony_ci * -------------------------------------------------------------------- 317db96d56Sopenharmony_ci * This Unicode String Type is 327db96d56Sopenharmony_ci * 337db96d56Sopenharmony_ci * Copyright (c) 1999 by Secret Labs AB 347db96d56Sopenharmony_ci * Copyright (c) 1999 by Fredrik Lundh 357db96d56Sopenharmony_ci * 367db96d56Sopenharmony_ci * By obtaining, using, and/or copying this software and/or its 377db96d56Sopenharmony_ci * associated documentation, you agree that you have read, understood, 387db96d56Sopenharmony_ci * and will comply with the following terms and conditions: 397db96d56Sopenharmony_ci * 407db96d56Sopenharmony_ci * Permission to use, copy, modify, and distribute this software and its 417db96d56Sopenharmony_ci * associated documentation for any purpose and without fee is hereby 427db96d56Sopenharmony_ci * granted, provided that the above copyright notice appears in all 437db96d56Sopenharmony_ci * copies, and that both that copyright notice and this permission notice 447db96d56Sopenharmony_ci * appear in supporting documentation, and that the name of Secret Labs 457db96d56Sopenharmony_ci * AB or the author not be used in advertising or publicity pertaining to 467db96d56Sopenharmony_ci * distribution of the software without specific, written prior 477db96d56Sopenharmony_ci * permission. 487db96d56Sopenharmony_ci * 497db96d56Sopenharmony_ci * SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO 507db96d56Sopenharmony_ci * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 517db96d56Sopenharmony_ci * FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR 527db96d56Sopenharmony_ci * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 537db96d56Sopenharmony_ci * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 547db96d56Sopenharmony_ci * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT 557db96d56Sopenharmony_ci * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 567db96d56Sopenharmony_ci * -------------------------------------------------------------------- */ 577db96d56Sopenharmony_ci 587db96d56Sopenharmony_ci#include <ctype.h> 597db96d56Sopenharmony_ci 607db96d56Sopenharmony_ci/* === Internal API ======================================================= */ 617db96d56Sopenharmony_ci 627db96d56Sopenharmony_ci/* --- Internal Unicode Format -------------------------------------------- */ 637db96d56Sopenharmony_ci 647db96d56Sopenharmony_ci/* Python 3.x requires unicode */ 657db96d56Sopenharmony_ci#define Py_USING_UNICODE 667db96d56Sopenharmony_ci 677db96d56Sopenharmony_ci#ifndef SIZEOF_WCHAR_T 687db96d56Sopenharmony_ci#error Must define SIZEOF_WCHAR_T 697db96d56Sopenharmony_ci#endif 707db96d56Sopenharmony_ci 717db96d56Sopenharmony_ci#define Py_UNICODE_SIZE SIZEOF_WCHAR_T 727db96d56Sopenharmony_ci 737db96d56Sopenharmony_ci/* If wchar_t can be used for UCS-4 storage, set Py_UNICODE_WIDE. 747db96d56Sopenharmony_ci Otherwise, Unicode strings are stored as UCS-2 (with limited support 757db96d56Sopenharmony_ci for UTF-16) */ 767db96d56Sopenharmony_ci 777db96d56Sopenharmony_ci#if Py_UNICODE_SIZE >= 4 787db96d56Sopenharmony_ci#define Py_UNICODE_WIDE 797db96d56Sopenharmony_ci#endif 807db96d56Sopenharmony_ci 817db96d56Sopenharmony_ci/* Set these flags if the platform has "wchar.h" and the 827db96d56Sopenharmony_ci wchar_t type is a 16-bit unsigned type */ 837db96d56Sopenharmony_ci/* #define HAVE_WCHAR_H */ 847db96d56Sopenharmony_ci/* #define HAVE_USABLE_WCHAR_T */ 857db96d56Sopenharmony_ci 867db96d56Sopenharmony_ci/* If the compiler provides a wchar_t type we try to support it 877db96d56Sopenharmony_ci through the interface functions PyUnicode_FromWideChar(), 887db96d56Sopenharmony_ci PyUnicode_AsWideChar() and PyUnicode_AsWideCharString(). */ 897db96d56Sopenharmony_ci 907db96d56Sopenharmony_ci#ifdef HAVE_USABLE_WCHAR_T 917db96d56Sopenharmony_ci# ifndef HAVE_WCHAR_H 927db96d56Sopenharmony_ci# define HAVE_WCHAR_H 937db96d56Sopenharmony_ci# endif 947db96d56Sopenharmony_ci#endif 957db96d56Sopenharmony_ci 967db96d56Sopenharmony_ci#ifdef HAVE_WCHAR_H 977db96d56Sopenharmony_ci# include <wchar.h> 987db96d56Sopenharmony_ci#endif 997db96d56Sopenharmony_ci 1007db96d56Sopenharmony_ci/* Py_UCS4 and Py_UCS2 are typedefs for the respective 1017db96d56Sopenharmony_ci unicode representations. */ 1027db96d56Sopenharmony_citypedef uint32_t Py_UCS4; 1037db96d56Sopenharmony_citypedef uint16_t Py_UCS2; 1047db96d56Sopenharmony_citypedef uint8_t Py_UCS1; 1057db96d56Sopenharmony_ci 1067db96d56Sopenharmony_ci#ifdef __cplusplus 1077db96d56Sopenharmony_ciextern "C" { 1087db96d56Sopenharmony_ci#endif 1097db96d56Sopenharmony_ci 1107db96d56Sopenharmony_ci 1117db96d56Sopenharmony_ciPyAPI_DATA(PyTypeObject) PyUnicode_Type; 1127db96d56Sopenharmony_ciPyAPI_DATA(PyTypeObject) PyUnicodeIter_Type; 1137db96d56Sopenharmony_ci 1147db96d56Sopenharmony_ci#define PyUnicode_Check(op) \ 1157db96d56Sopenharmony_ci PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS) 1167db96d56Sopenharmony_ci#define PyUnicode_CheckExact(op) Py_IS_TYPE(op, &PyUnicode_Type) 1177db96d56Sopenharmony_ci 1187db96d56Sopenharmony_ci/* --- Constants ---------------------------------------------------------- */ 1197db96d56Sopenharmony_ci 1207db96d56Sopenharmony_ci/* This Unicode character will be used as replacement character during 1217db96d56Sopenharmony_ci decoding if the errors argument is set to "replace". Note: the 1227db96d56Sopenharmony_ci Unicode character U+FFFD is the official REPLACEMENT CHARACTER in 1237db96d56Sopenharmony_ci Unicode 3.0. */ 1247db96d56Sopenharmony_ci 1257db96d56Sopenharmony_ci#define Py_UNICODE_REPLACEMENT_CHARACTER ((Py_UCS4) 0xFFFD) 1267db96d56Sopenharmony_ci 1277db96d56Sopenharmony_ci/* === Public API ========================================================= */ 1287db96d56Sopenharmony_ci 1297db96d56Sopenharmony_ci/* Similar to PyUnicode_FromUnicode(), but u points to UTF-8 encoded bytes */ 1307db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_FromStringAndSize( 1317db96d56Sopenharmony_ci const char *u, /* UTF-8 encoded string */ 1327db96d56Sopenharmony_ci Py_ssize_t size /* size of buffer */ 1337db96d56Sopenharmony_ci ); 1347db96d56Sopenharmony_ci 1357db96d56Sopenharmony_ci/* Similar to PyUnicode_FromUnicode(), but u points to null-terminated 1367db96d56Sopenharmony_ci UTF-8 encoded bytes. The size is determined with strlen(). */ 1377db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_FromString( 1387db96d56Sopenharmony_ci const char *u /* UTF-8 encoded string */ 1397db96d56Sopenharmony_ci ); 1407db96d56Sopenharmony_ci 1417db96d56Sopenharmony_ci#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 1427db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_Substring( 1437db96d56Sopenharmony_ci PyObject *str, 1447db96d56Sopenharmony_ci Py_ssize_t start, 1457db96d56Sopenharmony_ci Py_ssize_t end); 1467db96d56Sopenharmony_ci#endif 1477db96d56Sopenharmony_ci 1487db96d56Sopenharmony_ci#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 1497db96d56Sopenharmony_ci/* Copy the string into a UCS4 buffer including the null character if copy_null 1507db96d56Sopenharmony_ci is set. Return NULL and raise an exception on error. Raise a SystemError if 1517db96d56Sopenharmony_ci the buffer is smaller than the string. Return buffer on success. 1527db96d56Sopenharmony_ci 1537db96d56Sopenharmony_ci buflen is the length of the buffer in (Py_UCS4) characters. */ 1547db96d56Sopenharmony_ciPyAPI_FUNC(Py_UCS4*) PyUnicode_AsUCS4( 1557db96d56Sopenharmony_ci PyObject *unicode, 1567db96d56Sopenharmony_ci Py_UCS4* buffer, 1577db96d56Sopenharmony_ci Py_ssize_t buflen, 1587db96d56Sopenharmony_ci int copy_null); 1597db96d56Sopenharmony_ci 1607db96d56Sopenharmony_ci/* Copy the string into a UCS4 buffer. A new buffer is allocated using 1617db96d56Sopenharmony_ci * PyMem_Malloc; if this fails, NULL is returned with a memory error 1627db96d56Sopenharmony_ci exception set. */ 1637db96d56Sopenharmony_ciPyAPI_FUNC(Py_UCS4*) PyUnicode_AsUCS4Copy(PyObject *unicode); 1647db96d56Sopenharmony_ci#endif 1657db96d56Sopenharmony_ci 1667db96d56Sopenharmony_ci#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 1677db96d56Sopenharmony_ci/* Get the length of the Unicode object. */ 1687db96d56Sopenharmony_ci 1697db96d56Sopenharmony_ciPyAPI_FUNC(Py_ssize_t) PyUnicode_GetLength( 1707db96d56Sopenharmony_ci PyObject *unicode 1717db96d56Sopenharmony_ci); 1727db96d56Sopenharmony_ci#endif 1737db96d56Sopenharmony_ci 1747db96d56Sopenharmony_ci/* Get the number of Py_UNICODE units in the 1757db96d56Sopenharmony_ci string representation. */ 1767db96d56Sopenharmony_ci 1777db96d56Sopenharmony_ciPy_DEPRECATED(3.3) PyAPI_FUNC(Py_ssize_t) PyUnicode_GetSize( 1787db96d56Sopenharmony_ci PyObject *unicode /* Unicode object */ 1797db96d56Sopenharmony_ci ); 1807db96d56Sopenharmony_ci 1817db96d56Sopenharmony_ci#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 1827db96d56Sopenharmony_ci/* Read a character from the string. */ 1837db96d56Sopenharmony_ci 1847db96d56Sopenharmony_ciPyAPI_FUNC(Py_UCS4) PyUnicode_ReadChar( 1857db96d56Sopenharmony_ci PyObject *unicode, 1867db96d56Sopenharmony_ci Py_ssize_t index 1877db96d56Sopenharmony_ci ); 1887db96d56Sopenharmony_ci 1897db96d56Sopenharmony_ci/* Write a character to the string. The string must have been created through 1907db96d56Sopenharmony_ci PyUnicode_New, must not be shared, and must not have been hashed yet. 1917db96d56Sopenharmony_ci 1927db96d56Sopenharmony_ci Return 0 on success, -1 on error. */ 1937db96d56Sopenharmony_ci 1947db96d56Sopenharmony_ciPyAPI_FUNC(int) PyUnicode_WriteChar( 1957db96d56Sopenharmony_ci PyObject *unicode, 1967db96d56Sopenharmony_ci Py_ssize_t index, 1977db96d56Sopenharmony_ci Py_UCS4 character 1987db96d56Sopenharmony_ci ); 1997db96d56Sopenharmony_ci#endif 2007db96d56Sopenharmony_ci 2017db96d56Sopenharmony_ci/* Resize a Unicode object. The length is the number of characters, except 2027db96d56Sopenharmony_ci if the kind of the string is PyUnicode_WCHAR_KIND: in this case, the length 2037db96d56Sopenharmony_ci is the number of Py_UNICODE characters. 2047db96d56Sopenharmony_ci 2057db96d56Sopenharmony_ci *unicode is modified to point to the new (resized) object and 0 2067db96d56Sopenharmony_ci returned on success. 2077db96d56Sopenharmony_ci 2087db96d56Sopenharmony_ci Try to resize the string in place (which is usually faster than allocating 2097db96d56Sopenharmony_ci a new string and copy characters), or create a new string. 2107db96d56Sopenharmony_ci 2117db96d56Sopenharmony_ci Error handling is implemented as follows: an exception is set, -1 2127db96d56Sopenharmony_ci is returned and *unicode left untouched. 2137db96d56Sopenharmony_ci 2147db96d56Sopenharmony_ci WARNING: The function doesn't check string content, the result may not be a 2157db96d56Sopenharmony_ci string in canonical representation. */ 2167db96d56Sopenharmony_ci 2177db96d56Sopenharmony_ciPyAPI_FUNC(int) PyUnicode_Resize( 2187db96d56Sopenharmony_ci PyObject **unicode, /* Pointer to the Unicode object */ 2197db96d56Sopenharmony_ci Py_ssize_t length /* New length */ 2207db96d56Sopenharmony_ci ); 2217db96d56Sopenharmony_ci 2227db96d56Sopenharmony_ci/* Decode obj to a Unicode object. 2237db96d56Sopenharmony_ci 2247db96d56Sopenharmony_ci bytes, bytearray and other bytes-like objects are decoded according to the 2257db96d56Sopenharmony_ci given encoding and error handler. The encoding and error handler can be 2267db96d56Sopenharmony_ci NULL to have the interface use UTF-8 and "strict". 2277db96d56Sopenharmony_ci 2287db96d56Sopenharmony_ci All other objects (including Unicode objects) raise an exception. 2297db96d56Sopenharmony_ci 2307db96d56Sopenharmony_ci The API returns NULL in case of an error. The caller is responsible 2317db96d56Sopenharmony_ci for decref'ing the returned objects. 2327db96d56Sopenharmony_ci 2337db96d56Sopenharmony_ci*/ 2347db96d56Sopenharmony_ci 2357db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_FromEncodedObject( 2367db96d56Sopenharmony_ci PyObject *obj, /* Object */ 2377db96d56Sopenharmony_ci const char *encoding, /* encoding */ 2387db96d56Sopenharmony_ci const char *errors /* error handling */ 2397db96d56Sopenharmony_ci ); 2407db96d56Sopenharmony_ci 2417db96d56Sopenharmony_ci/* Copy an instance of a Unicode subtype to a new true Unicode object if 2427db96d56Sopenharmony_ci necessary. If obj is already a true Unicode object (not a subtype), return 2437db96d56Sopenharmony_ci the reference with *incremented* refcount. 2447db96d56Sopenharmony_ci 2457db96d56Sopenharmony_ci The API returns NULL in case of an error. The caller is responsible 2467db96d56Sopenharmony_ci for decref'ing the returned objects. 2477db96d56Sopenharmony_ci 2487db96d56Sopenharmony_ci*/ 2497db96d56Sopenharmony_ci 2507db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_FromObject( 2517db96d56Sopenharmony_ci PyObject *obj /* Object */ 2527db96d56Sopenharmony_ci ); 2537db96d56Sopenharmony_ci 2547db96d56Sopenharmony_ciPyAPI_FUNC(PyObject *) PyUnicode_FromFormatV( 2557db96d56Sopenharmony_ci const char *format, /* ASCII-encoded string */ 2567db96d56Sopenharmony_ci va_list vargs 2577db96d56Sopenharmony_ci ); 2587db96d56Sopenharmony_ciPyAPI_FUNC(PyObject *) PyUnicode_FromFormat( 2597db96d56Sopenharmony_ci const char *format, /* ASCII-encoded string */ 2607db96d56Sopenharmony_ci ... 2617db96d56Sopenharmony_ci ); 2627db96d56Sopenharmony_ci 2637db96d56Sopenharmony_ciPyAPI_FUNC(void) PyUnicode_InternInPlace(PyObject **); 2647db96d56Sopenharmony_ciPyAPI_FUNC(PyObject *) PyUnicode_InternFromString( 2657db96d56Sopenharmony_ci const char *u /* UTF-8 encoded string */ 2667db96d56Sopenharmony_ci ); 2677db96d56Sopenharmony_ci 2687db96d56Sopenharmony_ci// PyUnicode_InternImmortal() is deprecated since Python 3.10 2697db96d56Sopenharmony_ci// and will be removed in Python 3.12. Use PyUnicode_InternInPlace() instead. 2707db96d56Sopenharmony_ciPy_DEPRECATED(3.10) PyAPI_FUNC(void) PyUnicode_InternImmortal(PyObject **); 2717db96d56Sopenharmony_ci 2727db96d56Sopenharmony_ci/* --- wchar_t support for platforms which support it --------------------- */ 2737db96d56Sopenharmony_ci 2747db96d56Sopenharmony_ci#ifdef HAVE_WCHAR_H 2757db96d56Sopenharmony_ci 2767db96d56Sopenharmony_ci/* Create a Unicode Object from the wchar_t buffer w of the given 2777db96d56Sopenharmony_ci size. 2787db96d56Sopenharmony_ci 2797db96d56Sopenharmony_ci The buffer is copied into the new object. */ 2807db96d56Sopenharmony_ci 2817db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_FromWideChar( 2827db96d56Sopenharmony_ci const wchar_t *w, /* wchar_t buffer */ 2837db96d56Sopenharmony_ci Py_ssize_t size /* size of buffer */ 2847db96d56Sopenharmony_ci ); 2857db96d56Sopenharmony_ci 2867db96d56Sopenharmony_ci/* Copies the Unicode Object contents into the wchar_t buffer w. At 2877db96d56Sopenharmony_ci most size wchar_t characters are copied. 2887db96d56Sopenharmony_ci 2897db96d56Sopenharmony_ci Note that the resulting wchar_t string may or may not be 2907db96d56Sopenharmony_ci 0-terminated. It is the responsibility of the caller to make sure 2917db96d56Sopenharmony_ci that the wchar_t string is 0-terminated in case this is required by 2927db96d56Sopenharmony_ci the application. 2937db96d56Sopenharmony_ci 2947db96d56Sopenharmony_ci Returns the number of wchar_t characters copied (excluding a 2957db96d56Sopenharmony_ci possibly trailing 0-termination character) or -1 in case of an 2967db96d56Sopenharmony_ci error. */ 2977db96d56Sopenharmony_ci 2987db96d56Sopenharmony_ciPyAPI_FUNC(Py_ssize_t) PyUnicode_AsWideChar( 2997db96d56Sopenharmony_ci PyObject *unicode, /* Unicode object */ 3007db96d56Sopenharmony_ci wchar_t *w, /* wchar_t buffer */ 3017db96d56Sopenharmony_ci Py_ssize_t size /* size of buffer */ 3027db96d56Sopenharmony_ci ); 3037db96d56Sopenharmony_ci 3047db96d56Sopenharmony_ci/* Convert the Unicode object to a wide character string. The output string 3057db96d56Sopenharmony_ci always ends with a nul character. If size is not NULL, write the number of 3067db96d56Sopenharmony_ci wide characters (excluding the null character) into *size. 3077db96d56Sopenharmony_ci 3087db96d56Sopenharmony_ci Returns a buffer allocated by PyMem_Malloc() (use PyMem_Free() to free it) 3097db96d56Sopenharmony_ci on success. On error, returns NULL, *size is undefined and raises a 3107db96d56Sopenharmony_ci MemoryError. */ 3117db96d56Sopenharmony_ci 3127db96d56Sopenharmony_ciPyAPI_FUNC(wchar_t*) PyUnicode_AsWideCharString( 3137db96d56Sopenharmony_ci PyObject *unicode, /* Unicode object */ 3147db96d56Sopenharmony_ci Py_ssize_t *size /* number of characters of the result */ 3157db96d56Sopenharmony_ci ); 3167db96d56Sopenharmony_ci 3177db96d56Sopenharmony_ci#endif 3187db96d56Sopenharmony_ci 3197db96d56Sopenharmony_ci/* --- Unicode ordinals --------------------------------------------------- */ 3207db96d56Sopenharmony_ci 3217db96d56Sopenharmony_ci/* Create a Unicode Object from the given Unicode code point ordinal. 3227db96d56Sopenharmony_ci 3237db96d56Sopenharmony_ci The ordinal must be in range(0x110000). A ValueError is 3247db96d56Sopenharmony_ci raised in case it is not. 3257db96d56Sopenharmony_ci 3267db96d56Sopenharmony_ci*/ 3277db96d56Sopenharmony_ci 3287db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_FromOrdinal(int ordinal); 3297db96d56Sopenharmony_ci 3307db96d56Sopenharmony_ci/* === Builtin Codecs ===================================================== 3317db96d56Sopenharmony_ci 3327db96d56Sopenharmony_ci Many of these APIs take two arguments encoding and errors. These 3337db96d56Sopenharmony_ci parameters encoding and errors have the same semantics as the ones 3347db96d56Sopenharmony_ci of the builtin str() API. 3357db96d56Sopenharmony_ci 3367db96d56Sopenharmony_ci Setting encoding to NULL causes the default encoding (UTF-8) to be used. 3377db96d56Sopenharmony_ci 3387db96d56Sopenharmony_ci Error handling is set by errors which may also be set to NULL 3397db96d56Sopenharmony_ci meaning to use the default handling defined for the codec. Default 3407db96d56Sopenharmony_ci error handling for all builtin codecs is "strict" (ValueErrors are 3417db96d56Sopenharmony_ci raised). 3427db96d56Sopenharmony_ci 3437db96d56Sopenharmony_ci The codecs all use a similar interface. Only deviation from the 3447db96d56Sopenharmony_ci generic ones are documented. 3457db96d56Sopenharmony_ci 3467db96d56Sopenharmony_ci*/ 3477db96d56Sopenharmony_ci 3487db96d56Sopenharmony_ci/* --- Manage the default encoding ---------------------------------------- */ 3497db96d56Sopenharmony_ci 3507db96d56Sopenharmony_ci/* Returns "utf-8". */ 3517db96d56Sopenharmony_ciPyAPI_FUNC(const char*) PyUnicode_GetDefaultEncoding(void); 3527db96d56Sopenharmony_ci 3537db96d56Sopenharmony_ci/* --- Generic Codecs ----------------------------------------------------- */ 3547db96d56Sopenharmony_ci 3557db96d56Sopenharmony_ci/* Create a Unicode object by decoding the encoded string s of the 3567db96d56Sopenharmony_ci given size. */ 3577db96d56Sopenharmony_ci 3587db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_Decode( 3597db96d56Sopenharmony_ci const char *s, /* encoded string */ 3607db96d56Sopenharmony_ci Py_ssize_t size, /* size of buffer */ 3617db96d56Sopenharmony_ci const char *encoding, /* encoding */ 3627db96d56Sopenharmony_ci const char *errors /* error handling */ 3637db96d56Sopenharmony_ci ); 3647db96d56Sopenharmony_ci 3657db96d56Sopenharmony_ci/* Decode a Unicode object unicode and return the result as Python 3667db96d56Sopenharmony_ci object. 3677db96d56Sopenharmony_ci 3687db96d56Sopenharmony_ci This API is DEPRECATED. The only supported standard encoding is rot13. 3697db96d56Sopenharmony_ci Use PyCodec_Decode() to decode with rot13 and non-standard codecs 3707db96d56Sopenharmony_ci that decode from str. */ 3717db96d56Sopenharmony_ci 3727db96d56Sopenharmony_ciPy_DEPRECATED(3.6) PyAPI_FUNC(PyObject*) PyUnicode_AsDecodedObject( 3737db96d56Sopenharmony_ci PyObject *unicode, /* Unicode object */ 3747db96d56Sopenharmony_ci const char *encoding, /* encoding */ 3757db96d56Sopenharmony_ci const char *errors /* error handling */ 3767db96d56Sopenharmony_ci ); 3777db96d56Sopenharmony_ci 3787db96d56Sopenharmony_ci/* Decode a Unicode object unicode and return the result as Unicode 3797db96d56Sopenharmony_ci object. 3807db96d56Sopenharmony_ci 3817db96d56Sopenharmony_ci This API is DEPRECATED. The only supported standard encoding is rot13. 3827db96d56Sopenharmony_ci Use PyCodec_Decode() to decode with rot13 and non-standard codecs 3837db96d56Sopenharmony_ci that decode from str to str. */ 3847db96d56Sopenharmony_ci 3857db96d56Sopenharmony_ciPy_DEPRECATED(3.6) PyAPI_FUNC(PyObject*) PyUnicode_AsDecodedUnicode( 3867db96d56Sopenharmony_ci PyObject *unicode, /* Unicode object */ 3877db96d56Sopenharmony_ci const char *encoding, /* encoding */ 3887db96d56Sopenharmony_ci const char *errors /* error handling */ 3897db96d56Sopenharmony_ci ); 3907db96d56Sopenharmony_ci 3917db96d56Sopenharmony_ci/* Encodes a Unicode object and returns the result as Python 3927db96d56Sopenharmony_ci object. 3937db96d56Sopenharmony_ci 3947db96d56Sopenharmony_ci This API is DEPRECATED. It is superseded by PyUnicode_AsEncodedString() 3957db96d56Sopenharmony_ci since all standard encodings (except rot13) encode str to bytes. 3967db96d56Sopenharmony_ci Use PyCodec_Encode() for encoding with rot13 and non-standard codecs 3977db96d56Sopenharmony_ci that encode form str to non-bytes. */ 3987db96d56Sopenharmony_ci 3997db96d56Sopenharmony_ciPy_DEPRECATED(3.6) PyAPI_FUNC(PyObject*) PyUnicode_AsEncodedObject( 4007db96d56Sopenharmony_ci PyObject *unicode, /* Unicode object */ 4017db96d56Sopenharmony_ci const char *encoding, /* encoding */ 4027db96d56Sopenharmony_ci const char *errors /* error handling */ 4037db96d56Sopenharmony_ci ); 4047db96d56Sopenharmony_ci 4057db96d56Sopenharmony_ci/* Encodes a Unicode object and returns the result as Python string 4067db96d56Sopenharmony_ci object. */ 4077db96d56Sopenharmony_ci 4087db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_AsEncodedString( 4097db96d56Sopenharmony_ci PyObject *unicode, /* Unicode object */ 4107db96d56Sopenharmony_ci const char *encoding, /* encoding */ 4117db96d56Sopenharmony_ci const char *errors /* error handling */ 4127db96d56Sopenharmony_ci ); 4137db96d56Sopenharmony_ci 4147db96d56Sopenharmony_ci/* Encodes a Unicode object and returns the result as Unicode 4157db96d56Sopenharmony_ci object. 4167db96d56Sopenharmony_ci 4177db96d56Sopenharmony_ci This API is DEPRECATED. The only supported standard encodings is rot13. 4187db96d56Sopenharmony_ci Use PyCodec_Encode() to encode with rot13 and non-standard codecs 4197db96d56Sopenharmony_ci that encode from str to str. */ 4207db96d56Sopenharmony_ci 4217db96d56Sopenharmony_ciPy_DEPRECATED(3.6) PyAPI_FUNC(PyObject*) PyUnicode_AsEncodedUnicode( 4227db96d56Sopenharmony_ci PyObject *unicode, /* Unicode object */ 4237db96d56Sopenharmony_ci const char *encoding, /* encoding */ 4247db96d56Sopenharmony_ci const char *errors /* error handling */ 4257db96d56Sopenharmony_ci ); 4267db96d56Sopenharmony_ci 4277db96d56Sopenharmony_ci/* Build an encoding map. */ 4287db96d56Sopenharmony_ci 4297db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_BuildEncodingMap( 4307db96d56Sopenharmony_ci PyObject* string /* 256 character map */ 4317db96d56Sopenharmony_ci ); 4327db96d56Sopenharmony_ci 4337db96d56Sopenharmony_ci/* --- UTF-7 Codecs ------------------------------------------------------- */ 4347db96d56Sopenharmony_ci 4357db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF7( 4367db96d56Sopenharmony_ci const char *string, /* UTF-7 encoded string */ 4377db96d56Sopenharmony_ci Py_ssize_t length, /* size of string */ 4387db96d56Sopenharmony_ci const char *errors /* error handling */ 4397db96d56Sopenharmony_ci ); 4407db96d56Sopenharmony_ci 4417db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF7Stateful( 4427db96d56Sopenharmony_ci const char *string, /* UTF-7 encoded string */ 4437db96d56Sopenharmony_ci Py_ssize_t length, /* size of string */ 4447db96d56Sopenharmony_ci const char *errors, /* error handling */ 4457db96d56Sopenharmony_ci Py_ssize_t *consumed /* bytes consumed */ 4467db96d56Sopenharmony_ci ); 4477db96d56Sopenharmony_ci 4487db96d56Sopenharmony_ci/* --- UTF-8 Codecs ------------------------------------------------------- */ 4497db96d56Sopenharmony_ci 4507db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF8( 4517db96d56Sopenharmony_ci const char *string, /* UTF-8 encoded string */ 4527db96d56Sopenharmony_ci Py_ssize_t length, /* size of string */ 4537db96d56Sopenharmony_ci const char *errors /* error handling */ 4547db96d56Sopenharmony_ci ); 4557db96d56Sopenharmony_ci 4567db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF8Stateful( 4577db96d56Sopenharmony_ci const char *string, /* UTF-8 encoded string */ 4587db96d56Sopenharmony_ci Py_ssize_t length, /* size of string */ 4597db96d56Sopenharmony_ci const char *errors, /* error handling */ 4607db96d56Sopenharmony_ci Py_ssize_t *consumed /* bytes consumed */ 4617db96d56Sopenharmony_ci ); 4627db96d56Sopenharmony_ci 4637db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_AsUTF8String( 4647db96d56Sopenharmony_ci PyObject *unicode /* Unicode object */ 4657db96d56Sopenharmony_ci ); 4667db96d56Sopenharmony_ci 4677db96d56Sopenharmony_ci/* Returns a pointer to the default encoding (UTF-8) of the 4687db96d56Sopenharmony_ci Unicode object unicode and the size of the encoded representation 4697db96d56Sopenharmony_ci in bytes stored in *size. 4707db96d56Sopenharmony_ci 4717db96d56Sopenharmony_ci In case of an error, no *size is set. 4727db96d56Sopenharmony_ci 4737db96d56Sopenharmony_ci This function caches the UTF-8 encoded string in the unicodeobject 4747db96d56Sopenharmony_ci and subsequent calls will return the same string. The memory is released 4757db96d56Sopenharmony_ci when the unicodeobject is deallocated. 4767db96d56Sopenharmony_ci*/ 4777db96d56Sopenharmony_ci 4787db96d56Sopenharmony_ci#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x030A0000 4797db96d56Sopenharmony_ciPyAPI_FUNC(const char *) PyUnicode_AsUTF8AndSize( 4807db96d56Sopenharmony_ci PyObject *unicode, 4817db96d56Sopenharmony_ci Py_ssize_t *size); 4827db96d56Sopenharmony_ci#endif 4837db96d56Sopenharmony_ci 4847db96d56Sopenharmony_ci/* --- UTF-32 Codecs ------------------------------------------------------ */ 4857db96d56Sopenharmony_ci 4867db96d56Sopenharmony_ci/* Decodes length bytes from a UTF-32 encoded buffer string and returns 4877db96d56Sopenharmony_ci the corresponding Unicode object. 4887db96d56Sopenharmony_ci 4897db96d56Sopenharmony_ci errors (if non-NULL) defines the error handling. It defaults 4907db96d56Sopenharmony_ci to "strict". 4917db96d56Sopenharmony_ci 4927db96d56Sopenharmony_ci If byteorder is non-NULL, the decoder starts decoding using the 4937db96d56Sopenharmony_ci given byte order: 4947db96d56Sopenharmony_ci 4957db96d56Sopenharmony_ci *byteorder == -1: little endian 4967db96d56Sopenharmony_ci *byteorder == 0: native order 4977db96d56Sopenharmony_ci *byteorder == 1: big endian 4987db96d56Sopenharmony_ci 4997db96d56Sopenharmony_ci In native mode, the first four bytes of the stream are checked for a 5007db96d56Sopenharmony_ci BOM mark. If found, the BOM mark is analysed, the byte order 5017db96d56Sopenharmony_ci adjusted and the BOM skipped. In the other modes, no BOM mark 5027db96d56Sopenharmony_ci interpretation is done. After completion, *byteorder is set to the 5037db96d56Sopenharmony_ci current byte order at the end of input data. 5047db96d56Sopenharmony_ci 5057db96d56Sopenharmony_ci If byteorder is NULL, the codec starts in native order mode. 5067db96d56Sopenharmony_ci 5077db96d56Sopenharmony_ci*/ 5087db96d56Sopenharmony_ci 5097db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF32( 5107db96d56Sopenharmony_ci const char *string, /* UTF-32 encoded string */ 5117db96d56Sopenharmony_ci Py_ssize_t length, /* size of string */ 5127db96d56Sopenharmony_ci const char *errors, /* error handling */ 5137db96d56Sopenharmony_ci int *byteorder /* pointer to byteorder to use 5147db96d56Sopenharmony_ci 0=native;-1=LE,1=BE; updated on 5157db96d56Sopenharmony_ci exit */ 5167db96d56Sopenharmony_ci ); 5177db96d56Sopenharmony_ci 5187db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF32Stateful( 5197db96d56Sopenharmony_ci const char *string, /* UTF-32 encoded string */ 5207db96d56Sopenharmony_ci Py_ssize_t length, /* size of string */ 5217db96d56Sopenharmony_ci const char *errors, /* error handling */ 5227db96d56Sopenharmony_ci int *byteorder, /* pointer to byteorder to use 5237db96d56Sopenharmony_ci 0=native;-1=LE,1=BE; updated on 5247db96d56Sopenharmony_ci exit */ 5257db96d56Sopenharmony_ci Py_ssize_t *consumed /* bytes consumed */ 5267db96d56Sopenharmony_ci ); 5277db96d56Sopenharmony_ci 5287db96d56Sopenharmony_ci/* Returns a Python string using the UTF-32 encoding in native byte 5297db96d56Sopenharmony_ci order. The string always starts with a BOM mark. */ 5307db96d56Sopenharmony_ci 5317db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_AsUTF32String( 5327db96d56Sopenharmony_ci PyObject *unicode /* Unicode object */ 5337db96d56Sopenharmony_ci ); 5347db96d56Sopenharmony_ci 5357db96d56Sopenharmony_ci/* Returns a Python string object holding the UTF-32 encoded value of 5367db96d56Sopenharmony_ci the Unicode data. 5377db96d56Sopenharmony_ci 5387db96d56Sopenharmony_ci If byteorder is not 0, output is written according to the following 5397db96d56Sopenharmony_ci byte order: 5407db96d56Sopenharmony_ci 5417db96d56Sopenharmony_ci byteorder == -1: little endian 5427db96d56Sopenharmony_ci byteorder == 0: native byte order (writes a BOM mark) 5437db96d56Sopenharmony_ci byteorder == 1: big endian 5447db96d56Sopenharmony_ci 5457db96d56Sopenharmony_ci If byteorder is 0, the output string will always start with the 5467db96d56Sopenharmony_ci Unicode BOM mark (U+FEFF). In the other two modes, no BOM mark is 5477db96d56Sopenharmony_ci prepended. 5487db96d56Sopenharmony_ci 5497db96d56Sopenharmony_ci*/ 5507db96d56Sopenharmony_ci 5517db96d56Sopenharmony_ci/* --- UTF-16 Codecs ------------------------------------------------------ */ 5527db96d56Sopenharmony_ci 5537db96d56Sopenharmony_ci/* Decodes length bytes from a UTF-16 encoded buffer string and returns 5547db96d56Sopenharmony_ci the corresponding Unicode object. 5557db96d56Sopenharmony_ci 5567db96d56Sopenharmony_ci errors (if non-NULL) defines the error handling. It defaults 5577db96d56Sopenharmony_ci to "strict". 5587db96d56Sopenharmony_ci 5597db96d56Sopenharmony_ci If byteorder is non-NULL, the decoder starts decoding using the 5607db96d56Sopenharmony_ci given byte order: 5617db96d56Sopenharmony_ci 5627db96d56Sopenharmony_ci *byteorder == -1: little endian 5637db96d56Sopenharmony_ci *byteorder == 0: native order 5647db96d56Sopenharmony_ci *byteorder == 1: big endian 5657db96d56Sopenharmony_ci 5667db96d56Sopenharmony_ci In native mode, the first two bytes of the stream are checked for a 5677db96d56Sopenharmony_ci BOM mark. If found, the BOM mark is analysed, the byte order 5687db96d56Sopenharmony_ci adjusted and the BOM skipped. In the other modes, no BOM mark 5697db96d56Sopenharmony_ci interpretation is done. After completion, *byteorder is set to the 5707db96d56Sopenharmony_ci current byte order at the end of input data. 5717db96d56Sopenharmony_ci 5727db96d56Sopenharmony_ci If byteorder is NULL, the codec starts in native order mode. 5737db96d56Sopenharmony_ci 5747db96d56Sopenharmony_ci*/ 5757db96d56Sopenharmony_ci 5767db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF16( 5777db96d56Sopenharmony_ci const char *string, /* UTF-16 encoded string */ 5787db96d56Sopenharmony_ci Py_ssize_t length, /* size of string */ 5797db96d56Sopenharmony_ci const char *errors, /* error handling */ 5807db96d56Sopenharmony_ci int *byteorder /* pointer to byteorder to use 5817db96d56Sopenharmony_ci 0=native;-1=LE,1=BE; updated on 5827db96d56Sopenharmony_ci exit */ 5837db96d56Sopenharmony_ci ); 5847db96d56Sopenharmony_ci 5857db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF16Stateful( 5867db96d56Sopenharmony_ci const char *string, /* UTF-16 encoded string */ 5877db96d56Sopenharmony_ci Py_ssize_t length, /* size of string */ 5887db96d56Sopenharmony_ci const char *errors, /* error handling */ 5897db96d56Sopenharmony_ci int *byteorder, /* pointer to byteorder to use 5907db96d56Sopenharmony_ci 0=native;-1=LE,1=BE; updated on 5917db96d56Sopenharmony_ci exit */ 5927db96d56Sopenharmony_ci Py_ssize_t *consumed /* bytes consumed */ 5937db96d56Sopenharmony_ci ); 5947db96d56Sopenharmony_ci 5957db96d56Sopenharmony_ci/* Returns a Python string using the UTF-16 encoding in native byte 5967db96d56Sopenharmony_ci order. The string always starts with a BOM mark. */ 5977db96d56Sopenharmony_ci 5987db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_AsUTF16String( 5997db96d56Sopenharmony_ci PyObject *unicode /* Unicode object */ 6007db96d56Sopenharmony_ci ); 6017db96d56Sopenharmony_ci 6027db96d56Sopenharmony_ci/* --- Unicode-Escape Codecs ---------------------------------------------- */ 6037db96d56Sopenharmony_ci 6047db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_DecodeUnicodeEscape( 6057db96d56Sopenharmony_ci const char *string, /* Unicode-Escape encoded string */ 6067db96d56Sopenharmony_ci Py_ssize_t length, /* size of string */ 6077db96d56Sopenharmony_ci const char *errors /* error handling */ 6087db96d56Sopenharmony_ci ); 6097db96d56Sopenharmony_ci 6107db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_AsUnicodeEscapeString( 6117db96d56Sopenharmony_ci PyObject *unicode /* Unicode object */ 6127db96d56Sopenharmony_ci ); 6137db96d56Sopenharmony_ci 6147db96d56Sopenharmony_ci/* --- Raw-Unicode-Escape Codecs ------------------------------------------ */ 6157db96d56Sopenharmony_ci 6167db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_DecodeRawUnicodeEscape( 6177db96d56Sopenharmony_ci const char *string, /* Raw-Unicode-Escape encoded string */ 6187db96d56Sopenharmony_ci Py_ssize_t length, /* size of string */ 6197db96d56Sopenharmony_ci const char *errors /* error handling */ 6207db96d56Sopenharmony_ci ); 6217db96d56Sopenharmony_ci 6227db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_AsRawUnicodeEscapeString( 6237db96d56Sopenharmony_ci PyObject *unicode /* Unicode object */ 6247db96d56Sopenharmony_ci ); 6257db96d56Sopenharmony_ci 6267db96d56Sopenharmony_ci/* --- Latin-1 Codecs ----------------------------------------------------- 6277db96d56Sopenharmony_ci 6287db96d56Sopenharmony_ci Note: Latin-1 corresponds to the first 256 Unicode ordinals. */ 6297db96d56Sopenharmony_ci 6307db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_DecodeLatin1( 6317db96d56Sopenharmony_ci const char *string, /* Latin-1 encoded string */ 6327db96d56Sopenharmony_ci Py_ssize_t length, /* size of string */ 6337db96d56Sopenharmony_ci const char *errors /* error handling */ 6347db96d56Sopenharmony_ci ); 6357db96d56Sopenharmony_ci 6367db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_AsLatin1String( 6377db96d56Sopenharmony_ci PyObject *unicode /* Unicode object */ 6387db96d56Sopenharmony_ci ); 6397db96d56Sopenharmony_ci 6407db96d56Sopenharmony_ci/* --- ASCII Codecs ------------------------------------------------------- 6417db96d56Sopenharmony_ci 6427db96d56Sopenharmony_ci Only 7-bit ASCII data is excepted. All other codes generate errors. 6437db96d56Sopenharmony_ci 6447db96d56Sopenharmony_ci*/ 6457db96d56Sopenharmony_ci 6467db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_DecodeASCII( 6477db96d56Sopenharmony_ci const char *string, /* ASCII encoded string */ 6487db96d56Sopenharmony_ci Py_ssize_t length, /* size of string */ 6497db96d56Sopenharmony_ci const char *errors /* error handling */ 6507db96d56Sopenharmony_ci ); 6517db96d56Sopenharmony_ci 6527db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_AsASCIIString( 6537db96d56Sopenharmony_ci PyObject *unicode /* Unicode object */ 6547db96d56Sopenharmony_ci ); 6557db96d56Sopenharmony_ci 6567db96d56Sopenharmony_ci/* --- Character Map Codecs ----------------------------------------------- 6577db96d56Sopenharmony_ci 6587db96d56Sopenharmony_ci This codec uses mappings to encode and decode characters. 6597db96d56Sopenharmony_ci 6607db96d56Sopenharmony_ci Decoding mappings must map byte ordinals (integers in the range from 0 to 6617db96d56Sopenharmony_ci 255) to Unicode strings, integers (which are then interpreted as Unicode 6627db96d56Sopenharmony_ci ordinals) or None. Unmapped data bytes (ones which cause a LookupError) 6637db96d56Sopenharmony_ci as well as mapped to None, 0xFFFE or '\ufffe' are treated as "undefined 6647db96d56Sopenharmony_ci mapping" and cause an error. 6657db96d56Sopenharmony_ci 6667db96d56Sopenharmony_ci Encoding mappings must map Unicode ordinal integers to bytes objects, 6677db96d56Sopenharmony_ci integers in the range from 0 to 255 or None. Unmapped character 6687db96d56Sopenharmony_ci ordinals (ones which cause a LookupError) as well as mapped to 6697db96d56Sopenharmony_ci None are treated as "undefined mapping" and cause an error. 6707db96d56Sopenharmony_ci 6717db96d56Sopenharmony_ci*/ 6727db96d56Sopenharmony_ci 6737db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_DecodeCharmap( 6747db96d56Sopenharmony_ci const char *string, /* Encoded string */ 6757db96d56Sopenharmony_ci Py_ssize_t length, /* size of string */ 6767db96d56Sopenharmony_ci PyObject *mapping, /* decoding mapping */ 6777db96d56Sopenharmony_ci const char *errors /* error handling */ 6787db96d56Sopenharmony_ci ); 6797db96d56Sopenharmony_ci 6807db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_AsCharmapString( 6817db96d56Sopenharmony_ci PyObject *unicode, /* Unicode object */ 6827db96d56Sopenharmony_ci PyObject *mapping /* encoding mapping */ 6837db96d56Sopenharmony_ci ); 6847db96d56Sopenharmony_ci 6857db96d56Sopenharmony_ci/* --- MBCS codecs for Windows -------------------------------------------- */ 6867db96d56Sopenharmony_ci 6877db96d56Sopenharmony_ci#ifdef MS_WINDOWS 6887db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_DecodeMBCS( 6897db96d56Sopenharmony_ci const char *string, /* MBCS encoded string */ 6907db96d56Sopenharmony_ci Py_ssize_t length, /* size of string */ 6917db96d56Sopenharmony_ci const char *errors /* error handling */ 6927db96d56Sopenharmony_ci ); 6937db96d56Sopenharmony_ci 6947db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_DecodeMBCSStateful( 6957db96d56Sopenharmony_ci const char *string, /* MBCS encoded string */ 6967db96d56Sopenharmony_ci Py_ssize_t length, /* size of string */ 6977db96d56Sopenharmony_ci const char *errors, /* error handling */ 6987db96d56Sopenharmony_ci Py_ssize_t *consumed /* bytes consumed */ 6997db96d56Sopenharmony_ci ); 7007db96d56Sopenharmony_ci 7017db96d56Sopenharmony_ci#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 7027db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_DecodeCodePageStateful( 7037db96d56Sopenharmony_ci int code_page, /* code page number */ 7047db96d56Sopenharmony_ci const char *string, /* encoded string */ 7057db96d56Sopenharmony_ci Py_ssize_t length, /* size of string */ 7067db96d56Sopenharmony_ci const char *errors, /* error handling */ 7077db96d56Sopenharmony_ci Py_ssize_t *consumed /* bytes consumed */ 7087db96d56Sopenharmony_ci ); 7097db96d56Sopenharmony_ci#endif 7107db96d56Sopenharmony_ci 7117db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_AsMBCSString( 7127db96d56Sopenharmony_ci PyObject *unicode /* Unicode object */ 7137db96d56Sopenharmony_ci ); 7147db96d56Sopenharmony_ci 7157db96d56Sopenharmony_ci#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 7167db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_EncodeCodePage( 7177db96d56Sopenharmony_ci int code_page, /* code page number */ 7187db96d56Sopenharmony_ci PyObject *unicode, /* Unicode object */ 7197db96d56Sopenharmony_ci const char *errors /* error handling */ 7207db96d56Sopenharmony_ci ); 7217db96d56Sopenharmony_ci#endif 7227db96d56Sopenharmony_ci 7237db96d56Sopenharmony_ci#endif /* MS_WINDOWS */ 7247db96d56Sopenharmony_ci 7257db96d56Sopenharmony_ci/* --- Locale encoding --------------------------------------------------- */ 7267db96d56Sopenharmony_ci 7277db96d56Sopenharmony_ci#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 7287db96d56Sopenharmony_ci/* Decode a string from the current locale encoding. The decoder is strict if 7297db96d56Sopenharmony_ci *surrogateescape* is equal to zero, otherwise it uses the 'surrogateescape' 7307db96d56Sopenharmony_ci error handler (PEP 383) to escape undecodable bytes. If a byte sequence can 7317db96d56Sopenharmony_ci be decoded as a surrogate character and *surrogateescape* is not equal to 7327db96d56Sopenharmony_ci zero, the byte sequence is escaped using the 'surrogateescape' error handler 7337db96d56Sopenharmony_ci instead of being decoded. *str* must end with a null character but cannot 7347db96d56Sopenharmony_ci contain embedded null characters. */ 7357db96d56Sopenharmony_ci 7367db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_DecodeLocaleAndSize( 7377db96d56Sopenharmony_ci const char *str, 7387db96d56Sopenharmony_ci Py_ssize_t len, 7397db96d56Sopenharmony_ci const char *errors); 7407db96d56Sopenharmony_ci 7417db96d56Sopenharmony_ci/* Similar to PyUnicode_DecodeLocaleAndSize(), but compute the string 7427db96d56Sopenharmony_ci length using strlen(). */ 7437db96d56Sopenharmony_ci 7447db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_DecodeLocale( 7457db96d56Sopenharmony_ci const char *str, 7467db96d56Sopenharmony_ci const char *errors); 7477db96d56Sopenharmony_ci 7487db96d56Sopenharmony_ci/* Encode a Unicode object to the current locale encoding. The encoder is 7497db96d56Sopenharmony_ci strict is *surrogateescape* is equal to zero, otherwise the 7507db96d56Sopenharmony_ci "surrogateescape" error handler is used. Return a bytes object. The string 7517db96d56Sopenharmony_ci cannot contain embedded null characters. */ 7527db96d56Sopenharmony_ci 7537db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_EncodeLocale( 7547db96d56Sopenharmony_ci PyObject *unicode, 7557db96d56Sopenharmony_ci const char *errors 7567db96d56Sopenharmony_ci ); 7577db96d56Sopenharmony_ci#endif 7587db96d56Sopenharmony_ci 7597db96d56Sopenharmony_ci/* --- File system encoding ---------------------------------------------- */ 7607db96d56Sopenharmony_ci 7617db96d56Sopenharmony_ci/* ParseTuple converter: encode str objects to bytes using 7627db96d56Sopenharmony_ci PyUnicode_EncodeFSDefault(); bytes objects are output as-is. */ 7637db96d56Sopenharmony_ci 7647db96d56Sopenharmony_ciPyAPI_FUNC(int) PyUnicode_FSConverter(PyObject*, void*); 7657db96d56Sopenharmony_ci 7667db96d56Sopenharmony_ci/* ParseTuple converter: decode bytes objects to unicode using 7677db96d56Sopenharmony_ci PyUnicode_DecodeFSDefaultAndSize(); str objects are output as-is. */ 7687db96d56Sopenharmony_ci 7697db96d56Sopenharmony_ciPyAPI_FUNC(int) PyUnicode_FSDecoder(PyObject*, void*); 7707db96d56Sopenharmony_ci 7717db96d56Sopenharmony_ci/* Decode a null-terminated string using Py_FileSystemDefaultEncoding 7727db96d56Sopenharmony_ci and the "surrogateescape" error handler. 7737db96d56Sopenharmony_ci 7747db96d56Sopenharmony_ci If Py_FileSystemDefaultEncoding is not set, fall back to the locale 7757db96d56Sopenharmony_ci encoding. 7767db96d56Sopenharmony_ci 7777db96d56Sopenharmony_ci Use PyUnicode_DecodeFSDefaultAndSize() if the string length is known. 7787db96d56Sopenharmony_ci*/ 7797db96d56Sopenharmony_ci 7807db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_DecodeFSDefault( 7817db96d56Sopenharmony_ci const char *s /* encoded string */ 7827db96d56Sopenharmony_ci ); 7837db96d56Sopenharmony_ci 7847db96d56Sopenharmony_ci/* Decode a string using Py_FileSystemDefaultEncoding 7857db96d56Sopenharmony_ci and the "surrogateescape" error handler. 7867db96d56Sopenharmony_ci 7877db96d56Sopenharmony_ci If Py_FileSystemDefaultEncoding is not set, fall back to the locale 7887db96d56Sopenharmony_ci encoding. 7897db96d56Sopenharmony_ci*/ 7907db96d56Sopenharmony_ci 7917db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_DecodeFSDefaultAndSize( 7927db96d56Sopenharmony_ci const char *s, /* encoded string */ 7937db96d56Sopenharmony_ci Py_ssize_t size /* size */ 7947db96d56Sopenharmony_ci ); 7957db96d56Sopenharmony_ci 7967db96d56Sopenharmony_ci/* Encode a Unicode object to Py_FileSystemDefaultEncoding with the 7977db96d56Sopenharmony_ci "surrogateescape" error handler, and return bytes. 7987db96d56Sopenharmony_ci 7997db96d56Sopenharmony_ci If Py_FileSystemDefaultEncoding is not set, fall back to the locale 8007db96d56Sopenharmony_ci encoding. 8017db96d56Sopenharmony_ci*/ 8027db96d56Sopenharmony_ci 8037db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_EncodeFSDefault( 8047db96d56Sopenharmony_ci PyObject *unicode 8057db96d56Sopenharmony_ci ); 8067db96d56Sopenharmony_ci 8077db96d56Sopenharmony_ci/* --- Methods & Slots ---------------------------------------------------- 8087db96d56Sopenharmony_ci 8097db96d56Sopenharmony_ci These are capable of handling Unicode objects and strings on input 8107db96d56Sopenharmony_ci (we refer to them as strings in the descriptions) and return 8117db96d56Sopenharmony_ci Unicode objects or integers as appropriate. */ 8127db96d56Sopenharmony_ci 8137db96d56Sopenharmony_ci/* Concat two strings giving a new Unicode string. */ 8147db96d56Sopenharmony_ci 8157db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_Concat( 8167db96d56Sopenharmony_ci PyObject *left, /* Left string */ 8177db96d56Sopenharmony_ci PyObject *right /* Right string */ 8187db96d56Sopenharmony_ci ); 8197db96d56Sopenharmony_ci 8207db96d56Sopenharmony_ci/* Concat two strings and put the result in *pleft 8217db96d56Sopenharmony_ci (sets *pleft to NULL on error) */ 8227db96d56Sopenharmony_ci 8237db96d56Sopenharmony_ciPyAPI_FUNC(void) PyUnicode_Append( 8247db96d56Sopenharmony_ci PyObject **pleft, /* Pointer to left string */ 8257db96d56Sopenharmony_ci PyObject *right /* Right string */ 8267db96d56Sopenharmony_ci ); 8277db96d56Sopenharmony_ci 8287db96d56Sopenharmony_ci/* Concat two strings, put the result in *pleft and drop the right object 8297db96d56Sopenharmony_ci (sets *pleft to NULL on error) */ 8307db96d56Sopenharmony_ci 8317db96d56Sopenharmony_ciPyAPI_FUNC(void) PyUnicode_AppendAndDel( 8327db96d56Sopenharmony_ci PyObject **pleft, /* Pointer to left string */ 8337db96d56Sopenharmony_ci PyObject *right /* Right string */ 8347db96d56Sopenharmony_ci ); 8357db96d56Sopenharmony_ci 8367db96d56Sopenharmony_ci/* Split a string giving a list of Unicode strings. 8377db96d56Sopenharmony_ci 8387db96d56Sopenharmony_ci If sep is NULL, splitting will be done at all whitespace 8397db96d56Sopenharmony_ci substrings. Otherwise, splits occur at the given separator. 8407db96d56Sopenharmony_ci 8417db96d56Sopenharmony_ci At most maxsplit splits will be done. If negative, no limit is set. 8427db96d56Sopenharmony_ci 8437db96d56Sopenharmony_ci Separators are not included in the resulting list. 8447db96d56Sopenharmony_ci 8457db96d56Sopenharmony_ci*/ 8467db96d56Sopenharmony_ci 8477db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_Split( 8487db96d56Sopenharmony_ci PyObject *s, /* String to split */ 8497db96d56Sopenharmony_ci PyObject *sep, /* String separator */ 8507db96d56Sopenharmony_ci Py_ssize_t maxsplit /* Maxsplit count */ 8517db96d56Sopenharmony_ci ); 8527db96d56Sopenharmony_ci 8537db96d56Sopenharmony_ci/* Dito, but split at line breaks. 8547db96d56Sopenharmony_ci 8557db96d56Sopenharmony_ci CRLF is considered to be one line break. Line breaks are not 8567db96d56Sopenharmony_ci included in the resulting list. */ 8577db96d56Sopenharmony_ci 8587db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_Splitlines( 8597db96d56Sopenharmony_ci PyObject *s, /* String to split */ 8607db96d56Sopenharmony_ci int keepends /* If true, line end markers are included */ 8617db96d56Sopenharmony_ci ); 8627db96d56Sopenharmony_ci 8637db96d56Sopenharmony_ci/* Partition a string using a given separator. */ 8647db96d56Sopenharmony_ci 8657db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_Partition( 8667db96d56Sopenharmony_ci PyObject *s, /* String to partition */ 8677db96d56Sopenharmony_ci PyObject *sep /* String separator */ 8687db96d56Sopenharmony_ci ); 8697db96d56Sopenharmony_ci 8707db96d56Sopenharmony_ci/* Partition a string using a given separator, searching from the end of the 8717db96d56Sopenharmony_ci string. */ 8727db96d56Sopenharmony_ci 8737db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_RPartition( 8747db96d56Sopenharmony_ci PyObject *s, /* String to partition */ 8757db96d56Sopenharmony_ci PyObject *sep /* String separator */ 8767db96d56Sopenharmony_ci ); 8777db96d56Sopenharmony_ci 8787db96d56Sopenharmony_ci/* Split a string giving a list of Unicode strings. 8797db96d56Sopenharmony_ci 8807db96d56Sopenharmony_ci If sep is NULL, splitting will be done at all whitespace 8817db96d56Sopenharmony_ci substrings. Otherwise, splits occur at the given separator. 8827db96d56Sopenharmony_ci 8837db96d56Sopenharmony_ci At most maxsplit splits will be done. But unlike PyUnicode_Split 8847db96d56Sopenharmony_ci PyUnicode_RSplit splits from the end of the string. If negative, 8857db96d56Sopenharmony_ci no limit is set. 8867db96d56Sopenharmony_ci 8877db96d56Sopenharmony_ci Separators are not included in the resulting list. 8887db96d56Sopenharmony_ci 8897db96d56Sopenharmony_ci*/ 8907db96d56Sopenharmony_ci 8917db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_RSplit( 8927db96d56Sopenharmony_ci PyObject *s, /* String to split */ 8937db96d56Sopenharmony_ci PyObject *sep, /* String separator */ 8947db96d56Sopenharmony_ci Py_ssize_t maxsplit /* Maxsplit count */ 8957db96d56Sopenharmony_ci ); 8967db96d56Sopenharmony_ci 8977db96d56Sopenharmony_ci/* Translate a string by applying a character mapping table to it and 8987db96d56Sopenharmony_ci return the resulting Unicode object. 8997db96d56Sopenharmony_ci 9007db96d56Sopenharmony_ci The mapping table must map Unicode ordinal integers to Unicode strings, 9017db96d56Sopenharmony_ci Unicode ordinal integers or None (causing deletion of the character). 9027db96d56Sopenharmony_ci 9037db96d56Sopenharmony_ci Mapping tables may be dictionaries or sequences. Unmapped character 9047db96d56Sopenharmony_ci ordinals (ones which cause a LookupError) are left untouched and 9057db96d56Sopenharmony_ci are copied as-is. 9067db96d56Sopenharmony_ci 9077db96d56Sopenharmony_ci*/ 9087db96d56Sopenharmony_ci 9097db96d56Sopenharmony_ciPyAPI_FUNC(PyObject *) PyUnicode_Translate( 9107db96d56Sopenharmony_ci PyObject *str, /* String */ 9117db96d56Sopenharmony_ci PyObject *table, /* Translate table */ 9127db96d56Sopenharmony_ci const char *errors /* error handling */ 9137db96d56Sopenharmony_ci ); 9147db96d56Sopenharmony_ci 9157db96d56Sopenharmony_ci/* Join a sequence of strings using the given separator and return 9167db96d56Sopenharmony_ci the resulting Unicode string. */ 9177db96d56Sopenharmony_ci 9187db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyUnicode_Join( 9197db96d56Sopenharmony_ci PyObject *separator, /* Separator string */ 9207db96d56Sopenharmony_ci PyObject *seq /* Sequence object */ 9217db96d56Sopenharmony_ci ); 9227db96d56Sopenharmony_ci 9237db96d56Sopenharmony_ci/* Return 1 if substr matches str[start:end] at the given tail end, 0 9247db96d56Sopenharmony_ci otherwise. */ 9257db96d56Sopenharmony_ci 9267db96d56Sopenharmony_ciPyAPI_FUNC(Py_ssize_t) PyUnicode_Tailmatch( 9277db96d56Sopenharmony_ci PyObject *str, /* String */ 9287db96d56Sopenharmony_ci PyObject *substr, /* Prefix or Suffix string */ 9297db96d56Sopenharmony_ci Py_ssize_t start, /* Start index */ 9307db96d56Sopenharmony_ci Py_ssize_t end, /* Stop index */ 9317db96d56Sopenharmony_ci int direction /* Tail end: -1 prefix, +1 suffix */ 9327db96d56Sopenharmony_ci ); 9337db96d56Sopenharmony_ci 9347db96d56Sopenharmony_ci/* Return the first position of substr in str[start:end] using the 9357db96d56Sopenharmony_ci given search direction or -1 if not found. -2 is returned in case 9367db96d56Sopenharmony_ci an error occurred and an exception is set. */ 9377db96d56Sopenharmony_ci 9387db96d56Sopenharmony_ciPyAPI_FUNC(Py_ssize_t) PyUnicode_Find( 9397db96d56Sopenharmony_ci PyObject *str, /* String */ 9407db96d56Sopenharmony_ci PyObject *substr, /* Substring to find */ 9417db96d56Sopenharmony_ci Py_ssize_t start, /* Start index */ 9427db96d56Sopenharmony_ci Py_ssize_t end, /* Stop index */ 9437db96d56Sopenharmony_ci int direction /* Find direction: +1 forward, -1 backward */ 9447db96d56Sopenharmony_ci ); 9457db96d56Sopenharmony_ci 9467db96d56Sopenharmony_ci#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 9477db96d56Sopenharmony_ci/* Like PyUnicode_Find, but search for single character only. */ 9487db96d56Sopenharmony_ciPyAPI_FUNC(Py_ssize_t) PyUnicode_FindChar( 9497db96d56Sopenharmony_ci PyObject *str, 9507db96d56Sopenharmony_ci Py_UCS4 ch, 9517db96d56Sopenharmony_ci Py_ssize_t start, 9527db96d56Sopenharmony_ci Py_ssize_t end, 9537db96d56Sopenharmony_ci int direction 9547db96d56Sopenharmony_ci ); 9557db96d56Sopenharmony_ci#endif 9567db96d56Sopenharmony_ci 9577db96d56Sopenharmony_ci/* Count the number of occurrences of substr in str[start:end]. */ 9587db96d56Sopenharmony_ci 9597db96d56Sopenharmony_ciPyAPI_FUNC(Py_ssize_t) PyUnicode_Count( 9607db96d56Sopenharmony_ci PyObject *str, /* String */ 9617db96d56Sopenharmony_ci PyObject *substr, /* Substring to count */ 9627db96d56Sopenharmony_ci Py_ssize_t start, /* Start index */ 9637db96d56Sopenharmony_ci Py_ssize_t end /* Stop index */ 9647db96d56Sopenharmony_ci ); 9657db96d56Sopenharmony_ci 9667db96d56Sopenharmony_ci/* Replace at most maxcount occurrences of substr in str with replstr 9677db96d56Sopenharmony_ci and return the resulting Unicode object. */ 9687db96d56Sopenharmony_ci 9697db96d56Sopenharmony_ciPyAPI_FUNC(PyObject *) PyUnicode_Replace( 9707db96d56Sopenharmony_ci PyObject *str, /* String */ 9717db96d56Sopenharmony_ci PyObject *substr, /* Substring to find */ 9727db96d56Sopenharmony_ci PyObject *replstr, /* Substring to replace */ 9737db96d56Sopenharmony_ci Py_ssize_t maxcount /* Max. number of replacements to apply; 9747db96d56Sopenharmony_ci -1 = all */ 9757db96d56Sopenharmony_ci ); 9767db96d56Sopenharmony_ci 9777db96d56Sopenharmony_ci/* Compare two strings and return -1, 0, 1 for less than, equal, 9787db96d56Sopenharmony_ci greater than resp. 9797db96d56Sopenharmony_ci Raise an exception and return -1 on error. */ 9807db96d56Sopenharmony_ci 9817db96d56Sopenharmony_ciPyAPI_FUNC(int) PyUnicode_Compare( 9827db96d56Sopenharmony_ci PyObject *left, /* Left string */ 9837db96d56Sopenharmony_ci PyObject *right /* Right string */ 9847db96d56Sopenharmony_ci ); 9857db96d56Sopenharmony_ci 9867db96d56Sopenharmony_ci/* Compare a Unicode object with C string and return -1, 0, 1 for less than, 9877db96d56Sopenharmony_ci equal, and greater than, respectively. It is best to pass only 9887db96d56Sopenharmony_ci ASCII-encoded strings, but the function interprets the input string as 9897db96d56Sopenharmony_ci ISO-8859-1 if it contains non-ASCII characters. 9907db96d56Sopenharmony_ci This function does not raise exceptions. */ 9917db96d56Sopenharmony_ci 9927db96d56Sopenharmony_ciPyAPI_FUNC(int) PyUnicode_CompareWithASCIIString( 9937db96d56Sopenharmony_ci PyObject *left, 9947db96d56Sopenharmony_ci const char *right /* ASCII-encoded string */ 9957db96d56Sopenharmony_ci ); 9967db96d56Sopenharmony_ci 9977db96d56Sopenharmony_ci/* Rich compare two strings and return one of the following: 9987db96d56Sopenharmony_ci 9997db96d56Sopenharmony_ci - NULL in case an exception was raised 10007db96d56Sopenharmony_ci - Py_True or Py_False for successful comparisons 10017db96d56Sopenharmony_ci - Py_NotImplemented in case the type combination is unknown 10027db96d56Sopenharmony_ci 10037db96d56Sopenharmony_ci Possible values for op: 10047db96d56Sopenharmony_ci 10057db96d56Sopenharmony_ci Py_GT, Py_GE, Py_EQ, Py_NE, Py_LT, Py_LE 10067db96d56Sopenharmony_ci 10077db96d56Sopenharmony_ci*/ 10087db96d56Sopenharmony_ci 10097db96d56Sopenharmony_ciPyAPI_FUNC(PyObject *) PyUnicode_RichCompare( 10107db96d56Sopenharmony_ci PyObject *left, /* Left string */ 10117db96d56Sopenharmony_ci PyObject *right, /* Right string */ 10127db96d56Sopenharmony_ci int op /* Operation: Py_EQ, Py_NE, Py_GT, etc. */ 10137db96d56Sopenharmony_ci ); 10147db96d56Sopenharmony_ci 10157db96d56Sopenharmony_ci/* Apply an argument tuple or dictionary to a format string and return 10167db96d56Sopenharmony_ci the resulting Unicode string. */ 10177db96d56Sopenharmony_ci 10187db96d56Sopenharmony_ciPyAPI_FUNC(PyObject *) PyUnicode_Format( 10197db96d56Sopenharmony_ci PyObject *format, /* Format string */ 10207db96d56Sopenharmony_ci PyObject *args /* Argument tuple or dictionary */ 10217db96d56Sopenharmony_ci ); 10227db96d56Sopenharmony_ci 10237db96d56Sopenharmony_ci/* Checks whether element is contained in container and return 1/0 10247db96d56Sopenharmony_ci accordingly. 10257db96d56Sopenharmony_ci 10267db96d56Sopenharmony_ci element has to coerce to a one element Unicode string. -1 is 10277db96d56Sopenharmony_ci returned in case of an error. */ 10287db96d56Sopenharmony_ci 10297db96d56Sopenharmony_ciPyAPI_FUNC(int) PyUnicode_Contains( 10307db96d56Sopenharmony_ci PyObject *container, /* Container string */ 10317db96d56Sopenharmony_ci PyObject *element /* Element string */ 10327db96d56Sopenharmony_ci ); 10337db96d56Sopenharmony_ci 10347db96d56Sopenharmony_ci/* Checks whether argument is a valid identifier. */ 10357db96d56Sopenharmony_ci 10367db96d56Sopenharmony_ciPyAPI_FUNC(int) PyUnicode_IsIdentifier(PyObject *s); 10377db96d56Sopenharmony_ci 10387db96d56Sopenharmony_ci/* === Characters Type APIs =============================================== */ 10397db96d56Sopenharmony_ci 10407db96d56Sopenharmony_ci#ifndef Py_LIMITED_API 10417db96d56Sopenharmony_ci# define Py_CPYTHON_UNICODEOBJECT_H 10427db96d56Sopenharmony_ci# include "cpython/unicodeobject.h" 10437db96d56Sopenharmony_ci# undef Py_CPYTHON_UNICODEOBJECT_H 10447db96d56Sopenharmony_ci#endif 10457db96d56Sopenharmony_ci 10467db96d56Sopenharmony_ci#ifdef __cplusplus 10477db96d56Sopenharmony_ci} 10487db96d56Sopenharmony_ci#endif 10497db96d56Sopenharmony_ci#endif /* !Py_UNICODEOBJECT_H */ 1050