@@ -954,7 +954,59 @@ PyAPI_FUNC(int) PyUnicode_Contains(
954954
955955PyAPI_FUNC (int ) PyUnicode_IsIdentifier (PyObject * s );
956956
957- /* === Characters Type APIs =============================================== */
957+
958+ /* === Public PyUnicodeWriter API ========================================= */
959+
960+ #if !defined(Py_LIMITED_API ) || Py_LIMITED_API + 0 >= _Py_PACK_VERSION (3 , 16 )
961+ typedef struct PyUnicodeWriter PyUnicodeWriter ;
962+
963+ PyAPI_FUNC (PyUnicodeWriter * ) PyUnicodeWriter_Create (Py_ssize_t length );
964+ PyAPI_FUNC (void ) PyUnicodeWriter_Discard (PyUnicodeWriter * writer );
965+ PyAPI_FUNC (PyObject * ) PyUnicodeWriter_Finish (PyUnicodeWriter * writer );
966+
967+ PyAPI_FUNC (int ) PyUnicodeWriter_WriteChar (
968+ PyUnicodeWriter * writer ,
969+ Py_UCS4 ch );
970+ PyAPI_FUNC (int ) PyUnicodeWriter_WriteUTF8 (
971+ PyUnicodeWriter * writer ,
972+ const char * str ,
973+ Py_ssize_t size );
974+ PyAPI_FUNC (int ) PyUnicodeWriter_WriteASCII (
975+ PyUnicodeWriter * writer ,
976+ const char * str ,
977+ Py_ssize_t size );
978+ PyAPI_FUNC (int ) PyUnicodeWriter_WriteWideChar (
979+ PyUnicodeWriter * writer ,
980+ const wchar_t * str ,
981+ Py_ssize_t size );
982+ PyAPI_FUNC (int ) PyUnicodeWriter_WriteUCS4 (
983+ PyUnicodeWriter * writer ,
984+ const Py_UCS4 * str ,
985+ Py_ssize_t size );
986+
987+ PyAPI_FUNC (int ) PyUnicodeWriter_WriteStr (
988+ PyUnicodeWriter * writer ,
989+ PyObject * obj );
990+ PyAPI_FUNC (int ) PyUnicodeWriter_WriteRepr (
991+ PyUnicodeWriter * writer ,
992+ PyObject * obj );
993+ PyAPI_FUNC (int ) PyUnicodeWriter_WriteSubstring (
994+ PyUnicodeWriter * writer ,
995+ PyObject * str ,
996+ Py_ssize_t start ,
997+ Py_ssize_t end );
998+ PyAPI_FUNC (int ) PyUnicodeWriter_Format (
999+ PyUnicodeWriter * writer ,
1000+ const char * format ,
1001+ ...);
1002+ PyAPI_FUNC (int ) PyUnicodeWriter_DecodeUTF8Stateful (
1003+ PyUnicodeWriter * writer ,
1004+ const char * str , /* UTF-8 encoded string */
1005+ Py_ssize_t size , /* size of string */
1006+ const char * errors , /* error handling */
1007+ Py_ssize_t * consumed ); /* bytes consumed */
1008+ #endif // !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= _Py_PACK_VERSION(3, 16)
1009+
9581010
9591011#ifndef Py_LIMITED_API
9601012# define Py_CPYTHON_UNICODEOBJECT_H
0 commit comments