summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorTim Peters <tim.peters@gmail.com>2001-05-05 21:05:01 (GMT)
committerTim Peters <tim.peters@gmail.com>2001-05-05 21:05:01 (GMT)
commitcb8d368b824a38a0b04598ba2bcd107d6aae3595 (patch)
tree36ddccccf56188d23285e0e5a8e6793d94f58c8a /Include
parenta8defaae0444157c96abc13090d71f49fede0b4a (diff)
downloadcpython-cb8d368b824a38a0b04598ba2bcd107d6aae3595.zip
cpython-cb8d368b824a38a0b04598ba2bcd107d6aae3595.tar.gz
cpython-cb8d368b824a38a0b04598ba2bcd107d6aae3595.tar.bz2
Reimplement PySequence_Contains() and instance_contains(), so they work
safely together and don't duplicate logic (the common logic was factored out into new private API function _PySequence_IterContains()). Visible change: some_complex_number in some_instance no longer blows up if some_instance has __getitem__ but neither __contains__ nor __iter__. test_iter changed to ensure that remains true.
Diffstat (limited to 'Include')
-rw-r--r--Include/abstract.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/Include/abstract.h b/Include/abstract.h
index d5f4a99..9082edb 100644
--- a/Include/abstract.h
+++ b/Include/abstract.h
@@ -932,7 +932,17 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
expression: o.count(value).
*/
- DL_IMPORT(int) PySequence_Contains(PyObject *o, PyObject *value);
+ DL_IMPORT(int) PySequence_Contains(PyObject *seq, PyObject *ob);
+ /*
+ Return -1 if error; 1 if ob in seq; 0 if ob not in seq.
+ Use __contains__ if possible, else _PySequence_IterContains().
+ */
+
+ DL_IMPORT(int) _PySequence_IterContains(PyObject *seq, PyObject *ob);
+ /*
+ Return -1 if error; 1 if ob in seq; 0 if ob not in seq.
+ Always uses the iteration protocol, and only Py_EQ comparisons.
+ */
/* For DLL-level backwards compatibility */
#undef PySequence_In