17db96d56Sopenharmony_ci/*[clinic input] 27db96d56Sopenharmony_cipreserve 37db96d56Sopenharmony_ci[clinic start generated code]*/ 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_cistatic int 67db96d56Sopenharmony_cibytearray___init___impl(PyByteArrayObject *self, PyObject *arg, 77db96d56Sopenharmony_ci const char *encoding, const char *errors); 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_cistatic int 107db96d56Sopenharmony_cibytearray___init__(PyObject *self, PyObject *args, PyObject *kwargs) 117db96d56Sopenharmony_ci{ 127db96d56Sopenharmony_ci int return_value = -1; 137db96d56Sopenharmony_ci static const char * const _keywords[] = {"source", "encoding", "errors", NULL}; 147db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "bytearray", 0}; 157db96d56Sopenharmony_ci PyObject *argsbuf[3]; 167db96d56Sopenharmony_ci PyObject * const *fastargs; 177db96d56Sopenharmony_ci Py_ssize_t nargs = PyTuple_GET_SIZE(args); 187db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 0; 197db96d56Sopenharmony_ci PyObject *arg = NULL; 207db96d56Sopenharmony_ci const char *encoding = NULL; 217db96d56Sopenharmony_ci const char *errors = NULL; 227db96d56Sopenharmony_ci 237db96d56Sopenharmony_ci fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 0, 3, 0, argsbuf); 247db96d56Sopenharmony_ci if (!fastargs) { 257db96d56Sopenharmony_ci goto exit; 267db96d56Sopenharmony_ci } 277db96d56Sopenharmony_ci if (!noptargs) { 287db96d56Sopenharmony_ci goto skip_optional_pos; 297db96d56Sopenharmony_ci } 307db96d56Sopenharmony_ci if (fastargs[0]) { 317db96d56Sopenharmony_ci arg = fastargs[0]; 327db96d56Sopenharmony_ci if (!--noptargs) { 337db96d56Sopenharmony_ci goto skip_optional_pos; 347db96d56Sopenharmony_ci } 357db96d56Sopenharmony_ci } 367db96d56Sopenharmony_ci if (fastargs[1]) { 377db96d56Sopenharmony_ci if (!PyUnicode_Check(fastargs[1])) { 387db96d56Sopenharmony_ci _PyArg_BadArgument("bytearray", "argument 'encoding'", "str", fastargs[1]); 397db96d56Sopenharmony_ci goto exit; 407db96d56Sopenharmony_ci } 417db96d56Sopenharmony_ci Py_ssize_t encoding_length; 427db96d56Sopenharmony_ci encoding = PyUnicode_AsUTF8AndSize(fastargs[1], &encoding_length); 437db96d56Sopenharmony_ci if (encoding == NULL) { 447db96d56Sopenharmony_ci goto exit; 457db96d56Sopenharmony_ci } 467db96d56Sopenharmony_ci if (strlen(encoding) != (size_t)encoding_length) { 477db96d56Sopenharmony_ci PyErr_SetString(PyExc_ValueError, "embedded null character"); 487db96d56Sopenharmony_ci goto exit; 497db96d56Sopenharmony_ci } 507db96d56Sopenharmony_ci if (!--noptargs) { 517db96d56Sopenharmony_ci goto skip_optional_pos; 527db96d56Sopenharmony_ci } 537db96d56Sopenharmony_ci } 547db96d56Sopenharmony_ci if (!PyUnicode_Check(fastargs[2])) { 557db96d56Sopenharmony_ci _PyArg_BadArgument("bytearray", "argument 'errors'", "str", fastargs[2]); 567db96d56Sopenharmony_ci goto exit; 577db96d56Sopenharmony_ci } 587db96d56Sopenharmony_ci Py_ssize_t errors_length; 597db96d56Sopenharmony_ci errors = PyUnicode_AsUTF8AndSize(fastargs[2], &errors_length); 607db96d56Sopenharmony_ci if (errors == NULL) { 617db96d56Sopenharmony_ci goto exit; 627db96d56Sopenharmony_ci } 637db96d56Sopenharmony_ci if (strlen(errors) != (size_t)errors_length) { 647db96d56Sopenharmony_ci PyErr_SetString(PyExc_ValueError, "embedded null character"); 657db96d56Sopenharmony_ci goto exit; 667db96d56Sopenharmony_ci } 677db96d56Sopenharmony_ciskip_optional_pos: 687db96d56Sopenharmony_ci return_value = bytearray___init___impl((PyByteArrayObject *)self, arg, encoding, errors); 697db96d56Sopenharmony_ci 707db96d56Sopenharmony_ciexit: 717db96d56Sopenharmony_ci return return_value; 727db96d56Sopenharmony_ci} 737db96d56Sopenharmony_ci 747db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_clear__doc__, 757db96d56Sopenharmony_ci"clear($self, /)\n" 767db96d56Sopenharmony_ci"--\n" 777db96d56Sopenharmony_ci"\n" 787db96d56Sopenharmony_ci"Remove all items from the bytearray."); 797db96d56Sopenharmony_ci 807db96d56Sopenharmony_ci#define BYTEARRAY_CLEAR_METHODDEF \ 817db96d56Sopenharmony_ci {"clear", (PyCFunction)bytearray_clear, METH_NOARGS, bytearray_clear__doc__}, 827db96d56Sopenharmony_ci 837db96d56Sopenharmony_cistatic PyObject * 847db96d56Sopenharmony_cibytearray_clear_impl(PyByteArrayObject *self); 857db96d56Sopenharmony_ci 867db96d56Sopenharmony_cistatic PyObject * 877db96d56Sopenharmony_cibytearray_clear(PyByteArrayObject *self, PyObject *Py_UNUSED(ignored)) 887db96d56Sopenharmony_ci{ 897db96d56Sopenharmony_ci return bytearray_clear_impl(self); 907db96d56Sopenharmony_ci} 917db96d56Sopenharmony_ci 927db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_copy__doc__, 937db96d56Sopenharmony_ci"copy($self, /)\n" 947db96d56Sopenharmony_ci"--\n" 957db96d56Sopenharmony_ci"\n" 967db96d56Sopenharmony_ci"Return a copy of B."); 977db96d56Sopenharmony_ci 987db96d56Sopenharmony_ci#define BYTEARRAY_COPY_METHODDEF \ 997db96d56Sopenharmony_ci {"copy", (PyCFunction)bytearray_copy, METH_NOARGS, bytearray_copy__doc__}, 1007db96d56Sopenharmony_ci 1017db96d56Sopenharmony_cistatic PyObject * 1027db96d56Sopenharmony_cibytearray_copy_impl(PyByteArrayObject *self); 1037db96d56Sopenharmony_ci 1047db96d56Sopenharmony_cistatic PyObject * 1057db96d56Sopenharmony_cibytearray_copy(PyByteArrayObject *self, PyObject *Py_UNUSED(ignored)) 1067db96d56Sopenharmony_ci{ 1077db96d56Sopenharmony_ci return bytearray_copy_impl(self); 1087db96d56Sopenharmony_ci} 1097db96d56Sopenharmony_ci 1107db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_removeprefix__doc__, 1117db96d56Sopenharmony_ci"removeprefix($self, prefix, /)\n" 1127db96d56Sopenharmony_ci"--\n" 1137db96d56Sopenharmony_ci"\n" 1147db96d56Sopenharmony_ci"Return a bytearray with the given prefix string removed if present.\n" 1157db96d56Sopenharmony_ci"\n" 1167db96d56Sopenharmony_ci"If the bytearray starts with the prefix string, return\n" 1177db96d56Sopenharmony_ci"bytearray[len(prefix):]. Otherwise, return a copy of the original\n" 1187db96d56Sopenharmony_ci"bytearray."); 1197db96d56Sopenharmony_ci 1207db96d56Sopenharmony_ci#define BYTEARRAY_REMOVEPREFIX_METHODDEF \ 1217db96d56Sopenharmony_ci {"removeprefix", (PyCFunction)bytearray_removeprefix, METH_O, bytearray_removeprefix__doc__}, 1227db96d56Sopenharmony_ci 1237db96d56Sopenharmony_cistatic PyObject * 1247db96d56Sopenharmony_cibytearray_removeprefix_impl(PyByteArrayObject *self, Py_buffer *prefix); 1257db96d56Sopenharmony_ci 1267db96d56Sopenharmony_cistatic PyObject * 1277db96d56Sopenharmony_cibytearray_removeprefix(PyByteArrayObject *self, PyObject *arg) 1287db96d56Sopenharmony_ci{ 1297db96d56Sopenharmony_ci PyObject *return_value = NULL; 1307db96d56Sopenharmony_ci Py_buffer prefix = {NULL, NULL}; 1317db96d56Sopenharmony_ci 1327db96d56Sopenharmony_ci if (PyObject_GetBuffer(arg, &prefix, PyBUF_SIMPLE) != 0) { 1337db96d56Sopenharmony_ci goto exit; 1347db96d56Sopenharmony_ci } 1357db96d56Sopenharmony_ci if (!PyBuffer_IsContiguous(&prefix, 'C')) { 1367db96d56Sopenharmony_ci _PyArg_BadArgument("removeprefix", "argument", "contiguous buffer", arg); 1377db96d56Sopenharmony_ci goto exit; 1387db96d56Sopenharmony_ci } 1397db96d56Sopenharmony_ci return_value = bytearray_removeprefix_impl(self, &prefix); 1407db96d56Sopenharmony_ci 1417db96d56Sopenharmony_ciexit: 1427db96d56Sopenharmony_ci /* Cleanup for prefix */ 1437db96d56Sopenharmony_ci if (prefix.obj) { 1447db96d56Sopenharmony_ci PyBuffer_Release(&prefix); 1457db96d56Sopenharmony_ci } 1467db96d56Sopenharmony_ci 1477db96d56Sopenharmony_ci return return_value; 1487db96d56Sopenharmony_ci} 1497db96d56Sopenharmony_ci 1507db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_removesuffix__doc__, 1517db96d56Sopenharmony_ci"removesuffix($self, suffix, /)\n" 1527db96d56Sopenharmony_ci"--\n" 1537db96d56Sopenharmony_ci"\n" 1547db96d56Sopenharmony_ci"Return a bytearray with the given suffix string removed if present.\n" 1557db96d56Sopenharmony_ci"\n" 1567db96d56Sopenharmony_ci"If the bytearray ends with the suffix string and that suffix is not\n" 1577db96d56Sopenharmony_ci"empty, return bytearray[:-len(suffix)]. Otherwise, return a copy of\n" 1587db96d56Sopenharmony_ci"the original bytearray."); 1597db96d56Sopenharmony_ci 1607db96d56Sopenharmony_ci#define BYTEARRAY_REMOVESUFFIX_METHODDEF \ 1617db96d56Sopenharmony_ci {"removesuffix", (PyCFunction)bytearray_removesuffix, METH_O, bytearray_removesuffix__doc__}, 1627db96d56Sopenharmony_ci 1637db96d56Sopenharmony_cistatic PyObject * 1647db96d56Sopenharmony_cibytearray_removesuffix_impl(PyByteArrayObject *self, Py_buffer *suffix); 1657db96d56Sopenharmony_ci 1667db96d56Sopenharmony_cistatic PyObject * 1677db96d56Sopenharmony_cibytearray_removesuffix(PyByteArrayObject *self, PyObject *arg) 1687db96d56Sopenharmony_ci{ 1697db96d56Sopenharmony_ci PyObject *return_value = NULL; 1707db96d56Sopenharmony_ci Py_buffer suffix = {NULL, NULL}; 1717db96d56Sopenharmony_ci 1727db96d56Sopenharmony_ci if (PyObject_GetBuffer(arg, &suffix, PyBUF_SIMPLE) != 0) { 1737db96d56Sopenharmony_ci goto exit; 1747db96d56Sopenharmony_ci } 1757db96d56Sopenharmony_ci if (!PyBuffer_IsContiguous(&suffix, 'C')) { 1767db96d56Sopenharmony_ci _PyArg_BadArgument("removesuffix", "argument", "contiguous buffer", arg); 1777db96d56Sopenharmony_ci goto exit; 1787db96d56Sopenharmony_ci } 1797db96d56Sopenharmony_ci return_value = bytearray_removesuffix_impl(self, &suffix); 1807db96d56Sopenharmony_ci 1817db96d56Sopenharmony_ciexit: 1827db96d56Sopenharmony_ci /* Cleanup for suffix */ 1837db96d56Sopenharmony_ci if (suffix.obj) { 1847db96d56Sopenharmony_ci PyBuffer_Release(&suffix); 1857db96d56Sopenharmony_ci } 1867db96d56Sopenharmony_ci 1877db96d56Sopenharmony_ci return return_value; 1887db96d56Sopenharmony_ci} 1897db96d56Sopenharmony_ci 1907db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_translate__doc__, 1917db96d56Sopenharmony_ci"translate($self, table, /, delete=b\'\')\n" 1927db96d56Sopenharmony_ci"--\n" 1937db96d56Sopenharmony_ci"\n" 1947db96d56Sopenharmony_ci"Return a copy with each character mapped by the given translation table.\n" 1957db96d56Sopenharmony_ci"\n" 1967db96d56Sopenharmony_ci" table\n" 1977db96d56Sopenharmony_ci" Translation table, which must be a bytes object of length 256.\n" 1987db96d56Sopenharmony_ci"\n" 1997db96d56Sopenharmony_ci"All characters occurring in the optional argument delete are removed.\n" 2007db96d56Sopenharmony_ci"The remaining characters are mapped through the given translation table."); 2017db96d56Sopenharmony_ci 2027db96d56Sopenharmony_ci#define BYTEARRAY_TRANSLATE_METHODDEF \ 2037db96d56Sopenharmony_ci {"translate", _PyCFunction_CAST(bytearray_translate), METH_FASTCALL|METH_KEYWORDS, bytearray_translate__doc__}, 2047db96d56Sopenharmony_ci 2057db96d56Sopenharmony_cistatic PyObject * 2067db96d56Sopenharmony_cibytearray_translate_impl(PyByteArrayObject *self, PyObject *table, 2077db96d56Sopenharmony_ci PyObject *deletechars); 2087db96d56Sopenharmony_ci 2097db96d56Sopenharmony_cistatic PyObject * 2107db96d56Sopenharmony_cibytearray_translate(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 2117db96d56Sopenharmony_ci{ 2127db96d56Sopenharmony_ci PyObject *return_value = NULL; 2137db96d56Sopenharmony_ci static const char * const _keywords[] = {"", "delete", NULL}; 2147db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "translate", 0}; 2157db96d56Sopenharmony_ci PyObject *argsbuf[2]; 2167db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; 2177db96d56Sopenharmony_ci PyObject *table; 2187db96d56Sopenharmony_ci PyObject *deletechars = NULL; 2197db96d56Sopenharmony_ci 2207db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf); 2217db96d56Sopenharmony_ci if (!args) { 2227db96d56Sopenharmony_ci goto exit; 2237db96d56Sopenharmony_ci } 2247db96d56Sopenharmony_ci table = args[0]; 2257db96d56Sopenharmony_ci if (!noptargs) { 2267db96d56Sopenharmony_ci goto skip_optional_pos; 2277db96d56Sopenharmony_ci } 2287db96d56Sopenharmony_ci deletechars = args[1]; 2297db96d56Sopenharmony_ciskip_optional_pos: 2307db96d56Sopenharmony_ci return_value = bytearray_translate_impl(self, table, deletechars); 2317db96d56Sopenharmony_ci 2327db96d56Sopenharmony_ciexit: 2337db96d56Sopenharmony_ci return return_value; 2347db96d56Sopenharmony_ci} 2357db96d56Sopenharmony_ci 2367db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_maketrans__doc__, 2377db96d56Sopenharmony_ci"maketrans(frm, to, /)\n" 2387db96d56Sopenharmony_ci"--\n" 2397db96d56Sopenharmony_ci"\n" 2407db96d56Sopenharmony_ci"Return a translation table useable for the bytes or bytearray translate method.\n" 2417db96d56Sopenharmony_ci"\n" 2427db96d56Sopenharmony_ci"The returned table will be one where each byte in frm is mapped to the byte at\n" 2437db96d56Sopenharmony_ci"the same position in to.\n" 2447db96d56Sopenharmony_ci"\n" 2457db96d56Sopenharmony_ci"The bytes objects frm and to must be of the same length."); 2467db96d56Sopenharmony_ci 2477db96d56Sopenharmony_ci#define BYTEARRAY_MAKETRANS_METHODDEF \ 2487db96d56Sopenharmony_ci {"maketrans", _PyCFunction_CAST(bytearray_maketrans), METH_FASTCALL|METH_STATIC, bytearray_maketrans__doc__}, 2497db96d56Sopenharmony_ci 2507db96d56Sopenharmony_cistatic PyObject * 2517db96d56Sopenharmony_cibytearray_maketrans_impl(Py_buffer *frm, Py_buffer *to); 2527db96d56Sopenharmony_ci 2537db96d56Sopenharmony_cistatic PyObject * 2547db96d56Sopenharmony_cibytearray_maketrans(void *null, PyObject *const *args, Py_ssize_t nargs) 2557db96d56Sopenharmony_ci{ 2567db96d56Sopenharmony_ci PyObject *return_value = NULL; 2577db96d56Sopenharmony_ci Py_buffer frm = {NULL, NULL}; 2587db96d56Sopenharmony_ci Py_buffer to = {NULL, NULL}; 2597db96d56Sopenharmony_ci 2607db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("maketrans", nargs, 2, 2)) { 2617db96d56Sopenharmony_ci goto exit; 2627db96d56Sopenharmony_ci } 2637db96d56Sopenharmony_ci if (PyObject_GetBuffer(args[0], &frm, PyBUF_SIMPLE) != 0) { 2647db96d56Sopenharmony_ci goto exit; 2657db96d56Sopenharmony_ci } 2667db96d56Sopenharmony_ci if (!PyBuffer_IsContiguous(&frm, 'C')) { 2677db96d56Sopenharmony_ci _PyArg_BadArgument("maketrans", "argument 1", "contiguous buffer", args[0]); 2687db96d56Sopenharmony_ci goto exit; 2697db96d56Sopenharmony_ci } 2707db96d56Sopenharmony_ci if (PyObject_GetBuffer(args[1], &to, PyBUF_SIMPLE) != 0) { 2717db96d56Sopenharmony_ci goto exit; 2727db96d56Sopenharmony_ci } 2737db96d56Sopenharmony_ci if (!PyBuffer_IsContiguous(&to, 'C')) { 2747db96d56Sopenharmony_ci _PyArg_BadArgument("maketrans", "argument 2", "contiguous buffer", args[1]); 2757db96d56Sopenharmony_ci goto exit; 2767db96d56Sopenharmony_ci } 2777db96d56Sopenharmony_ci return_value = bytearray_maketrans_impl(&frm, &to); 2787db96d56Sopenharmony_ci 2797db96d56Sopenharmony_ciexit: 2807db96d56Sopenharmony_ci /* Cleanup for frm */ 2817db96d56Sopenharmony_ci if (frm.obj) { 2827db96d56Sopenharmony_ci PyBuffer_Release(&frm); 2837db96d56Sopenharmony_ci } 2847db96d56Sopenharmony_ci /* Cleanup for to */ 2857db96d56Sopenharmony_ci if (to.obj) { 2867db96d56Sopenharmony_ci PyBuffer_Release(&to); 2877db96d56Sopenharmony_ci } 2887db96d56Sopenharmony_ci 2897db96d56Sopenharmony_ci return return_value; 2907db96d56Sopenharmony_ci} 2917db96d56Sopenharmony_ci 2927db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_replace__doc__, 2937db96d56Sopenharmony_ci"replace($self, old, new, count=-1, /)\n" 2947db96d56Sopenharmony_ci"--\n" 2957db96d56Sopenharmony_ci"\n" 2967db96d56Sopenharmony_ci"Return a copy with all occurrences of substring old replaced by new.\n" 2977db96d56Sopenharmony_ci"\n" 2987db96d56Sopenharmony_ci" count\n" 2997db96d56Sopenharmony_ci" Maximum number of occurrences to replace.\n" 3007db96d56Sopenharmony_ci" -1 (the default value) means replace all occurrences.\n" 3017db96d56Sopenharmony_ci"\n" 3027db96d56Sopenharmony_ci"If the optional argument count is given, only the first count occurrences are\n" 3037db96d56Sopenharmony_ci"replaced."); 3047db96d56Sopenharmony_ci 3057db96d56Sopenharmony_ci#define BYTEARRAY_REPLACE_METHODDEF \ 3067db96d56Sopenharmony_ci {"replace", _PyCFunction_CAST(bytearray_replace), METH_FASTCALL, bytearray_replace__doc__}, 3077db96d56Sopenharmony_ci 3087db96d56Sopenharmony_cistatic PyObject * 3097db96d56Sopenharmony_cibytearray_replace_impl(PyByteArrayObject *self, Py_buffer *old, 3107db96d56Sopenharmony_ci Py_buffer *new, Py_ssize_t count); 3117db96d56Sopenharmony_ci 3127db96d56Sopenharmony_cistatic PyObject * 3137db96d56Sopenharmony_cibytearray_replace(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs) 3147db96d56Sopenharmony_ci{ 3157db96d56Sopenharmony_ci PyObject *return_value = NULL; 3167db96d56Sopenharmony_ci Py_buffer old = {NULL, NULL}; 3177db96d56Sopenharmony_ci Py_buffer new = {NULL, NULL}; 3187db96d56Sopenharmony_ci Py_ssize_t count = -1; 3197db96d56Sopenharmony_ci 3207db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("replace", nargs, 2, 3)) { 3217db96d56Sopenharmony_ci goto exit; 3227db96d56Sopenharmony_ci } 3237db96d56Sopenharmony_ci if (PyObject_GetBuffer(args[0], &old, PyBUF_SIMPLE) != 0) { 3247db96d56Sopenharmony_ci goto exit; 3257db96d56Sopenharmony_ci } 3267db96d56Sopenharmony_ci if (!PyBuffer_IsContiguous(&old, 'C')) { 3277db96d56Sopenharmony_ci _PyArg_BadArgument("replace", "argument 1", "contiguous buffer", args[0]); 3287db96d56Sopenharmony_ci goto exit; 3297db96d56Sopenharmony_ci } 3307db96d56Sopenharmony_ci if (PyObject_GetBuffer(args[1], &new, PyBUF_SIMPLE) != 0) { 3317db96d56Sopenharmony_ci goto exit; 3327db96d56Sopenharmony_ci } 3337db96d56Sopenharmony_ci if (!PyBuffer_IsContiguous(&new, 'C')) { 3347db96d56Sopenharmony_ci _PyArg_BadArgument("replace", "argument 2", "contiguous buffer", args[1]); 3357db96d56Sopenharmony_ci goto exit; 3367db96d56Sopenharmony_ci } 3377db96d56Sopenharmony_ci if (nargs < 3) { 3387db96d56Sopenharmony_ci goto skip_optional; 3397db96d56Sopenharmony_ci } 3407db96d56Sopenharmony_ci { 3417db96d56Sopenharmony_ci Py_ssize_t ival = -1; 3427db96d56Sopenharmony_ci PyObject *iobj = _PyNumber_Index(args[2]); 3437db96d56Sopenharmony_ci if (iobj != NULL) { 3447db96d56Sopenharmony_ci ival = PyLong_AsSsize_t(iobj); 3457db96d56Sopenharmony_ci Py_DECREF(iobj); 3467db96d56Sopenharmony_ci } 3477db96d56Sopenharmony_ci if (ival == -1 && PyErr_Occurred()) { 3487db96d56Sopenharmony_ci goto exit; 3497db96d56Sopenharmony_ci } 3507db96d56Sopenharmony_ci count = ival; 3517db96d56Sopenharmony_ci } 3527db96d56Sopenharmony_ciskip_optional: 3537db96d56Sopenharmony_ci return_value = bytearray_replace_impl(self, &old, &new, count); 3547db96d56Sopenharmony_ci 3557db96d56Sopenharmony_ciexit: 3567db96d56Sopenharmony_ci /* Cleanup for old */ 3577db96d56Sopenharmony_ci if (old.obj) { 3587db96d56Sopenharmony_ci PyBuffer_Release(&old); 3597db96d56Sopenharmony_ci } 3607db96d56Sopenharmony_ci /* Cleanup for new */ 3617db96d56Sopenharmony_ci if (new.obj) { 3627db96d56Sopenharmony_ci PyBuffer_Release(&new); 3637db96d56Sopenharmony_ci } 3647db96d56Sopenharmony_ci 3657db96d56Sopenharmony_ci return return_value; 3667db96d56Sopenharmony_ci} 3677db96d56Sopenharmony_ci 3687db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_split__doc__, 3697db96d56Sopenharmony_ci"split($self, /, sep=None, maxsplit=-1)\n" 3707db96d56Sopenharmony_ci"--\n" 3717db96d56Sopenharmony_ci"\n" 3727db96d56Sopenharmony_ci"Return a list of the sections in the bytearray, using sep as the delimiter.\n" 3737db96d56Sopenharmony_ci"\n" 3747db96d56Sopenharmony_ci" sep\n" 3757db96d56Sopenharmony_ci" The delimiter according which to split the bytearray.\n" 3767db96d56Sopenharmony_ci" None (the default value) means split on ASCII whitespace characters\n" 3777db96d56Sopenharmony_ci" (space, tab, return, newline, formfeed, vertical tab).\n" 3787db96d56Sopenharmony_ci" maxsplit\n" 3797db96d56Sopenharmony_ci" Maximum number of splits to do.\n" 3807db96d56Sopenharmony_ci" -1 (the default value) means no limit."); 3817db96d56Sopenharmony_ci 3827db96d56Sopenharmony_ci#define BYTEARRAY_SPLIT_METHODDEF \ 3837db96d56Sopenharmony_ci {"split", _PyCFunction_CAST(bytearray_split), METH_FASTCALL|METH_KEYWORDS, bytearray_split__doc__}, 3847db96d56Sopenharmony_ci 3857db96d56Sopenharmony_cistatic PyObject * 3867db96d56Sopenharmony_cibytearray_split_impl(PyByteArrayObject *self, PyObject *sep, 3877db96d56Sopenharmony_ci Py_ssize_t maxsplit); 3887db96d56Sopenharmony_ci 3897db96d56Sopenharmony_cistatic PyObject * 3907db96d56Sopenharmony_cibytearray_split(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 3917db96d56Sopenharmony_ci{ 3927db96d56Sopenharmony_ci PyObject *return_value = NULL; 3937db96d56Sopenharmony_ci static const char * const _keywords[] = {"sep", "maxsplit", NULL}; 3947db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "split", 0}; 3957db96d56Sopenharmony_ci PyObject *argsbuf[2]; 3967db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; 3977db96d56Sopenharmony_ci PyObject *sep = Py_None; 3987db96d56Sopenharmony_ci Py_ssize_t maxsplit = -1; 3997db96d56Sopenharmony_ci 4007db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf); 4017db96d56Sopenharmony_ci if (!args) { 4027db96d56Sopenharmony_ci goto exit; 4037db96d56Sopenharmony_ci } 4047db96d56Sopenharmony_ci if (!noptargs) { 4057db96d56Sopenharmony_ci goto skip_optional_pos; 4067db96d56Sopenharmony_ci } 4077db96d56Sopenharmony_ci if (args[0]) { 4087db96d56Sopenharmony_ci sep = args[0]; 4097db96d56Sopenharmony_ci if (!--noptargs) { 4107db96d56Sopenharmony_ci goto skip_optional_pos; 4117db96d56Sopenharmony_ci } 4127db96d56Sopenharmony_ci } 4137db96d56Sopenharmony_ci { 4147db96d56Sopenharmony_ci Py_ssize_t ival = -1; 4157db96d56Sopenharmony_ci PyObject *iobj = _PyNumber_Index(args[1]); 4167db96d56Sopenharmony_ci if (iobj != NULL) { 4177db96d56Sopenharmony_ci ival = PyLong_AsSsize_t(iobj); 4187db96d56Sopenharmony_ci Py_DECREF(iobj); 4197db96d56Sopenharmony_ci } 4207db96d56Sopenharmony_ci if (ival == -1 && PyErr_Occurred()) { 4217db96d56Sopenharmony_ci goto exit; 4227db96d56Sopenharmony_ci } 4237db96d56Sopenharmony_ci maxsplit = ival; 4247db96d56Sopenharmony_ci } 4257db96d56Sopenharmony_ciskip_optional_pos: 4267db96d56Sopenharmony_ci return_value = bytearray_split_impl(self, sep, maxsplit); 4277db96d56Sopenharmony_ci 4287db96d56Sopenharmony_ciexit: 4297db96d56Sopenharmony_ci return return_value; 4307db96d56Sopenharmony_ci} 4317db96d56Sopenharmony_ci 4327db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_partition__doc__, 4337db96d56Sopenharmony_ci"partition($self, sep, /)\n" 4347db96d56Sopenharmony_ci"--\n" 4357db96d56Sopenharmony_ci"\n" 4367db96d56Sopenharmony_ci"Partition the bytearray into three parts using the given separator.\n" 4377db96d56Sopenharmony_ci"\n" 4387db96d56Sopenharmony_ci"This will search for the separator sep in the bytearray. If the separator is\n" 4397db96d56Sopenharmony_ci"found, returns a 3-tuple containing the part before the separator, the\n" 4407db96d56Sopenharmony_ci"separator itself, and the part after it as new bytearray objects.\n" 4417db96d56Sopenharmony_ci"\n" 4427db96d56Sopenharmony_ci"If the separator is not found, returns a 3-tuple containing the copy of the\n" 4437db96d56Sopenharmony_ci"original bytearray object and two empty bytearray objects."); 4447db96d56Sopenharmony_ci 4457db96d56Sopenharmony_ci#define BYTEARRAY_PARTITION_METHODDEF \ 4467db96d56Sopenharmony_ci {"partition", (PyCFunction)bytearray_partition, METH_O, bytearray_partition__doc__}, 4477db96d56Sopenharmony_ci 4487db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_rpartition__doc__, 4497db96d56Sopenharmony_ci"rpartition($self, sep, /)\n" 4507db96d56Sopenharmony_ci"--\n" 4517db96d56Sopenharmony_ci"\n" 4527db96d56Sopenharmony_ci"Partition the bytearray into three parts using the given separator.\n" 4537db96d56Sopenharmony_ci"\n" 4547db96d56Sopenharmony_ci"This will search for the separator sep in the bytearray, starting at the end.\n" 4557db96d56Sopenharmony_ci"If the separator is found, returns a 3-tuple containing the part before the\n" 4567db96d56Sopenharmony_ci"separator, the separator itself, and the part after it as new bytearray\n" 4577db96d56Sopenharmony_ci"objects.\n" 4587db96d56Sopenharmony_ci"\n" 4597db96d56Sopenharmony_ci"If the separator is not found, returns a 3-tuple containing two empty bytearray\n" 4607db96d56Sopenharmony_ci"objects and the copy of the original bytearray object."); 4617db96d56Sopenharmony_ci 4627db96d56Sopenharmony_ci#define BYTEARRAY_RPARTITION_METHODDEF \ 4637db96d56Sopenharmony_ci {"rpartition", (PyCFunction)bytearray_rpartition, METH_O, bytearray_rpartition__doc__}, 4647db96d56Sopenharmony_ci 4657db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_rsplit__doc__, 4667db96d56Sopenharmony_ci"rsplit($self, /, sep=None, maxsplit=-1)\n" 4677db96d56Sopenharmony_ci"--\n" 4687db96d56Sopenharmony_ci"\n" 4697db96d56Sopenharmony_ci"Return a list of the sections in the bytearray, using sep as the delimiter.\n" 4707db96d56Sopenharmony_ci"\n" 4717db96d56Sopenharmony_ci" sep\n" 4727db96d56Sopenharmony_ci" The delimiter according which to split the bytearray.\n" 4737db96d56Sopenharmony_ci" None (the default value) means split on ASCII whitespace characters\n" 4747db96d56Sopenharmony_ci" (space, tab, return, newline, formfeed, vertical tab).\n" 4757db96d56Sopenharmony_ci" maxsplit\n" 4767db96d56Sopenharmony_ci" Maximum number of splits to do.\n" 4777db96d56Sopenharmony_ci" -1 (the default value) means no limit.\n" 4787db96d56Sopenharmony_ci"\n" 4797db96d56Sopenharmony_ci"Splitting is done starting at the end of the bytearray and working to the front."); 4807db96d56Sopenharmony_ci 4817db96d56Sopenharmony_ci#define BYTEARRAY_RSPLIT_METHODDEF \ 4827db96d56Sopenharmony_ci {"rsplit", _PyCFunction_CAST(bytearray_rsplit), METH_FASTCALL|METH_KEYWORDS, bytearray_rsplit__doc__}, 4837db96d56Sopenharmony_ci 4847db96d56Sopenharmony_cistatic PyObject * 4857db96d56Sopenharmony_cibytearray_rsplit_impl(PyByteArrayObject *self, PyObject *sep, 4867db96d56Sopenharmony_ci Py_ssize_t maxsplit); 4877db96d56Sopenharmony_ci 4887db96d56Sopenharmony_cistatic PyObject * 4897db96d56Sopenharmony_cibytearray_rsplit(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 4907db96d56Sopenharmony_ci{ 4917db96d56Sopenharmony_ci PyObject *return_value = NULL; 4927db96d56Sopenharmony_ci static const char * const _keywords[] = {"sep", "maxsplit", NULL}; 4937db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "rsplit", 0}; 4947db96d56Sopenharmony_ci PyObject *argsbuf[2]; 4957db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; 4967db96d56Sopenharmony_ci PyObject *sep = Py_None; 4977db96d56Sopenharmony_ci Py_ssize_t maxsplit = -1; 4987db96d56Sopenharmony_ci 4997db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf); 5007db96d56Sopenharmony_ci if (!args) { 5017db96d56Sopenharmony_ci goto exit; 5027db96d56Sopenharmony_ci } 5037db96d56Sopenharmony_ci if (!noptargs) { 5047db96d56Sopenharmony_ci goto skip_optional_pos; 5057db96d56Sopenharmony_ci } 5067db96d56Sopenharmony_ci if (args[0]) { 5077db96d56Sopenharmony_ci sep = args[0]; 5087db96d56Sopenharmony_ci if (!--noptargs) { 5097db96d56Sopenharmony_ci goto skip_optional_pos; 5107db96d56Sopenharmony_ci } 5117db96d56Sopenharmony_ci } 5127db96d56Sopenharmony_ci { 5137db96d56Sopenharmony_ci Py_ssize_t ival = -1; 5147db96d56Sopenharmony_ci PyObject *iobj = _PyNumber_Index(args[1]); 5157db96d56Sopenharmony_ci if (iobj != NULL) { 5167db96d56Sopenharmony_ci ival = PyLong_AsSsize_t(iobj); 5177db96d56Sopenharmony_ci Py_DECREF(iobj); 5187db96d56Sopenharmony_ci } 5197db96d56Sopenharmony_ci if (ival == -1 && PyErr_Occurred()) { 5207db96d56Sopenharmony_ci goto exit; 5217db96d56Sopenharmony_ci } 5227db96d56Sopenharmony_ci maxsplit = ival; 5237db96d56Sopenharmony_ci } 5247db96d56Sopenharmony_ciskip_optional_pos: 5257db96d56Sopenharmony_ci return_value = bytearray_rsplit_impl(self, sep, maxsplit); 5267db96d56Sopenharmony_ci 5277db96d56Sopenharmony_ciexit: 5287db96d56Sopenharmony_ci return return_value; 5297db96d56Sopenharmony_ci} 5307db96d56Sopenharmony_ci 5317db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_reverse__doc__, 5327db96d56Sopenharmony_ci"reverse($self, /)\n" 5337db96d56Sopenharmony_ci"--\n" 5347db96d56Sopenharmony_ci"\n" 5357db96d56Sopenharmony_ci"Reverse the order of the values in B in place."); 5367db96d56Sopenharmony_ci 5377db96d56Sopenharmony_ci#define BYTEARRAY_REVERSE_METHODDEF \ 5387db96d56Sopenharmony_ci {"reverse", (PyCFunction)bytearray_reverse, METH_NOARGS, bytearray_reverse__doc__}, 5397db96d56Sopenharmony_ci 5407db96d56Sopenharmony_cistatic PyObject * 5417db96d56Sopenharmony_cibytearray_reverse_impl(PyByteArrayObject *self); 5427db96d56Sopenharmony_ci 5437db96d56Sopenharmony_cistatic PyObject * 5447db96d56Sopenharmony_cibytearray_reverse(PyByteArrayObject *self, PyObject *Py_UNUSED(ignored)) 5457db96d56Sopenharmony_ci{ 5467db96d56Sopenharmony_ci return bytearray_reverse_impl(self); 5477db96d56Sopenharmony_ci} 5487db96d56Sopenharmony_ci 5497db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_insert__doc__, 5507db96d56Sopenharmony_ci"insert($self, index, item, /)\n" 5517db96d56Sopenharmony_ci"--\n" 5527db96d56Sopenharmony_ci"\n" 5537db96d56Sopenharmony_ci"Insert a single item into the bytearray before the given index.\n" 5547db96d56Sopenharmony_ci"\n" 5557db96d56Sopenharmony_ci" index\n" 5567db96d56Sopenharmony_ci" The index where the value is to be inserted.\n" 5577db96d56Sopenharmony_ci" item\n" 5587db96d56Sopenharmony_ci" The item to be inserted."); 5597db96d56Sopenharmony_ci 5607db96d56Sopenharmony_ci#define BYTEARRAY_INSERT_METHODDEF \ 5617db96d56Sopenharmony_ci {"insert", _PyCFunction_CAST(bytearray_insert), METH_FASTCALL, bytearray_insert__doc__}, 5627db96d56Sopenharmony_ci 5637db96d56Sopenharmony_cistatic PyObject * 5647db96d56Sopenharmony_cibytearray_insert_impl(PyByteArrayObject *self, Py_ssize_t index, int item); 5657db96d56Sopenharmony_ci 5667db96d56Sopenharmony_cistatic PyObject * 5677db96d56Sopenharmony_cibytearray_insert(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs) 5687db96d56Sopenharmony_ci{ 5697db96d56Sopenharmony_ci PyObject *return_value = NULL; 5707db96d56Sopenharmony_ci Py_ssize_t index; 5717db96d56Sopenharmony_ci int item; 5727db96d56Sopenharmony_ci 5737db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("insert", nargs, 2, 2)) { 5747db96d56Sopenharmony_ci goto exit; 5757db96d56Sopenharmony_ci } 5767db96d56Sopenharmony_ci { 5777db96d56Sopenharmony_ci Py_ssize_t ival = -1; 5787db96d56Sopenharmony_ci PyObject *iobj = _PyNumber_Index(args[0]); 5797db96d56Sopenharmony_ci if (iobj != NULL) { 5807db96d56Sopenharmony_ci ival = PyLong_AsSsize_t(iobj); 5817db96d56Sopenharmony_ci Py_DECREF(iobj); 5827db96d56Sopenharmony_ci } 5837db96d56Sopenharmony_ci if (ival == -1 && PyErr_Occurred()) { 5847db96d56Sopenharmony_ci goto exit; 5857db96d56Sopenharmony_ci } 5867db96d56Sopenharmony_ci index = ival; 5877db96d56Sopenharmony_ci } 5887db96d56Sopenharmony_ci if (!_getbytevalue(args[1], &item)) { 5897db96d56Sopenharmony_ci goto exit; 5907db96d56Sopenharmony_ci } 5917db96d56Sopenharmony_ci return_value = bytearray_insert_impl(self, index, item); 5927db96d56Sopenharmony_ci 5937db96d56Sopenharmony_ciexit: 5947db96d56Sopenharmony_ci return return_value; 5957db96d56Sopenharmony_ci} 5967db96d56Sopenharmony_ci 5977db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_append__doc__, 5987db96d56Sopenharmony_ci"append($self, item, /)\n" 5997db96d56Sopenharmony_ci"--\n" 6007db96d56Sopenharmony_ci"\n" 6017db96d56Sopenharmony_ci"Append a single item to the end of the bytearray.\n" 6027db96d56Sopenharmony_ci"\n" 6037db96d56Sopenharmony_ci" item\n" 6047db96d56Sopenharmony_ci" The item to be appended."); 6057db96d56Sopenharmony_ci 6067db96d56Sopenharmony_ci#define BYTEARRAY_APPEND_METHODDEF \ 6077db96d56Sopenharmony_ci {"append", (PyCFunction)bytearray_append, METH_O, bytearray_append__doc__}, 6087db96d56Sopenharmony_ci 6097db96d56Sopenharmony_cistatic PyObject * 6107db96d56Sopenharmony_cibytearray_append_impl(PyByteArrayObject *self, int item); 6117db96d56Sopenharmony_ci 6127db96d56Sopenharmony_cistatic PyObject * 6137db96d56Sopenharmony_cibytearray_append(PyByteArrayObject *self, PyObject *arg) 6147db96d56Sopenharmony_ci{ 6157db96d56Sopenharmony_ci PyObject *return_value = NULL; 6167db96d56Sopenharmony_ci int item; 6177db96d56Sopenharmony_ci 6187db96d56Sopenharmony_ci if (!_getbytevalue(arg, &item)) { 6197db96d56Sopenharmony_ci goto exit; 6207db96d56Sopenharmony_ci } 6217db96d56Sopenharmony_ci return_value = bytearray_append_impl(self, item); 6227db96d56Sopenharmony_ci 6237db96d56Sopenharmony_ciexit: 6247db96d56Sopenharmony_ci return return_value; 6257db96d56Sopenharmony_ci} 6267db96d56Sopenharmony_ci 6277db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_extend__doc__, 6287db96d56Sopenharmony_ci"extend($self, iterable_of_ints, /)\n" 6297db96d56Sopenharmony_ci"--\n" 6307db96d56Sopenharmony_ci"\n" 6317db96d56Sopenharmony_ci"Append all the items from the iterator or sequence to the end of the bytearray.\n" 6327db96d56Sopenharmony_ci"\n" 6337db96d56Sopenharmony_ci" iterable_of_ints\n" 6347db96d56Sopenharmony_ci" The iterable of items to append."); 6357db96d56Sopenharmony_ci 6367db96d56Sopenharmony_ci#define BYTEARRAY_EXTEND_METHODDEF \ 6377db96d56Sopenharmony_ci {"extend", (PyCFunction)bytearray_extend, METH_O, bytearray_extend__doc__}, 6387db96d56Sopenharmony_ci 6397db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_pop__doc__, 6407db96d56Sopenharmony_ci"pop($self, index=-1, /)\n" 6417db96d56Sopenharmony_ci"--\n" 6427db96d56Sopenharmony_ci"\n" 6437db96d56Sopenharmony_ci"Remove and return a single item from B.\n" 6447db96d56Sopenharmony_ci"\n" 6457db96d56Sopenharmony_ci" index\n" 6467db96d56Sopenharmony_ci" The index from where to remove the item.\n" 6477db96d56Sopenharmony_ci" -1 (the default value) means remove the last item.\n" 6487db96d56Sopenharmony_ci"\n" 6497db96d56Sopenharmony_ci"If no index argument is given, will pop the last item."); 6507db96d56Sopenharmony_ci 6517db96d56Sopenharmony_ci#define BYTEARRAY_POP_METHODDEF \ 6527db96d56Sopenharmony_ci {"pop", _PyCFunction_CAST(bytearray_pop), METH_FASTCALL, bytearray_pop__doc__}, 6537db96d56Sopenharmony_ci 6547db96d56Sopenharmony_cistatic PyObject * 6557db96d56Sopenharmony_cibytearray_pop_impl(PyByteArrayObject *self, Py_ssize_t index); 6567db96d56Sopenharmony_ci 6577db96d56Sopenharmony_cistatic PyObject * 6587db96d56Sopenharmony_cibytearray_pop(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs) 6597db96d56Sopenharmony_ci{ 6607db96d56Sopenharmony_ci PyObject *return_value = NULL; 6617db96d56Sopenharmony_ci Py_ssize_t index = -1; 6627db96d56Sopenharmony_ci 6637db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("pop", nargs, 0, 1)) { 6647db96d56Sopenharmony_ci goto exit; 6657db96d56Sopenharmony_ci } 6667db96d56Sopenharmony_ci if (nargs < 1) { 6677db96d56Sopenharmony_ci goto skip_optional; 6687db96d56Sopenharmony_ci } 6697db96d56Sopenharmony_ci { 6707db96d56Sopenharmony_ci Py_ssize_t ival = -1; 6717db96d56Sopenharmony_ci PyObject *iobj = _PyNumber_Index(args[0]); 6727db96d56Sopenharmony_ci if (iobj != NULL) { 6737db96d56Sopenharmony_ci ival = PyLong_AsSsize_t(iobj); 6747db96d56Sopenharmony_ci Py_DECREF(iobj); 6757db96d56Sopenharmony_ci } 6767db96d56Sopenharmony_ci if (ival == -1 && PyErr_Occurred()) { 6777db96d56Sopenharmony_ci goto exit; 6787db96d56Sopenharmony_ci } 6797db96d56Sopenharmony_ci index = ival; 6807db96d56Sopenharmony_ci } 6817db96d56Sopenharmony_ciskip_optional: 6827db96d56Sopenharmony_ci return_value = bytearray_pop_impl(self, index); 6837db96d56Sopenharmony_ci 6847db96d56Sopenharmony_ciexit: 6857db96d56Sopenharmony_ci return return_value; 6867db96d56Sopenharmony_ci} 6877db96d56Sopenharmony_ci 6887db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_remove__doc__, 6897db96d56Sopenharmony_ci"remove($self, value, /)\n" 6907db96d56Sopenharmony_ci"--\n" 6917db96d56Sopenharmony_ci"\n" 6927db96d56Sopenharmony_ci"Remove the first occurrence of a value in the bytearray.\n" 6937db96d56Sopenharmony_ci"\n" 6947db96d56Sopenharmony_ci" value\n" 6957db96d56Sopenharmony_ci" The value to remove."); 6967db96d56Sopenharmony_ci 6977db96d56Sopenharmony_ci#define BYTEARRAY_REMOVE_METHODDEF \ 6987db96d56Sopenharmony_ci {"remove", (PyCFunction)bytearray_remove, METH_O, bytearray_remove__doc__}, 6997db96d56Sopenharmony_ci 7007db96d56Sopenharmony_cistatic PyObject * 7017db96d56Sopenharmony_cibytearray_remove_impl(PyByteArrayObject *self, int value); 7027db96d56Sopenharmony_ci 7037db96d56Sopenharmony_cistatic PyObject * 7047db96d56Sopenharmony_cibytearray_remove(PyByteArrayObject *self, PyObject *arg) 7057db96d56Sopenharmony_ci{ 7067db96d56Sopenharmony_ci PyObject *return_value = NULL; 7077db96d56Sopenharmony_ci int value; 7087db96d56Sopenharmony_ci 7097db96d56Sopenharmony_ci if (!_getbytevalue(arg, &value)) { 7107db96d56Sopenharmony_ci goto exit; 7117db96d56Sopenharmony_ci } 7127db96d56Sopenharmony_ci return_value = bytearray_remove_impl(self, value); 7137db96d56Sopenharmony_ci 7147db96d56Sopenharmony_ciexit: 7157db96d56Sopenharmony_ci return return_value; 7167db96d56Sopenharmony_ci} 7177db96d56Sopenharmony_ci 7187db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_strip__doc__, 7197db96d56Sopenharmony_ci"strip($self, bytes=None, /)\n" 7207db96d56Sopenharmony_ci"--\n" 7217db96d56Sopenharmony_ci"\n" 7227db96d56Sopenharmony_ci"Strip leading and trailing bytes contained in the argument.\n" 7237db96d56Sopenharmony_ci"\n" 7247db96d56Sopenharmony_ci"If the argument is omitted or None, strip leading and trailing ASCII whitespace."); 7257db96d56Sopenharmony_ci 7267db96d56Sopenharmony_ci#define BYTEARRAY_STRIP_METHODDEF \ 7277db96d56Sopenharmony_ci {"strip", _PyCFunction_CAST(bytearray_strip), METH_FASTCALL, bytearray_strip__doc__}, 7287db96d56Sopenharmony_ci 7297db96d56Sopenharmony_cistatic PyObject * 7307db96d56Sopenharmony_cibytearray_strip_impl(PyByteArrayObject *self, PyObject *bytes); 7317db96d56Sopenharmony_ci 7327db96d56Sopenharmony_cistatic PyObject * 7337db96d56Sopenharmony_cibytearray_strip(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs) 7347db96d56Sopenharmony_ci{ 7357db96d56Sopenharmony_ci PyObject *return_value = NULL; 7367db96d56Sopenharmony_ci PyObject *bytes = Py_None; 7377db96d56Sopenharmony_ci 7387db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("strip", nargs, 0, 1)) { 7397db96d56Sopenharmony_ci goto exit; 7407db96d56Sopenharmony_ci } 7417db96d56Sopenharmony_ci if (nargs < 1) { 7427db96d56Sopenharmony_ci goto skip_optional; 7437db96d56Sopenharmony_ci } 7447db96d56Sopenharmony_ci bytes = args[0]; 7457db96d56Sopenharmony_ciskip_optional: 7467db96d56Sopenharmony_ci return_value = bytearray_strip_impl(self, bytes); 7477db96d56Sopenharmony_ci 7487db96d56Sopenharmony_ciexit: 7497db96d56Sopenharmony_ci return return_value; 7507db96d56Sopenharmony_ci} 7517db96d56Sopenharmony_ci 7527db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_lstrip__doc__, 7537db96d56Sopenharmony_ci"lstrip($self, bytes=None, /)\n" 7547db96d56Sopenharmony_ci"--\n" 7557db96d56Sopenharmony_ci"\n" 7567db96d56Sopenharmony_ci"Strip leading bytes contained in the argument.\n" 7577db96d56Sopenharmony_ci"\n" 7587db96d56Sopenharmony_ci"If the argument is omitted or None, strip leading ASCII whitespace."); 7597db96d56Sopenharmony_ci 7607db96d56Sopenharmony_ci#define BYTEARRAY_LSTRIP_METHODDEF \ 7617db96d56Sopenharmony_ci {"lstrip", _PyCFunction_CAST(bytearray_lstrip), METH_FASTCALL, bytearray_lstrip__doc__}, 7627db96d56Sopenharmony_ci 7637db96d56Sopenharmony_cistatic PyObject * 7647db96d56Sopenharmony_cibytearray_lstrip_impl(PyByteArrayObject *self, PyObject *bytes); 7657db96d56Sopenharmony_ci 7667db96d56Sopenharmony_cistatic PyObject * 7677db96d56Sopenharmony_cibytearray_lstrip(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs) 7687db96d56Sopenharmony_ci{ 7697db96d56Sopenharmony_ci PyObject *return_value = NULL; 7707db96d56Sopenharmony_ci PyObject *bytes = Py_None; 7717db96d56Sopenharmony_ci 7727db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("lstrip", nargs, 0, 1)) { 7737db96d56Sopenharmony_ci goto exit; 7747db96d56Sopenharmony_ci } 7757db96d56Sopenharmony_ci if (nargs < 1) { 7767db96d56Sopenharmony_ci goto skip_optional; 7777db96d56Sopenharmony_ci } 7787db96d56Sopenharmony_ci bytes = args[0]; 7797db96d56Sopenharmony_ciskip_optional: 7807db96d56Sopenharmony_ci return_value = bytearray_lstrip_impl(self, bytes); 7817db96d56Sopenharmony_ci 7827db96d56Sopenharmony_ciexit: 7837db96d56Sopenharmony_ci return return_value; 7847db96d56Sopenharmony_ci} 7857db96d56Sopenharmony_ci 7867db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_rstrip__doc__, 7877db96d56Sopenharmony_ci"rstrip($self, bytes=None, /)\n" 7887db96d56Sopenharmony_ci"--\n" 7897db96d56Sopenharmony_ci"\n" 7907db96d56Sopenharmony_ci"Strip trailing bytes contained in the argument.\n" 7917db96d56Sopenharmony_ci"\n" 7927db96d56Sopenharmony_ci"If the argument is omitted or None, strip trailing ASCII whitespace."); 7937db96d56Sopenharmony_ci 7947db96d56Sopenharmony_ci#define BYTEARRAY_RSTRIP_METHODDEF \ 7957db96d56Sopenharmony_ci {"rstrip", _PyCFunction_CAST(bytearray_rstrip), METH_FASTCALL, bytearray_rstrip__doc__}, 7967db96d56Sopenharmony_ci 7977db96d56Sopenharmony_cistatic PyObject * 7987db96d56Sopenharmony_cibytearray_rstrip_impl(PyByteArrayObject *self, PyObject *bytes); 7997db96d56Sopenharmony_ci 8007db96d56Sopenharmony_cistatic PyObject * 8017db96d56Sopenharmony_cibytearray_rstrip(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs) 8027db96d56Sopenharmony_ci{ 8037db96d56Sopenharmony_ci PyObject *return_value = NULL; 8047db96d56Sopenharmony_ci PyObject *bytes = Py_None; 8057db96d56Sopenharmony_ci 8067db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("rstrip", nargs, 0, 1)) { 8077db96d56Sopenharmony_ci goto exit; 8087db96d56Sopenharmony_ci } 8097db96d56Sopenharmony_ci if (nargs < 1) { 8107db96d56Sopenharmony_ci goto skip_optional; 8117db96d56Sopenharmony_ci } 8127db96d56Sopenharmony_ci bytes = args[0]; 8137db96d56Sopenharmony_ciskip_optional: 8147db96d56Sopenharmony_ci return_value = bytearray_rstrip_impl(self, bytes); 8157db96d56Sopenharmony_ci 8167db96d56Sopenharmony_ciexit: 8177db96d56Sopenharmony_ci return return_value; 8187db96d56Sopenharmony_ci} 8197db96d56Sopenharmony_ci 8207db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_decode__doc__, 8217db96d56Sopenharmony_ci"decode($self, /, encoding=\'utf-8\', errors=\'strict\')\n" 8227db96d56Sopenharmony_ci"--\n" 8237db96d56Sopenharmony_ci"\n" 8247db96d56Sopenharmony_ci"Decode the bytearray using the codec registered for encoding.\n" 8257db96d56Sopenharmony_ci"\n" 8267db96d56Sopenharmony_ci" encoding\n" 8277db96d56Sopenharmony_ci" The encoding with which to decode the bytearray.\n" 8287db96d56Sopenharmony_ci" errors\n" 8297db96d56Sopenharmony_ci" The error handling scheme to use for the handling of decoding errors.\n" 8307db96d56Sopenharmony_ci" The default is \'strict\' meaning that decoding errors raise a\n" 8317db96d56Sopenharmony_ci" UnicodeDecodeError. Other possible values are \'ignore\' and \'replace\'\n" 8327db96d56Sopenharmony_ci" as well as any other name registered with codecs.register_error that\n" 8337db96d56Sopenharmony_ci" can handle UnicodeDecodeErrors."); 8347db96d56Sopenharmony_ci 8357db96d56Sopenharmony_ci#define BYTEARRAY_DECODE_METHODDEF \ 8367db96d56Sopenharmony_ci {"decode", _PyCFunction_CAST(bytearray_decode), METH_FASTCALL|METH_KEYWORDS, bytearray_decode__doc__}, 8377db96d56Sopenharmony_ci 8387db96d56Sopenharmony_cistatic PyObject * 8397db96d56Sopenharmony_cibytearray_decode_impl(PyByteArrayObject *self, const char *encoding, 8407db96d56Sopenharmony_ci const char *errors); 8417db96d56Sopenharmony_ci 8427db96d56Sopenharmony_cistatic PyObject * 8437db96d56Sopenharmony_cibytearray_decode(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 8447db96d56Sopenharmony_ci{ 8457db96d56Sopenharmony_ci PyObject *return_value = NULL; 8467db96d56Sopenharmony_ci static const char * const _keywords[] = {"encoding", "errors", NULL}; 8477db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "decode", 0}; 8487db96d56Sopenharmony_ci PyObject *argsbuf[2]; 8497db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; 8507db96d56Sopenharmony_ci const char *encoding = NULL; 8517db96d56Sopenharmony_ci const char *errors = NULL; 8527db96d56Sopenharmony_ci 8537db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf); 8547db96d56Sopenharmony_ci if (!args) { 8557db96d56Sopenharmony_ci goto exit; 8567db96d56Sopenharmony_ci } 8577db96d56Sopenharmony_ci if (!noptargs) { 8587db96d56Sopenharmony_ci goto skip_optional_pos; 8597db96d56Sopenharmony_ci } 8607db96d56Sopenharmony_ci if (args[0]) { 8617db96d56Sopenharmony_ci if (!PyUnicode_Check(args[0])) { 8627db96d56Sopenharmony_ci _PyArg_BadArgument("decode", "argument 'encoding'", "str", args[0]); 8637db96d56Sopenharmony_ci goto exit; 8647db96d56Sopenharmony_ci } 8657db96d56Sopenharmony_ci Py_ssize_t encoding_length; 8667db96d56Sopenharmony_ci encoding = PyUnicode_AsUTF8AndSize(args[0], &encoding_length); 8677db96d56Sopenharmony_ci if (encoding == NULL) { 8687db96d56Sopenharmony_ci goto exit; 8697db96d56Sopenharmony_ci } 8707db96d56Sopenharmony_ci if (strlen(encoding) != (size_t)encoding_length) { 8717db96d56Sopenharmony_ci PyErr_SetString(PyExc_ValueError, "embedded null character"); 8727db96d56Sopenharmony_ci goto exit; 8737db96d56Sopenharmony_ci } 8747db96d56Sopenharmony_ci if (!--noptargs) { 8757db96d56Sopenharmony_ci goto skip_optional_pos; 8767db96d56Sopenharmony_ci } 8777db96d56Sopenharmony_ci } 8787db96d56Sopenharmony_ci if (!PyUnicode_Check(args[1])) { 8797db96d56Sopenharmony_ci _PyArg_BadArgument("decode", "argument 'errors'", "str", args[1]); 8807db96d56Sopenharmony_ci goto exit; 8817db96d56Sopenharmony_ci } 8827db96d56Sopenharmony_ci Py_ssize_t errors_length; 8837db96d56Sopenharmony_ci errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length); 8847db96d56Sopenharmony_ci if (errors == NULL) { 8857db96d56Sopenharmony_ci goto exit; 8867db96d56Sopenharmony_ci } 8877db96d56Sopenharmony_ci if (strlen(errors) != (size_t)errors_length) { 8887db96d56Sopenharmony_ci PyErr_SetString(PyExc_ValueError, "embedded null character"); 8897db96d56Sopenharmony_ci goto exit; 8907db96d56Sopenharmony_ci } 8917db96d56Sopenharmony_ciskip_optional_pos: 8927db96d56Sopenharmony_ci return_value = bytearray_decode_impl(self, encoding, errors); 8937db96d56Sopenharmony_ci 8947db96d56Sopenharmony_ciexit: 8957db96d56Sopenharmony_ci return return_value; 8967db96d56Sopenharmony_ci} 8977db96d56Sopenharmony_ci 8987db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_join__doc__, 8997db96d56Sopenharmony_ci"join($self, iterable_of_bytes, /)\n" 9007db96d56Sopenharmony_ci"--\n" 9017db96d56Sopenharmony_ci"\n" 9027db96d56Sopenharmony_ci"Concatenate any number of bytes/bytearray objects.\n" 9037db96d56Sopenharmony_ci"\n" 9047db96d56Sopenharmony_ci"The bytearray whose method is called is inserted in between each pair.\n" 9057db96d56Sopenharmony_ci"\n" 9067db96d56Sopenharmony_ci"The result is returned as a new bytearray object."); 9077db96d56Sopenharmony_ci 9087db96d56Sopenharmony_ci#define BYTEARRAY_JOIN_METHODDEF \ 9097db96d56Sopenharmony_ci {"join", (PyCFunction)bytearray_join, METH_O, bytearray_join__doc__}, 9107db96d56Sopenharmony_ci 9117db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_splitlines__doc__, 9127db96d56Sopenharmony_ci"splitlines($self, /, keepends=False)\n" 9137db96d56Sopenharmony_ci"--\n" 9147db96d56Sopenharmony_ci"\n" 9157db96d56Sopenharmony_ci"Return a list of the lines in the bytearray, breaking at line boundaries.\n" 9167db96d56Sopenharmony_ci"\n" 9177db96d56Sopenharmony_ci"Line breaks are not included in the resulting list unless keepends is given and\n" 9187db96d56Sopenharmony_ci"true."); 9197db96d56Sopenharmony_ci 9207db96d56Sopenharmony_ci#define BYTEARRAY_SPLITLINES_METHODDEF \ 9217db96d56Sopenharmony_ci {"splitlines", _PyCFunction_CAST(bytearray_splitlines), METH_FASTCALL|METH_KEYWORDS, bytearray_splitlines__doc__}, 9227db96d56Sopenharmony_ci 9237db96d56Sopenharmony_cistatic PyObject * 9247db96d56Sopenharmony_cibytearray_splitlines_impl(PyByteArrayObject *self, int keepends); 9257db96d56Sopenharmony_ci 9267db96d56Sopenharmony_cistatic PyObject * 9277db96d56Sopenharmony_cibytearray_splitlines(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 9287db96d56Sopenharmony_ci{ 9297db96d56Sopenharmony_ci PyObject *return_value = NULL; 9307db96d56Sopenharmony_ci static const char * const _keywords[] = {"keepends", NULL}; 9317db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "splitlines", 0}; 9327db96d56Sopenharmony_ci PyObject *argsbuf[1]; 9337db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; 9347db96d56Sopenharmony_ci int keepends = 0; 9357db96d56Sopenharmony_ci 9367db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf); 9377db96d56Sopenharmony_ci if (!args) { 9387db96d56Sopenharmony_ci goto exit; 9397db96d56Sopenharmony_ci } 9407db96d56Sopenharmony_ci if (!noptargs) { 9417db96d56Sopenharmony_ci goto skip_optional_pos; 9427db96d56Sopenharmony_ci } 9437db96d56Sopenharmony_ci keepends = _PyLong_AsInt(args[0]); 9447db96d56Sopenharmony_ci if (keepends == -1 && PyErr_Occurred()) { 9457db96d56Sopenharmony_ci goto exit; 9467db96d56Sopenharmony_ci } 9477db96d56Sopenharmony_ciskip_optional_pos: 9487db96d56Sopenharmony_ci return_value = bytearray_splitlines_impl(self, keepends); 9497db96d56Sopenharmony_ci 9507db96d56Sopenharmony_ciexit: 9517db96d56Sopenharmony_ci return return_value; 9527db96d56Sopenharmony_ci} 9537db96d56Sopenharmony_ci 9547db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_fromhex__doc__, 9557db96d56Sopenharmony_ci"fromhex($type, string, /)\n" 9567db96d56Sopenharmony_ci"--\n" 9577db96d56Sopenharmony_ci"\n" 9587db96d56Sopenharmony_ci"Create a bytearray object from a string of hexadecimal numbers.\n" 9597db96d56Sopenharmony_ci"\n" 9607db96d56Sopenharmony_ci"Spaces between two numbers are accepted.\n" 9617db96d56Sopenharmony_ci"Example: bytearray.fromhex(\'B9 01EF\') -> bytearray(b\'\\\\xb9\\\\x01\\\\xef\')"); 9627db96d56Sopenharmony_ci 9637db96d56Sopenharmony_ci#define BYTEARRAY_FROMHEX_METHODDEF \ 9647db96d56Sopenharmony_ci {"fromhex", (PyCFunction)bytearray_fromhex, METH_O|METH_CLASS, bytearray_fromhex__doc__}, 9657db96d56Sopenharmony_ci 9667db96d56Sopenharmony_cistatic PyObject * 9677db96d56Sopenharmony_cibytearray_fromhex_impl(PyTypeObject *type, PyObject *string); 9687db96d56Sopenharmony_ci 9697db96d56Sopenharmony_cistatic PyObject * 9707db96d56Sopenharmony_cibytearray_fromhex(PyTypeObject *type, PyObject *arg) 9717db96d56Sopenharmony_ci{ 9727db96d56Sopenharmony_ci PyObject *return_value = NULL; 9737db96d56Sopenharmony_ci PyObject *string; 9747db96d56Sopenharmony_ci 9757db96d56Sopenharmony_ci if (!PyUnicode_Check(arg)) { 9767db96d56Sopenharmony_ci _PyArg_BadArgument("fromhex", "argument", "str", arg); 9777db96d56Sopenharmony_ci goto exit; 9787db96d56Sopenharmony_ci } 9797db96d56Sopenharmony_ci if (PyUnicode_READY(arg) == -1) { 9807db96d56Sopenharmony_ci goto exit; 9817db96d56Sopenharmony_ci } 9827db96d56Sopenharmony_ci string = arg; 9837db96d56Sopenharmony_ci return_value = bytearray_fromhex_impl(type, string); 9847db96d56Sopenharmony_ci 9857db96d56Sopenharmony_ciexit: 9867db96d56Sopenharmony_ci return return_value; 9877db96d56Sopenharmony_ci} 9887db96d56Sopenharmony_ci 9897db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_hex__doc__, 9907db96d56Sopenharmony_ci"hex($self, /, sep=<unrepresentable>, bytes_per_sep=1)\n" 9917db96d56Sopenharmony_ci"--\n" 9927db96d56Sopenharmony_ci"\n" 9937db96d56Sopenharmony_ci"Create a string of hexadecimal numbers from a bytearray object.\n" 9947db96d56Sopenharmony_ci"\n" 9957db96d56Sopenharmony_ci" sep\n" 9967db96d56Sopenharmony_ci" An optional single character or byte to separate hex bytes.\n" 9977db96d56Sopenharmony_ci" bytes_per_sep\n" 9987db96d56Sopenharmony_ci" How many bytes between separators. Positive values count from the\n" 9997db96d56Sopenharmony_ci" right, negative values count from the left.\n" 10007db96d56Sopenharmony_ci"\n" 10017db96d56Sopenharmony_ci"Example:\n" 10027db96d56Sopenharmony_ci">>> value = bytearray([0xb9, 0x01, 0xef])\n" 10037db96d56Sopenharmony_ci">>> value.hex()\n" 10047db96d56Sopenharmony_ci"\'b901ef\'\n" 10057db96d56Sopenharmony_ci">>> value.hex(\':\')\n" 10067db96d56Sopenharmony_ci"\'b9:01:ef\'\n" 10077db96d56Sopenharmony_ci">>> value.hex(\':\', 2)\n" 10087db96d56Sopenharmony_ci"\'b9:01ef\'\n" 10097db96d56Sopenharmony_ci">>> value.hex(\':\', -2)\n" 10107db96d56Sopenharmony_ci"\'b901:ef\'"); 10117db96d56Sopenharmony_ci 10127db96d56Sopenharmony_ci#define BYTEARRAY_HEX_METHODDEF \ 10137db96d56Sopenharmony_ci {"hex", _PyCFunction_CAST(bytearray_hex), METH_FASTCALL|METH_KEYWORDS, bytearray_hex__doc__}, 10147db96d56Sopenharmony_ci 10157db96d56Sopenharmony_cistatic PyObject * 10167db96d56Sopenharmony_cibytearray_hex_impl(PyByteArrayObject *self, PyObject *sep, int bytes_per_sep); 10177db96d56Sopenharmony_ci 10187db96d56Sopenharmony_cistatic PyObject * 10197db96d56Sopenharmony_cibytearray_hex(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 10207db96d56Sopenharmony_ci{ 10217db96d56Sopenharmony_ci PyObject *return_value = NULL; 10227db96d56Sopenharmony_ci static const char * const _keywords[] = {"sep", "bytes_per_sep", NULL}; 10237db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "hex", 0}; 10247db96d56Sopenharmony_ci PyObject *argsbuf[2]; 10257db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; 10267db96d56Sopenharmony_ci PyObject *sep = NULL; 10277db96d56Sopenharmony_ci int bytes_per_sep = 1; 10287db96d56Sopenharmony_ci 10297db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf); 10307db96d56Sopenharmony_ci if (!args) { 10317db96d56Sopenharmony_ci goto exit; 10327db96d56Sopenharmony_ci } 10337db96d56Sopenharmony_ci if (!noptargs) { 10347db96d56Sopenharmony_ci goto skip_optional_pos; 10357db96d56Sopenharmony_ci } 10367db96d56Sopenharmony_ci if (args[0]) { 10377db96d56Sopenharmony_ci sep = args[0]; 10387db96d56Sopenharmony_ci if (!--noptargs) { 10397db96d56Sopenharmony_ci goto skip_optional_pos; 10407db96d56Sopenharmony_ci } 10417db96d56Sopenharmony_ci } 10427db96d56Sopenharmony_ci bytes_per_sep = _PyLong_AsInt(args[1]); 10437db96d56Sopenharmony_ci if (bytes_per_sep == -1 && PyErr_Occurred()) { 10447db96d56Sopenharmony_ci goto exit; 10457db96d56Sopenharmony_ci } 10467db96d56Sopenharmony_ciskip_optional_pos: 10477db96d56Sopenharmony_ci return_value = bytearray_hex_impl(self, sep, bytes_per_sep); 10487db96d56Sopenharmony_ci 10497db96d56Sopenharmony_ciexit: 10507db96d56Sopenharmony_ci return return_value; 10517db96d56Sopenharmony_ci} 10527db96d56Sopenharmony_ci 10537db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_reduce__doc__, 10547db96d56Sopenharmony_ci"__reduce__($self, /)\n" 10557db96d56Sopenharmony_ci"--\n" 10567db96d56Sopenharmony_ci"\n" 10577db96d56Sopenharmony_ci"Return state information for pickling."); 10587db96d56Sopenharmony_ci 10597db96d56Sopenharmony_ci#define BYTEARRAY_REDUCE_METHODDEF \ 10607db96d56Sopenharmony_ci {"__reduce__", (PyCFunction)bytearray_reduce, METH_NOARGS, bytearray_reduce__doc__}, 10617db96d56Sopenharmony_ci 10627db96d56Sopenharmony_cistatic PyObject * 10637db96d56Sopenharmony_cibytearray_reduce_impl(PyByteArrayObject *self); 10647db96d56Sopenharmony_ci 10657db96d56Sopenharmony_cistatic PyObject * 10667db96d56Sopenharmony_cibytearray_reduce(PyByteArrayObject *self, PyObject *Py_UNUSED(ignored)) 10677db96d56Sopenharmony_ci{ 10687db96d56Sopenharmony_ci return bytearray_reduce_impl(self); 10697db96d56Sopenharmony_ci} 10707db96d56Sopenharmony_ci 10717db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_reduce_ex__doc__, 10727db96d56Sopenharmony_ci"__reduce_ex__($self, proto=0, /)\n" 10737db96d56Sopenharmony_ci"--\n" 10747db96d56Sopenharmony_ci"\n" 10757db96d56Sopenharmony_ci"Return state information for pickling."); 10767db96d56Sopenharmony_ci 10777db96d56Sopenharmony_ci#define BYTEARRAY_REDUCE_EX_METHODDEF \ 10787db96d56Sopenharmony_ci {"__reduce_ex__", _PyCFunction_CAST(bytearray_reduce_ex), METH_FASTCALL, bytearray_reduce_ex__doc__}, 10797db96d56Sopenharmony_ci 10807db96d56Sopenharmony_cistatic PyObject * 10817db96d56Sopenharmony_cibytearray_reduce_ex_impl(PyByteArrayObject *self, int proto); 10827db96d56Sopenharmony_ci 10837db96d56Sopenharmony_cistatic PyObject * 10847db96d56Sopenharmony_cibytearray_reduce_ex(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs) 10857db96d56Sopenharmony_ci{ 10867db96d56Sopenharmony_ci PyObject *return_value = NULL; 10877db96d56Sopenharmony_ci int proto = 0; 10887db96d56Sopenharmony_ci 10897db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("__reduce_ex__", nargs, 0, 1)) { 10907db96d56Sopenharmony_ci goto exit; 10917db96d56Sopenharmony_ci } 10927db96d56Sopenharmony_ci if (nargs < 1) { 10937db96d56Sopenharmony_ci goto skip_optional; 10947db96d56Sopenharmony_ci } 10957db96d56Sopenharmony_ci proto = _PyLong_AsInt(args[0]); 10967db96d56Sopenharmony_ci if (proto == -1 && PyErr_Occurred()) { 10977db96d56Sopenharmony_ci goto exit; 10987db96d56Sopenharmony_ci } 10997db96d56Sopenharmony_ciskip_optional: 11007db96d56Sopenharmony_ci return_value = bytearray_reduce_ex_impl(self, proto); 11017db96d56Sopenharmony_ci 11027db96d56Sopenharmony_ciexit: 11037db96d56Sopenharmony_ci return return_value; 11047db96d56Sopenharmony_ci} 11057db96d56Sopenharmony_ci 11067db96d56Sopenharmony_ciPyDoc_STRVAR(bytearray_sizeof__doc__, 11077db96d56Sopenharmony_ci"__sizeof__($self, /)\n" 11087db96d56Sopenharmony_ci"--\n" 11097db96d56Sopenharmony_ci"\n" 11107db96d56Sopenharmony_ci"Returns the size of the bytearray object in memory, in bytes."); 11117db96d56Sopenharmony_ci 11127db96d56Sopenharmony_ci#define BYTEARRAY_SIZEOF_METHODDEF \ 11137db96d56Sopenharmony_ci {"__sizeof__", (PyCFunction)bytearray_sizeof, METH_NOARGS, bytearray_sizeof__doc__}, 11147db96d56Sopenharmony_ci 11157db96d56Sopenharmony_cistatic PyObject * 11167db96d56Sopenharmony_cibytearray_sizeof_impl(PyByteArrayObject *self); 11177db96d56Sopenharmony_ci 11187db96d56Sopenharmony_cistatic PyObject * 11197db96d56Sopenharmony_cibytearray_sizeof(PyByteArrayObject *self, PyObject *Py_UNUSED(ignored)) 11207db96d56Sopenharmony_ci{ 11217db96d56Sopenharmony_ci return bytearray_sizeof_impl(self); 11227db96d56Sopenharmony_ci} 11237db96d56Sopenharmony_ci/*[clinic end generated code: output=033e9eb5f2bb0139 input=a9049054013a1b77]*/ 1124