• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_fromstring__doc__,
316 "fromstring($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).\n"
320 "\n"
321 "This method is deprecated. Use frombytes instead.");
322 
323 #define ARRAY_ARRAY_FROMSTRING_METHODDEF    \
324     {"fromstring", (PyCFunction)array_array_fromstring, METH_O, array_array_fromstring__doc__},
325 
326 static PyObject *
327 array_array_fromstring_impl(arrayobject *self, Py_buffer *buffer);
328 
329 static PyObject *
array_array_fromstring(arrayobject * self,PyObject * arg)330 array_array_fromstring(arrayobject *self, PyObject *arg)
331 {
332     PyObject *return_value = NULL;
333     Py_buffer buffer = {NULL, NULL};
334 
335     if (PyUnicode_Check(arg)) {
336         Py_ssize_t len;
337         const char *ptr = PyUnicode_AsUTF8AndSize(arg, &len);
338         if (ptr == NULL) {
339             goto exit;
340         }
341         PyBuffer_FillInfo(&buffer, arg, (void *)ptr, len, 1, 0);
342     }
343     else { /* any bytes-like object */
344         if (PyObject_GetBuffer(arg, &buffer, PyBUF_SIMPLE) != 0) {
345             goto exit;
346         }
347         if (!PyBuffer_IsContiguous(&buffer, 'C')) {
348             _PyArg_BadArgument("fromstring", "argument", "contiguous buffer", arg);
349             goto exit;
350         }
351     }
352     return_value = array_array_fromstring_impl(self, &buffer);
353 
354 exit:
355     /* Cleanup for buffer */
356     if (buffer.obj) {
357        PyBuffer_Release(&buffer);
358     }
359 
360     return return_value;
361 }
362 
363 PyDoc_STRVAR(array_array_frombytes__doc__,
364 "frombytes($self, buffer, /)\n"
365 "--\n"
366 "\n"
367 "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).");
368 
369 #define ARRAY_ARRAY_FROMBYTES_METHODDEF    \
370     {"frombytes", (PyCFunction)array_array_frombytes, METH_O, array_array_frombytes__doc__},
371 
372 static PyObject *
373 array_array_frombytes_impl(arrayobject *self, Py_buffer *buffer);
374 
375 static PyObject *
array_array_frombytes(arrayobject * self,PyObject * arg)376 array_array_frombytes(arrayobject *self, PyObject *arg)
377 {
378     PyObject *return_value = NULL;
379     Py_buffer buffer = {NULL, NULL};
380 
381     if (PyObject_GetBuffer(arg, &buffer, PyBUF_SIMPLE) != 0) {
382         goto exit;
383     }
384     if (!PyBuffer_IsContiguous(&buffer, 'C')) {
385         _PyArg_BadArgument("frombytes", "argument", "contiguous buffer", arg);
386         goto exit;
387     }
388     return_value = array_array_frombytes_impl(self, &buffer);
389 
390 exit:
391     /* Cleanup for buffer */
392     if (buffer.obj) {
393        PyBuffer_Release(&buffer);
394     }
395 
396     return return_value;
397 }
398 
399 PyDoc_STRVAR(array_array_tobytes__doc__,
400 "tobytes($self, /)\n"
401 "--\n"
402 "\n"
403 "Convert the array to an array of machine values and return the bytes representation.");
404 
405 #define ARRAY_ARRAY_TOBYTES_METHODDEF    \
406     {"tobytes", (PyCFunction)array_array_tobytes, METH_NOARGS, array_array_tobytes__doc__},
407 
408 static PyObject *
409 array_array_tobytes_impl(arrayobject *self);
410 
411 static PyObject *
array_array_tobytes(arrayobject * self,PyObject * Py_UNUSED (ignored))412 array_array_tobytes(arrayobject *self, PyObject *Py_UNUSED(ignored))
413 {
414     return array_array_tobytes_impl(self);
415 }
416 
417 PyDoc_STRVAR(array_array_tostring__doc__,
418 "tostring($self, /)\n"
419 "--\n"
420 "\n"
421 "Convert the array to an array of machine values and return the bytes representation.\n"
422 "\n"
423 "This method is deprecated. Use tobytes instead.");
424 
425 #define ARRAY_ARRAY_TOSTRING_METHODDEF    \
426     {"tostring", (PyCFunction)array_array_tostring, METH_NOARGS, array_array_tostring__doc__},
427 
428 static PyObject *
429 array_array_tostring_impl(arrayobject *self);
430 
431 static PyObject *
array_array_tostring(arrayobject * self,PyObject * Py_UNUSED (ignored))432 array_array_tostring(arrayobject *self, PyObject *Py_UNUSED(ignored))
433 {
434     return array_array_tostring_impl(self);
435 }
436 
437 PyDoc_STRVAR(array_array_fromunicode__doc__,
438 "fromunicode($self, ustr, /)\n"
439 "--\n"
440 "\n"
441 "Extends this array with data from the unicode string ustr.\n"
442 "\n"
443 "The array must be a unicode type array; otherwise a ValueError is raised.\n"
444 "Use array.frombytes(ustr.encode(...)) to append Unicode data to an array of\n"
445 "some other type.");
446 
447 #define ARRAY_ARRAY_FROMUNICODE_METHODDEF    \
448     {"fromunicode", (PyCFunction)array_array_fromunicode, METH_O, array_array_fromunicode__doc__},
449 
450 static PyObject *
451 array_array_fromunicode_impl(arrayobject *self, const Py_UNICODE *ustr,
452                              Py_ssize_clean_t ustr_length);
453 
454 static PyObject *
array_array_fromunicode(arrayobject * self,PyObject * arg)455 array_array_fromunicode(arrayobject *self, PyObject *arg)
456 {
457     PyObject *return_value = NULL;
458     const Py_UNICODE *ustr;
459     Py_ssize_clean_t ustr_length;
460 
461     if (!PyArg_Parse(arg, "u#:fromunicode", &ustr, &ustr_length)) {
462         goto exit;
463     }
464     return_value = array_array_fromunicode_impl(self, ustr, ustr_length);
465 
466 exit:
467     return return_value;
468 }
469 
470 PyDoc_STRVAR(array_array_tounicode__doc__,
471 "tounicode($self, /)\n"
472 "--\n"
473 "\n"
474 "Extends this array with data from the unicode string ustr.\n"
475 "\n"
476 "Convert the array to a unicode string.  The array must be a unicode type array;\n"
477 "otherwise a ValueError is raised.  Use array.tobytes().decode() to obtain a\n"
478 "unicode string from an array of some other type.");
479 
480 #define ARRAY_ARRAY_TOUNICODE_METHODDEF    \
481     {"tounicode", (PyCFunction)array_array_tounicode, METH_NOARGS, array_array_tounicode__doc__},
482 
483 static PyObject *
484 array_array_tounicode_impl(arrayobject *self);
485 
486 static PyObject *
array_array_tounicode(arrayobject * self,PyObject * Py_UNUSED (ignored))487 array_array_tounicode(arrayobject *self, PyObject *Py_UNUSED(ignored))
488 {
489     return array_array_tounicode_impl(self);
490 }
491 
492 PyDoc_STRVAR(array_array___sizeof____doc__,
493 "__sizeof__($self, /)\n"
494 "--\n"
495 "\n"
496 "Size of the array in memory, in bytes.");
497 
498 #define ARRAY_ARRAY___SIZEOF___METHODDEF    \
499     {"__sizeof__", (PyCFunction)array_array___sizeof__, METH_NOARGS, array_array___sizeof____doc__},
500 
501 static PyObject *
502 array_array___sizeof___impl(arrayobject *self);
503 
504 static PyObject *
array_array___sizeof__(arrayobject * self,PyObject * Py_UNUSED (ignored))505 array_array___sizeof__(arrayobject *self, PyObject *Py_UNUSED(ignored))
506 {
507     return array_array___sizeof___impl(self);
508 }
509 
510 PyDoc_STRVAR(array__array_reconstructor__doc__,
511 "_array_reconstructor($module, arraytype, typecode, mformat_code, items,\n"
512 "                     /)\n"
513 "--\n"
514 "\n"
515 "Internal. Used for pickling support.");
516 
517 #define ARRAY__ARRAY_RECONSTRUCTOR_METHODDEF    \
518     {"_array_reconstructor", (PyCFunction)(void(*)(void))array__array_reconstructor, METH_FASTCALL, array__array_reconstructor__doc__},
519 
520 static PyObject *
521 array__array_reconstructor_impl(PyObject *module, PyTypeObject *arraytype,
522                                 int typecode,
523                                 enum machine_format_code mformat_code,
524                                 PyObject *items);
525 
526 static PyObject *
array__array_reconstructor(PyObject * module,PyObject * const * args,Py_ssize_t nargs)527 array__array_reconstructor(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
528 {
529     PyObject *return_value = NULL;
530     PyTypeObject *arraytype;
531     int typecode;
532     enum machine_format_code mformat_code;
533     PyObject *items;
534 
535     if (!_PyArg_CheckPositional("_array_reconstructor", nargs, 4, 4)) {
536         goto exit;
537     }
538     arraytype = (PyTypeObject *)args[0];
539     if (!PyUnicode_Check(args[1])) {
540         _PyArg_BadArgument("_array_reconstructor", "argument 2", "a unicode character", args[1]);
541         goto exit;
542     }
543     if (PyUnicode_READY(args[1])) {
544         goto exit;
545     }
546     if (PyUnicode_GET_LENGTH(args[1]) != 1) {
547         _PyArg_BadArgument("_array_reconstructor", "argument 2", "a unicode character", args[1]);
548         goto exit;
549     }
550     typecode = PyUnicode_READ_CHAR(args[1], 0);
551     if (PyFloat_Check(args[2])) {
552         PyErr_SetString(PyExc_TypeError,
553                         "integer argument expected, got float" );
554         goto exit;
555     }
556     mformat_code = _PyLong_AsInt(args[2]);
557     if (mformat_code == -1 && PyErr_Occurred()) {
558         goto exit;
559     }
560     items = args[3];
561     return_value = array__array_reconstructor_impl(module, arraytype, typecode, mformat_code, items);
562 
563 exit:
564     return return_value;
565 }
566 
567 PyDoc_STRVAR(array_array___reduce_ex____doc__,
568 "__reduce_ex__($self, value, /)\n"
569 "--\n"
570 "\n"
571 "Return state information for pickling.");
572 
573 #define ARRAY_ARRAY___REDUCE_EX___METHODDEF    \
574     {"__reduce_ex__", (PyCFunction)array_array___reduce_ex__, METH_O, array_array___reduce_ex____doc__},
575 
576 PyDoc_STRVAR(array_arrayiterator___reduce____doc__,
577 "__reduce__($self, /)\n"
578 "--\n"
579 "\n"
580 "Return state information for pickling.");
581 
582 #define ARRAY_ARRAYITERATOR___REDUCE___METHODDEF    \
583     {"__reduce__", (PyCFunction)array_arrayiterator___reduce__, METH_NOARGS, array_arrayiterator___reduce____doc__},
584 
585 static PyObject *
586 array_arrayiterator___reduce___impl(arrayiterobject *self);
587 
588 static PyObject *
array_arrayiterator___reduce__(arrayiterobject * self,PyObject * Py_UNUSED (ignored))589 array_arrayiterator___reduce__(arrayiterobject *self, PyObject *Py_UNUSED(ignored))
590 {
591     return array_arrayiterator___reduce___impl(self);
592 }
593 
594 PyDoc_STRVAR(array_arrayiterator___setstate____doc__,
595 "__setstate__($self, state, /)\n"
596 "--\n"
597 "\n"
598 "Set state information for unpickling.");
599 
600 #define ARRAY_ARRAYITERATOR___SETSTATE___METHODDEF    \
601     {"__setstate__", (PyCFunction)array_arrayiterator___setstate__, METH_O, array_arrayiterator___setstate____doc__},
602 /*[clinic end generated code: output=6aa421571e2c0756 input=a9049054013a1b77]*/
603