summaryrefslogtreecommitdiffstats
path: root/Include/internal
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2018-11-01 01:30:36 (GMT)
committerGitHub <noreply@github.com>2018-11-01 01:30:36 (GMT)
commite281f7d80ce2584a7e6a36acffb5a9cd796a0fe2 (patch)
tree74c1415a5845bd18489b5adb648510ea8fb663da /Include/internal
parent50b48572d9a90c5bb36e2bef6179548ea927a35a (diff)
downloadcpython-e281f7d80ce2584a7e6a36acffb5a9cd796a0fe2.zip
cpython-e281f7d80ce2584a7e6a36acffb5a9cd796a0fe2.tar.gz
cpython-e281f7d80ce2584a7e6a36acffb5a9cd796a0fe2.tar.bz2
bpo-35081: Move accu.h to Include/internal/pycore_accu.h (GH-10271)
The accu.h header is no longer part of the Python C API: it has been moved to the "internal" headers which are restricted to Python itself. Replace #include "accu.h" with #include "pycore_accu.h".
Diffstat (limited to 'Include/internal')
-rw-r--r--Include/internal/pycore_accu.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/Include/internal/pycore_accu.h b/Include/internal/pycore_accu.h
new file mode 100644
index 0000000..ab1aad2
--- /dev/null
+++ b/Include/internal/pycore_accu.h
@@ -0,0 +1,35 @@
+#ifndef Py_LIMITED_API
+#ifndef Py_INTERNAL_ACCU_H
+#define Py_INTERNAL_ACCU_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*** 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.
+ */
+
+#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_INTERNAL_ACCU_H */
+#endif /* !Py_LIMITED_API */