Skip to content

Commit dd45179

Browse files
authored
gh-129813, PEP 782: Remove the private _PyBytesWriter API (#139264)
It is now replaced with the new public PyBytesWriter API (PEP 782).
1 parent 5854cf3 commit dd45179

File tree

2 files changed

+4
-372
lines changed

2 files changed

+4
-372
lines changed

Include/internal/pycore_bytesobject.h

Lines changed: 4 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -60,93 +60,7 @@ PyAPI_FUNC(void)
6060
_PyBytes_Repeat(char* dest, Py_ssize_t len_dest,
6161
const char* src, Py_ssize_t len_src);
6262

63-
/* --- _PyBytesWriter ----------------------------------------------------- */
64-
65-
/* The _PyBytesWriter structure is big: it contains an embedded "stack buffer".
66-
A _PyBytesWriter variable must be declared at the end of variables in a
67-
function to optimize the memory allocation on the stack. */
68-
typedef struct {
69-
/* bytes, bytearray or NULL (when the small buffer is used) */
70-
PyObject *buffer;
71-
72-
/* Number of allocated size. */
73-
Py_ssize_t allocated;
74-
75-
/* Minimum number of allocated bytes,
76-
incremented by _PyBytesWriter_Prepare() */
77-
Py_ssize_t min_size;
78-
79-
/* If non-zero, use a bytearray instead of a bytes object for buffer. */
80-
int use_bytearray;
81-
82-
/* If non-zero, overallocate the buffer (default: 0).
83-
This flag must be zero if use_bytearray is non-zero. */
84-
int overallocate;
85-
86-
/* Stack buffer */
87-
int use_small_buffer;
88-
char small_buffer[512];
89-
} _PyBytesWriter;
90-
91-
/* Initialize a bytes writer
92-
93-
By default, the overallocation is disabled. Set the overallocate attribute
94-
to control the allocation of the buffer.
95-
96-
Export _PyBytesWriter API for '_pickle' shared extension. */
97-
PyAPI_FUNC(void) _PyBytesWriter_Init(_PyBytesWriter *writer);
98-
99-
/* Get the buffer content and reset the writer.
100-
Return a bytes object, or a bytearray object if use_bytearray is non-zero.
101-
Raise an exception and return NULL on error. */
102-
PyAPI_FUNC(PyObject *) _PyBytesWriter_Finish(_PyBytesWriter *writer,
103-
void *str);
104-
105-
/* Deallocate memory of a writer (clear its internal buffer). */
106-
PyAPI_FUNC(void) _PyBytesWriter_Dealloc(_PyBytesWriter *writer);
107-
108-
/* Allocate the buffer to write size bytes.
109-
Return the pointer to the beginning of buffer data.
110-
Raise an exception and return NULL on error. */
111-
PyAPI_FUNC(void*) _PyBytesWriter_Alloc(_PyBytesWriter *writer,
112-
Py_ssize_t size);
113-
114-
/* Ensure that the buffer is large enough to write *size* bytes.
115-
Add size to the writer minimum size (min_size attribute).
116-
117-
str is the current pointer inside the buffer.
118-
Return the updated current pointer inside the buffer.
119-
Raise an exception and return NULL on error. */
120-
PyAPI_FUNC(void*) _PyBytesWriter_Prepare(_PyBytesWriter *writer,
121-
void *str,
122-
Py_ssize_t size);
123-
124-
/* Resize the buffer to make it larger.
125-
The new buffer may be larger than size bytes because of overallocation.
126-
Return the updated current pointer inside the buffer.
127-
Raise an exception and return NULL on error.
128-
129-
Note: size must be greater than the number of allocated bytes in the writer.
130-
131-
This function doesn't use the writer minimum size (min_size attribute).
132-
133-
See also _PyBytesWriter_Prepare().
134-
*/
135-
PyAPI_FUNC(void*) _PyBytesWriter_Resize(_PyBytesWriter *writer,
136-
void *str,
137-
Py_ssize_t size);
138-
139-
/* Write bytes.
140-
Raise an exception and return NULL on error. */
141-
PyAPI_FUNC(void*) _PyBytesWriter_WriteBytes(_PyBytesWriter *writer,
142-
void *str,
143-
const void *bytes,
144-
Py_ssize_t size);
145-
146-
// Export for '_testcapi' shared extension.
147-
PyAPI_FUNC(PyBytesWriter*) _PyBytesWriter_CreateByteArray(
148-
Py_ssize_t size);
149-
63+
/* --- PyBytesWriter ------------------------------------------------------ */
15064

15165
struct PyBytesWriter {
15266
char small_buffer[256];
@@ -156,6 +70,9 @@ struct PyBytesWriter {
15670
int overallocate;
15771
};
15872

73+
// Export for '_testcapi' shared extension
74+
PyAPI_FUNC(PyBytesWriter*) _PyBytesWriter_CreateByteArray(Py_ssize_t size);
75+
15976
#ifdef __cplusplus
16077
}
16178
#endif

0 commit comments

Comments
 (0)