[Python-checkins] python/dist/src/Modules arraymodule.c,2.97,2.98
rhettinger at users.sourceforge.net
rhettinger at users.sourceforge.net
Thu Dec 16 17:23:42 CET 2004
Update of /cvsroot/python/python/dist/src/Modules
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6121/Modules
Modified Files:
arraymodule.c
Log Message:
SF #1085304: Make array.array pickle-able
Index: arraymodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/arraymodule.c,v
retrieving revision 2.97
retrieving revision 2.98
diff -u -d -r2.97 -r2.98
--- arraymodule.c 29 Aug 2004 07:50:42 -0000 2.97
+++ arraymodule.c 16 Dec 2004 16:23:39 -0000 2.98
@@ -1133,6 +1133,29 @@
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)
{
register int itemsize = self->ob_descr->itemsize;
@@ -1490,6 +1513,8 @@
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,
More information about the Python-checkins
mailing list