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