1 /*[clinic input]
2 preserve
3 [clinic start generated code]*/
4
5 PyDoc_STRVAR(array_array___copy____doc__,
6 "__copy__($self, /)\n"
7 "--\n"
8 "\n"
9 "Return a copy of the array.");
10
11 #define ARRAY_ARRAY___COPY___METHODDEF \
12 {"__copy__", (PyCFunction)array_array___copy__, METH_NOARGS, array_array___copy____doc__},
13
14 static PyObject *
15 array_array___copy___impl(arrayobject *self);
16
17 static PyObject *
array_array___copy__(arrayobject * self,PyObject * Py_UNUSED (ignored))18 array_array___copy__(arrayobject *self, PyObject *Py_UNUSED(ignored))
19 {
20 return array_array___copy___impl(self);
21 }
22
23 PyDoc_STRVAR(array_array___deepcopy____doc__,
24 "__deepcopy__($self, unused, /)\n"
25 "--\n"
26 "\n"
27 "Return a copy of the array.");
28
29 #define ARRAY_ARRAY___DEEPCOPY___METHODDEF \
30 {"__deepcopy__", (PyCFunction)array_array___deepcopy__, METH_O, array_array___deepcopy____doc__},
31
32 PyDoc_STRVAR(array_array_count__doc__,
33 "count($self, v, /)\n"
34 "--\n"
35 "\n"
36 "Return number of occurrences of v in the array.");
37
38 #define ARRAY_ARRAY_COUNT_METHODDEF \
39 {"count", (PyCFunction)array_array_count, METH_O, array_array_count__doc__},
40
41 PyDoc_STRVAR(array_array_index__doc__,
42 "index($self, v, /)\n"
43 "--\n"
44 "\n"
45 "Return index of first occurrence of v in the array.");
46
47 #define ARRAY_ARRAY_INDEX_METHODDEF \
48 {"index", (PyCFunction)array_array_index, METH_O, array_array_index__doc__},
49
50 PyDoc_STRVAR(array_array_remove__doc__,
51 "remove($self, v, /)\n"
52 "--\n"
53 "\n"
54 "Remove the first occurrence of v in the array.");
55
56 #define ARRAY_ARRAY_REMOVE_METHODDEF \
57 {"remove", (PyCFunction)array_array_remove, METH_O, array_array_remove__doc__},
58
59 PyDoc_STRVAR(array_array_pop__doc__,
60 "pop($self, i=-1, /)\n"
61 "--\n"
62 "\n"
63 "Return the i-th element and delete it from the array.\n"
64 "\n"
65 "i defaults to -1.");
66
67 #define ARRAY_ARRAY_POP_METHODDEF \
68 {"pop", (PyCFunction)(void(*)(void))array_array_pop, METH_FASTCALL, array_array_pop__doc__},
69
70 static PyObject *
71 array_array_pop_impl(arrayobject *self, Py_ssize_t i);
72
73 static PyObject *
array_array_pop(arrayobject * self,PyObject * const * args,Py_ssize_t nargs)74 array_array_pop(arrayobject *self, PyObject *const *args, Py_ssize_t nargs)
75 {
76 PyObject *return_value = NULL;
77 Py_ssize_t i = -1;
78
79 if (!_PyArg_CheckPositional("pop", nargs, 0, 1)) {
80 goto exit;
81 }
82 if (nargs < 1) {
83 goto skip_optional;
84 }
85 if (PyFloat_Check(args[0])) {
86 PyErr_SetString(PyExc_TypeError,
87 "integer argument expected, got float" );
88 goto exit;
89 }
90 {
91 Py_ssize_t ival = -1;
92 PyObject *iobj = PyNumber_Index(args[0]);
93 if (iobj != NULL) {
94 ival = PyLong_AsSsize_t(iobj);
95 Py_DECREF(iobj);
96 }
97 if (ival == -1 && PyErr_Occurred()) {
98 goto exit;
99 }
100 i = ival;
101 }
102 skip_optional:
103 return_value = array_array_pop_impl(self, i);
104
105 exit:
106 return return_value;
107 }
108
109 PyDoc_STRVAR(array_array_extend__doc__,
110 "extend($self, bb, /)\n"
111 "--\n"
112 "\n"
113 "Append items to the end of the array.");
114
115 #define ARRAY_ARRAY_EXTEND_METHODDEF \
116 {"extend", (PyCFunction)array_array_extend, METH_O, array_array_extend__doc__},
117
118 PyDoc_STRVAR(array_array_insert__doc__,
119 "insert($self, i, v, /)\n"
120 "--\n"
121 "\n"
122 "Insert a new item v into the array before position i.");
123
124 #define ARRAY_ARRAY_INSERT_METHODDEF \
125 {"insert", (PyCFunction)(void(*)(void))array_array_insert, METH_FASTCALL, array_array_insert__doc__},
126
127 static PyObject *
128 array_array_insert_impl(arrayobject *self, Py_ssize_t i, PyObject *v);
129
130 static PyObject *
array_array_insert(arrayobject * self,PyObject * const * args,Py_ssize_t nargs)131 array_array_insert(arrayobject *self, PyObject *const *args, Py_ssize_t nargs)
132 {
133 PyObject *return_value = NULL;
134 Py_ssize_t i;
135 PyObject *v;
136
137 if (!_PyArg_CheckPositional("insert", nargs, 2, 2)) {
138 goto exit;
139 }
140 if (PyFloat_Check(args[0])) {
141 PyErr_SetString(PyExc_TypeError,
142 "integer argument expected, got float" );
143 goto exit;
144 }
145 {
146 Py_ssize_t ival = -1;
147 PyObject *iobj = PyNumber_Index(args[0]);
148 if (iobj != NULL) {
149 ival = PyLong_AsSsize_t(iobj);
150 Py_DECREF(iobj);
151 }
152 if (ival == -1 && PyErr_Occurred()) {
153 goto exit;
154 }
155 i = ival;
156 }
157 v = args[1];
158 return_value = array_array_insert_impl(self, i, v);
159
160 exit:
161 return return_value;
162 }
163
164 PyDoc_STRVAR(array_array_buffer_info__doc__,
165 "buffer_info($self, /)\n"
166 "--\n"
167 "\n"
168 "Return a tuple (address, length) giving the current memory address and the length in items of the buffer used to hold array\'s contents.\n"
169 "\n"
170 "The length should be multiplied by the itemsize attribute to calculate\n"
171 "the buffer length in bytes.");
172
173 #define ARRAY_ARRAY_BUFFER_INFO_METHODDEF \
174 {"buffer_info", (PyCFunction)array_array_buffer_info, METH_NOARGS, array_array_buffer_info__doc__},
175
176 static PyObject *
177 array_array_buffer_info_impl(arrayobject *self);
178
179 static PyObject *
array_array_buffer_info(arrayobject * self,PyObject * Py_UNUSED (ignored))180 array_array_buffer_info(arrayobject *self, PyObject *Py_UNUSED(ignored))
181 {
182 return array_array_buffer_info_impl(self);
183 }
184
185 PyDoc_STRVAR(array_array_append__doc__,
186 "append($self, v, /)\n"
187 "--\n"
188 "\n"
189 "Append new value v to the end of the array.");
190
191 #define ARRAY_ARRAY_APPEND_METHODDEF \
192 {"append", (PyCFunction)array_array_append, METH_O, array_array_append__doc__},
193
194 PyDoc_STRVAR(array_array_byteswap__doc__,
195 "byteswap($self, /)\n"
196 "--\n"
197 "\n"
198 "Byteswap all items of the array.\n"
199 "\n"
200 "If the items in the array are not 1, 2, 4, or 8 bytes in size, RuntimeError is\n"
201 "raised.");
202
203 #define ARRAY_ARRAY_BYTESWAP_METHODDEF \
204 {"byteswap", (PyCFunction)array_array_byteswap, METH_NOARGS, array_array_byteswap__doc__},
205
206 static PyObject *
207 array_array_byteswap_impl(arrayobject *self);
208
209 static PyObject *
array_array_byteswap(arrayobject * self,PyObject * Py_UNUSED (ignored))210 array_array_byteswap(arrayobject *self, PyObject *Py_UNUSED(ignored))
211 {
212 return array_array_byteswap_impl(self);
213 }
214
215 PyDoc_STRVAR(array_array_reverse__doc__,
216 "reverse($self, /)\n"
217 "--\n"
218 "\n"
219 "Reverse the order of the items in the array.");
220
221 #define ARRAY_ARRAY_REVERSE_METHODDEF \
222 {"reverse", (PyCFunction)array_array_reverse, METH_NOARGS, array_array_reverse__doc__},
223
224 static PyObject *
225 array_array_reverse_impl(arrayobject *self);
226
227 static PyObject *
array_array_reverse(arrayobject * self,PyObject * Py_UNUSED (ignored))228 array_array_reverse(arrayobject *self, PyObject *Py_UNUSED(ignored))
229 {
230 return array_array_reverse_impl(self);
231 }
232
233 PyDoc_STRVAR(array_array_fromfile__doc__,
234 "fromfile($self, f, n, /)\n"
235 "--\n"
236 "\n"
237 "Read n objects from the file object f and append them to the end of the array.");
238
239 #define ARRAY_ARRAY_FROMFILE_METHODDEF \
240 {"fromfile", (PyCFunction)(void(*)(void))array_array_fromfile, METH_FASTCALL, array_array_fromfile__doc__},
241
242 static PyObject *
243 array_array_fromfile_impl(arrayobject *self, PyObject *f, Py_ssize_t n);
244
245 static PyObject *
array_array_fromfile(arrayobject * self,PyObject * const * args,Py_ssize_t nargs)246 array_array_fromfile(arrayobject *self, PyObject *const *args, Py_ssize_t nargs)
247 {
248 PyObject *return_value = NULL;
249 PyObject *f;
250 Py_ssize_t n;
251
252 if (!_PyArg_CheckPositional("fromfile", nargs, 2, 2)) {
253 goto exit;
254 }
255 f = args[0];
256 if (PyFloat_Check(args[1])) {
257 PyErr_SetString(PyExc_TypeError,
258 "integer argument expected, got float" );
259 goto exit;
260 }
261 {
262 Py_ssize_t ival = -1;
263 PyObject *iobj = PyNumber_Index(args[1]);
264 if (iobj != NULL) {
265 ival = PyLong_AsSsize_t(iobj);
266 Py_DECREF(iobj);
267 }
268 if (ival == -1 && PyErr_Occurred()) {
269 goto exit;
270 }
271 n = ival;
272 }
273 return_value = array_array_fromfile_impl(self, f, n);
274
275 exit:
276 return return_value;
277 }
278
279 PyDoc_STRVAR(array_array_tofile__doc__,
280 "tofile($self, f, /)\n"
281 "--\n"
282 "\n"
283 "Write all items (as machine values) to the file object f.");
284
285 #define ARRAY_ARRAY_TOFILE_METHODDEF \
286 {"tofile", (PyCFunction)array_array_tofile, METH_O, array_array_tofile__doc__},
287
288 PyDoc_STRVAR(array_array_fromlist__doc__,
289 "fromlist($self, list, /)\n"
290 "--\n"
291 "\n"
292 "Append items to array from list.");
293
294 #define ARRAY_ARRAY_FROMLIST_METHODDEF \
295 {"fromlist", (PyCFunction)array_array_fromlist, METH_O, array_array_fromlist__doc__},
296
297 PyDoc_STRVAR(array_array_tolist__doc__,
298 "tolist($self, /)\n"
299 "--\n"
300 "\n"
301 "Convert array to an ordinary list with the same items.");
302
303 #define ARRAY_ARRAY_TOLIST_METHODDEF \
304 {"tolist", (PyCFunction)array_array_tolist, METH_NOARGS, array_array_tolist__doc__},
305
306 static PyObject *
307 array_array_tolist_impl(arrayobject *self);
308
309 static PyObject *
array_array_tolist(arrayobject * self,PyObject * Py_UNUSED (ignored))310 array_array_tolist(arrayobject *self, PyObject *Py_UNUSED(ignored))
311 {
312 return array_array_tolist_impl(self);
313 }
314
315 PyDoc_STRVAR(array_array_frombytes__doc__,
316 "frombytes($self, buffer, /)\n"
317 "--\n"
318 "\n"
319 "Appends items from the string, interpreting it as an array of machine values, as if it had been read from a file using the fromfile() method).");
320
321 #define ARRAY_ARRAY_FROMBYTES_METHODDEF \
322 {"frombytes", (PyCFunction)array_array_frombytes, METH_O, array_array_frombytes__doc__},
323
324 static PyObject *
325 array_array_frombytes_impl(arrayobject *self, Py_buffer *buffer);
326
327 static PyObject *
array_array_frombytes(arrayobject * self,PyObject * arg)328 array_array_frombytes(arrayobject *self, PyObject *arg)
329 {
330 PyObject *return_value = NULL;
331 Py_buffer buffer = {NULL, NULL};
332
333 if (PyObject_GetBuffer(arg, &buffer, PyBUF_SIMPLE) != 0) {
334 goto exit;
335 }
336 if (!PyBuffer_IsContiguous(&buffer, 'C')) {
337 _PyArg_BadArgument("frombytes", "argument", "contiguous buffer", arg);
338 goto exit;
339 }
340 return_value = array_array_frombytes_impl(self, &buffer);
341
342 exit:
343 /* Cleanup for buffer */
344 if (buffer.obj) {
345 PyBuffer_Release(&buffer);
346 }
347
348 return return_value;
349 }
350
351 PyDoc_STRVAR(array_array_tobytes__doc__,
352 "tobytes($self, /)\n"
353 "--\n"
354 "\n"
355 "Convert the array to an array of machine values and return the bytes representation.");
356
357 #define ARRAY_ARRAY_TOBYTES_METHODDEF \
358 {"tobytes", (PyCFunction)array_array_tobytes, METH_NOARGS, array_array_tobytes__doc__},
359
360 static PyObject *
361 array_array_tobytes_impl(arrayobject *self);
362
363 static PyObject *
array_array_tobytes(arrayobject * self,PyObject * Py_UNUSED (ignored))364 array_array_tobytes(arrayobject *self, PyObject *Py_UNUSED(ignored))
365 {
366 return array_array_tobytes_impl(self);
367 }
368
369 PyDoc_STRVAR(array_array_fromunicode__doc__,
370 "fromunicode($self, ustr, /)\n"
371 "--\n"
372 "\n"
373 "Extends this array with data from the unicode string ustr.\n"
374 "\n"
375 "The array must be a unicode type array; otherwise a ValueError is raised.\n"
376 "Use array.frombytes(ustr.encode(...)) to append Unicode data to an array of\n"
377 "some other type.");
378
379 #define ARRAY_ARRAY_FROMUNICODE_METHODDEF \
380 {"fromunicode", (PyCFunction)array_array_fromunicode, METH_O, array_array_fromunicode__doc__},
381
382 static PyObject *
383 array_array_fromunicode_impl(arrayobject *self, PyObject *ustr);
384
385 static PyObject *
array_array_fromunicode(arrayobject * self,PyObject * arg)386 array_array_fromunicode(arrayobject *self, PyObject *arg)
387 {
388 PyObject *return_value = NULL;
389 PyObject *ustr;
390
391 if (!PyUnicode_Check(arg)) {
392 _PyArg_BadArgument("fromunicode", "argument", "str", arg);
393 goto exit;
394 }
395 if (PyUnicode_READY(arg) == -1) {
396 goto exit;
397 }
398 ustr = arg;
399 return_value = array_array_fromunicode_impl(self, ustr);
400
401 exit:
402 return return_value;
403 }
404
405 PyDoc_STRVAR(array_array_tounicode__doc__,
406 "tounicode($self, /)\n"
407 "--\n"
408 "\n"
409 "Extends this array with data from the unicode string ustr.\n"
410 "\n"
411 "Convert the array to a unicode string. The array must be a unicode type array;\n"
412 "otherwise a ValueError is raised. Use array.tobytes().decode() to obtain a\n"
413 "unicode string from an array of some other type.");
414
415 #define ARRAY_ARRAY_TOUNICODE_METHODDEF \
416 {"tounicode", (PyCFunction)array_array_tounicode, METH_NOARGS, array_array_tounicode__doc__},
417
418 static PyObject *
419 array_array_tounicode_impl(arrayobject *self);
420
421 static PyObject *
array_array_tounicode(arrayobject * self,PyObject * Py_UNUSED (ignored))422 array_array_tounicode(arrayobject *self, PyObject *Py_UNUSED(ignored))
423 {
424 return array_array_tounicode_impl(self);
425 }
426
427 PyDoc_STRVAR(array_array___sizeof____doc__,
428 "__sizeof__($self, /)\n"
429 "--\n"
430 "\n"
431 "Size of the array in memory, in bytes.");
432
433 #define ARRAY_ARRAY___SIZEOF___METHODDEF \
434 {"__sizeof__", (PyCFunction)array_array___sizeof__, METH_NOARGS, array_array___sizeof____doc__},
435
436 static PyObject *
437 array_array___sizeof___impl(arrayobject *self);
438
439 static PyObject *
array_array___sizeof__(arrayobject * self,PyObject * Py_UNUSED (ignored))440 array_array___sizeof__(arrayobject *self, PyObject *Py_UNUSED(ignored))
441 {
442 return array_array___sizeof___impl(self);
443 }
444
445 PyDoc_STRVAR(array__array_reconstructor__doc__,
446 "_array_reconstructor($module, arraytype, typecode, mformat_code, items,\n"
447 " /)\n"
448 "--\n"
449 "\n"
450 "Internal. Used for pickling support.");
451
452 #define ARRAY__ARRAY_RECONSTRUCTOR_METHODDEF \
453 {"_array_reconstructor", (PyCFunction)(void(*)(void))array__array_reconstructor, METH_FASTCALL, array__array_reconstructor__doc__},
454
455 static PyObject *
456 array__array_reconstructor_impl(PyObject *module, PyTypeObject *arraytype,
457 int typecode,
458 enum machine_format_code mformat_code,
459 PyObject *items);
460
461 static PyObject *
array__array_reconstructor(PyObject * module,PyObject * const * args,Py_ssize_t nargs)462 array__array_reconstructor(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
463 {
464 PyObject *return_value = NULL;
465 PyTypeObject *arraytype;
466 int typecode;
467 enum machine_format_code mformat_code;
468 PyObject *items;
469
470 if (!_PyArg_CheckPositional("_array_reconstructor", nargs, 4, 4)) {
471 goto exit;
472 }
473 arraytype = (PyTypeObject *)args[0];
474 if (!PyUnicode_Check(args[1])) {
475 _PyArg_BadArgument("_array_reconstructor", "argument 2", "a unicode character", args[1]);
476 goto exit;
477 }
478 if (PyUnicode_READY(args[1])) {
479 goto exit;
480 }
481 if (PyUnicode_GET_LENGTH(args[1]) != 1) {
482 _PyArg_BadArgument("_array_reconstructor", "argument 2", "a unicode character", args[1]);
483 goto exit;
484 }
485 typecode = PyUnicode_READ_CHAR(args[1], 0);
486 if (PyFloat_Check(args[2])) {
487 PyErr_SetString(PyExc_TypeError,
488 "integer argument expected, got float" );
489 goto exit;
490 }
491 mformat_code = _PyLong_AsInt(args[2]);
492 if (mformat_code == -1 && PyErr_Occurred()) {
493 goto exit;
494 }
495 items = args[3];
496 return_value = array__array_reconstructor_impl(module, arraytype, typecode, mformat_code, items);
497
498 exit:
499 return return_value;
500 }
501
502 PyDoc_STRVAR(array_array___reduce_ex____doc__,
503 "__reduce_ex__($self, value, /)\n"
504 "--\n"
505 "\n"
506 "Return state information for pickling.");
507
508 #define ARRAY_ARRAY___REDUCE_EX___METHODDEF \
509 {"__reduce_ex__", (PyCFunction)array_array___reduce_ex__, METH_O, array_array___reduce_ex____doc__},
510
511 PyDoc_STRVAR(array_arrayiterator___reduce____doc__,
512 "__reduce__($self, /)\n"
513 "--\n"
514 "\n"
515 "Return state information for pickling.");
516
517 #define ARRAY_ARRAYITERATOR___REDUCE___METHODDEF \
518 {"__reduce__", (PyCFunction)array_arrayiterator___reduce__, METH_NOARGS, array_arrayiterator___reduce____doc__},
519
520 static PyObject *
521 array_arrayiterator___reduce___impl(arrayiterobject *self);
522
523 static PyObject *
array_arrayiterator___reduce__(arrayiterobject * self,PyObject * Py_UNUSED (ignored))524 array_arrayiterator___reduce__(arrayiterobject *self, PyObject *Py_UNUSED(ignored))
525 {
526 return array_arrayiterator___reduce___impl(self);
527 }
528
529 PyDoc_STRVAR(array_arrayiterator___setstate____doc__,
530 "__setstate__($self, state, /)\n"
531 "--\n"
532 "\n"
533 "Set state information for unpickling.");
534
535 #define ARRAY_ARRAYITERATOR___SETSTATE___METHODDEF \
536 {"__setstate__", (PyCFunction)array_arrayiterator___setstate__, METH_O, array_arrayiterator___setstate____doc__},
537 /*[clinic end generated code: output=9f70748dd3bc532f input=a9049054013a1b77]*/
538