Where Online Learning is simpler!
The C and C++ Include Header Files
/usr/include/python3.12/cpython/bytesobject.h
$ cat -n /usr/include/python3.12/cpython/bytesobject.h 1 #ifndef Py_CPYTHON_BYTESOBJECT_H 2 # error "this header file must not be included directly" 3 #endif 4 5 typedef struct { 6 PyObject_VAR_HEAD 7 Py_DEPRECATED(3.11) Py_hash_t ob_shash; 8 char ob_sval[1]; 9 10 /* Invariants: 11 * ob_sval contains space for 'ob_size+1' elements. 12 * ob_sval[ob_size] == 0. 13 * ob_shash is the hash of the byte string or -1 if not computed yet. 14 */ 15 } PyBytesObject; 16 17 PyAPI_FUNC(int) _PyBytes_Resize(PyObject **, Py_ssize_t); 18 PyAPI_FUNC(PyObject*) _PyBytes_FormatEx( 19 const char *format, 20 Py_ssize_t format_len, 21 PyObject *args, 22 int use_bytearray); 23 PyAPI_FUNC(PyObject*) _PyBytes_FromHex( 24 PyObject *string, 25 int use_bytearray); 26 27 /* Helper for PyBytes_DecodeEscape that detects invalid escape chars. */ 28 PyAPI_FUNC(PyObject*) _PyBytes_DecodeEscape2(const char *, Py_ssize_t, 29 const char *, 30 int *, const char **); 31 // Export for binary compatibility. 32 PyAPI_FUNC(PyObject *) _PyBytes_DecodeEscape(const char *, Py_ssize_t, 33 const char *, const char **); 34 35 /* Macros and static inline functions, trading safety for speed */ 36 #define _PyBytes_CAST(op) \ 37 (assert(PyBytes_Check(op)), _Py_CAST(PyBytesObject*, op)) 38 39 static inline char* PyBytes_AS_STRING(PyObject *op) 40 { 41 return _PyBytes_CAST(op)->ob_sval; 42 } 43 #define PyBytes_AS_STRING(op) PyBytes_AS_STRING(_PyObject_CAST(op)) 44 45 static inline Py_ssize_t PyBytes_GET_SIZE(PyObject *op) { 46 PyBytesObject *self = _PyBytes_CAST(op); 47 return Py_SIZE(self); 48 } 49 #define PyBytes_GET_SIZE(self) PyBytes_GET_SIZE(_PyObject_CAST(self)) 50 51 /* _PyBytes_Join(sep, x) is like sep.join(x). sep must be PyBytesObject*, 52 x must be an iterable object. */ 53 PyAPI_FUNC(PyObject *) _PyBytes_Join(PyObject *sep, PyObject *x); 54 55 56 /* The _PyBytesWriter structure is big: it contains an embedded "stack buffer". 57 A _PyBytesWriter variable must be declared at the end of variables in a 58 function to optimize the memory allocation on the stack. */ 59 typedef struct { 60 /* bytes, bytearray or NULL (when the small buffer is used) */ 61 PyObject *buffer; 62 63 /* Number of allocated size. */ 64 Py_ssize_t allocated; 65 66 /* Minimum number of allocated bytes, 67 incremented by _PyBytesWriter_Prepare() */ 68 Py_ssize_t min_size; 69 70 /* If non-zero, use a bytearray instead of a bytes object for buffer. */ 71 int use_bytearray; 72 73 /* If non-zero, overallocate the buffer (default: 0). 74 This flag must be zero if use_bytearray is non-zero. */ 75 int overallocate; 76 77 /* Stack buffer */ 78 int use_small_buffer; 79 char small_buffer[512]; 80 } _PyBytesWriter; 81 82 /* Initialize a bytes writer 83 84 By default, the overallocation is disabled. Set the overallocate attribute 85 to control the allocation of the buffer. */ 86 PyAPI_FUNC(void) _PyBytesWriter_Init(_PyBytesWriter *writer); 87 88 /* Get the buffer content and reset the writer. 89 Return a bytes object, or a bytearray object if use_bytearray is non-zero. 90 Raise an exception and return NULL on error. */ 91 PyAPI_FUNC(PyObject *) _PyBytesWriter_Finish(_PyBytesWriter *writer, 92 void *str); 93 94 /* Deallocate memory of a writer (clear its internal buffer). */ 95 PyAPI_FUNC(void) _PyBytesWriter_Dealloc(_PyBytesWriter *writer); 96 97 /* Allocate the buffer to write size bytes. 98 Return the pointer to the beginning of buffer data. 99 Raise an exception and return NULL on error. */ 100 PyAPI_FUNC(void*) _PyBytesWriter_Alloc(_PyBytesWriter *writer, 101 Py_ssize_t size); 102 103 /* Ensure that the buffer is large enough to write *size* bytes. 104 Add size to the writer minimum size (min_size attribute). 105 106 str is the current pointer inside the buffer. 107 Return the updated current pointer inside the buffer. 108 Raise an exception and return NULL on error. */ 109 PyAPI_FUNC(void*) _PyBytesWriter_Prepare(_PyBytesWriter *writer, 110 void *str, 111 Py_ssize_t size); 112 113 /* Resize the buffer to make it larger. 114 The new buffer may be larger than size bytes because of overallocation. 115 Return the updated current pointer inside the buffer. 116 Raise an exception and return NULL on error. 117 118 Note: size must be greater than the number of allocated bytes in the writer. 119 120 This function doesn't use the writer minimum size (min_size attribute). 121 122 See also _PyBytesWriter_Prepare(). 123 */ 124 PyAPI_FUNC(void*) _PyBytesWriter_Resize(_PyBytesWriter *writer, 125 void *str, 126 Py_ssize_t size); 127 128 /* Write bytes. 129 Raise an exception and return NULL on error. */ 130 PyAPI_FUNC(void*) _PyBytesWriter_WriteBytes(_PyBytesWriter *writer, 131 void *str, 132 const void *bytes, 133 Py_ssize_t size);
Contact us
|
About us
|
Term of use
|
Copyright © 2000-2025 MyWebUniversity.com ™