2011-10-06 13:57:27 -03:00
|
|
|
#ifndef Py_LIMITED_API
|
2018-10-31 22:30:36 -03:00
|
|
|
#ifndef Py_INTERNAL_ACCU_H
|
|
|
|
#define Py_INTERNAL_ACCU_H
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
2011-10-06 13:57:27 -03:00
|
|
|
|
|
|
|
/*** This is a private API for use by the interpreter and the stdlib.
|
|
|
|
*** Its definition may be changed or removed at any moment.
|
|
|
|
***/
|
|
|
|
|
2019-04-17 18:02:26 -03:00
|
|
|
#ifndef Py_BUILD_CORE
|
|
|
|
# error "this header requires Py_BUILD_CORE define"
|
2018-11-09 08:03:37 -04:00
|
|
|
#endif
|
|
|
|
|
2011-10-06 13:57:27 -03:00
|
|
|
/*
|
|
|
|
* A two-level accumulator of unicode objects that avoids both the overhead
|
|
|
|
* of keeping a huge number of small separate objects, and the quadratic
|
|
|
|
* behaviour of using a naive repeated concatenation scheme.
|
|
|
|
*/
|
|
|
|
|
2012-03-22 20:10:37 -03:00
|
|
|
#undef small /* defined by some Windows headers */
|
|
|
|
|
2011-10-06 13:57:27 -03:00
|
|
|
typedef struct {
|
|
|
|
PyObject *large; /* A list of previously accumulated large strings */
|
|
|
|
PyObject *small; /* Pending small strings */
|
|
|
|
} _PyAccu;
|
|
|
|
|
|
|
|
PyAPI_FUNC(int) _PyAccu_Init(_PyAccu *acc);
|
|
|
|
PyAPI_FUNC(int) _PyAccu_Accumulate(_PyAccu *acc, PyObject *unicode);
|
|
|
|
PyAPI_FUNC(PyObject *) _PyAccu_FinishAsList(_PyAccu *acc);
|
|
|
|
PyAPI_FUNC(PyObject *) _PyAccu_Finish(_PyAccu *acc);
|
|
|
|
PyAPI_FUNC(void) _PyAccu_Destroy(_PyAccu *acc);
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
2018-10-31 22:30:36 -03:00
|
|
|
#endif /* !Py_INTERNAL_ACCU_H */
|
|
|
|
#endif /* !Py_LIMITED_API */
|