summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2003-12-13 19:38:47 (GMT)
committerRaymond Hettinger <python@rcn.com>2003-12-13 19:38:47 (GMT)
commit438e02dfc838c128e596f9e3e329a4abdd40ab6e (patch)
tree79a462eb417741957d8d04e001ccfa196dea658a
parent0deab62704d56d9c30933998dee7b6d9ca7b6c72 (diff)
downloadcpython-438e02dfc838c128e596f9e3e329a4abdd40ab6e.zip
cpython-438e02dfc838c128e596f9e3e329a4abdd40ab6e.tar.gz
cpython-438e02dfc838c128e596f9e3e329a4abdd40ab6e.tar.bz2
* Refactor set.__contains__()
* Use Py_RETURN_NONE everywhere. * Fix-up the firstpass check for the tp_print slot.
-rw-r--r--Objects/setobject.c31
1 files changed, 10 insertions, 21 deletions
diff --git a/Objects/setobject.c b/Objects/setobject.c
index 82ff683..36072ce 100644
--- a/Objects/setobject.c
+++ b/Objects/setobject.c
@@ -158,18 +158,9 @@ set_contains(PySetObject *so, PyObject *key)
static PyObject *
set_direct_contains(PySetObject *so, PyObject *key)
{
- PyObject *tmp;
long result;
- 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 NULL;
- result = PyDict_Contains(so->data, tmp);
- Py_DECREF(tmp);
- }
+ result = set_contains(so, key);
if (result == -1)
return NULL;
return PyBool_FromLong(result);
@@ -655,8 +646,8 @@ frozenset_hash(PyObject *self)
PySetObject *so = (PySetObject *)self;
PyObject *key, *value;
int pos = 0;
-
long hash = 0;
+
if (so->hash != -1)
return so->hash;
@@ -728,11 +719,13 @@ static int
set_tp_print(PySetObject *so, FILE *fp, int flags)
{
PyObject *key, *value;
- int pos = 0;
+ int pos=0, firstpass=1;
fprintf(fp, "%s([", so->ob_type->tp_name);
while (PyDict_Next(so->data, &pos, &key, &value)) {
- if (pos)
+ if (firstpass)
+ firstpass = 0;
+ else
fprintf(fp, ", ");
if (PyObject_Print(key, fp, 0) != 0)
return -1;
@@ -746,8 +739,7 @@ set_clear(PySetObject *so)
{
PyDict_Clear(so->data);
so->hash = -1;
- Py_INCREF(Py_None);
- return Py_None;
+ Py_RETURN_NONE;
}
PyDoc_STRVAR(clear_doc, "Remove all elements from this set.");
@@ -765,8 +757,7 @@ set_add(PySetObject *so, PyObject *item)
{
if (PyDict_SetItem(so->data, item, Py_True) == -1)
return NULL;
- Py_INCREF(Py_None);
- return Py_None;
+ Py_RETURN_NONE;
}
PyDoc_STRVAR(add_doc,
@@ -790,8 +781,7 @@ set_remove(PySetObject *so, PyObject *item)
if (PyDict_DelItem(so->data, item) == -1)
return NULL;
- Py_INCREF(Py_None);
- return Py_None;
+ Py_RETURN_NONE;
}
PyDoc_STRVAR(remove_doc,
@@ -818,8 +808,7 @@ set_discard(PySetObject *so, PyObject *item)
return NULL;
PyErr_Clear();
}
- Py_INCREF(Py_None);
- return Py_None;
+ Py_RETURN_NONE;
}
PyDoc_STRVAR(discard_doc,