• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*[clinic input]
2 preserve
3 [clinic start generated code]*/
4 
5 PyDoc_STRVAR(bytearray_clear__doc__,
6 "clear($self, /)\n"
7 "--\n"
8 "\n"
9 "Remove all items from the bytearray.");
10 
11 #define BYTEARRAY_CLEAR_METHODDEF    \
12     {"clear", (PyCFunction)bytearray_clear, METH_NOARGS, bytearray_clear__doc__},
13 
14 static PyObject *
15 bytearray_clear_impl(PyByteArrayObject *self);
16 
17 static PyObject *
bytearray_clear(PyByteArrayObject * self,PyObject * Py_UNUSED (ignored))18 bytearray_clear(PyByteArrayObject *self, PyObject *Py_UNUSED(ignored))
19 {
20     return bytearray_clear_impl(self);
21 }
22 
23 PyDoc_STRVAR(bytearray_copy__doc__,
24 "copy($self, /)\n"
25 "--\n"
26 "\n"
27 "Return a copy of B.");
28 
29 #define BYTEARRAY_COPY_METHODDEF    \
30     {"copy", (PyCFunction)bytearray_copy, METH_NOARGS, bytearray_copy__doc__},
31 
32 static PyObject *
33 bytearray_copy_impl(PyByteArrayObject *self);
34 
35 static PyObject *
bytearray_copy(PyByteArrayObject * self,PyObject * Py_UNUSED (ignored))36 bytearray_copy(PyByteArrayObject *self, PyObject *Py_UNUSED(ignored))
37 {
38     return bytearray_copy_impl(self);
39 }
40 
41 PyDoc_STRVAR(bytearray_translate__doc__,
42 "translate($self, table, /, delete=b\'\')\n"
43 "--\n"
44 "\n"
45 "Return a copy with each character mapped by the given translation table.\n"
46 "\n"
47 "  table\n"
48 "    Translation table, which must be a bytes object of length 256.\n"
49 "\n"
50 "All characters occurring in the optional argument delete are removed.\n"
51 "The remaining characters are mapped through the given translation table.");
52 
53 #define BYTEARRAY_TRANSLATE_METHODDEF    \
54     {"translate", (PyCFunction)bytearray_translate, METH_FASTCALL|METH_KEYWORDS, bytearray_translate__doc__},
55 
56 static PyObject *
57 bytearray_translate_impl(PyByteArrayObject *self, PyObject *table,
58                          PyObject *deletechars);
59 
60 static PyObject *
bytearray_translate(PyByteArrayObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)61 bytearray_translate(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
62 {
63     PyObject *return_value = NULL;
64     static const char * const _keywords[] = {"", "delete", NULL};
65     static _PyArg_Parser _parser = {"O|O:translate", _keywords, 0};
66     PyObject *table;
67     PyObject *deletechars = NULL;
68 
69     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
70         &table, &deletechars)) {
71         goto exit;
72     }
73     return_value = bytearray_translate_impl(self, table, deletechars);
74 
75 exit:
76     return return_value;
77 }
78 
79 PyDoc_STRVAR(bytearray_maketrans__doc__,
80 "maketrans(frm, to, /)\n"
81 "--\n"
82 "\n"
83 "Return a translation table useable for the bytes or bytearray translate method.\n"
84 "\n"
85 "The returned table will be one where each byte in frm is mapped to the byte at\n"
86 "the same position in to.\n"
87 "\n"
88 "The bytes objects frm and to must be of the same length.");
89 
90 #define BYTEARRAY_MAKETRANS_METHODDEF    \
91     {"maketrans", (PyCFunction)bytearray_maketrans, METH_FASTCALL|METH_STATIC, bytearray_maketrans__doc__},
92 
93 static PyObject *
94 bytearray_maketrans_impl(Py_buffer *frm, Py_buffer *to);
95 
96 static PyObject *
bytearray_maketrans(void * null,PyObject * const * args,Py_ssize_t nargs)97 bytearray_maketrans(void *null, PyObject *const *args, Py_ssize_t nargs)
98 {
99     PyObject *return_value = NULL;
100     Py_buffer frm = {NULL, NULL};
101     Py_buffer to = {NULL, NULL};
102 
103     if (!_PyArg_ParseStack(args, nargs, "y*y*:maketrans",
104         &frm, &to)) {
105         goto exit;
106     }
107     return_value = bytearray_maketrans_impl(&frm, &to);
108 
109 exit:
110     /* Cleanup for frm */
111     if (frm.obj) {
112        PyBuffer_Release(&frm);
113     }
114     /* Cleanup for to */
115     if (to.obj) {
116        PyBuffer_Release(&to);
117     }
118 
119     return return_value;
120 }
121 
122 PyDoc_STRVAR(bytearray_replace__doc__,
123 "replace($self, old, new, count=-1, /)\n"
124 "--\n"
125 "\n"
126 "Return a copy with all occurrences of substring old replaced by new.\n"
127 "\n"
128 "  count\n"
129 "    Maximum number of occurrences to replace.\n"
130 "    -1 (the default value) means replace all occurrences.\n"
131 "\n"
132 "If the optional argument count is given, only the first count occurrences are\n"
133 "replaced.");
134 
135 #define BYTEARRAY_REPLACE_METHODDEF    \
136     {"replace", (PyCFunction)bytearray_replace, METH_FASTCALL, bytearray_replace__doc__},
137 
138 static PyObject *
139 bytearray_replace_impl(PyByteArrayObject *self, Py_buffer *old,
140                        Py_buffer *new, Py_ssize_t count);
141 
142 static PyObject *
bytearray_replace(PyByteArrayObject * self,PyObject * const * args,Py_ssize_t nargs)143 bytearray_replace(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs)
144 {
145     PyObject *return_value = NULL;
146     Py_buffer old = {NULL, NULL};
147     Py_buffer new = {NULL, NULL};
148     Py_ssize_t count = -1;
149 
150     if (!_PyArg_ParseStack(args, nargs, "y*y*|n:replace",
151         &old, &new, &count)) {
152         goto exit;
153     }
154     return_value = bytearray_replace_impl(self, &old, &new, count);
155 
156 exit:
157     /* Cleanup for old */
158     if (old.obj) {
159        PyBuffer_Release(&old);
160     }
161     /* Cleanup for new */
162     if (new.obj) {
163        PyBuffer_Release(&new);
164     }
165 
166     return return_value;
167 }
168 
169 PyDoc_STRVAR(bytearray_split__doc__,
170 "split($self, /, sep=None, maxsplit=-1)\n"
171 "--\n"
172 "\n"
173 "Return a list of the sections in the bytearray, using sep as the delimiter.\n"
174 "\n"
175 "  sep\n"
176 "    The delimiter according which to split the bytearray.\n"
177 "    None (the default value) means split on ASCII whitespace characters\n"
178 "    (space, tab, return, newline, formfeed, vertical tab).\n"
179 "  maxsplit\n"
180 "    Maximum number of splits to do.\n"
181 "    -1 (the default value) means no limit.");
182 
183 #define BYTEARRAY_SPLIT_METHODDEF    \
184     {"split", (PyCFunction)bytearray_split, METH_FASTCALL|METH_KEYWORDS, bytearray_split__doc__},
185 
186 static PyObject *
187 bytearray_split_impl(PyByteArrayObject *self, PyObject *sep,
188                      Py_ssize_t maxsplit);
189 
190 static PyObject *
bytearray_split(PyByteArrayObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)191 bytearray_split(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
192 {
193     PyObject *return_value = NULL;
194     static const char * const _keywords[] = {"sep", "maxsplit", NULL};
195     static _PyArg_Parser _parser = {"|On:split", _keywords, 0};
196     PyObject *sep = Py_None;
197     Py_ssize_t maxsplit = -1;
198 
199     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
200         &sep, &maxsplit)) {
201         goto exit;
202     }
203     return_value = bytearray_split_impl(self, sep, maxsplit);
204 
205 exit:
206     return return_value;
207 }
208 
209 PyDoc_STRVAR(bytearray_partition__doc__,
210 "partition($self, sep, /)\n"
211 "--\n"
212 "\n"
213 "Partition the bytearray into three parts using the given separator.\n"
214 "\n"
215 "This will search for the separator sep in the bytearray. If the separator is\n"
216 "found, returns a 3-tuple containing the part before the separator, the\n"
217 "separator itself, and the part after it as new bytearray objects.\n"
218 "\n"
219 "If the separator is not found, returns a 3-tuple containing the copy of the\n"
220 "original bytearray object and two empty bytearray objects.");
221 
222 #define BYTEARRAY_PARTITION_METHODDEF    \
223     {"partition", (PyCFunction)bytearray_partition, METH_O, bytearray_partition__doc__},
224 
225 PyDoc_STRVAR(bytearray_rpartition__doc__,
226 "rpartition($self, sep, /)\n"
227 "--\n"
228 "\n"
229 "Partition the bytearray into three parts using the given separator.\n"
230 "\n"
231 "This will search for the separator sep in the bytearray, starting at the end.\n"
232 "If the separator is found, returns a 3-tuple containing the part before the\n"
233 "separator, the separator itself, and the part after it as new bytearray\n"
234 "objects.\n"
235 "\n"
236 "If the separator is not found, returns a 3-tuple containing two empty bytearray\n"
237 "objects and the copy of the original bytearray object.");
238 
239 #define BYTEARRAY_RPARTITION_METHODDEF    \
240     {"rpartition", (PyCFunction)bytearray_rpartition, METH_O, bytearray_rpartition__doc__},
241 
242 PyDoc_STRVAR(bytearray_rsplit__doc__,
243 "rsplit($self, /, sep=None, maxsplit=-1)\n"
244 "--\n"
245 "\n"
246 "Return a list of the sections in the bytearray, using sep as the delimiter.\n"
247 "\n"
248 "  sep\n"
249 "    The delimiter according which to split the bytearray.\n"
250 "    None (the default value) means split on ASCII whitespace characters\n"
251 "    (space, tab, return, newline, formfeed, vertical tab).\n"
252 "  maxsplit\n"
253 "    Maximum number of splits to do.\n"
254 "    -1 (the default value) means no limit.\n"
255 "\n"
256 "Splitting is done starting at the end of the bytearray and working to the front.");
257 
258 #define BYTEARRAY_RSPLIT_METHODDEF    \
259     {"rsplit", (PyCFunction)bytearray_rsplit, METH_FASTCALL|METH_KEYWORDS, bytearray_rsplit__doc__},
260 
261 static PyObject *
262 bytearray_rsplit_impl(PyByteArrayObject *self, PyObject *sep,
263                       Py_ssize_t maxsplit);
264 
265 static PyObject *
bytearray_rsplit(PyByteArrayObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)266 bytearray_rsplit(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
267 {
268     PyObject *return_value = NULL;
269     static const char * const _keywords[] = {"sep", "maxsplit", NULL};
270     static _PyArg_Parser _parser = {"|On:rsplit", _keywords, 0};
271     PyObject *sep = Py_None;
272     Py_ssize_t maxsplit = -1;
273 
274     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
275         &sep, &maxsplit)) {
276         goto exit;
277     }
278     return_value = bytearray_rsplit_impl(self, sep, maxsplit);
279 
280 exit:
281     return return_value;
282 }
283 
284 PyDoc_STRVAR(bytearray_reverse__doc__,
285 "reverse($self, /)\n"
286 "--\n"
287 "\n"
288 "Reverse the order of the values in B in place.");
289 
290 #define BYTEARRAY_REVERSE_METHODDEF    \
291     {"reverse", (PyCFunction)bytearray_reverse, METH_NOARGS, bytearray_reverse__doc__},
292 
293 static PyObject *
294 bytearray_reverse_impl(PyByteArrayObject *self);
295 
296 static PyObject *
bytearray_reverse(PyByteArrayObject * self,PyObject * Py_UNUSED (ignored))297 bytearray_reverse(PyByteArrayObject *self, PyObject *Py_UNUSED(ignored))
298 {
299     return bytearray_reverse_impl(self);
300 }
301 
302 PyDoc_STRVAR(bytearray_insert__doc__,
303 "insert($self, index, item, /)\n"
304 "--\n"
305 "\n"
306 "Insert a single item into the bytearray before the given index.\n"
307 "\n"
308 "  index\n"
309 "    The index where the value is to be inserted.\n"
310 "  item\n"
311 "    The item to be inserted.");
312 
313 #define BYTEARRAY_INSERT_METHODDEF    \
314     {"insert", (PyCFunction)bytearray_insert, METH_FASTCALL, bytearray_insert__doc__},
315 
316 static PyObject *
317 bytearray_insert_impl(PyByteArrayObject *self, Py_ssize_t index, int item);
318 
319 static PyObject *
bytearray_insert(PyByteArrayObject * self,PyObject * const * args,Py_ssize_t nargs)320 bytearray_insert(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs)
321 {
322     PyObject *return_value = NULL;
323     Py_ssize_t index;
324     int item;
325 
326     if (!_PyArg_ParseStack(args, nargs, "nO&:insert",
327         &index, _getbytevalue, &item)) {
328         goto exit;
329     }
330     return_value = bytearray_insert_impl(self, index, item);
331 
332 exit:
333     return return_value;
334 }
335 
336 PyDoc_STRVAR(bytearray_append__doc__,
337 "append($self, item, /)\n"
338 "--\n"
339 "\n"
340 "Append a single item to the end of the bytearray.\n"
341 "\n"
342 "  item\n"
343 "    The item to be appended.");
344 
345 #define BYTEARRAY_APPEND_METHODDEF    \
346     {"append", (PyCFunction)bytearray_append, METH_O, bytearray_append__doc__},
347 
348 static PyObject *
349 bytearray_append_impl(PyByteArrayObject *self, int item);
350 
351 static PyObject *
bytearray_append(PyByteArrayObject * self,PyObject * arg)352 bytearray_append(PyByteArrayObject *self, PyObject *arg)
353 {
354     PyObject *return_value = NULL;
355     int item;
356 
357     if (!PyArg_Parse(arg, "O&:append", _getbytevalue, &item)) {
358         goto exit;
359     }
360     return_value = bytearray_append_impl(self, item);
361 
362 exit:
363     return return_value;
364 }
365 
366 PyDoc_STRVAR(bytearray_extend__doc__,
367 "extend($self, iterable_of_ints, /)\n"
368 "--\n"
369 "\n"
370 "Append all the items from the iterator or sequence to the end of the bytearray.\n"
371 "\n"
372 "  iterable_of_ints\n"
373 "    The iterable of items to append.");
374 
375 #define BYTEARRAY_EXTEND_METHODDEF    \
376     {"extend", (PyCFunction)bytearray_extend, METH_O, bytearray_extend__doc__},
377 
378 PyDoc_STRVAR(bytearray_pop__doc__,
379 "pop($self, index=-1, /)\n"
380 "--\n"
381 "\n"
382 "Remove and return a single item from B.\n"
383 "\n"
384 "  index\n"
385 "    The index from where to remove the item.\n"
386 "    -1 (the default value) means remove the last item.\n"
387 "\n"
388 "If no index argument is given, will pop the last item.");
389 
390 #define BYTEARRAY_POP_METHODDEF    \
391     {"pop", (PyCFunction)bytearray_pop, METH_FASTCALL, bytearray_pop__doc__},
392 
393 static PyObject *
394 bytearray_pop_impl(PyByteArrayObject *self, Py_ssize_t index);
395 
396 static PyObject *
bytearray_pop(PyByteArrayObject * self,PyObject * const * args,Py_ssize_t nargs)397 bytearray_pop(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs)
398 {
399     PyObject *return_value = NULL;
400     Py_ssize_t index = -1;
401 
402     if (!_PyArg_ParseStack(args, nargs, "|n:pop",
403         &index)) {
404         goto exit;
405     }
406     return_value = bytearray_pop_impl(self, index);
407 
408 exit:
409     return return_value;
410 }
411 
412 PyDoc_STRVAR(bytearray_remove__doc__,
413 "remove($self, value, /)\n"
414 "--\n"
415 "\n"
416 "Remove the first occurrence of a value in the bytearray.\n"
417 "\n"
418 "  value\n"
419 "    The value to remove.");
420 
421 #define BYTEARRAY_REMOVE_METHODDEF    \
422     {"remove", (PyCFunction)bytearray_remove, METH_O, bytearray_remove__doc__},
423 
424 static PyObject *
425 bytearray_remove_impl(PyByteArrayObject *self, int value);
426 
427 static PyObject *
bytearray_remove(PyByteArrayObject * self,PyObject * arg)428 bytearray_remove(PyByteArrayObject *self, PyObject *arg)
429 {
430     PyObject *return_value = NULL;
431     int value;
432 
433     if (!PyArg_Parse(arg, "O&:remove", _getbytevalue, &value)) {
434         goto exit;
435     }
436     return_value = bytearray_remove_impl(self, value);
437 
438 exit:
439     return return_value;
440 }
441 
442 PyDoc_STRVAR(bytearray_strip__doc__,
443 "strip($self, bytes=None, /)\n"
444 "--\n"
445 "\n"
446 "Strip leading and trailing bytes contained in the argument.\n"
447 "\n"
448 "If the argument is omitted or None, strip leading and trailing ASCII whitespace.");
449 
450 #define BYTEARRAY_STRIP_METHODDEF    \
451     {"strip", (PyCFunction)bytearray_strip, METH_FASTCALL, bytearray_strip__doc__},
452 
453 static PyObject *
454 bytearray_strip_impl(PyByteArrayObject *self, PyObject *bytes);
455 
456 static PyObject *
bytearray_strip(PyByteArrayObject * self,PyObject * const * args,Py_ssize_t nargs)457 bytearray_strip(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs)
458 {
459     PyObject *return_value = NULL;
460     PyObject *bytes = Py_None;
461 
462     if (!_PyArg_UnpackStack(args, nargs, "strip",
463         0, 1,
464         &bytes)) {
465         goto exit;
466     }
467     return_value = bytearray_strip_impl(self, bytes);
468 
469 exit:
470     return return_value;
471 }
472 
473 PyDoc_STRVAR(bytearray_lstrip__doc__,
474 "lstrip($self, bytes=None, /)\n"
475 "--\n"
476 "\n"
477 "Strip leading bytes contained in the argument.\n"
478 "\n"
479 "If the argument is omitted or None, strip leading ASCII whitespace.");
480 
481 #define BYTEARRAY_LSTRIP_METHODDEF    \
482     {"lstrip", (PyCFunction)bytearray_lstrip, METH_FASTCALL, bytearray_lstrip__doc__},
483 
484 static PyObject *
485 bytearray_lstrip_impl(PyByteArrayObject *self, PyObject *bytes);
486 
487 static PyObject *
bytearray_lstrip(PyByteArrayObject * self,PyObject * const * args,Py_ssize_t nargs)488 bytearray_lstrip(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs)
489 {
490     PyObject *return_value = NULL;
491     PyObject *bytes = Py_None;
492 
493     if (!_PyArg_UnpackStack(args, nargs, "lstrip",
494         0, 1,
495         &bytes)) {
496         goto exit;
497     }
498     return_value = bytearray_lstrip_impl(self, bytes);
499 
500 exit:
501     return return_value;
502 }
503 
504 PyDoc_STRVAR(bytearray_rstrip__doc__,
505 "rstrip($self, bytes=None, /)\n"
506 "--\n"
507 "\n"
508 "Strip trailing bytes contained in the argument.\n"
509 "\n"
510 "If the argument is omitted or None, strip trailing ASCII whitespace.");
511 
512 #define BYTEARRAY_RSTRIP_METHODDEF    \
513     {"rstrip", (PyCFunction)bytearray_rstrip, METH_FASTCALL, bytearray_rstrip__doc__},
514 
515 static PyObject *
516 bytearray_rstrip_impl(PyByteArrayObject *self, PyObject *bytes);
517 
518 static PyObject *
bytearray_rstrip(PyByteArrayObject * self,PyObject * const * args,Py_ssize_t nargs)519 bytearray_rstrip(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs)
520 {
521     PyObject *return_value = NULL;
522     PyObject *bytes = Py_None;
523 
524     if (!_PyArg_UnpackStack(args, nargs, "rstrip",
525         0, 1,
526         &bytes)) {
527         goto exit;
528     }
529     return_value = bytearray_rstrip_impl(self, bytes);
530 
531 exit:
532     return return_value;
533 }
534 
535 PyDoc_STRVAR(bytearray_decode__doc__,
536 "decode($self, /, encoding=\'utf-8\', errors=\'strict\')\n"
537 "--\n"
538 "\n"
539 "Decode the bytearray using the codec registered for encoding.\n"
540 "\n"
541 "  encoding\n"
542 "    The encoding with which to decode the bytearray.\n"
543 "  errors\n"
544 "    The error handling scheme to use for the handling of decoding errors.\n"
545 "    The default is \'strict\' meaning that decoding errors raise a\n"
546 "    UnicodeDecodeError. Other possible values are \'ignore\' and \'replace\'\n"
547 "    as well as any other name registered with codecs.register_error that\n"
548 "    can handle UnicodeDecodeErrors.");
549 
550 #define BYTEARRAY_DECODE_METHODDEF    \
551     {"decode", (PyCFunction)bytearray_decode, METH_FASTCALL|METH_KEYWORDS, bytearray_decode__doc__},
552 
553 static PyObject *
554 bytearray_decode_impl(PyByteArrayObject *self, const char *encoding,
555                       const char *errors);
556 
557 static PyObject *
bytearray_decode(PyByteArrayObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)558 bytearray_decode(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
559 {
560     PyObject *return_value = NULL;
561     static const char * const _keywords[] = {"encoding", "errors", NULL};
562     static _PyArg_Parser _parser = {"|ss:decode", _keywords, 0};
563     const char *encoding = NULL;
564     const char *errors = NULL;
565 
566     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
567         &encoding, &errors)) {
568         goto exit;
569     }
570     return_value = bytearray_decode_impl(self, encoding, errors);
571 
572 exit:
573     return return_value;
574 }
575 
576 PyDoc_STRVAR(bytearray_join__doc__,
577 "join($self, iterable_of_bytes, /)\n"
578 "--\n"
579 "\n"
580 "Concatenate any number of bytes/bytearray objects.\n"
581 "\n"
582 "The bytearray whose method is called is inserted in between each pair.\n"
583 "\n"
584 "The result is returned as a new bytearray object.");
585 
586 #define BYTEARRAY_JOIN_METHODDEF    \
587     {"join", (PyCFunction)bytearray_join, METH_O, bytearray_join__doc__},
588 
589 PyDoc_STRVAR(bytearray_splitlines__doc__,
590 "splitlines($self, /, keepends=False)\n"
591 "--\n"
592 "\n"
593 "Return a list of the lines in the bytearray, breaking at line boundaries.\n"
594 "\n"
595 "Line breaks are not included in the resulting list unless keepends is given and\n"
596 "true.");
597 
598 #define BYTEARRAY_SPLITLINES_METHODDEF    \
599     {"splitlines", (PyCFunction)bytearray_splitlines, METH_FASTCALL|METH_KEYWORDS, bytearray_splitlines__doc__},
600 
601 static PyObject *
602 bytearray_splitlines_impl(PyByteArrayObject *self, int keepends);
603 
604 static PyObject *
bytearray_splitlines(PyByteArrayObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)605 bytearray_splitlines(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
606 {
607     PyObject *return_value = NULL;
608     static const char * const _keywords[] = {"keepends", NULL};
609     static _PyArg_Parser _parser = {"|i:splitlines", _keywords, 0};
610     int keepends = 0;
611 
612     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
613         &keepends)) {
614         goto exit;
615     }
616     return_value = bytearray_splitlines_impl(self, keepends);
617 
618 exit:
619     return return_value;
620 }
621 
622 PyDoc_STRVAR(bytearray_fromhex__doc__,
623 "fromhex($type, string, /)\n"
624 "--\n"
625 "\n"
626 "Create a bytearray object from a string of hexadecimal numbers.\n"
627 "\n"
628 "Spaces between two numbers are accepted.\n"
629 "Example: bytearray.fromhex(\'B9 01EF\') -> bytearray(b\'\\\\xb9\\\\x01\\\\xef\')");
630 
631 #define BYTEARRAY_FROMHEX_METHODDEF    \
632     {"fromhex", (PyCFunction)bytearray_fromhex, METH_O|METH_CLASS, bytearray_fromhex__doc__},
633 
634 static PyObject *
635 bytearray_fromhex_impl(PyTypeObject *type, PyObject *string);
636 
637 static PyObject *
bytearray_fromhex(PyTypeObject * type,PyObject * arg)638 bytearray_fromhex(PyTypeObject *type, PyObject *arg)
639 {
640     PyObject *return_value = NULL;
641     PyObject *string;
642 
643     if (!PyArg_Parse(arg, "U:fromhex", &string)) {
644         goto exit;
645     }
646     return_value = bytearray_fromhex_impl(type, string);
647 
648 exit:
649     return return_value;
650 }
651 
652 PyDoc_STRVAR(bytearray_reduce__doc__,
653 "__reduce__($self, /)\n"
654 "--\n"
655 "\n"
656 "Return state information for pickling.");
657 
658 #define BYTEARRAY_REDUCE_METHODDEF    \
659     {"__reduce__", (PyCFunction)bytearray_reduce, METH_NOARGS, bytearray_reduce__doc__},
660 
661 static PyObject *
662 bytearray_reduce_impl(PyByteArrayObject *self);
663 
664 static PyObject *
bytearray_reduce(PyByteArrayObject * self,PyObject * Py_UNUSED (ignored))665 bytearray_reduce(PyByteArrayObject *self, PyObject *Py_UNUSED(ignored))
666 {
667     return bytearray_reduce_impl(self);
668 }
669 
670 PyDoc_STRVAR(bytearray_reduce_ex__doc__,
671 "__reduce_ex__($self, proto=0, /)\n"
672 "--\n"
673 "\n"
674 "Return state information for pickling.");
675 
676 #define BYTEARRAY_REDUCE_EX_METHODDEF    \
677     {"__reduce_ex__", (PyCFunction)bytearray_reduce_ex, METH_FASTCALL, bytearray_reduce_ex__doc__},
678 
679 static PyObject *
680 bytearray_reduce_ex_impl(PyByteArrayObject *self, int proto);
681 
682 static PyObject *
bytearray_reduce_ex(PyByteArrayObject * self,PyObject * const * args,Py_ssize_t nargs)683 bytearray_reduce_ex(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs)
684 {
685     PyObject *return_value = NULL;
686     int proto = 0;
687 
688     if (!_PyArg_ParseStack(args, nargs, "|i:__reduce_ex__",
689         &proto)) {
690         goto exit;
691     }
692     return_value = bytearray_reduce_ex_impl(self, proto);
693 
694 exit:
695     return return_value;
696 }
697 
698 PyDoc_STRVAR(bytearray_sizeof__doc__,
699 "__sizeof__($self, /)\n"
700 "--\n"
701 "\n"
702 "Returns the size of the bytearray object in memory, in bytes.");
703 
704 #define BYTEARRAY_SIZEOF_METHODDEF    \
705     {"__sizeof__", (PyCFunction)bytearray_sizeof, METH_NOARGS, bytearray_sizeof__doc__},
706 
707 static PyObject *
708 bytearray_sizeof_impl(PyByteArrayObject *self);
709 
710 static PyObject *
bytearray_sizeof(PyByteArrayObject * self,PyObject * Py_UNUSED (ignored))711 bytearray_sizeof(PyByteArrayObject *self, PyObject *Py_UNUSED(ignored))
712 {
713     return bytearray_sizeof_impl(self);
714 }
715 /*[clinic end generated code: output=bb9051a369adb328 input=a9049054013a1b77]*/
716