/* Bytes (String) object interface */#ifndef Py_BYTESOBJECT_H#define Py_BYTESOBJECT_H#ifdef __cplusplusextern "C" {#endif#include <stdarg.h>/*Type PyBytesObject represents a character string. An extra zero byte isreserved at the end to ensure it is zero-terminated, but a size ispresent so strings with null bytes in them can be represented. Thisis an immutable object type.There are functions to create new string objects, to testan object for string-ness, and to get thestring value. The latter function returns a null pointerif the object is not of the proper type.There is a variant that takes an explicit size as well as avariant that assumes a zero-terminated string. Note that none of thefunctions should be applied to nil objects.*//* Caching the hash (ob_shash) saves recalculation of a string's hash value.This significantly speeds up dict lookups. */#ifndef Py_LIMITED_APItypedef struct {PyObject_VAR_HEADPy_hash_t ob_shash;char ob_sval[1];/* Invariants:* ob_sval contains space for 'ob_size+1' elements.* ob_sval[ob_size] == 0.* ob_shash is the hash of the string or -1 if not computed yet.*/} PyBytesObject;#endifPyAPI_DATA(PyTypeObject) PyBytes_Type;PyAPI_DATA(PyTypeObject) PyBytesIter_Type;#define PyBytes_Check(op) \PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS)#define PyBytes_CheckExact(op) (Py_TYPE(op) == &PyBytes_Type)PyAPI_FUNC(PyObject *) PyBytes_FromStringAndSize(const char *, Py_ssize_t);PyAPI_FUNC(PyObject *) PyBytes_FromString(const char *);PyAPI_FUNC(PyObject *) PyBytes_FromObject(PyObject *);PyAPI_FUNC(PyObject *) PyBytes_FromFormatV(const char*, va_list)Py_GCC_ATTRIBUTE((format(printf, 1, 0)));PyAPI_FUNC(PyObject *) PyBytes_FromFormat(const char*, ...)Py_GCC_ATTRIBUTE((format(printf, 1, 2)));PyAPI_FUNC(Py_ssize_t) PyBytes_Size(PyObject *);PyAPI_FUNC(char *) PyBytes_AsString(PyObject *);PyAPI_FUNC(PyObject *) PyBytes_Repr(PyObject *, int);PyAPI_FUNC(void) PyBytes_Concat(PyObject **, PyObject *);PyAPI_FUNC(void) PyBytes_ConcatAndDel(PyObject **, PyObject *);#ifndef Py_LIMITED_APIPyAPI_FUNC(int) _PyBytes_Resize(PyObject **, Py_ssize_t);#endifPyAPI_FUNC(PyObject *) PyBytes_DecodeEscape(const char *, Py_ssize_t,const char *, Py_ssize_t,const char *);/* Macro, trading safety for speed */#ifndef Py_LIMITED_API#define PyBytes_AS_STRING(op) (assert(PyBytes_Check(op)), \(((PyBytesObject *)(op))->ob_sval))#define PyBytes_GET_SIZE(op) (assert(PyBytes_Check(op)),Py_SIZE(op))#endif/* _PyBytes_Join(sep, x) is like sep.join(x). sep must be PyBytesObject*,x must be an iterable object. */#ifndef Py_LIMITED_APIPyAPI_FUNC(PyObject *) _PyBytes_Join(PyObject *sep, PyObject *x);#endif/* Provides access to the internal data buffer and size of a stringobject or the default encoded version of an Unicode object. PassingNULL as *len parameter will force the string buffer to be0-terminated (passing a string with embedded NULL characters willcause an exception). */PyAPI_FUNC(int) PyBytes_AsStringAndSize(PyObject *obj, /* string or Unicode object */char **s, /* pointer to buffer variable */Py_ssize_t *len /* pointer to length variable or NULL(only possible for 0-terminatedstrings) */);/* Using the current locale, insert the thousands groupinginto the string pointed to by buffer. For the argument descriptions,see Objects/stringlib/localeutil.h */#ifndef Py_LIMITED_APIPyAPI_FUNC(Py_ssize_t) _PyBytes_InsertThousandsGroupingLocale(char *buffer,Py_ssize_t n_buffer,char *digits,Py_ssize_t n_digits,Py_ssize_t min_width);/* Using explicit passed-in values, insert the thousands groupinginto the string pointed to by buffer. For the argument descriptions,see Objects/stringlib/localeutil.h */PyAPI_FUNC(Py_ssize_t) _PyBytes_InsertThousandsGrouping(char *buffer,Py_ssize_t n_buffer,char *digits,Py_ssize_t n_digits,Py_ssize_t min_width,const char *grouping,const char *thousands_sep);#endif/* Flags used by string formatting */#define F_LJUST (1<<0)#define F_SIGN (1<<1)#define F_BLANK (1<<2)#define F_ALT (1<<3)#define F_ZERO (1<<4)#ifdef __cplusplus}#endif#endif /* !Py_BYTESOBJECT_H */
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. Open source ecosystem
2. Collaboration, People, Software
3. Evaluation model