@@ -27,26 +27,12 @@ functions should be applied to nil objects.
27
27
/* Caching the hash (ob_shash) saves recalculation of a string's hash value.
28
28
This significantly speeds up dict lookups. */
29
29
30
- #ifndef Py_LIMITED_API
31
- typedef struct {
32
- PyObject_VAR_HEAD
33
- Py_hash_t ob_shash ;
34
- char ob_sval [1 ];
35
-
36
- /* Invariants:
37
- * ob_sval contains space for 'ob_size+1' elements.
38
- * ob_sval[ob_size] == 0.
39
- * ob_shash is the hash of the string or -1 if not computed yet.
40
- */
41
- } PyBytesObject ;
42
- #endif
43
-
44
30
PyAPI_DATA (PyTypeObject ) PyBytes_Type ;
45
31
PyAPI_DATA (PyTypeObject ) PyBytesIter_Type ;
46
32
47
33
#define PyBytes_Check (op ) \
48
34
PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS)
49
- #define PyBytes_CheckExact (op ) (Py_TYPE(op) == &PyBytes_Type)
35
+ #define PyBytes_CheckExact (op ) Py_IS_TYPE(op, &PyBytes_Type)
50
36
51
37
PyAPI_FUNC (PyObject * ) PyBytes_FromStringAndSize (const char * , Py_ssize_t );
52
38
PyAPI_FUNC (PyObject * ) PyBytes_FromString (const char * );
@@ -60,40 +46,9 @@ PyAPI_FUNC(char *) PyBytes_AsString(PyObject *);
60
46
PyAPI_FUNC (PyObject * ) PyBytes_Repr (PyObject * , int );
61
47
PyAPI_FUNC (void ) PyBytes_Concat (PyObject * * , PyObject * );
62
48
PyAPI_FUNC (void ) PyBytes_ConcatAndDel (PyObject * * , PyObject * );
63
- #ifndef Py_LIMITED_API
64
- PyAPI_FUNC (int ) _PyBytes_Resize (PyObject * * , Py_ssize_t );
65
- PyAPI_FUNC (PyObject * ) _PyBytes_FormatEx (
66
- const char * format ,
67
- Py_ssize_t format_len ,
68
- PyObject * args ,
69
- int use_bytearray );
70
- PyAPI_FUNC (PyObject * ) _PyBytes_FromHex (
71
- PyObject * string ,
72
- int use_bytearray );
73
- #endif
74
49
PyAPI_FUNC (PyObject * ) PyBytes_DecodeEscape (const char * , Py_ssize_t ,
75
50
const char * , Py_ssize_t ,
76
51
const char * );
77
- #ifndef Py_LIMITED_API
78
- /* Helper for PyBytes_DecodeEscape that detects invalid escape chars. */
79
- PyAPI_FUNC (PyObject * ) _PyBytes_DecodeEscape (const char * , Py_ssize_t ,
80
- const char * , Py_ssize_t ,
81
- const char * ,
82
- const char * * );
83
- #endif
84
-
85
- /* Macro, trading safety for speed */
86
- #ifndef Py_LIMITED_API
87
- #define PyBytes_AS_STRING (op ) (assert(PyBytes_Check(op)), \
88
- (((PyBytesObject *)(op))->ob_sval))
89
- #define PyBytes_GET_SIZE (op ) (assert(PyBytes_Check(op)),Py_SIZE(op))
90
- #endif
91
-
92
- /* _PyBytes_Join(sep, x) is like sep.join(x). sep must be PyBytesObject*,
93
- x must be an iterable object. */
94
- #ifndef Py_LIMITED_API
95
- PyAPI_FUNC (PyObject * ) _PyBytes_Join (PyObject * sep , PyObject * x );
96
- #endif
97
52
98
53
/* Provides access to the internal data buffer and size of a string
99
54
object or the default encoded version of a Unicode object. Passing
@@ -108,28 +63,6 @@ PyAPI_FUNC(int) PyBytes_AsStringAndSize(
108
63
strings) */
109
64
);
110
65
111
- /* Using the current locale, insert the thousands grouping
112
- into the string pointed to by buffer. For the argument descriptions,
113
- see Objects/stringlib/localeutil.h */
114
- #ifndef Py_LIMITED_API
115
- PyAPI_FUNC (Py_ssize_t ) _PyBytes_InsertThousandsGroupingLocale (char * buffer ,
116
- Py_ssize_t n_buffer ,
117
- char * digits ,
118
- Py_ssize_t n_digits ,
119
- Py_ssize_t min_width );
120
-
121
- /* Using explicit passed-in values, insert the thousands grouping
122
- into the string pointed to by buffer. For the argument descriptions,
123
- see Objects/stringlib/localeutil.h */
124
- PyAPI_FUNC (Py_ssize_t ) _PyBytes_InsertThousandsGrouping (char * buffer ,
125
- Py_ssize_t n_buffer ,
126
- char * digits ,
127
- Py_ssize_t n_digits ,
128
- Py_ssize_t min_width ,
129
- const char * grouping ,
130
- const char * thousands_sep );
131
- #endif
132
-
133
66
/* Flags used by string formatting */
134
67
#define F_LJUST (1<<0)
135
68
#define F_SIGN (1<<1)
@@ -138,85 +71,10 @@ PyAPI_FUNC(Py_ssize_t) _PyBytes_InsertThousandsGrouping(char *buffer,
138
71
#define F_ZERO (1<<4)
139
72
140
73
#ifndef Py_LIMITED_API
141
- /* The _PyBytesWriter structure is big: it contains an embedded "stack buffer".
142
- A _PyBytesWriter variable must be declared at the end of variables in a
143
- function to optimize the memory allocation on the stack. */
144
- typedef struct {
145
- /* bytes, bytearray or NULL (when the small buffer is used) */
146
- PyObject * buffer ;
147
-
148
- /* Number of allocated size. */
149
- Py_ssize_t allocated ;
150
-
151
- /* Minimum number of allocated bytes,
152
- incremented by _PyBytesWriter_Prepare() */
153
- Py_ssize_t min_size ;
154
-
155
- /* If non-zero, use a bytearray instead of a bytes object for buffer. */
156
- int use_bytearray ;
157
-
158
- /* If non-zero, overallocate the buffer (default: 0).
159
- This flag must be zero if use_bytearray is non-zero. */
160
- int overallocate ;
161
-
162
- /* Stack buffer */
163
- int use_small_buffer ;
164
- char small_buffer [512 ];
165
- } _PyBytesWriter ;
166
-
167
- /* Initialize a bytes writer
168
-
169
- By default, the overallocation is disabled. Set the overallocate attribute
170
- to control the allocation of the buffer. */
171
- PyAPI_FUNC (void ) _PyBytesWriter_Init (_PyBytesWriter * writer );
172
-
173
- /* Get the buffer content and reset the writer.
174
- Return a bytes object, or a bytearray object if use_bytearray is non-zero.
175
- Raise an exception and return NULL on error. */
176
- PyAPI_FUNC (PyObject * ) _PyBytesWriter_Finish (_PyBytesWriter * writer ,
177
- void * str );
178
-
179
- /* Deallocate memory of a writer (clear its internal buffer). */
180
- PyAPI_FUNC (void ) _PyBytesWriter_Dealloc (_PyBytesWriter * writer );
181
-
182
- /* Allocate the buffer to write size bytes.
183
- Return the pointer to the beginning of buffer data.
184
- Raise an exception and return NULL on error. */
185
- PyAPI_FUNC (void * ) _PyBytesWriter_Alloc (_PyBytesWriter * writer ,
186
- Py_ssize_t size );
187
-
188
- /* Ensure that the buffer is large enough to write *size* bytes.
189
- Add size to the writer minimum size (min_size attribute).
190
-
191
- str is the current pointer inside the buffer.
192
- Return the updated current pointer inside the buffer.
193
- Raise an exception and return NULL on error. */
194
- PyAPI_FUNC (void * ) _PyBytesWriter_Prepare (_PyBytesWriter * writer ,
195
- void * str ,
196
- Py_ssize_t size );
197
-
198
- /* Resize the buffer to make it larger.
199
- The new buffer may be larger than size bytes because of overallocation.
200
- Return the updated current pointer inside the buffer.
201
- Raise an exception and return NULL on error.
202
-
203
- Note: size must be greater than the number of allocated bytes in the writer.
204
-
205
- This function doesn't use the writer minimum size (min_size attribute).
206
-
207
- See also _PyBytesWriter_Prepare().
208
- */
209
- PyAPI_FUNC (void * ) _PyBytesWriter_Resize (_PyBytesWriter * writer ,
210
- void * str ,
211
- Py_ssize_t size );
212
-
213
- /* Write bytes.
214
- Raise an exception and return NULL on error. */
215
- PyAPI_FUNC (void * ) _PyBytesWriter_WriteBytes (_PyBytesWriter * writer ,
216
- void * str ,
217
- const void * bytes ,
218
- Py_ssize_t size );
219
- #endif /* Py_LIMITED_API */
74
+ # define Py_CPYTHON_BYTESOBJECT_H
75
+ # include "cpython/bytesobject.h"
76
+ # undef Py_CPYTHON_BYTESOBJECT_H
77
+ #endif
220
78
221
79
#ifdef __cplusplus
222
80
}
0 commit comments