diff Objects/enumobject.c @ 31502:59538d3b7cd2 legacy-trunk

Make reversed() transparent with respect to length.
author Raymond Hettinger <python@rcn.com>
date Tue, 10 Feb 2004 09:33:39 +0000
parents f30aaac00195
children ec6ba03ba962
line wrap: on
line diff
--- a/Objects/enumobject.c	Tue Feb 10 09:25:40 2004 +0000
+++ b/Objects/enumobject.c	Tue Feb 10 09:33:39 2004 +0000
@@ -230,6 +230,12 @@
 	return item;
 }
 
+static int
+reversed_len(reversedobject *ro)
+{
+	return PyObject_Size(ro->seq);
+}
+
 static PyObject *
 reversed_reverse(reversedobject *ro, PyObject *unused)
 {
@@ -244,6 +250,12 @@
 static PyMethodDef reversed_methods[] = {
 	{"__reversed__",	(PyCFunction)reversed_reverse,	
 		METH_NOARGS,	 reversed_doc},
+	{NULL,		NULL}	/* sentinel */
+};
+
+static PySequenceMethods reversed_as_sequence = {
+	(inquiry)reversed_len,		/* sq_length */
+	0,				/* sq_concat */
 };
 
 PyTypeObject PyReversed_Type = {
@@ -260,7 +272,7 @@
 	0,                              /* tp_compare */
 	0,                              /* tp_repr */
 	0,                              /* tp_as_number */
-	0,                              /* tp_as_sequence */
+	&reversed_as_sequence,          /* tp_as_sequence */
 	0,                              /* tp_as_mapping */
 	0,                              /* tp_hash */
 	0,                              /* tp_call */