From: Guido van Rossum Date: Mon, 28 Feb 2000 15:01:46 +0000 (+0000) Subject: Patch by Mozhe Zadka, for __contains__ (overloading 'in'). This X-Git-Tag: v1.6a1~338 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=46c6b20392ba48280701f132321a06a1699429e9;p=thirdparty%2FPython%2Fcpython.git Patch by Mozhe Zadka, for __contains__ (overloading 'in'). This patches PySequence_Contains() to check for a valid sq_contains field. More to follow. --- diff --git a/Objects/abstract.c b/Objects/abstract.c index 5ee53ee9f261..739d9d9d55ec 100644 --- a/Objects/abstract.c +++ b/Objects/abstract.c @@ -1139,7 +1139,14 @@ PySequence_Contains(w, v) /* v in w */ } return 0; } - + if(PyType_HasFeature(w->ob_type, Py_TPFLAGS_HAVE_SEQUENCE_IN)) { + sq = w->ob_type->tp_as_sequence; + if(sq != NULL && sq->sq_contains != NULL) + return (*sq->sq_contains)(w, v); + } + + /* If there is no better way to check whether an item is is contained, + do it the hard way */ sq = w->ob_type->tp_as_sequence; if (sq == NULL || sq->sq_item == NULL) { PyErr_SetString(PyExc_TypeError,