Empties an existing dictionary of all key-value pairs.
\end{cfuncdesc}
+\begin{cfuncdesc}{int}{PyDict_Contains}{PyObject *p, PyObject *key}
+ Determine if dictionary \var{p} contains \var{key}. If an item
+ in \var{p} is matches \var{key}, return \code{1}, otherwise return
+ \code{0}. On error, return \code{-1}. This is equivalent to the
+ Python expression \samp{\var{key} in \var{p}}.
+ \versionadded{2.4}
+\end{cfuncdesc}
+
\begin{cfuncdesc}{PyObject*}{PyDict_Copy}{PyObject *p}
Returns a new dictionary that contains the same key-value pairs as
\var{p}.
{NULL, NULL} /* sentinel */
};
-static int
-dict_contains(dictobject *mp, PyObject *key)
+int
+PyDict_Contains(PyObject *op, PyObject *key)
{
long hash;
+ dictobject *mp = (dictobject *)op;
if (!PyString_CheckExact(key) ||
(hash = ((PyStringObject *) key)->ob_shash) == -1) {
0, /* sq_slice */
0, /* sq_ass_item */
0, /* sq_ass_slice */
- (objobjproc)dict_contains, /* sq_contains */
+ (objobjproc)PyDict_Contains, /* sq_contains */
0, /* sq_inplace_concat */
0, /* sq_inplace_repeat */
};
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;
}
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);
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);
}
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);
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);
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);
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);
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;