| #ifndef Py_LIMITED_API |
| #ifndef Py_ACCU_H |
| #define Py_ACCU_H |
| |
| /*** This is a private API for use by the interpreter and the stdlib. |
| *** Its definition may be changed or removed at any moment. |
| ***/ |
| |
| /* |
| * 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. |
| */ |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #undef small /* defined by some Windows headers */ |
| |
| 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 |
| |
| #endif /* Py_ACCU_H */ |
| #endif /* Py_LIMITED_API */ |