mirror of
https://github.com/python/cpython.git
synced 2025-10-09 08:31:26 +00:00
SF #1085304: Make array.array pickle-able
This commit is contained in:
parent
e6bdb37e5b
commit
b0900e6a21
3 changed files with 46 additions and 0 deletions
|
@ -1132,6 +1132,29 @@ PyDoc_STRVAR(byteswap_doc,
|
|||
Byteswap all items of the array. If the items in the array are not 1, 2,\n\
|
||||
4, or 8 bytes in size, RuntimeError is raised.");
|
||||
|
||||
static PyObject *
|
||||
array_reduce(arrayobject *array)
|
||||
{
|
||||
PyObject *dict, *result;
|
||||
|
||||
dict = PyObject_GetAttrString((PyObject *)array, "__dict__");
|
||||
if (dict == NULL) {
|
||||
PyErr_Clear();
|
||||
dict = Py_None;
|
||||
Py_INCREF(dict);
|
||||
}
|
||||
result = Py_BuildValue("O(cs#)O",
|
||||
array->ob_type,
|
||||
array->ob_descr->typecode,
|
||||
array->ob_item,
|
||||
array->ob_size * array->ob_descr->itemsize,
|
||||
dict);
|
||||
Py_DECREF(dict);
|
||||
return result;
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(array_doc, "Return state information for pickling.");
|
||||
|
||||
static PyObject *
|
||||
array_reverse(arrayobject *self, PyObject *unused)
|
||||
{
|
||||
|
@ -1490,6 +1513,8 @@ PyMethodDef array_methods[] = {
|
|||
pop_doc},
|
||||
{"read", (PyCFunction)array_fromfile, METH_VARARGS,
|
||||
fromfile_doc},
|
||||
{"__reduce__", (PyCFunction)array_reduce, METH_NOARGS,
|
||||
array_doc},
|
||||
{"remove", (PyCFunction)array_remove, METH_O,
|
||||
remove_doc},
|
||||
{"reverse", (PyCFunction)array_reverse, METH_NOARGS,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue