diff options
author | Guido van Rossum <guido@python.org> | 2000-02-28 15:01:46 +0000 |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2000-02-28 15:01:46 +0000 |
commit | a24a9da2a1d21a213405ef09a9ff6ba520944e00 (patch) | |
tree | 067d59b215cf39799e1f1719e7549fb753f7f745 /Objects/abstract.c | |
parent | 758cd78d972737be35843ce952ed27a80d076a6d (diff) | |
download | cpython-a24a9da2a1d21a213405ef09a9ff6ba520944e00.tar.gz |
Patch by Mozhe Zadka, for __contains__ (overloading 'in'). This
patches PySequence_Contains() to check for a valid sq_contains field.
More to follow.
Diffstat (limited to 'Objects/abstract.c')
-rw-r--r-- | Objects/abstract.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/Objects/abstract.c b/Objects/abstract.c index 5ee53ee9f2..739d9d9d55 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, |