17db96d56Sopenharmony_ci#ifndef Py_LIMITED_API 27db96d56Sopenharmony_ci#ifndef Py_INTERNAL_ACCU_H 37db96d56Sopenharmony_ci#define Py_INTERNAL_ACCU_H 47db96d56Sopenharmony_ci#ifdef __cplusplus 57db96d56Sopenharmony_ciextern "C" { 67db96d56Sopenharmony_ci#endif 77db96d56Sopenharmony_ci 87db96d56Sopenharmony_ci/*** This is a private API for use by the interpreter and the stdlib. 97db96d56Sopenharmony_ci *** Its definition may be changed or removed at any moment. 107db96d56Sopenharmony_ci ***/ 117db96d56Sopenharmony_ci 127db96d56Sopenharmony_ci#ifndef Py_BUILD_CORE 137db96d56Sopenharmony_ci# error "this header requires Py_BUILD_CORE define" 147db96d56Sopenharmony_ci#endif 157db96d56Sopenharmony_ci 167db96d56Sopenharmony_ci/* 177db96d56Sopenharmony_ci * A two-level accumulator of unicode objects that avoids both the overhead 187db96d56Sopenharmony_ci * of keeping a huge number of small separate objects, and the quadratic 197db96d56Sopenharmony_ci * behaviour of using a naive repeated concatenation scheme. 207db96d56Sopenharmony_ci */ 217db96d56Sopenharmony_ci 227db96d56Sopenharmony_ci#undef small /* defined by some Windows headers */ 237db96d56Sopenharmony_ci 247db96d56Sopenharmony_citypedef struct { 257db96d56Sopenharmony_ci PyObject *large; /* A list of previously accumulated large strings */ 267db96d56Sopenharmony_ci PyObject *small; /* Pending small strings */ 277db96d56Sopenharmony_ci} _PyAccu; 287db96d56Sopenharmony_ci 297db96d56Sopenharmony_ciPyAPI_FUNC(int) _PyAccu_Init(_PyAccu *acc); 307db96d56Sopenharmony_ciPyAPI_FUNC(int) _PyAccu_Accumulate(_PyAccu *acc, PyObject *unicode); 317db96d56Sopenharmony_ciPyAPI_FUNC(PyObject *) _PyAccu_FinishAsList(_PyAccu *acc); 327db96d56Sopenharmony_ciPyAPI_FUNC(PyObject *) _PyAccu_Finish(_PyAccu *acc); 337db96d56Sopenharmony_ciPyAPI_FUNC(void) _PyAccu_Destroy(_PyAccu *acc); 347db96d56Sopenharmony_ci 357db96d56Sopenharmony_ci#ifdef __cplusplus 367db96d56Sopenharmony_ci} 377db96d56Sopenharmony_ci#endif 387db96d56Sopenharmony_ci#endif /* !Py_INTERNAL_ACCU_H */ 397db96d56Sopenharmony_ci#endif /* !Py_LIMITED_API */ 40