]> granicus.if.org Git - python/commitdiff
Issue 23744: Minor speed-up for deque.__bool__().
authorRaymond Hettinger <python@rcn.com>
Tue, 24 Mar 2015 06:23:55 +0000 (23:23 -0700)
committerRaymond Hettinger <python@rcn.com>
Tue, 24 Mar 2015 06:23:55 +0000 (23:23 -0700)
Modules/_collectionsmodule.c

index b8316279ac5e010d2d46b55f1cdd0a88bfedd6a9..dc8e698ba729e56fc9502d33b22027005e29f78c 100644 (file)
@@ -1249,6 +1249,12 @@ deque_sizeof(dequeobject *deque, void *unused)
 PyDoc_STRVAR(sizeof_doc,
 "D.__sizeof__() -- size of D in memory, in bytes");
 
+static int
+deque_bool(dequeobject *deque)
+{
+    return Py_SIZE(deque) != 0;
+}
+
 static PyObject *
 deque_get_maxlen(dequeobject *deque)
 {
@@ -1276,6 +1282,23 @@ static PySequenceMethods deque_as_sequence = {
     0,                                  /* sq_inplace_repeat */
 };
 
+static PyNumberMethods deque_as_number = {
+    0,                                  /* nb_add */
+    0,                                  /* nb_subtract */
+    0,                                  /* nb_multiply */
+    0,                                  /* nb_remainder */
+    0,                                  /* nb_divmod */
+    0,                                  /* nb_power */
+    0,                                  /* nb_negative */
+    0,                                  /* nb_positive */
+    0,                                  /* nb_absolute */
+    (inquiry)deque_bool,                /* nb_bool */
+    0,                                  /* nb_invert */
+    0,                                  /* nb_lshift */
+    0,                                  /* nb_rshift */
+ };
+
+
 /* deque object ********************************************************/
 
 static PyObject *deque_iter(dequeobject *deque);
@@ -1340,7 +1363,7 @@ static PyTypeObject deque_type = {
     0,                                  /* tp_setattr */
     0,                                  /* tp_reserved */
     deque_repr,                         /* tp_repr */
-    0,                                  /* tp_as_number */
+    &deque_as_number,                   /* tp_as_number */
     &deque_as_sequence,                 /* tp_as_sequence */
     0,                                  /* tp_as_mapping */
     PyObject_HashNotImplemented,        /* tp_hash */