Home | History | Annotate | Download | only in Include
      1 #ifndef Py_LIMITED_API
      2 #ifndef Py_ACCU_H
      3 #define Py_ACCU_H
      4 
      5 /*** This is a private API for use by the interpreter and the stdlib.
      6  *** Its definition may be changed or removed at any moment.
      7  ***/
      8 
      9 /*
     10  * A two-level accumulator of unicode objects that avoids both the overhead
     11  * of keeping a huge number of small separate objects, and the quadratic
     12  * behaviour of using a naive repeated concatenation scheme.
     13  */
     14 
     15 #ifdef __cplusplus
     16 extern "C" {
     17 #endif
     18 
     19 #undef small /* defined by some Windows headers */
     20 
     21 typedef struct {
     22     PyObject *large;  /* A list of previously accumulated large strings */
     23     PyObject *small;  /* Pending small strings */
     24 } _PyAccu;
     25 
     26 PyAPI_FUNC(int) _PyAccu_Init(_PyAccu *acc);
     27 PyAPI_FUNC(int) _PyAccu_Accumulate(_PyAccu *acc, PyObject *unicode);
     28 PyAPI_FUNC(PyObject *) _PyAccu_FinishAsList(_PyAccu *acc);
     29 PyAPI_FUNC(PyObject *) _PyAccu_Finish(_PyAccu *acc);
     30 PyAPI_FUNC(void) _PyAccu_Destroy(_PyAccu *acc);
     31 
     32 #ifdef __cplusplus
     33 }
     34 #endif
     35 
     36 #endif /* Py_ACCU_H */
     37 #endif /* Py_LIMITED_API */
     38