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