2015-04-03 17:53:51 -03:00
|
|
|
/*[clinic input]
|
|
|
|
preserve
|
|
|
|
[clinic start generated code]*/
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_clear__doc__,
|
|
|
|
"clear($self, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Remove all items from the bytearray.");
|
|
|
|
|
|
|
|
#define BYTEARRAY_CLEAR_METHODDEF \
|
|
|
|
{"clear", (PyCFunction)bytearray_clear, METH_NOARGS, bytearray_clear__doc__},
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
bytearray_clear_impl(PyByteArrayObject *self);
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
bytearray_clear(PyByteArrayObject *self, PyObject *Py_UNUSED(ignored))
|
|
|
|
{
|
|
|
|
return bytearray_clear_impl(self);
|
|
|
|
}
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_copy__doc__,
|
|
|
|
"copy($self, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Return a copy of B.");
|
|
|
|
|
|
|
|
#define BYTEARRAY_COPY_METHODDEF \
|
|
|
|
{"copy", (PyCFunction)bytearray_copy, METH_NOARGS, bytearray_copy__doc__},
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
bytearray_copy_impl(PyByteArrayObject *self);
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
bytearray_copy(PyByteArrayObject *self, PyObject *Py_UNUSED(ignored))
|
|
|
|
{
|
|
|
|
return bytearray_copy_impl(self);
|
|
|
|
}
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_translate__doc__,
|
2016-08-27 05:35:02 -03:00
|
|
|
"translate($self, table, /, delete=b\'\')\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
2015-04-03 17:53:51 -03:00
|
|
|
"Return a copy with each character mapped by the given translation table.\n"
|
|
|
|
"\n"
|
|
|
|
" table\n"
|
|
|
|
" Translation table, which must be a bytes object of length 256.\n"
|
|
|
|
"\n"
|
2016-08-27 05:35:02 -03:00
|
|
|
"All characters occurring in the optional argument delete are removed.\n"
|
2015-04-03 17:53:51 -03:00
|
|
|
"The remaining characters are mapped through the given translation table.");
|
|
|
|
|
|
|
|
#define BYTEARRAY_TRANSLATE_METHODDEF \
|
2017-07-03 15:20:15 -03:00
|
|
|
{"translate", (PyCFunction)bytearray_translate, METH_FASTCALL|METH_KEYWORDS, bytearray_translate__doc__},
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
static PyObject *
|
2015-04-14 19:07:59 -03:00
|
|
|
bytearray_translate_impl(PyByteArrayObject *self, PyObject *table,
|
2016-08-27 05:35:02 -03:00
|
|
|
PyObject *deletechars);
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
static PyObject *
|
2016-09-10 00:00:13 -03:00
|
|
|
bytearray_translate(PyByteArrayObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
2015-04-03 17:53:51 -03:00
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
2016-08-27 05:35:02 -03:00
|
|
|
static const char * const _keywords[] = {"", "delete", NULL};
|
|
|
|
static _PyArg_Parser _parser = {"O|O:translate", _keywords, 0};
|
2015-04-03 17:53:51 -03:00
|
|
|
PyObject *table;
|
|
|
|
PyObject *deletechars = NULL;
|
|
|
|
|
2017-01-16 20:29:01 -04:00
|
|
|
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
2016-08-27 05:35:02 -03:00
|
|
|
&table, &deletechars)) {
|
|
|
|
goto exit;
|
2015-04-03 17:53:51 -03:00
|
|
|
}
|
2016-08-27 05:35:02 -03:00
|
|
|
return_value = bytearray_translate_impl(self, table, deletechars);
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
exit:
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_maketrans__doc__,
|
|
|
|
"maketrans(frm, to, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Return a translation table useable for the bytes or bytearray translate method.\n"
|
|
|
|
"\n"
|
|
|
|
"The returned table will be one where each byte in frm is mapped to the byte at\n"
|
|
|
|
"the same position in to.\n"
|
|
|
|
"\n"
|
|
|
|
"The bytes objects frm and to must be of the same length.");
|
|
|
|
|
|
|
|
#define BYTEARRAY_MAKETRANS_METHODDEF \
|
2017-01-16 20:35:17 -04:00
|
|
|
{"maketrans", (PyCFunction)bytearray_maketrans, METH_FASTCALL|METH_STATIC, bytearray_maketrans__doc__},
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
bytearray_maketrans_impl(Py_buffer *frm, Py_buffer *to);
|
|
|
|
|
|
|
|
static PyObject *
|
2017-07-03 15:20:15 -03:00
|
|
|
bytearray_maketrans(void *null, PyObject **args, Py_ssize_t nargs)
|
2015-04-03 17:53:51 -03:00
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
|
|
|
Py_buffer frm = {NULL, NULL};
|
|
|
|
Py_buffer to = {NULL, NULL};
|
|
|
|
|
2017-06-10 01:51:48 -03:00
|
|
|
if (!_PyArg_ParseStack(args, nargs, "y*y*:maketrans",
|
|
|
|
&frm, &to)) {
|
2017-01-16 20:35:17 -04:00
|
|
|
goto exit;
|
|
|
|
}
|
2015-04-03 17:53:51 -03:00
|
|
|
return_value = bytearray_maketrans_impl(&frm, &to);
|
|
|
|
|
|
|
|
exit:
|
|
|
|
/* Cleanup for frm */
|
2016-06-09 10:16:06 -03:00
|
|
|
if (frm.obj) {
|
2015-04-03 17:53:51 -03:00
|
|
|
PyBuffer_Release(&frm);
|
2016-06-09 10:16:06 -03:00
|
|
|
}
|
2015-04-03 17:53:51 -03:00
|
|
|
/* Cleanup for to */
|
2016-06-09 10:16:06 -03:00
|
|
|
if (to.obj) {
|
2015-04-03 17:53:51 -03:00
|
|
|
PyBuffer_Release(&to);
|
2016-06-09 10:16:06 -03:00
|
|
|
}
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_replace__doc__,
|
|
|
|
"replace($self, old, new, count=-1, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Return a copy with all occurrences of substring old replaced by new.\n"
|
|
|
|
"\n"
|
|
|
|
" count\n"
|
|
|
|
" Maximum number of occurrences to replace.\n"
|
|
|
|
" -1 (the default value) means replace all occurrences.\n"
|
|
|
|
"\n"
|
|
|
|
"If the optional argument count is given, only the first count occurrences are\n"
|
|
|
|
"replaced.");
|
|
|
|
|
|
|
|
#define BYTEARRAY_REPLACE_METHODDEF \
|
2017-01-16 20:35:17 -04:00
|
|
|
{"replace", (PyCFunction)bytearray_replace, METH_FASTCALL, bytearray_replace__doc__},
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
static PyObject *
|
2015-04-14 19:07:59 -03:00
|
|
|
bytearray_replace_impl(PyByteArrayObject *self, Py_buffer *old,
|
|
|
|
Py_buffer *new, Py_ssize_t count);
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
static PyObject *
|
2017-07-03 15:20:15 -03:00
|
|
|
bytearray_replace(PyByteArrayObject *self, PyObject **args, Py_ssize_t nargs)
|
2015-04-03 17:53:51 -03:00
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
|
|
|
Py_buffer old = {NULL, NULL};
|
|
|
|
Py_buffer new = {NULL, NULL};
|
|
|
|
Py_ssize_t count = -1;
|
|
|
|
|
2017-06-10 01:51:48 -03:00
|
|
|
if (!_PyArg_ParseStack(args, nargs, "y*y*|n:replace",
|
|
|
|
&old, &new, &count)) {
|
2017-01-16 20:35:17 -04:00
|
|
|
goto exit;
|
|
|
|
}
|
2015-04-03 17:53:51 -03:00
|
|
|
return_value = bytearray_replace_impl(self, &old, &new, count);
|
|
|
|
|
|
|
|
exit:
|
|
|
|
/* Cleanup for old */
|
2016-06-09 10:16:06 -03:00
|
|
|
if (old.obj) {
|
2015-04-03 17:53:51 -03:00
|
|
|
PyBuffer_Release(&old);
|
2016-06-09 10:16:06 -03:00
|
|
|
}
|
2015-04-03 17:53:51 -03:00
|
|
|
/* Cleanup for new */
|
2016-06-09 10:16:06 -03:00
|
|
|
if (new.obj) {
|
2015-04-03 17:53:51 -03:00
|
|
|
PyBuffer_Release(&new);
|
2016-06-09 10:16:06 -03:00
|
|
|
}
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_split__doc__,
|
|
|
|
"split($self, /, sep=None, maxsplit=-1)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Return a list of the sections in the bytearray, using sep as the delimiter.\n"
|
|
|
|
"\n"
|
|
|
|
" sep\n"
|
|
|
|
" The delimiter according which to split the bytearray.\n"
|
|
|
|
" None (the default value) means split on ASCII whitespace characters\n"
|
|
|
|
" (space, tab, return, newline, formfeed, vertical tab).\n"
|
|
|
|
" maxsplit\n"
|
|
|
|
" Maximum number of splits to do.\n"
|
|
|
|
" -1 (the default value) means no limit.");
|
|
|
|
|
|
|
|
#define BYTEARRAY_SPLIT_METHODDEF \
|
2017-07-03 15:20:15 -03:00
|
|
|
{"split", (PyCFunction)bytearray_split, METH_FASTCALL|METH_KEYWORDS, bytearray_split__doc__},
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
static PyObject *
|
2015-04-14 19:07:59 -03:00
|
|
|
bytearray_split_impl(PyByteArrayObject *self, PyObject *sep,
|
|
|
|
Py_ssize_t maxsplit);
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
static PyObject *
|
2016-09-10 00:00:13 -03:00
|
|
|
bytearray_split(PyByteArrayObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
2015-04-03 17:53:51 -03:00
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
2016-08-14 04:52:18 -03:00
|
|
|
static const char * const _keywords[] = {"sep", "maxsplit", NULL};
|
|
|
|
static _PyArg_Parser _parser = {"|On:split", _keywords, 0};
|
2015-04-03 17:53:51 -03:00
|
|
|
PyObject *sep = Py_None;
|
|
|
|
Py_ssize_t maxsplit = -1;
|
|
|
|
|
2017-01-16 20:29:01 -04:00
|
|
|
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
2016-06-09 10:16:06 -03:00
|
|
|
&sep, &maxsplit)) {
|
2015-04-03 17:53:51 -03:00
|
|
|
goto exit;
|
2016-06-09 10:16:06 -03:00
|
|
|
}
|
2015-04-03 17:53:51 -03:00
|
|
|
return_value = bytearray_split_impl(self, sep, maxsplit);
|
|
|
|
|
|
|
|
exit:
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_partition__doc__,
|
|
|
|
"partition($self, sep, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Partition the bytearray into three parts using the given separator.\n"
|
|
|
|
"\n"
|
|
|
|
"This will search for the separator sep in the bytearray. If the separator is\n"
|
|
|
|
"found, returns a 3-tuple containing the part before the separator, the\n"
|
|
|
|
"separator itself, and the part after it.\n"
|
|
|
|
"\n"
|
|
|
|
"If the separator is not found, returns a 3-tuple containing the original\n"
|
|
|
|
"bytearray object and two empty bytearray objects.");
|
|
|
|
|
|
|
|
#define BYTEARRAY_PARTITION_METHODDEF \
|
|
|
|
{"partition", (PyCFunction)bytearray_partition, METH_O, bytearray_partition__doc__},
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_rpartition__doc__,
|
|
|
|
"rpartition($self, sep, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Partition the bytes into three parts using the given separator.\n"
|
|
|
|
"\n"
|
|
|
|
"This will search for the separator sep in the bytearray, starting and the end.\n"
|
|
|
|
"If the separator is found, returns a 3-tuple containing the part before the\n"
|
|
|
|
"separator, the separator itself, and the part after it.\n"
|
|
|
|
"\n"
|
|
|
|
"If the separator is not found, returns a 3-tuple containing two empty bytearray\n"
|
|
|
|
"objects and the original bytearray object.");
|
|
|
|
|
|
|
|
#define BYTEARRAY_RPARTITION_METHODDEF \
|
|
|
|
{"rpartition", (PyCFunction)bytearray_rpartition, METH_O, bytearray_rpartition__doc__},
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_rsplit__doc__,
|
|
|
|
"rsplit($self, /, sep=None, maxsplit=-1)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Return a list of the sections in the bytearray, using sep as the delimiter.\n"
|
|
|
|
"\n"
|
|
|
|
" sep\n"
|
|
|
|
" The delimiter according which to split the bytearray.\n"
|
|
|
|
" None (the default value) means split on ASCII whitespace characters\n"
|
|
|
|
" (space, tab, return, newline, formfeed, vertical tab).\n"
|
|
|
|
" maxsplit\n"
|
|
|
|
" Maximum number of splits to do.\n"
|
|
|
|
" -1 (the default value) means no limit.\n"
|
|
|
|
"\n"
|
|
|
|
"Splitting is done starting at the end of the bytearray and working to the front.");
|
|
|
|
|
|
|
|
#define BYTEARRAY_RSPLIT_METHODDEF \
|
2017-07-03 15:20:15 -03:00
|
|
|
{"rsplit", (PyCFunction)bytearray_rsplit, METH_FASTCALL|METH_KEYWORDS, bytearray_rsplit__doc__},
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
static PyObject *
|
2015-04-14 19:07:59 -03:00
|
|
|
bytearray_rsplit_impl(PyByteArrayObject *self, PyObject *sep,
|
|
|
|
Py_ssize_t maxsplit);
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
static PyObject *
|
2016-09-10 00:00:13 -03:00
|
|
|
bytearray_rsplit(PyByteArrayObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
2015-04-03 17:53:51 -03:00
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
2016-08-14 04:52:18 -03:00
|
|
|
static const char * const _keywords[] = {"sep", "maxsplit", NULL};
|
|
|
|
static _PyArg_Parser _parser = {"|On:rsplit", _keywords, 0};
|
2015-04-03 17:53:51 -03:00
|
|
|
PyObject *sep = Py_None;
|
|
|
|
Py_ssize_t maxsplit = -1;
|
|
|
|
|
2017-01-16 20:29:01 -04:00
|
|
|
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
2016-06-09 10:16:06 -03:00
|
|
|
&sep, &maxsplit)) {
|
2015-04-03 17:53:51 -03:00
|
|
|
goto exit;
|
2016-06-09 10:16:06 -03:00
|
|
|
}
|
2015-04-03 17:53:51 -03:00
|
|
|
return_value = bytearray_rsplit_impl(self, sep, maxsplit);
|
|
|
|
|
|
|
|
exit:
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_reverse__doc__,
|
|
|
|
"reverse($self, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Reverse the order of the values in B in place.");
|
|
|
|
|
|
|
|
#define BYTEARRAY_REVERSE_METHODDEF \
|
|
|
|
{"reverse", (PyCFunction)bytearray_reverse, METH_NOARGS, bytearray_reverse__doc__},
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
bytearray_reverse_impl(PyByteArrayObject *self);
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
bytearray_reverse(PyByteArrayObject *self, PyObject *Py_UNUSED(ignored))
|
|
|
|
{
|
|
|
|
return bytearray_reverse_impl(self);
|
|
|
|
}
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_insert__doc__,
|
|
|
|
"insert($self, index, item, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Insert a single item into the bytearray before the given index.\n"
|
|
|
|
"\n"
|
|
|
|
" index\n"
|
|
|
|
" The index where the value is to be inserted.\n"
|
|
|
|
" item\n"
|
|
|
|
" The item to be inserted.");
|
|
|
|
|
|
|
|
#define BYTEARRAY_INSERT_METHODDEF \
|
2017-01-16 20:35:17 -04:00
|
|
|
{"insert", (PyCFunction)bytearray_insert, METH_FASTCALL, bytearray_insert__doc__},
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
bytearray_insert_impl(PyByteArrayObject *self, Py_ssize_t index, int item);
|
|
|
|
|
|
|
|
static PyObject *
|
2017-07-03 15:20:15 -03:00
|
|
|
bytearray_insert(PyByteArrayObject *self, PyObject **args, Py_ssize_t nargs)
|
2015-04-03 17:53:51 -03:00
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
|
|
|
Py_ssize_t index;
|
|
|
|
int item;
|
|
|
|
|
2017-06-10 01:51:48 -03:00
|
|
|
if (!_PyArg_ParseStack(args, nargs, "nO&:insert",
|
|
|
|
&index, _getbytevalue, &item)) {
|
2017-01-16 20:35:17 -04:00
|
|
|
goto exit;
|
|
|
|
}
|
2015-04-03 17:53:51 -03:00
|
|
|
return_value = bytearray_insert_impl(self, index, item);
|
|
|
|
|
|
|
|
exit:
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_append__doc__,
|
|
|
|
"append($self, item, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Append a single item to the end of the bytearray.\n"
|
|
|
|
"\n"
|
|
|
|
" item\n"
|
|
|
|
" The item to be appended.");
|
|
|
|
|
|
|
|
#define BYTEARRAY_APPEND_METHODDEF \
|
2015-04-03 18:12:11 -03:00
|
|
|
{"append", (PyCFunction)bytearray_append, METH_O, bytearray_append__doc__},
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
bytearray_append_impl(PyByteArrayObject *self, int item);
|
|
|
|
|
|
|
|
static PyObject *
|
2015-04-03 18:12:11 -03:00
|
|
|
bytearray_append(PyByteArrayObject *self, PyObject *arg)
|
2015-04-03 17:53:51 -03:00
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
|
|
|
int item;
|
|
|
|
|
2016-06-09 10:16:06 -03:00
|
|
|
if (!PyArg_Parse(arg, "O&:append", _getbytevalue, &item)) {
|
2015-04-03 17:53:51 -03:00
|
|
|
goto exit;
|
2016-06-09 10:16:06 -03:00
|
|
|
}
|
2015-04-03 17:53:51 -03:00
|
|
|
return_value = bytearray_append_impl(self, item);
|
|
|
|
|
|
|
|
exit:
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_extend__doc__,
|
|
|
|
"extend($self, iterable_of_ints, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Append all the items from the iterator or sequence to the end of the bytearray.\n"
|
|
|
|
"\n"
|
|
|
|
" iterable_of_ints\n"
|
|
|
|
" The iterable of items to append.");
|
|
|
|
|
|
|
|
#define BYTEARRAY_EXTEND_METHODDEF \
|
|
|
|
{"extend", (PyCFunction)bytearray_extend, METH_O, bytearray_extend__doc__},
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_pop__doc__,
|
|
|
|
"pop($self, index=-1, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Remove and return a single item from B.\n"
|
|
|
|
"\n"
|
|
|
|
" index\n"
|
|
|
|
" The index from where to remove the item.\n"
|
|
|
|
" -1 (the default value) means remove the last item.\n"
|
|
|
|
"\n"
|
|
|
|
"If no index argument is given, will pop the last item.");
|
|
|
|
|
|
|
|
#define BYTEARRAY_POP_METHODDEF \
|
2017-01-16 20:35:17 -04:00
|
|
|
{"pop", (PyCFunction)bytearray_pop, METH_FASTCALL, bytearray_pop__doc__},
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
bytearray_pop_impl(PyByteArrayObject *self, Py_ssize_t index);
|
|
|
|
|
|
|
|
static PyObject *
|
2017-07-03 15:20:15 -03:00
|
|
|
bytearray_pop(PyByteArrayObject *self, PyObject **args, Py_ssize_t nargs)
|
2015-04-03 17:53:51 -03:00
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
|
|
|
Py_ssize_t index = -1;
|
|
|
|
|
2017-06-10 01:51:48 -03:00
|
|
|
if (!_PyArg_ParseStack(args, nargs, "|n:pop",
|
|
|
|
&index)) {
|
2017-01-16 20:35:17 -04:00
|
|
|
goto exit;
|
|
|
|
}
|
2015-04-03 17:53:51 -03:00
|
|
|
return_value = bytearray_pop_impl(self, index);
|
|
|
|
|
|
|
|
exit:
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_remove__doc__,
|
|
|
|
"remove($self, value, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Remove the first occurrence of a value in the bytearray.\n"
|
|
|
|
"\n"
|
|
|
|
" value\n"
|
|
|
|
" The value to remove.");
|
|
|
|
|
|
|
|
#define BYTEARRAY_REMOVE_METHODDEF \
|
2015-04-03 18:12:11 -03:00
|
|
|
{"remove", (PyCFunction)bytearray_remove, METH_O, bytearray_remove__doc__},
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
bytearray_remove_impl(PyByteArrayObject *self, int value);
|
|
|
|
|
|
|
|
static PyObject *
|
2015-04-03 18:12:11 -03:00
|
|
|
bytearray_remove(PyByteArrayObject *self, PyObject *arg)
|
2015-04-03 17:53:51 -03:00
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
|
|
|
int value;
|
|
|
|
|
2016-06-09 10:16:06 -03:00
|
|
|
if (!PyArg_Parse(arg, "O&:remove", _getbytevalue, &value)) {
|
2015-04-03 17:53:51 -03:00
|
|
|
goto exit;
|
2016-06-09 10:16:06 -03:00
|
|
|
}
|
2015-04-03 17:53:51 -03:00
|
|
|
return_value = bytearray_remove_impl(self, value);
|
|
|
|
|
|
|
|
exit:
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_strip__doc__,
|
|
|
|
"strip($self, bytes=None, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Strip leading and trailing bytes contained in the argument.\n"
|
|
|
|
"\n"
|
|
|
|
"If the argument is omitted or None, strip leading and trailing ASCII whitespace.");
|
|
|
|
|
|
|
|
#define BYTEARRAY_STRIP_METHODDEF \
|
2017-01-16 21:21:47 -04:00
|
|
|
{"strip", (PyCFunction)bytearray_strip, METH_FASTCALL, bytearray_strip__doc__},
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
bytearray_strip_impl(PyByteArrayObject *self, PyObject *bytes);
|
|
|
|
|
|
|
|
static PyObject *
|
2017-07-03 15:20:15 -03:00
|
|
|
bytearray_strip(PyByteArrayObject *self, PyObject **args, Py_ssize_t nargs)
|
2015-04-03 17:53:51 -03:00
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
|
|
|
PyObject *bytes = Py_None;
|
|
|
|
|
2017-06-10 01:51:48 -03:00
|
|
|
if (!_PyArg_UnpackStack(args, nargs, "strip",
|
|
|
|
0, 1,
|
|
|
|
&bytes)) {
|
2017-01-16 21:21:47 -04:00
|
|
|
goto exit;
|
|
|
|
}
|
2015-04-03 17:53:51 -03:00
|
|
|
return_value = bytearray_strip_impl(self, bytes);
|
|
|
|
|
|
|
|
exit:
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_lstrip__doc__,
|
|
|
|
"lstrip($self, bytes=None, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Strip leading bytes contained in the argument.\n"
|
|
|
|
"\n"
|
|
|
|
"If the argument is omitted or None, strip leading ASCII whitespace.");
|
|
|
|
|
|
|
|
#define BYTEARRAY_LSTRIP_METHODDEF \
|
2017-01-16 21:21:47 -04:00
|
|
|
{"lstrip", (PyCFunction)bytearray_lstrip, METH_FASTCALL, bytearray_lstrip__doc__},
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
bytearray_lstrip_impl(PyByteArrayObject *self, PyObject *bytes);
|
|
|
|
|
|
|
|
static PyObject *
|
2017-07-03 15:20:15 -03:00
|
|
|
bytearray_lstrip(PyByteArrayObject *self, PyObject **args, Py_ssize_t nargs)
|
2015-04-03 17:53:51 -03:00
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
|
|
|
PyObject *bytes = Py_None;
|
|
|
|
|
2017-06-10 01:51:48 -03:00
|
|
|
if (!_PyArg_UnpackStack(args, nargs, "lstrip",
|
|
|
|
0, 1,
|
|
|
|
&bytes)) {
|
2017-01-16 21:21:47 -04:00
|
|
|
goto exit;
|
|
|
|
}
|
2015-04-03 17:53:51 -03:00
|
|
|
return_value = bytearray_lstrip_impl(self, bytes);
|
|
|
|
|
|
|
|
exit:
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_rstrip__doc__,
|
|
|
|
"rstrip($self, bytes=None, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Strip trailing bytes contained in the argument.\n"
|
|
|
|
"\n"
|
|
|
|
"If the argument is omitted or None, strip trailing ASCII whitespace.");
|
|
|
|
|
|
|
|
#define BYTEARRAY_RSTRIP_METHODDEF \
|
2017-01-16 21:21:47 -04:00
|
|
|
{"rstrip", (PyCFunction)bytearray_rstrip, METH_FASTCALL, bytearray_rstrip__doc__},
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
bytearray_rstrip_impl(PyByteArrayObject *self, PyObject *bytes);
|
|
|
|
|
|
|
|
static PyObject *
|
2017-07-03 15:20:15 -03:00
|
|
|
bytearray_rstrip(PyByteArrayObject *self, PyObject **args, Py_ssize_t nargs)
|
2015-04-03 17:53:51 -03:00
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
|
|
|
PyObject *bytes = Py_None;
|
|
|
|
|
2017-06-10 01:51:48 -03:00
|
|
|
if (!_PyArg_UnpackStack(args, nargs, "rstrip",
|
|
|
|
0, 1,
|
|
|
|
&bytes)) {
|
2017-01-16 21:21:47 -04:00
|
|
|
goto exit;
|
|
|
|
}
|
2015-04-03 17:53:51 -03:00
|
|
|
return_value = bytearray_rstrip_impl(self, bytes);
|
|
|
|
|
|
|
|
exit:
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_decode__doc__,
|
|
|
|
"decode($self, /, encoding=\'utf-8\', errors=\'strict\')\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Decode the bytearray using the codec registered for encoding.\n"
|
|
|
|
"\n"
|
|
|
|
" encoding\n"
|
|
|
|
" The encoding with which to decode the bytearray.\n"
|
|
|
|
" errors\n"
|
|
|
|
" The error handling scheme to use for the handling of decoding errors.\n"
|
|
|
|
" The default is \'strict\' meaning that decoding errors raise a\n"
|
|
|
|
" UnicodeDecodeError. Other possible values are \'ignore\' and \'replace\'\n"
|
|
|
|
" as well as any other name registered with codecs.register_error that\n"
|
|
|
|
" can handle UnicodeDecodeErrors.");
|
|
|
|
|
|
|
|
#define BYTEARRAY_DECODE_METHODDEF \
|
2017-07-03 15:20:15 -03:00
|
|
|
{"decode", (PyCFunction)bytearray_decode, METH_FASTCALL|METH_KEYWORDS, bytearray_decode__doc__},
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
static PyObject *
|
2015-04-14 19:07:59 -03:00
|
|
|
bytearray_decode_impl(PyByteArrayObject *self, const char *encoding,
|
|
|
|
const char *errors);
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
static PyObject *
|
2016-09-10 00:00:13 -03:00
|
|
|
bytearray_decode(PyByteArrayObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
2015-04-03 17:53:51 -03:00
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
2016-08-14 04:52:18 -03:00
|
|
|
static const char * const _keywords[] = {"encoding", "errors", NULL};
|
|
|
|
static _PyArg_Parser _parser = {"|ss:decode", _keywords, 0};
|
2015-04-03 17:53:51 -03:00
|
|
|
const char *encoding = NULL;
|
|
|
|
const char *errors = NULL;
|
|
|
|
|
2017-01-16 20:29:01 -04:00
|
|
|
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
2016-06-09 10:16:06 -03:00
|
|
|
&encoding, &errors)) {
|
2015-04-03 17:53:51 -03:00
|
|
|
goto exit;
|
2016-06-09 10:16:06 -03:00
|
|
|
}
|
2015-04-03 17:53:51 -03:00
|
|
|
return_value = bytearray_decode_impl(self, encoding, errors);
|
|
|
|
|
|
|
|
exit:
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_join__doc__,
|
|
|
|
"join($self, iterable_of_bytes, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Concatenate any number of bytes/bytearray objects.\n"
|
|
|
|
"\n"
|
|
|
|
"The bytearray whose method is called is inserted in between each pair.\n"
|
|
|
|
"\n"
|
|
|
|
"The result is returned as a new bytearray object.");
|
|
|
|
|
|
|
|
#define BYTEARRAY_JOIN_METHODDEF \
|
|
|
|
{"join", (PyCFunction)bytearray_join, METH_O, bytearray_join__doc__},
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_splitlines__doc__,
|
|
|
|
"splitlines($self, /, keepends=False)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Return a list of the lines in the bytearray, breaking at line boundaries.\n"
|
|
|
|
"\n"
|
|
|
|
"Line breaks are not included in the resulting list unless keepends is given and\n"
|
|
|
|
"true.");
|
|
|
|
|
|
|
|
#define BYTEARRAY_SPLITLINES_METHODDEF \
|
2017-07-03 15:20:15 -03:00
|
|
|
{"splitlines", (PyCFunction)bytearray_splitlines, METH_FASTCALL|METH_KEYWORDS, bytearray_splitlines__doc__},
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
bytearray_splitlines_impl(PyByteArrayObject *self, int keepends);
|
|
|
|
|
|
|
|
static PyObject *
|
2016-09-10 00:00:13 -03:00
|
|
|
bytearray_splitlines(PyByteArrayObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
2015-04-03 17:53:51 -03:00
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
2016-08-14 04:52:18 -03:00
|
|
|
static const char * const _keywords[] = {"keepends", NULL};
|
|
|
|
static _PyArg_Parser _parser = {"|i:splitlines", _keywords, 0};
|
2015-04-03 17:53:51 -03:00
|
|
|
int keepends = 0;
|
|
|
|
|
2017-01-16 20:29:01 -04:00
|
|
|
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
2016-06-09 10:16:06 -03:00
|
|
|
&keepends)) {
|
2015-04-03 17:53:51 -03:00
|
|
|
goto exit;
|
2016-06-09 10:16:06 -03:00
|
|
|
}
|
2015-04-03 17:53:51 -03:00
|
|
|
return_value = bytearray_splitlines_impl(self, keepends);
|
|
|
|
|
|
|
|
exit:
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_fromhex__doc__,
|
|
|
|
"fromhex($type, string, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Create a bytearray object from a string of hexadecimal numbers.\n"
|
|
|
|
"\n"
|
|
|
|
"Spaces between two numbers are accepted.\n"
|
|
|
|
"Example: bytearray.fromhex(\'B9 01EF\') -> bytearray(b\'\\\\xb9\\\\x01\\\\xef\')");
|
|
|
|
|
|
|
|
#define BYTEARRAY_FROMHEX_METHODDEF \
|
2015-04-03 18:12:11 -03:00
|
|
|
{"fromhex", (PyCFunction)bytearray_fromhex, METH_O|METH_CLASS, bytearray_fromhex__doc__},
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
static PyObject *
|
2016-07-01 11:22:31 -03:00
|
|
|
bytearray_fromhex_impl(PyTypeObject *type, PyObject *string);
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
static PyObject *
|
2016-07-01 11:22:31 -03:00
|
|
|
bytearray_fromhex(PyTypeObject *type, PyObject *arg)
|
2015-04-03 17:53:51 -03:00
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
|
|
|
PyObject *string;
|
|
|
|
|
2016-06-09 10:16:06 -03:00
|
|
|
if (!PyArg_Parse(arg, "U:fromhex", &string)) {
|
2015-04-03 17:53:51 -03:00
|
|
|
goto exit;
|
2016-06-09 10:16:06 -03:00
|
|
|
}
|
2016-07-01 11:22:31 -03:00
|
|
|
return_value = bytearray_fromhex_impl(type, string);
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
exit:
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_reduce__doc__,
|
|
|
|
"__reduce__($self, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Return state information for pickling.");
|
|
|
|
|
|
|
|
#define BYTEARRAY_REDUCE_METHODDEF \
|
|
|
|
{"__reduce__", (PyCFunction)bytearray_reduce, METH_NOARGS, bytearray_reduce__doc__},
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
bytearray_reduce_impl(PyByteArrayObject *self);
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
bytearray_reduce(PyByteArrayObject *self, PyObject *Py_UNUSED(ignored))
|
|
|
|
{
|
|
|
|
return bytearray_reduce_impl(self);
|
|
|
|
}
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_reduce_ex__doc__,
|
|
|
|
"__reduce_ex__($self, proto=0, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Return state information for pickling.");
|
|
|
|
|
|
|
|
#define BYTEARRAY_REDUCE_EX_METHODDEF \
|
2017-01-16 20:35:17 -04:00
|
|
|
{"__reduce_ex__", (PyCFunction)bytearray_reduce_ex, METH_FASTCALL, bytearray_reduce_ex__doc__},
|
2015-04-03 17:53:51 -03:00
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
bytearray_reduce_ex_impl(PyByteArrayObject *self, int proto);
|
|
|
|
|
|
|
|
static PyObject *
|
2017-07-03 15:20:15 -03:00
|
|
|
bytearray_reduce_ex(PyByteArrayObject *self, PyObject **args, Py_ssize_t nargs)
|
2015-04-03 17:53:51 -03:00
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
|
|
|
int proto = 0;
|
|
|
|
|
2017-06-10 01:51:48 -03:00
|
|
|
if (!_PyArg_ParseStack(args, nargs, "|i:__reduce_ex__",
|
|
|
|
&proto)) {
|
2017-01-16 20:35:17 -04:00
|
|
|
goto exit;
|
|
|
|
}
|
2015-04-03 17:53:51 -03:00
|
|
|
return_value = bytearray_reduce_ex_impl(self, proto);
|
|
|
|
|
|
|
|
exit:
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
PyDoc_STRVAR(bytearray_sizeof__doc__,
|
|
|
|
"__sizeof__($self, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Returns the size of the bytearray object in memory, in bytes.");
|
|
|
|
|
|
|
|
#define BYTEARRAY_SIZEOF_METHODDEF \
|
|
|
|
{"__sizeof__", (PyCFunction)bytearray_sizeof, METH_NOARGS, bytearray_sizeof__doc__},
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
bytearray_sizeof_impl(PyByteArrayObject *self);
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
bytearray_sizeof(PyByteArrayObject *self, PyObject *Py_UNUSED(ignored))
|
|
|
|
{
|
|
|
|
return bytearray_sizeof_impl(self);
|
|
|
|
}
|
2017-07-03 15:20:15 -03:00
|
|
|
/*[clinic end generated code: output=e53f10084457a46b input=a9049054013a1b77]*/
|