summaryrefslogtreecommitdiffstats
path: root/Objects/setobject.c
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2003-11-25 21:12:14 (GMT)
committerRaymond Hettinger <python@rcn.com>2003-11-25 21:12:14 (GMT)
commitbc0f2ab9bbe1380a32cc63823258a337a525fb32 (patch)
tree4e0f76ebe43b74cab10b1e6bd41b1d90fe6f8230 /Objects/setobject.c
parent3972457de72fa6d95d94df14a3bb402798aa092c (diff)
downloadcpython-bc0f2ab9bbe1380a32cc63823258a337a525fb32.zip
cpython-bc0f2ab9bbe1380a32cc63823258a337a525fb32.tar.gz
cpython-bc0f2ab9bbe1380a32cc63823258a337a525fb32.tar.bz2
Expose dict_contains() and PyDict_Contains() with is about 10% faster
than PySequence_Contains() and more clearly applicable to dicts. Apply the new function in setobject.c where __contains__ checking is ubiquitous.
Diffstat (limited to 'Objects/setobject.c')
-rw-r--r--Objects/setobject.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/Objects/setobject.c b/Objects/setobject.c
index ce3f84e..c060077 100644
--- a/Objects/setobject.c
+++ b/Objects/setobject.c
@@ -143,13 +143,13 @@ set_contains(PySetObject *so, PyObject *key)
PyObject *tmp;
int result;
- result = PySequence_Contains(so->data, key);
+ result = PyDict_Contains(so->data, key);
if (result == -1 && PyAnySet_Check(key)) {
PyErr_Clear();
tmp = frozenset_dict_wrapper(((PySetObject *)(key))->data);
if (tmp == NULL)
return -1;
- result = PySequence_Contains(so->data, tmp);
+ result = PyDict_Contains(so->data, tmp);
Py_DECREF(tmp);
}
return result;
@@ -252,7 +252,7 @@ set_intersection(PySetObject *so, PyObject *other)
}
while ((item = PyIter_Next(it)) != NULL) {
- if (PySequence_Contains(selfdata, item)) {
+ if (PyDict_Contains(selfdata, item)) {
if (PyDict_SetItem(tgtdata, item, Py_True) == -1) {
Py_DECREF(it);
Py_DECREF(result);
@@ -292,7 +292,7 @@ set_intersection_update(PySetObject *so, PyObject *other)
selfdata = so->data;
while ((item = PyIter_Next(it)) != NULL) {
- if (PySequence_Contains(selfdata, item)) {
+ if (PyDict_Contains(selfdata, item)) {
if (PyDict_SetItem(newdict, item, Py_True) == -1) {
Py_DECREF(newdict);
Py_DECREF(it);
@@ -375,7 +375,7 @@ set_difference(PySetObject *so, PyObject *other)
}
while ((item = PyIter_Next(it)) != NULL) {
- if (!PySequence_Contains(otherdata, item)) {
+ if (!PyDict_Contains(otherdata, item)) {
if (PyDict_SetItem(tgtdata, item, Py_True) == -1) {
Py_XDECREF(otherset);
Py_DECREF(it);
@@ -481,7 +481,7 @@ set_symmetric_difference_update(PySetObject *so, PyObject *other)
return NULL;
while ((item = PyIter_Next(it)) != NULL) {
- if (PySequence_Contains(selfdata, item)) {
+ if (PyDict_Contains(selfdata, item)) {
if (PyDict_DelItem(selfdata, item) == -1) {
Py_XDECREF(otherset);
Py_DECREF(it);
@@ -541,7 +541,7 @@ set_symmetric_difference(PySetObject *so, PyObject *other)
return NULL;
}
while ((item = PyIter_Next(it)) != NULL) {
- if (!PySequence_Contains(selfdata, item)) {
+ if (!PyDict_Contains(selfdata, item)) {
if (PyDict_SetItem(tgtdata, item, Py_True) == -1) {
Py_DECREF(it);
Py_DECREF(item);
@@ -562,7 +562,7 @@ set_symmetric_difference(PySetObject *so, PyObject *other)
return NULL;
}
while ((item = PyIter_Next(it)) != NULL) {
- if (!PySequence_Contains(otherdata, item)) {
+ if (!PyDict_Contains(otherdata, item)) {
if (PyDict_SetItem(tgtdata, item, Py_True) == -1) {
Py_DECREF(it);
Py_DECREF(item);
@@ -634,7 +634,7 @@ set_issubset(PySetObject *so, PyObject *other)
otherdata = ((PySetObject *)other)->data;
while ((item = PyIter_Next(it)) != NULL) {
- if (!PySequence_Contains(otherdata, item)) {
+ if (!PyDict_Contains(otherdata, item)) {
Py_DECREF(it);
Py_DECREF(item);
Py_RETURN_FALSE;