17db96d56Sopenharmony_ci#ifndef Py_CPYTHON_BYTEARRAYOBJECT_H
27db96d56Sopenharmony_ci#  error "this header file must not be included directly"
37db96d56Sopenharmony_ci#endif
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_ci/* Object layout */
67db96d56Sopenharmony_citypedef struct {
77db96d56Sopenharmony_ci    PyObject_VAR_HEAD
87db96d56Sopenharmony_ci    Py_ssize_t ob_alloc;   /* How many bytes allocated in ob_bytes */
97db96d56Sopenharmony_ci    char *ob_bytes;        /* Physical backing buffer */
107db96d56Sopenharmony_ci    char *ob_start;        /* Logical start inside ob_bytes */
117db96d56Sopenharmony_ci    Py_ssize_t ob_exports; /* How many buffer exports */
127db96d56Sopenharmony_ci} PyByteArrayObject;
137db96d56Sopenharmony_ci
147db96d56Sopenharmony_ciPyAPI_DATA(char) _PyByteArray_empty_string[];
157db96d56Sopenharmony_ci
167db96d56Sopenharmony_ci/* Macros and static inline functions, trading safety for speed */
177db96d56Sopenharmony_ci#define _PyByteArray_CAST(op) \
187db96d56Sopenharmony_ci    (assert(PyByteArray_Check(op)), _Py_CAST(PyByteArrayObject*, op))
197db96d56Sopenharmony_ci
207db96d56Sopenharmony_cistatic inline char* PyByteArray_AS_STRING(PyObject *op)
217db96d56Sopenharmony_ci{
227db96d56Sopenharmony_ci    PyByteArrayObject *self = _PyByteArray_CAST(op);
237db96d56Sopenharmony_ci    if (Py_SIZE(self)) {
247db96d56Sopenharmony_ci        return self->ob_start;
257db96d56Sopenharmony_ci    }
267db96d56Sopenharmony_ci    return _PyByteArray_empty_string;
277db96d56Sopenharmony_ci}
287db96d56Sopenharmony_ci#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 < 0x030b0000
297db96d56Sopenharmony_ci#  define PyByteArray_AS_STRING(self) PyByteArray_AS_STRING(_PyObject_CAST(self))
307db96d56Sopenharmony_ci#endif
317db96d56Sopenharmony_ci
327db96d56Sopenharmony_cistatic inline Py_ssize_t PyByteArray_GET_SIZE(PyObject *op) {
337db96d56Sopenharmony_ci    PyByteArrayObject *self = _PyByteArray_CAST(op);
347db96d56Sopenharmony_ci    return Py_SIZE(self);
357db96d56Sopenharmony_ci}
367db96d56Sopenharmony_ci#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 < 0x030b0000
377db96d56Sopenharmony_ci#  define PyByteArray_GET_SIZE(self) PyByteArray_GET_SIZE(_PyObject_CAST(self))
387db96d56Sopenharmony_ci#endif
39